All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] iio: imu: st_lsm6dsx: use i2c/spi device name for iio_dev name
@ 2017-04-03 17:27 Lorenzo Bianconi
  2017-04-03 19:43 ` Jonathan Cameron
  0 siblings, 1 reply; 6+ messages in thread
From: Lorenzo Bianconi @ 2017-04-03 17:27 UTC (permalink / raw)
  To: jic23; +Cc: linux-iio, lorenzo.bianconi

Use the correct chip name (e.g. lsm6dsm) as suffix for iio_dev name
instead of a generic one (lsm6dsx)

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
---
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h      |  4 +++-
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 14 +++++++++-----
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c  |  2 +-
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c  |  2 +-
 4 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
index 6a9849e..4839db7 100644
--- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
+++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
@@ -71,6 +71,7 @@ enum st_lsm6dsx_fifo_mode {
 
 /**
  * struct st_lsm6dsx_sensor - ST IMU sensor instance
+ * @name: Sensor name.
  * @id: Sensor identifier.
  * @hw: Pointer to instance of struct st_lsm6dsx_hw.
  * @gain: Configured sensor sensitivity.
@@ -83,6 +84,7 @@ enum st_lsm6dsx_fifo_mode {
  * @ts: Latest timestamp from the interrupt handler.
  */
 struct st_lsm6dsx_sensor {
+	char name[32];
 	enum st_lsm6dsx_sensor_id id;
 	struct st_lsm6dsx_hw *hw;
 
@@ -133,7 +135,7 @@ struct st_lsm6dsx_hw {
 #endif /* CONFIG_SPI_MASTER */
 };
 
-int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
+int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
 		     const struct st_lsm6dsx_transfer_function *tf_ops);
 int st_lsm6dsx_sensor_enable(struct st_lsm6dsx_sensor *sensor);
 int st_lsm6dsx_sensor_disable(struct st_lsm6dsx_sensor *sensor);
diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
index f80a3d4..98b51d7 100644
--- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
+++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
@@ -642,7 +642,8 @@ static int st_lsm6dsx_init_device(struct st_lsm6dsx_hw *hw)
 }
 
 static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
-					       enum st_lsm6dsx_sensor_id id)
+					       enum st_lsm6dsx_sensor_id id,
+					       const char *name)
 {
 	struct st_lsm6dsx_sensor *sensor;
 	struct iio_dev *iio_dev;
@@ -666,27 +667,30 @@ static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
 	case ST_LSM6DSX_ID_ACC:
 		iio_dev->channels = st_lsm6dsx_acc_channels;
 		iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_acc_channels);
-		iio_dev->name = "lsm6dsx_accel";
 		iio_dev->info = &st_lsm6dsx_acc_info;
 
 		sensor->decimator_mask = ST_LSM6DSX_REG_ACC_DEC_MASK;
+		scnprintf(sensor->name, sizeof(sensor->name), "%s_accel",
+			  name);
 		break;
 	case ST_LSM6DSX_ID_GYRO:
 		iio_dev->channels = st_lsm6dsx_gyro_channels;
 		iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_gyro_channels);
-		iio_dev->name = "lsm6dsx_gyro";
 		iio_dev->info = &st_lsm6dsx_gyro_info;
 
 		sensor->decimator_mask = ST_LSM6DSX_REG_GYRO_DEC_MASK;
+		scnprintf(sensor->name, sizeof(sensor->name), "%s_gyro",
+			  name);
 		break;
 	default:
 		return NULL;
 	}
+	iio_dev->name = sensor->name;
 
 	return iio_dev;
 }
 
-int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
+int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
 		     const struct st_lsm6dsx_transfer_function *tf_ops)
 {
 	struct st_lsm6dsx_hw *hw;
@@ -710,7 +714,7 @@ int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
 		return err;
 
 	for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) {
-		hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i);
+		hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i, name);
 		if (!hw->iio_devs[i])
 			return -ENOMEM;
 	}
diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
index 2e4ed26..09a51cf 100644
--- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
+++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
@@ -61,7 +61,7 @@ static int st_lsm6dsx_i2c_probe(struct i2c_client *client,
 				const struct i2c_device_id *id)
 {
 	return st_lsm6dsx_probe(&client->dev, client->irq,
-				(int)id->driver_data,
+				(int)id->driver_data, id->name,
 				&st_lsm6dsx_transfer_fn);
 }
 
diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
index 1bf4a58..f765a50 100644
--- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
+++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
@@ -78,7 +78,7 @@ static int st_lsm6dsx_spi_probe(struct spi_device *spi)
 	const struct spi_device_id *id = spi_get_device_id(spi);
 
 	return st_lsm6dsx_probe(&spi->dev, spi->irq,
-				(int)id->driver_data,
+				(int)id->driver_data, id->name,
 				&st_lsm6dsx_transfer_fn);
 }
 
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] iio: imu: st_lsm6dsx: use i2c/spi device name for iio_dev name
  2017-04-03 17:27 [PATCH] iio: imu: st_lsm6dsx: use i2c/spi device name for iio_dev name Lorenzo Bianconi
@ 2017-04-03 19:43 ` Jonathan Cameron
  2017-04-03 20:02   ` Lorenzo Bianconi
  0 siblings, 1 reply; 6+ messages in thread
From: Jonathan Cameron @ 2017-04-03 19:43 UTC (permalink / raw)
  To: Lorenzo Bianconi; +Cc: linux-iio, lorenzo.bianconi

On 03/04/17 18:27, Lorenzo Bianconi wrote:
> Use the correct chip name (e.g. lsm6dsm) as suffix for iio_dev name
> instead of a generic one (lsm6dsx)
> 
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
Hmm. Always a fun one.  Technically this is changing a userspace
ABI so is a problem unless we think no one will notice...

The question is whether the gain is worth the potential risk?

What do people think?

J
> ---
>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h      |  4 +++-
>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 14 +++++++++-----
>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c  |  2 +-
>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c  |  2 +-
>  4 files changed, 14 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
> index 6a9849e..4839db7 100644
> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
> @@ -71,6 +71,7 @@ enum st_lsm6dsx_fifo_mode {
>  
>  /**
>   * struct st_lsm6dsx_sensor - ST IMU sensor instance
> + * @name: Sensor name.
>   * @id: Sensor identifier.
>   * @hw: Pointer to instance of struct st_lsm6dsx_hw.
>   * @gain: Configured sensor sensitivity.
> @@ -83,6 +84,7 @@ enum st_lsm6dsx_fifo_mode {
>   * @ts: Latest timestamp from the interrupt handler.
>   */
>  struct st_lsm6dsx_sensor {
> +	char name[32];
>  	enum st_lsm6dsx_sensor_id id;
>  	struct st_lsm6dsx_hw *hw;
>  
> @@ -133,7 +135,7 @@ struct st_lsm6dsx_hw {
>  #endif /* CONFIG_SPI_MASTER */
>  };
>  
> -int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
> +int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
>  		     const struct st_lsm6dsx_transfer_function *tf_ops);
>  int st_lsm6dsx_sensor_enable(struct st_lsm6dsx_sensor *sensor);
>  int st_lsm6dsx_sensor_disable(struct st_lsm6dsx_sensor *sensor);
> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
> index f80a3d4..98b51d7 100644
> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
> @@ -642,7 +642,8 @@ static int st_lsm6dsx_init_device(struct st_lsm6dsx_hw *hw)
>  }
>  
>  static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
> -					       enum st_lsm6dsx_sensor_id id)
> +					       enum st_lsm6dsx_sensor_id id,
> +					       const char *name)
>  {
>  	struct st_lsm6dsx_sensor *sensor;
>  	struct iio_dev *iio_dev;
> @@ -666,27 +667,30 @@ static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
>  	case ST_LSM6DSX_ID_ACC:
>  		iio_dev->channels = st_lsm6dsx_acc_channels;
>  		iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_acc_channels);
> -		iio_dev->name = "lsm6dsx_accel";
>  		iio_dev->info = &st_lsm6dsx_acc_info;
>  
>  		sensor->decimator_mask = ST_LSM6DSX_REG_ACC_DEC_MASK;
> +		scnprintf(sensor->name, sizeof(sensor->name), "%s_accel",
> +			  name);
>  		break;
>  	case ST_LSM6DSX_ID_GYRO:
>  		iio_dev->channels = st_lsm6dsx_gyro_channels;
>  		iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_gyro_channels);
> -		iio_dev->name = "lsm6dsx_gyro";
>  		iio_dev->info = &st_lsm6dsx_gyro_info;
>  
>  		sensor->decimator_mask = ST_LSM6DSX_REG_GYRO_DEC_MASK;
> +		scnprintf(sensor->name, sizeof(sensor->name), "%s_gyro",
> +			  name);
>  		break;
>  	default:
>  		return NULL;
>  	}
> +	iio_dev->name = sensor->name;
>  
>  	return iio_dev;
>  }
>  
> -int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
> +int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
>  		     const struct st_lsm6dsx_transfer_function *tf_ops)
>  {
>  	struct st_lsm6dsx_hw *hw;
> @@ -710,7 +714,7 @@ int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>  		return err;
>  
>  	for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) {
> -		hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i);
> +		hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i, name);
>  		if (!hw->iio_devs[i])
>  			return -ENOMEM;
>  	}
> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
> index 2e4ed26..09a51cf 100644
> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
> @@ -61,7 +61,7 @@ static int st_lsm6dsx_i2c_probe(struct i2c_client *client,
>  				const struct i2c_device_id *id)
>  {
>  	return st_lsm6dsx_probe(&client->dev, client->irq,
> -				(int)id->driver_data,
> +				(int)id->driver_data, id->name,
>  				&st_lsm6dsx_transfer_fn);
>  }
>  
> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
> index 1bf4a58..f765a50 100644
> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
> @@ -78,7 +78,7 @@ static int st_lsm6dsx_spi_probe(struct spi_device *spi)
>  	const struct spi_device_id *id = spi_get_device_id(spi);
>  
>  	return st_lsm6dsx_probe(&spi->dev, spi->irq,
> -				(int)id->driver_data,
> +				(int)id->driver_data, id->name,
>  				&st_lsm6dsx_transfer_fn);
>  }
>  
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] iio: imu: st_lsm6dsx: use i2c/spi device name for iio_dev name
  2017-04-03 19:43 ` Jonathan Cameron
