Commit efc78983 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Jonathan Cameron
Browse files

iio: st_sensors: Drop redundant parameter from st_sensors_of_name_probe()



Since we have access to the struct device_driver and thus to the ID table,
there is no need to supply special parameters to st_sensors_of_name_probe().

Besides that we have a common API to get driver match data, there is
no need to do matching separately for OF and ACPI.

Taking into consideration above, simplify the ST sensors code.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent e825070f
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -107,8 +107,7 @@ static int st_accel_spi_probe(struct spi_device *spi)
	struct iio_dev *indio_dev;
	int err;

	st_sensors_of_name_probe(&spi->dev, st_accel_of_match,
				 spi->modalias, sizeof(spi->modalias));
	st_sensors_dev_name_probe(&spi->dev, spi->modalias, sizeof(spi->modalias));

	settings = st_accel_get_settings(spi->modalias);
	if (!settings) {
+17 −21
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/iio/iio.h>
#include <linux/property.h>
#include <linux/regulator/consumer.h>
#include <linux/of.h>
#include <linux/of_device.h>
@@ -340,42 +341,37 @@ static struct st_sensors_platform_data *st_sensors_of_probe(struct device *dev,

	return pdata;
}
#else
static struct st_sensors_platform_data *st_sensors_of_probe(struct device *dev,
		struct st_sensors_platform_data *defdata)
{
	return NULL;
}
#endif

/**
 * st_sensors_of_name_probe() - device tree probe for ST sensor name
 * st_sensors_dev_name_probe() - device probe for ST sensor name
 * @dev: driver model representation of the device.
 * @match: the OF match table for the device, containing compatible strings
 *	but also a .data field with the corresponding internal kernel name
 *	used by this sensor.
 * @name: device name buffer reference.
 * @len: device name buffer length.
 *
 * In effect this function matches a compatible string to an internal kernel
 * In effect this function matches an ID to an internal kernel
 * name for a certain sensor device, so that the rest of the autodetection can
 * rely on that name from this point on. I2C/SPI devices will be renamed
 * to match the internal kernel convention.
 */
void st_sensors_of_name_probe(struct device *dev,
			      const struct of_device_id *match,
			      char *name, int len)
void st_sensors_dev_name_probe(struct device *dev, char *name, int len)
{
	const struct of_device_id *of_id;
	const void *match;

	of_id = of_match_device(match, dev);
	if (!of_id || !of_id->data)
	match = device_get_match_data(dev);
	if (!match)
		return;

	/* The name from the OF match takes precedence if present */
	strlcpy(name, of_id->data, len);
	/* The name from the match takes precedence if present */
	strlcpy(name, match, len);
}
EXPORT_SYMBOL(st_sensors_of_name_probe);
#else
static struct st_sensors_platform_data *st_sensors_of_probe(struct device *dev,
		struct st_sensors_platform_data *defdata)
{
	return NULL;
}
#endif
EXPORT_SYMBOL(st_sensors_dev_name_probe);

int st_sensors_init_sensor(struct iio_dev *indio_dev,
					struct st_sensors_platform_data *pdata)
+0 −21
Original line number Diff line number Diff line
@@ -11,8 +11,6 @@
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/iio/iio.h>
#include <linux/of_device.h>
#include <linux/acpi.h>
#include <linux/regmap.h>

#include <linux/iio/common/st_sensors_i2c.h>
@@ -68,25 +66,6 @@ int st_sensors_i2c_configure(struct iio_dev *indio_dev,
}
EXPORT_SYMBOL(st_sensors_i2c_configure);

#ifdef CONFIG_ACPI
int st_sensors_match_acpi_device(struct device *dev)
{
	const struct acpi_device_id *acpi_id;
	kernel_ulong_t driver_data = 0;

	if (ACPI_HANDLE(dev)) {
		acpi_id = acpi_match_device(dev->driver->acpi_match_table, dev);
		if (!acpi_id) {
			dev_err(dev, "No driver data\n");
			return -EINVAL;
		}
		driver_data = acpi_id->driver_data;
	}
	return driver_data;
}
EXPORT_SYMBOL(st_sensors_match_acpi_device);
#endif

MODULE_AUTHOR("Denis Ciocca <denis.ciocca@st.com>");
MODULE_DESCRIPTION("STMicroelectronics ST-sensors i2c driver");
MODULE_LICENSE("GPL v2");
+1 −2
Original line number Diff line number Diff line
@@ -70,8 +70,7 @@ static int st_gyro_i2c_probe(struct i2c_client *client,
	struct iio_dev *indio_dev;
	int err;

	st_sensors_of_name_probe(&client->dev, st_gyro_of_match,
				 client->name, sizeof(client->name));
	st_sensors_dev_name_probe(&client->dev, client->name, sizeof(client->name));

	settings = st_gyro_get_settings(client->name);
	if (!settings) {
+1 −2
Original line number Diff line number Diff line
@@ -74,8 +74,7 @@ static int st_gyro_spi_probe(struct spi_device *spi)
	struct iio_dev *indio_dev;
	int err;

	st_sensors_of_name_probe(&spi->dev, st_gyro_of_match,
				 spi->modalias, sizeof(spi->modalias));
	st_sensors_dev_name_probe(&spi->dev, spi->modalias, sizeof(spi->modalias));

	settings = st_gyro_get_settings(spi->modalias);
	if (!settings) {
Loading