@ 2017-04-03 20:02   ` Lorenzo Bianconi
  2017-04-03 20:05     ` Jonathan Cameron
  0 siblings, 1 reply; 6+ messages in thread
From: Lorenzo Bianconi @ 2017-04-03 20:02 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: linux-iio, Lorenzo BIANCONI

> On 03/04/17 18:27, Lorenzo Bianconi wrote:
>> Use the correct chip name (e.g. lsm6dsm) as suffix for iio_dev name
>> instead of a generic one (lsm6dsx)
>>
>> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
> Hmm. Always a fun one.  Technically this is changing a userspace
> ABI so is a problem unless we think no one will notice...
>

Right.

> The question is whether the gain is worth the potential risk?

In this way we can support multiple chips at the same time (e.g.
lsm6dsm_accel and lsm6ds3h_gyro).
I needed that change when I had to support two different devices at
the same time, in particular lsm6dsm + lsm6ds3h.
What do you think? Does it worth? Fine if you think it does not :)

Regards,
Lorenzo

>
> What do people think?
>
> J
>> ---
>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h      |  4 +++-
>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 14 +++++++++-----
>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c  |  2 +-
>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c  |  2 +-
>>  4 files changed, 14 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>> index 6a9849e..4839db7 100644
>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>> @@ -71,6 +71,7 @@ enum st_lsm6dsx_fifo_mode {
>>
>>  /**
>>   * struct st_lsm6dsx_sensor - ST IMU sensor instance
>> + * @name: Sensor name.
>>   * @id: Sensor identifier.
>>   * @hw: Pointer to instance of struct st_lsm6dsx_hw.
>>   * @gain: Configured sensor sensitivity.
>> @@ -83,6 +84,7 @@ enum st_lsm6dsx_fifo_mode {
>>   * @ts: Latest timestamp from the interrupt handler.
>>   */
>>  struct st_lsm6dsx_sensor {
>> +     char name[32];
>>       enum st_lsm6dsx_sensor_id id;
>>       struct st_lsm6dsx_hw *hw;
>>
>> @@ -133,7 +135,7 @@ struct st_lsm6dsx_hw {
>>  #endif /* CONFIG_SPI_MASTER */
>>  };
>>
>> -int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>> +int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
>>                    const struct st_lsm6dsx_transfer_function *tf_ops);
>>  int st_lsm6dsx_sensor_enable(struct st_lsm6dsx_sensor *sensor);
>>  int st_lsm6dsx_sensor_disable(struct st_lsm6dsx_sensor *sensor);
>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>> index f80a3d4..98b51d7 100644
>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>> @@ -642,7 +642,8 @@ static int st_lsm6dsx_init_device(struct st_lsm6dsx_hw *hw)
>>  }
>>
>>  static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
>> -                                            enum st_lsm6dsx_sensor_id id)
>> +                                            enum st_lsm6dsx_sensor_id id,
>> +                                            const char *name)
>>  {
>>       struct st_lsm6dsx_sensor *sensor;
>>       struct iio_dev *iio_dev;
>> @@ -666,27 +667,30 @@ static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
>>       case ST_LSM6DSX_ID_ACC:
>>               iio_dev->channels = st_lsm6dsx_acc_channels;
>>               iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_acc_channels);
>> -             iio_dev->name = "lsm6dsx_accel";
>>               iio_dev->info = &st_lsm6dsx_acc_info;
>>
>>               sensor->decimator_mask = ST_LSM6DSX_REG_ACC_DEC_MASK;
>> +             scnprintf(sensor->name, sizeof(sensor->name), "%s_accel",
>> +                       name);
>>               break;
>>       case ST_LSM6DSX_ID_GYRO:
>>               iio_dev->channels = st_lsm6dsx_gyro_channels;
>>               iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_gyro_channels);
>> -             iio_dev->name = "lsm6dsx_gyro";
>>               iio_dev->info = &st_lsm6dsx_gyro_info;
>>
>>               sensor->decimator_mask = ST_LSM6DSX_REG_GYRO_DEC_MASK;
>> +             scnprintf(sensor->name, sizeof(sensor->name), "%s_gyro",
>> +                       name);
>>               break;
>>       default:
>>               return NULL;
>>       }
>> +     iio_dev->name = sensor->name;
>>
>>       return iio_dev;
>>  }
>>
>> -int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>> +int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
>>                    const struct st_lsm6dsx_transfer_function *tf_ops)
>>  {
>>       struct st_lsm6dsx_hw *hw;
>> @@ -710,7 +714,7 @@ int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>>               return err;
>>
>>       for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) {
>> -             hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i);
>> +             hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i, name);
>>               if (!hw->iio_devs[i])
>>                       return -ENOMEM;
>>       }
>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>> index 2e4ed26..09a51cf 100644
>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>> @@ -61,7 +61,7 @@ static int st_lsm6dsx_i2c_probe(struct i2c_client *client,
>>                               const struct i2c_device_id *id)
>>  {
>>       return st_lsm6dsx_probe(&client->dev, client->irq,
>> -                             (int)id->driver_data,
>> +                             (int)id->driver_data, id->name,
>>                               &st_lsm6dsx_transfer_fn);
>>  }
>>
>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>> index 1bf4a58..f765a50 100644
>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>> @@ -78,7 +78,7 @@ static int st_lsm6dsx_spi_probe(struct spi_device *spi)
>>       const struct spi_device_id *id = spi_get_device_id(spi);
>>
>>       return st_lsm6dsx_probe(&spi->dev, spi->irq,
>> -                             (int)id->driver_data,
>> +                             (int)id->driver_data, id->name,
>>                               &st_lsm6dsx_transfer_fn);
>>  }
>>
>>
>



-- 
UNIX is Sexy: who | grep -i blonde | talk; cd ~; wine; talk; touch;
unzip; touch; strip; gasp; finger; gasp; mount; fsck; more; yes; gasp;
umount; make clean; sleep

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] iio: imu: st_lsm6dsx: use i2c/spi device name for iio_dev name
  2017-04-03 20:02   ` Lorenzo Bianconi
@ 2017-04-03 20:05     ` Jonathan Cameron
  2017-04-03 20:13       ` Lorenzo Bianconi
  0 siblings, 1 reply; 6+ messages in thread
From: Jonathan Cameron @ 2017-04-03 20:05 UTC (permalink / raw)
  To: Lorenzo Bianconi; +Cc: linux-iio, Lorenzo BIANCONI

On 03/04/17 21:02, Lorenzo Bianconi wrote:
>> On 03/04/17 18:27, Lorenzo Bianconi wrote:
>>> Use the correct chip name (e.g. lsm6dsm) as suffix for iio_dev name
>>> instead of a generic one (lsm6dsx)
>>>
>>> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
>> Hmm. Always a fun one.  Technically this is changing a userspace
>> ABI so is a problem unless we think no one will notice...
>>
> 
> Right.
> 
>> The question is whether the gain is worth the potential risk?
> 
> In this way we can support multiple chips at the same time (e.g.
> lsm6dsm_accel and lsm6ds3h_gyro).
> I needed that change when I had to support two different devices at
> the same time, in particular lsm6dsm + lsm6ds3h.
> What do you think? Does it worth? Fine if you think it does not :)
There are lots of other ways of identifying devices, this one is
just a convenience really....

Lets leave it a few days and see if anyone else chips in.

Jonathan
> 
> Regards,
> Lorenzo
> 
>>
>> What do people think?
>>
>> J
>>> ---
>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h      |  4 +++-
>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 14 +++++++++-----
>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c  |  2 +-
>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c  |  2 +-
>>>  4 files changed, 14 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>>> index 6a9849e..4839db7 100644
>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>>> @@ -71,6 +71,7 @@ enum st_lsm6dsx_fifo_mode {
>>>
>>>  /**
>>>   * struct st_lsm6dsx_sensor - ST IMU sensor instance
>>> + * @name: Sensor name.
>>>   * @id: Sensor identifier.
>>>   * @hw: Pointer to instance of struct st_lsm6dsx_hw.
>>>   * @gain: Configured sensor sensitivity.
>>> @@ -83,6 +84,7 @@ enum st_lsm6dsx_fifo_mode {
>>>   * @ts: Latest timestamp from the interrupt handler.
>>>   */
>>>  struct st_lsm6dsx_sensor {
>>> +     char name[32];
>>>       enum st_lsm6dsx_sensor_id id;
>>>       struct st_lsm6dsx_hw *hw;
>>>
>>> @@ -133,7 +135,7 @@ struct st_lsm6dsx_hw {
>>>  #endif /* CONFIG_SPI_MASTER */
>>>  };
>>>
>>> -int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>>> +int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
>>>                    const struct st_lsm6dsx_transfer_function *tf_ops);
>>>  int st_lsm6dsx_sensor_enable(struct st_lsm6dsx_sensor *sensor);
>>>  int st_lsm6dsx_sensor_disable(struct st_lsm6dsx_sensor *sensor);
>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>>> index f80a3d4..98b51d7 100644
>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>>> @@ -642,7 +642,8 @@ static int st_lsm6dsx_init_device(struct st_lsm6dsx_hw *hw)
>>>  }
>>>
>>>  static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
>>> -                                            enum st_lsm6dsx_sensor_id id)
>>> +                                            enum st_lsm6dsx_sensor_id id,
>>> +                                            const char *name)
>>>  {
>>>       struct st_lsm6dsx_sensor *sensor;
>>>       struct iio_dev *iio_dev;
>>> @@ -666,27 +667,30 @@ static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
>>>       case ST_LSM6DSX_ID_ACC:
>>>               iio_dev->channels = st_lsm6dsx_acc_channels;
>>>               iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_acc_channels);
>>> -             iio_dev->name = "lsm6dsx_accel";
>>>               iio_dev->info = &st_lsm6dsx_acc_info;
>>>
>>>               sensor->decimator_mask = ST_LSM6DSX_REG_ACC_DEC_MASK;
>>> +             scnprintf(sensor->name, sizeof(sensor->name), "%s_accel",
>>> +                       name);
>>>               break;
>>>       case ST_LSM6DSX_ID_GYRO:
>>>               iio_dev->channels = st_lsm6dsx_gyro_channels;
>>>               iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_gyro_channels);
>>> -             iio_dev->name = "lsm6dsx_gyro";
>>>               iio_dev->info = &st_lsm6dsx_gyro_info;
>>>
>>>               sensor->decimator_mask = ST_LSM6DSX_REG_GYRO_DEC_MASK;
>>> +             scnprintf(sensor->name, sizeof(sensor->name), "%s_gyro",
>>> +                       name);
>>>               break;
>>>       default:
>>>               return NULL;
>>>       }
>>> +     iio_dev->name = sensor->name;
>>>
>>>       return iio_dev;
>>>  }
>>>
>>> -int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>>> +int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
>>>                    const struct st_lsm6dsx_transfer_function *tf_ops)
>>>  {
>>>       struct st_lsm6dsx_hw *hw;
>>> @@ -710,7 +714,7 @@ int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>>>               return err;
>>>
>>>       for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) {
>>> -             hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i);
>>> +             hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i, name);
>>>               if (!hw->iio_devs[i])
>>>                       return -ENOMEM;
>>>       }
>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>>> index 2e4ed26..09a51cf 100644
>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>>> @@ -61,7 +61,7 @@ static int st_lsm6dsx_i2c_probe(struct i2c_client *client,
>>>                               const struct i2c_device_id *id)
>>>  {
>>>       return st_lsm6dsx_probe(&client->dev, client->irq,
>>> -                             (int)id->driver_data,
>>> +                             (int)id->driver_data, id->name,
>>>                               &st_lsm6dsx_transfer_fn);
>>>  }
>>>
>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>>> index 1bf4a58..f765a50 100644
>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>>> @@ -78,7 +78,7 @@ static int st_lsm6dsx_spi_probe(struct spi_device *spi)
>>>       const struct spi_device_id *id = spi_get_device_id(spi);
>>>
>>>       return st_lsm6dsx_probe(&spi->dev, spi->irq,
>>> -                             (int)id->driver_data,
>>> +                             (int)id->driver_data, id->name,
>>>                               &st_lsm6dsx_transfer_fn);
>>>  }
>>>
>>>
>>
> 
> 
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] iio: imu: st_lsm6dsx: use i2c/spi device name for iio_dev name
  2017-04-03 20:05     ` Jonathan Cameron
@ 2017-04-03 20:13       ` Lorenzo Bianconi
  2017-04-08 17:10         ` Jonathan Cameron
  0 siblings, 1 reply; 6+ messages in thread
From: Lorenzo Bianconi @ 2017-04-03 20:13 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: linux-iio, Lorenzo BIANCONI

> On 03/04/17 21:02, Lorenzo Bianconi wrote:
>>> On 03/04/17 18:27, Lorenzo Bianconi wrote:
>>>> Use the correct chip name (e.g. lsm6dsm) as suffix for iio_dev name
>>>> instead of a generic one (lsm6dsx)
>>>>
>>>> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
>>> Hmm. Always a fun one.  Technically this is changing a userspace
>>> ABI so is a problem unless we think no one will notice...
>>>
>>
>> Right.
>>
>>> The question is whether the gain is worth the potential risk?
>>
>> In this way we can support multiple chips at the same time (e.g.
>> lsm6dsm_accel and lsm6ds3h_gyro).
>> I needed that change when I had to support two different devices at
>> the same time, in particular lsm6dsm + lsm6ds3h.
>> What do you think? Does it worth? Fine if you think it does not :)
> There are lots of other ways of identifying devices, this one is
> just a convenience really....
>
> Lets leave it a few days and see if anyone else chips in.

Fine,
regards,

Lorenzo

>
> Jonathan
>>
>> Regards,
>> Lorenzo
>>
>>>
>>> What do people think?
>>>
>>> J
>>>> ---
>>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h      |  4 +++-
>>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 14 +++++++++-----
>>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c  |  2 +-
>>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c  |  2 +-
>>>>  4 files changed, 14 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>>>> index 6a9849e..4839db7 100644
>>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>>>> @@ -71,6 +71,7 @@ enum st_lsm6dsx_fifo_mode {
>>>>
>>>>  /**
>>>>   * struct st_lsm6dsx_sensor - ST IMU sensor instance
>>>> + * @name: Sensor name.
>>>>   * @id: Sensor identifier.
>>>>   * @hw: Pointer to instance of struct st_lsm6dsx_hw.
>>>>   * @gain: Configured sensor sensitivity.
>>>> @@ -83,6 +84,7 @@ enum st_lsm6dsx_fifo_mode {
>>>>   * @ts: Latest timestamp from the interrupt handler.
>>>>   */
>>>>  struct st_lsm6dsx_sensor {
>>>> +     char name[32];
>>>>       enum st_lsm6dsx_sensor_id id;
>>>>       struct st_lsm6dsx_hw *hw;
>>>>
>>>> @@ -133,7 +135,7 @@ struct st_lsm6dsx_hw {
>>>>  #endif /* CONFIG_SPI_MASTER */
>>>>  };
>>>>
>>>> -int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>>>> +int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
>>>>                    const struct st_lsm6dsx_transfer_function *tf_ops);
>>>>  int st_lsm6dsx_sensor_enable(struct st_lsm6dsx_sensor *sensor);
>>>>  int st_lsm6dsx_sensor_disable(struct st_lsm6dsx_sensor *sensor);
>>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>>>> index f80a3d4..98b51d7 100644
>>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>>>> @@ -642,7 +642,8 @@ static int st_lsm6dsx_init_device(struct st_lsm6dsx_hw *hw)
>>>>  }
>>>>
>>>>  static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
>>>> -                                            enum st_lsm6dsx_sensor_id id)
>>>> +                                            enum st_lsm6dsx_sensor_id id,
>>>> +                                            const char *name)
>>>>  {
>>>>       struct st_lsm6dsx_sensor *sensor;
>>>>       struct iio_dev *iio_dev;
>>>> @@ -666,27 +667,30 @@ static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
>>>>       case ST_LSM6DSX_ID_ACC:
>>>>               iio_dev->channels = st_lsm6dsx_acc_channels;
>>>>               iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_acc_channels);
>>>> -             iio_dev->name = "lsm6dsx_accel";
>>>>               iio_dev->info = &st_lsm6dsx_acc_info;
>>>>
>>>>               sensor->decimator_mask = ST_LSM6DSX_REG_ACC_DEC_MASK;
>>>> +             scnprintf(sensor->name, sizeof(sensor->name), "%s_accel",
>>>> +                       name);
>>>>               break;
>>>>       case ST_LSM6DSX_ID_GYRO:
>>>>               iio_dev->channels = st_lsm6dsx_gyro_channels;
>>>>               iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_gyro_channels);
>>>> -             iio_dev->name = "lsm6dsx_gyro";
>>>>               iio_dev->info = &st_lsm6dsx_gyro_info;
>>>>
>>>>               sensor->decimator_mask = ST_LSM6DSX_REG_GYRO_DEC_MASK;
>>>> +             scnprintf(sensor->name, sizeof(sensor->name), "%s_gyro",
>>>> +                       name);
>>>>               break;
>>>>       default:
>>>>               return NULL;
>>>>       }
>>>> +     iio_dev->name = sensor->name;
>>>>
>>>>       return iio_dev;
>>>>  }
>>>>
>>>> -int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>>>> +int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
>>>>                    const struct st_lsm6dsx_transfer_function *tf_ops)
>>>>  {
>>>>       struct st_lsm6dsx_hw *hw;
>>>> @@ -710,7 +714,7 @@ int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>>>>               return err;
>>>>
>>>>       for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) {
>>>> -             hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i);
>>>> +             hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i, name);
>>>>               if (!hw->iio_devs[i])
>>>>                       return -ENOMEM;
>>>>       }
>>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>>>> index 2e4ed26..09a51cf 100644
>>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>>>> @@ -61,7 +61,7 @@ static int st_lsm6dsx_i2c_probe(struct i2c_client *client,
>>>>                               const struct i2c_device_id *id)
>>>>  {
>>>>       return st_lsm6dsx_probe(&client->dev, client->irq,
>>>> -                             (int)id->driver_data,
>>>> +                             (int)id->driver_data, id->name,
>>>>                               &st_lsm6dsx_transfer_fn);
>>>>  }
>>>>
>>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>>>> index 1bf4a58..f765a50 100644
>>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>>>> @@ -78,7 +78,7 @@ static int st_lsm6dsx_spi_probe(struct spi_device *spi)
>>>>       const struct spi_device_id *id = spi_get_device_id(spi);
>>>>
>>>>       return st_lsm6dsx_probe(&spi->dev, spi->irq,
>>>> -                             (int)id->driver_data,
>>>> +                             (int)id->driver_data, id->name,
>>>>                               &st_lsm6dsx_transfer_fn);
>>>>  }
>>>>
>>>>
>>>
>>
>>
>>
>



-- 
UNIX is Sexy: who | grep -i blonde | talk; cd ~; wine; talk; touch;
unzip; touch; strip; gasp; finger; gasp; mount; fsck; more; yes; gasp;
umount; make clean; sleep

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] iio: imu: st_lsm6dsx: use i2c/spi device name for iio_dev name
  2017-04-03 20:13       ` Lorenzo Bianconi
@ 2017-04-08 17:10         ` Jonathan Cameron
  0 siblings, 0 replies; 6+ messages in thread
From: Jonathan Cameron @ 2017-04-08 17:10 UTC (permalink / raw)
  To: Lorenzo Bianconi; +Cc: linux-iio, Lorenzo BIANCONI

On 03/04/17 21:13, Lorenzo Bianconi wrote:
>> On 03/04/17 21:02, Lorenzo Bianconi wrote:
>>>> On 03/04/17 18:27, Lorenzo Bianconi wrote:
>>>>> Use the correct chip name (e.g. lsm6dsm) as suffix for iio_dev name
>>>>> instead of a generic one (lsm6dsx)
>>>>>
>>>>> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@st.com>
>>>> Hmm. Always a fun one.  Technically this is changing a userspace
>>>> ABI so is a problem unless we think no one will notice...
>>>>
>>>
>>> Right.
>>>
>>>> The question is whether the gain is worth the potential risk?
>>>
>>> In this way we can support multiple chips at the same time (e.g.
>>> lsm6dsm_accel and lsm6ds3h_gyro).
>>> I needed that change when I had to support two different devices at
>>> the same time, in particular lsm6dsm + lsm6ds3h.
>>> What do you think? Does it worth? Fine if you think it does not :)
>> There are lots of other ways of identifying devices, this one is
>> just a convenience really....
>>
>> Lets leave it a few days and see if anyone else chips in.
> 
> Fine,
> regards,
> 
> Lorenzo
Ah well. No one else cares ;)

Applied to the togreg branch of iio.git. We'll see if
anyone screams.

Jonathan
> 
>>
>> Jonathan
>>>
>>> Regards,
>>> Lorenzo
>>>
>>>>
>>>> What do people think?
>>>>
>>>> J
>>>>> ---
>>>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h      |  4 +++-
>>>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 14 +++++++++-----
>>>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c  |  2 +-
>>>>>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c  |  2 +-
>>>>>  4 files changed, 14 insertions(+), 8 deletions(-)
>>>>>
>>>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>>>>> index 6a9849e..4839db7 100644
>>>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>>>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
>>>>> @@ -71,6 +71,7 @@ enum st_lsm6dsx_fifo_mode {
>>>>>
>>>>>  /**
>>>>>   * struct st_lsm6dsx_sensor - ST IMU sensor instance
>>>>> + * @name: Sensor name.
>>>>>   * @id: Sensor identifier.
>>>>>   * @hw: Pointer to instance of struct st_lsm6dsx_hw.
>>>>>   * @gain: Configured sensor sensitivity.
>>>>> @@ -83,6 +84,7 @@ enum st_lsm6dsx_fifo_mode {
>>>>>   * @ts: Latest timestamp from the interrupt handler.
>>>>>   */
>>>>>  struct st_lsm6dsx_sensor {
>>>>> +     char name[32];
>>>>>       enum st_lsm6dsx_sensor_id id;
>>>>>       struct st_lsm6dsx_hw *hw;
>>>>>
>>>>> @@ -133,7 +135,7 @@ struct st_lsm6dsx_hw {
>>>>>  #endif /* CONFIG_SPI_MASTER */
>>>>>  };
>>>>>
>>>>> -int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>>>>> +int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
>>>>>                    const struct st_lsm6dsx_transfer_function *tf_ops);
>>>>>  int st_lsm6dsx_sensor_enable(struct st_lsm6dsx_sensor *sensor);
>>>>>  int st_lsm6dsx_sensor_disable(struct st_lsm6dsx_sensor *sensor);
>>>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>>>>> index f80a3d4..98b51d7 100644
>>>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>>>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
>>>>> @@ -642,7 +642,8 @@ static int st_lsm6dsx_init_device(struct st_lsm6dsx_hw *hw)
>>>>>  }
>>>>>
>>>>>  static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
>>>>> -                                            enum st_lsm6dsx_sensor_id id)
>>>>> +                                            enum st_lsm6dsx_sensor_id id,
>>>>> +                                            const char *name)
>>>>>  {
>>>>>       struct st_lsm6dsx_sensor *sensor;
>>>>>       struct iio_dev *iio_dev;
>>>>> @@ -666,27 +667,30 @@ static struct iio_dev *st_lsm6dsx_alloc_iiodev(struct st_lsm6dsx_hw *hw,
>>>>>       case ST_LSM6DSX_ID_ACC:
>>>>>               iio_dev->channels = st_lsm6dsx_acc_channels;
>>>>>               iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_acc_channels);
>>>>> -             iio_dev->name = "lsm6dsx_accel";
>>>>>               iio_dev->info = &st_lsm6dsx_acc_info;
>>>>>
>>>>>               sensor->decimator_mask = ST_LSM6DSX_REG_ACC_DEC_MASK;
>>>>> +             scnprintf(sensor->name, sizeof(sensor->name), "%s_accel",
>>>>> +                       name);
>>>>>               break;
>>>>>       case ST_LSM6DSX_ID_GYRO:
>>>>>               iio_dev->channels = st_lsm6dsx_gyro_channels;
>>>>>               iio_dev->num_channels = ARRAY_SIZE(st_lsm6dsx_gyro_channels);
>>>>> -             iio_dev->name = "lsm6dsx_gyro";
>>>>>               iio_dev->info = &st_lsm6dsx_gyro_info;
>>>>>
>>>>>               sensor->decimator_mask = ST_LSM6DSX_REG_GYRO_DEC_MASK;
>>>>> +             scnprintf(sensor->name, sizeof(sensor->name), "%s_gyro",
>>>>> +                       name);
>>>>>               break;
>>>>>       default:
>>>>>               return NULL;
>>>>>       }
>>>>> +     iio_dev->name = sensor->name;
>>>>>
>>>>>       return iio_dev;
>>>>>  }
>>>>>
>>>>> -int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>>>>> +int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id, const char *name,
>>>>>                    const struct st_lsm6dsx_transfer_function *tf_ops)
>>>>>  {
>>>>>       struct st_lsm6dsx_hw *hw;
>>>>> @@ -710,7 +714,7 @@ int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>>>>>               return err;
>>>>>
>>>>>       for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) {
>>>>> -             hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i);
>>>>> +             hw->iio_devs[i] = st_lsm6dsx_alloc_iiodev(hw, i, name);
>>>>>               if (!hw->iio_devs[i])
>>>>>                       return -ENOMEM;
>>>>>       }
>>>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>>>>> index 2e4ed26..09a51cf 100644
>>>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>>>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c
>>>>> @@ -61,7 +61,7 @@ static int st_lsm6dsx_i2c_probe(struct i2c_client *client,
>>>>>                               const struct i2c_device_id *id)
>>>>>  {
>>>>>       return st_lsm6dsx_probe(&client->dev, client->irq,
>>>>> -                             (int)id->driver_data,
>>>>> +                             (int)id->driver_data, id->name,
>>>>>                               &st_lsm6dsx_transfer_fn);
>>>>>  }
>>>>>
>>>>> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>>>>> index 1bf4a58..f765a50 100644
>>>>> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>>>>> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_spi.c
>>>>> @@ -78,7 +78,7 @@ static int st_lsm6dsx_spi_probe(struct spi_device *spi)
>>>>>       const struct spi_device_id *id = spi_get_device_id(spi);
>>>>>
>>>>>       return st_lsm6dsx_probe(&spi->dev, spi->irq,
>>>>> -                             (int)id->driver_data,
>>>>> +                             (int)id->driver_data, id->name,
>>>>>                               &st_lsm6dsx_transfer_fn);
>>>>>  }
>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>
> 
> 
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-04-08 17:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-03 17:27 [PATCH] iio: imu: st_lsm6dsx: use i2c/spi device name for iio_dev name Lorenzo Bianconi
2017-04-03 19:43 ` Jonathan Cameron
2017-04-03 20:02   ` Lorenzo Bianconi
2017-04-03 20:05     ` Jonathan Cameron
2017-04-03 20:13       ` Lorenzo Bianconi
2017-04-08 17:10         ` Jonathan Cameron

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.