Re: [PATCH 4/4] iio: pressure: st_pressure: inline per-sensor data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/11/16 15:10, Linus Walleij wrote:
> We have #defines for all the individual sensor registers and
> value/mask pairs #defined at the top of the file and used at
> exactly one spot.
> 
> This is usually good if the #defines give a meaning to the
> opaque magic numbers.
> 
> However in this case, the semantic meaning is inherent in the
> name of the C99-addressable fields, and that means duplication
> of information, and only makes the code hard to maintain since
> you every time have to add a new #define AND update the site
> where it is to be used.
> 
> Get rid of the #defines and just open code the values into the
> appropriate struct elements. Make sure to explicitly address
> the .hz and .value fields in the st_sensor_odr_avl struct
> so that the meaning of all values is clear.
> 
> This patch is purely syntactic should have no semantic effect.
> 
> Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
Also good. Applied to the togreg branch of iio.git and pushed out
soon as testing for the autobuilders to play with it.

Thanks,

Jonathan
> ---
>  drivers/iio/pressure/st_pressure_core.c | 257 ++++++++++++--------------------
>  1 file changed, 92 insertions(+), 165 deletions(-)
> 
> diff --git a/drivers/iio/pressure/st_pressure_core.c b/drivers/iio/pressure/st_pressure_core.c
> index 55df9a75eb3a..e19e0787864c 100644
> --- a/drivers/iio/pressure/st_pressure_core.c
> +++ b/drivers/iio/pressure/st_pressure_core.c
> @@ -112,115 +112,24 @@
>  #define ST_PRESS_1_OUT_XL_ADDR			0x28
>  #define ST_TEMP_1_OUT_L_ADDR			0x2b
>  
> -/*
> - * CUSTOM VALUES FOR LPS331AP SENSOR
> - * See LPS331AP datasheet:
> - * http://www2.st.com/resource/en/datasheet/lps331ap.pdf
> - */
> -#define ST_PRESS_LPS331AP_WAI_EXP		0xbb
> -#define ST_PRESS_LPS331AP_ODR_ADDR		0x20
> -#define ST_PRESS_LPS331AP_ODR_MASK		0x70
> -#define ST_PRESS_LPS331AP_ODR_AVL_1HZ_VAL	0x01
> -#define ST_PRESS_LPS331AP_ODR_AVL_7HZ_VAL	0x05
> -#define ST_PRESS_LPS331AP_ODR_AVL_13HZ_VAL	0x06
> -#define ST_PRESS_LPS331AP_ODR_AVL_25HZ_VAL	0x07
> -#define ST_PRESS_LPS331AP_PW_ADDR		0x20
> -#define ST_PRESS_LPS331AP_PW_MASK		0x80
> -#define ST_PRESS_LPS331AP_FS_ADDR		0x23
> -#define ST_PRESS_LPS331AP_FS_MASK		0x30
> -#define ST_PRESS_LPS331AP_BDU_ADDR		0x20
> -#define ST_PRESS_LPS331AP_BDU_MASK		0x04
> -#define ST_PRESS_LPS331AP_DRDY_IRQ_ADDR		0x22
> -#define ST_PRESS_LPS331AP_DRDY_IRQ_INT1_MASK	0x04
> -#define ST_PRESS_LPS331AP_DRDY_IRQ_INT2_MASK	0x20
> -#define ST_PRESS_LPS331AP_IHL_IRQ_ADDR		0x22
> -#define ST_PRESS_LPS331AP_IHL_IRQ_MASK		0x80
> -#define ST_PRESS_LPS331AP_OD_IRQ_ADDR		0x22
> -#define ST_PRESS_LPS331AP_OD_IRQ_MASK		0x40
> -#define ST_PRESS_LPS331AP_MULTIREAD_BIT		true
> -
> -/*
> - * CUSTOM VALUES FOR THE OBSOLETE LPS001WP SENSOR
> - */
> -
>  /* LPS001WP pressure resolution */
>  #define ST_PRESS_LPS001WP_LSB_PER_MBAR		16UL
>  /* LPS001WP temperature resolution */
>  #define ST_PRESS_LPS001WP_LSB_PER_CELSIUS	64UL
> -
> -#define ST_PRESS_LPS001WP_WAI_EXP		0xba
> -#define ST_PRESS_LPS001WP_ODR_ADDR		0x20
> -#define ST_PRESS_LPS001WP_ODR_MASK		0x30
> -#define ST_PRESS_LPS001WP_ODR_AVL_1HZ_VAL	0x01
> -#define ST_PRESS_LPS001WP_ODR_AVL_7HZ_VAL	0x02
> -#define ST_PRESS_LPS001WP_ODR_AVL_13HZ_VAL	0x03
> -#define ST_PRESS_LPS001WP_PW_ADDR		0x20
> -#define ST_PRESS_LPS001WP_PW_MASK		0x40
> +/* LPS001WP pressure gain */
>  #define ST_PRESS_LPS001WP_FS_AVL_PRESS_GAIN \
>  	(100000000UL / ST_PRESS_LPS001WP_LSB_PER_MBAR)
> -#define ST_PRESS_LPS001WP_BDU_ADDR		0x20
> -#define ST_PRESS_LPS001WP_BDU_MASK		0x04
> -#define ST_PRESS_LPS001WP_MULTIREAD_BIT		true
> +/* LPS001WP pressure and temp L addresses */
>  #define ST_PRESS_LPS001WP_OUT_L_ADDR		0x28
>  #define ST_TEMP_LPS001WP_OUT_L_ADDR		0x2a
>  
> -/*
> - * CUSTOM VALUES FOR LPS25H SENSOR
> - * See LPS25H datasheet:
> - * http://www2.st.com/resource/en/datasheet/lps25h.pdf
> - */
> -#define ST_PRESS_LPS25H_WAI_EXP			0xbd
> -#define ST_PRESS_LPS25H_ODR_ADDR		0x20
> -#define ST_PRESS_LPS25H_ODR_MASK		0x70
> -#define ST_PRESS_LPS25H_ODR_AVL_1HZ_VAL		0x01
> -#define ST_PRESS_LPS25H_ODR_AVL_7HZ_VAL		0x02
> -#define ST_PRESS_LPS25H_ODR_AVL_13HZ_VAL	0x03
> -#define ST_PRESS_LPS25H_ODR_AVL_25HZ_VAL	0x04
> -#define ST_PRESS_LPS25H_PW_ADDR			0x20
> -#define ST_PRESS_LPS25H_PW_MASK			0x80
> -#define ST_PRESS_LPS25H_BDU_ADDR		0x20
> -#define ST_PRESS_LPS25H_BDU_MASK		0x04
> -#define ST_PRESS_LPS25H_DRDY_IRQ_ADDR		0x23
> -#define ST_PRESS_LPS25H_DRDY_IRQ_INT1_MASK	0x01
> -#define ST_PRESS_LPS25H_DRDY_IRQ_INT2_MASK	0x10
> -#define ST_PRESS_LPS25H_IHL_IRQ_ADDR		0x22
> -#define ST_PRESS_LPS25H_IHL_IRQ_MASK		0x80
> -#define ST_PRESS_LPS25H_OD_IRQ_ADDR		0x22
> -#define ST_PRESS_LPS25H_OD_IRQ_MASK		0x40
> -#define ST_PRESS_LPS25H_MULTIREAD_BIT		true
> +/* LPS25H pressure and temp L addresses */
>  #define ST_PRESS_LPS25H_OUT_XL_ADDR		0x28
>  #define ST_TEMP_LPS25H_OUT_L_ADDR		0x2b
>  
> -/*
> - * CUSTOM VALUES FOR LPS22HB SENSOR
> - * See LPS22HB datasheet:
> - * http://www2.st.com/resource/en/datasheet/lps22hb.pdf
> - */
> -
>  /* LPS22HB temperature sensitivity */
>  #define ST_PRESS_LPS22HB_LSB_PER_CELSIUS	100UL
>  
> -#define ST_PRESS_LPS22HB_WAI_EXP		0xb1
> -#define ST_PRESS_LPS22HB_ODR_ADDR		0x10
> -#define ST_PRESS_LPS22HB_ODR_MASK		0x70
> -#define ST_PRESS_LPS22HB_ODR_AVL_1HZ_VAL	0x01
> -#define ST_PRESS_LPS22HB_ODR_AVL_10HZ_VAL	0x02
> -#define ST_PRESS_LPS22HB_ODR_AVL_25HZ_VAL	0x03
> -#define ST_PRESS_LPS22HB_ODR_AVL_50HZ_VAL	0x04
> -#define ST_PRESS_LPS22HB_ODR_AVL_75HZ_VAL	0x05
> -#define ST_PRESS_LPS22HB_PW_ADDR		0x10
> -#define ST_PRESS_LPS22HB_PW_MASK		0x70
> -#define ST_PRESS_LPS22HB_BDU_ADDR		0x10
> -#define ST_PRESS_LPS22HB_BDU_MASK		0x02
> -#define ST_PRESS_LPS22HB_DRDY_IRQ_ADDR		0x12
> -#define ST_PRESS_LPS22HB_DRDY_IRQ_INT1_MASK	0x04
> -#define ST_PRESS_LPS22HB_DRDY_IRQ_INT2_MASK	0x08
> -#define ST_PRESS_LPS22HB_IHL_IRQ_ADDR		0x12
> -#define ST_PRESS_LPS22HB_IHL_IRQ_MASK		0x80
> -#define ST_PRESS_LPS22HB_OD_IRQ_ADDR		0x12
> -#define ST_PRESS_LPS22HB_OD_IRQ_MASK		0x40
> -#define ST_PRESS_LPS22HB_MULTIREAD_BIT		true
> -
>  static const struct iio_chan_spec st_press_1_channels[] = {
>  	{
>  		.type = IIO_PRESSURE,
> @@ -321,7 +230,12 @@ static const struct iio_chan_spec st_press_lps22hb_channels[] = {
>  
>  static const struct st_sensor_settings st_press_sensors_settings[] = {
>  	{
> -		.wai = ST_PRESS_LPS331AP_WAI_EXP,
> +		/*
> +		 * CUSTOM VALUES FOR LPS331AP SENSOR
> +		 * See LPS331AP datasheet:
> +		 * http://www2.st.com/resource/en/datasheet/lps331ap.pdf
> +		 */
> +		.wai = 0xbb,
>  		.wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS,
>  		.sensors_supported = {
>  			[0] = LPS331AP_PRESS_DEV_NAME,
> @@ -329,24 +243,24 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
>  		.ch = (struct iio_chan_spec *)st_press_1_channels,
>  		.num_ch = ARRAY_SIZE(st_press_1_channels),
>  		.odr = {
> -			.addr = ST_PRESS_LPS331AP_ODR_ADDR,
> -			.mask = ST_PRESS_LPS331AP_ODR_MASK,
> +			.addr = 0x20,
> +			.mask = 0x70,
>  			.odr_avl = {
> -				{ 1, ST_PRESS_LPS331AP_ODR_AVL_1HZ_VAL, },
> -				{ 7, ST_PRESS_LPS331AP_ODR_AVL_7HZ_VAL, },
> -				{ 13, ST_PRESS_LPS331AP_ODR_AVL_13HZ_VAL, },
> -				{ 25, ST_PRESS_LPS331AP_ODR_AVL_25HZ_VAL, },
> +				{ .hz = 1, .value = 0x01 },
> +				{ .hz = 7, .value = 0x05 },
> +				{ .hz = 13, .value = 0x06 },
> +				{ .hz = 25, .value = 0x07 },
>  			},
>  		},
>  		.pw = {
> -			.addr = ST_PRESS_LPS331AP_PW_ADDR,
> -			.mask = ST_PRESS_LPS331AP_PW_MASK,
> +			.addr = 0x20,
> +			.mask = 0x80,
>  			.value_on = ST_SENSORS_DEFAULT_POWER_ON_VALUE,
>  			.value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE,
>  		},
>  		.fs = {
> -			.addr = ST_PRESS_LPS331AP_FS_ADDR,
> -			.mask = ST_PRESS_LPS331AP_FS_MASK,
> +			.addr = 0x23,
> +			.mask = 0x30,
>  			.fs_avl = {
>  				/*
>  				 * Pressure and temperature sensitivity values
> @@ -360,24 +274,27 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
>  			},
>  		},
>  		.bdu = {
> -			.addr = ST_PRESS_LPS331AP_BDU_ADDR,
> -			.mask = ST_PRESS_LPS331AP_BDU_MASK,
> +			.addr = 0x20,
> +			.mask = 0x04,
>  		},
>  		.drdy_irq = {
> -			.addr = ST_PRESS_LPS331AP_DRDY_IRQ_ADDR,
> -			.mask_int1 = ST_PRESS_LPS331AP_DRDY_IRQ_INT1_MASK,
> -			.mask_int2 = ST_PRESS_LPS331AP_DRDY_IRQ_INT2_MASK,
> -			.addr_ihl = ST_PRESS_LPS331AP_IHL_IRQ_ADDR,
> -			.mask_ihl = ST_PRESS_LPS331AP_IHL_IRQ_MASK,
> -			.addr_od = ST_PRESS_LPS331AP_OD_IRQ_ADDR,
> -			.mask_od = ST_PRESS_LPS331AP_OD_IRQ_MASK,
> +			.addr = 0x22,
> +			.mask_int1 = 0x04,
> +			.mask_int2 = 0x20,
> +			.addr_ihl = 0x22,
> +			.mask_ihl = 0x80,
> +			.addr_od = 0x22,
> +			.mask_od = 0x40,
>  			.addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
>  		},
> -		.multi_read_bit = ST_PRESS_LPS331AP_MULTIREAD_BIT,
> +		.multi_read_bit = true,
>  		.bootime = 2,
>  	},
>  	{
> -		.wai = ST_PRESS_LPS001WP_WAI_EXP,
> +		/*
> +		 * CUSTOM VALUES FOR LPS001WP SENSOR
> +		 */
> +		.wai = 0xba,
>  		.wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS,
>  		.sensors_supported = {
>  			[0] = LPS001WP_PRESS_DEV_NAME,
> @@ -385,17 +302,17 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
>  		.ch = (struct iio_chan_spec *)st_press_lps001wp_channels,
>  		.num_ch = ARRAY_SIZE(st_press_lps001wp_channels),
>  		.odr = {
> -			.addr = ST_PRESS_LPS001WP_ODR_ADDR,
> -			.mask = ST_PRESS_LPS001WP_ODR_MASK,
> +			.addr = 0x20,
> +			.mask = 0x30,
>  			.odr_avl = {
> -				{ 1, ST_PRESS_LPS001WP_ODR_AVL_1HZ_VAL, },
> -				{ 7, ST_PRESS_LPS001WP_ODR_AVL_7HZ_VAL, },
> -				{ 13, ST_PRESS_LPS001WP_ODR_AVL_13HZ_VAL, },
> +				{ .hz = 1, .value = 0x01 },
> +				{ .hz = 7, .value = 0x02 },
> +				{ .hz = 13, .value = 0x03 },
>  			},
>  		},
>  		.pw = {
> -			.addr = ST_PRESS_LPS001WP_PW_ADDR,
> -			.mask = ST_PRESS_LPS001WP_PW_MASK,
> +			.addr = 0x20,
> +			.mask = 0x40,
>  			.value_on = ST_SENSORS_DEFAULT_POWER_ON_VALUE,
>  			.value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE,
>  		},
> @@ -413,17 +330,22 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
>  			},
>  		},
>  		.bdu = {
> -			.addr = ST_PRESS_LPS001WP_BDU_ADDR,
> -			.mask = ST_PRESS_LPS001WP_BDU_MASK,
> +			.addr = 0x20,
> +			.mask = 0x04,
>  		},
>  		.drdy_irq = {
>  			.addr = 0,
>  		},
> -		.multi_read_bit = ST_PRESS_LPS001WP_MULTIREAD_BIT,
> +		.multi_read_bit = true,
>  		.bootime = 2,
>  	},
>  	{
> -		.wai = ST_PRESS_LPS25H_WAI_EXP,
> +		/*
> +		 * CUSTOM VALUES FOR LPS25H SENSOR
> +		 * See LPS25H datasheet:
> +		 * http://www2.st.com/resource/en/datasheet/lps25h.pdf
> +		 */
> +		.wai = 0xbd,
>  		.wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS,
>  		.sensors_supported = {
>  			[0] = LPS25H_PRESS_DEV_NAME,
> @@ -431,18 +353,18 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
>  		.ch = (struct iio_chan_spec *)st_press_1_channels,
>  		.num_ch = ARRAY_SIZE(st_press_1_channels),
>  		.odr = {
> -			.addr = ST_PRESS_LPS25H_ODR_ADDR,
> -			.mask = ST_PRESS_LPS25H_ODR_MASK,
> +			.addr = 0x20,
> +			.mask = 0x70,
>  			.odr_avl = {
> -				{ 1, ST_PRESS_LPS25H_ODR_AVL_1HZ_VAL, },
> -				{ 7, ST_PRESS_LPS25H_ODR_AVL_7HZ_VAL, },
> -				{ 13, ST_PRESS_LPS25H_ODR_AVL_13HZ_VAL, },
> -				{ 25, ST_PRESS_LPS25H_ODR_AVL_25HZ_VAL, },
> +				{ .hz = 1, .value = 0x01 },
> +				{ .hz = 7, .value = 0x02 },
> +				{ .hz = 13, .value = 0x03 },
> +				{ .hz = 25, .value = 0x04 },
>  			},
>  		},
>  		.pw = {
> -			.addr = ST_PRESS_LPS25H_PW_ADDR,
> -			.mask = ST_PRESS_LPS25H_PW_MASK,
> +			.addr = 0x20,
> +			.mask = 0x80,
>  			.value_on = ST_SENSORS_DEFAULT_POWER_ON_VALUE,
>  			.value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE,
>  		},
> @@ -460,24 +382,29 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
>  			},
>  		},
>  		.bdu = {
> -			.addr = ST_PRESS_LPS25H_BDU_ADDR,
> -			.mask = ST_PRESS_LPS25H_BDU_MASK,
> +			.addr = 0x20,
> +			.mask = 0x04,
>  		},
>  		.drdy_irq = {
> -			.addr = ST_PRESS_LPS25H_DRDY_IRQ_ADDR,
> -			.mask_int1 = ST_PRESS_LPS25H_DRDY_IRQ_INT1_MASK,
> -			.mask_int2 = ST_PRESS_LPS25H_DRDY_IRQ_INT2_MASK,
> -			.addr_ihl = ST_PRESS_LPS25H_IHL_IRQ_ADDR,
> -			.mask_ihl = ST_PRESS_LPS25H_IHL_IRQ_MASK,
> -			.addr_od = ST_PRESS_LPS25H_OD_IRQ_ADDR,
> -			.mask_od = ST_PRESS_LPS25H_OD_IRQ_MASK,
> +			.addr = 0x23,
> +			.mask_int1 = 0x01,
> +			.mask_int2 = 0x10,
> +			.addr_ihl = 0x22,
> +			.mask_ihl = 0x80,
> +			.addr_od = 0x22,
> +			.mask_od = 0x40,
>  			.addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
>  		},
> -		.multi_read_bit = ST_PRESS_LPS25H_MULTIREAD_BIT,
> +		.multi_read_bit = true,
>  		.bootime = 2,
>  	},
>  	{
> -		.wai = ST_PRESS_LPS22HB_WAI_EXP,
> +		/*
> +		 * CUSTOM VALUES FOR LPS22HB SENSOR
> +		 * See LPS22HB datasheet:
> +		 * http://www2.st.com/resource/en/datasheet/lps22hb.pdf
> +		 */
> +		.wai = 0xb1,
>  		.wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS,
>  		.sensors_supported = {
>  			[0] = LPS22HB_PRESS_DEV_NAME,
> @@ -485,19 +412,19 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
>  		.ch = (struct iio_chan_spec *)st_press_lps22hb_channels,
>  		.num_ch = ARRAY_SIZE(st_press_lps22hb_channels),
>  		.odr = {
> -			.addr = ST_PRESS_LPS22HB_ODR_ADDR,
> -			.mask = ST_PRESS_LPS22HB_ODR_MASK,
> +			.addr = 0x10,
> +			.mask = 0x70,
>  			.odr_avl = {
> -				{ 1, ST_PRESS_LPS22HB_ODR_AVL_1HZ_VAL, },
> -				{ 10, ST_PRESS_LPS22HB_ODR_AVL_10HZ_VAL, },
> -				{ 25, ST_PRESS_LPS22HB_ODR_AVL_25HZ_VAL, },
> -				{ 50, ST_PRESS_LPS22HB_ODR_AVL_50HZ_VAL, },
> -				{ 75, ST_PRESS_LPS22HB_ODR_AVL_75HZ_VAL, },
> +				{ .hz = 1, .value = 0x01 },
> +				{ .hz = 10, .value = 0x02 },
> +				{ .hz = 25, .value = 0x03 },
> +				{ .hz = 50, .value = 0x04 },
> +				{ .hz = 75, .value = 0x05 },
>  			},
>  		},
>  		.pw = {
> -			.addr = ST_PRESS_LPS22HB_PW_ADDR,
> -			.mask = ST_PRESS_LPS22HB_PW_MASK,
> +			.addr = 0x10,
> +			.mask = 0x70,
>  			.value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE,
>  		},
>  		.fs = {
> @@ -514,20 +441,20 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
>  			},
>  		},
>  		.bdu = {
> -			.addr = ST_PRESS_LPS22HB_BDU_ADDR,
> -			.mask = ST_PRESS_LPS22HB_BDU_MASK,
> +			.addr = 0x10,
> +			.mask = 0x02,
>  		},
>  		.drdy_irq = {
> -			.addr = ST_PRESS_LPS22HB_DRDY_IRQ_ADDR,
> -			.mask_int1 = ST_PRESS_LPS22HB_DRDY_IRQ_INT1_MASK,
> -			.mask_int2 = ST_PRESS_LPS22HB_DRDY_IRQ_INT2_MASK,
> -			.addr_ihl = ST_PRESS_LPS22HB_IHL_IRQ_ADDR,
> -			.mask_ihl = ST_PRESS_LPS22HB_IHL_IRQ_MASK,
> -			.addr_od = ST_PRESS_LPS22HB_OD_IRQ_ADDR,
> -			.mask_od = ST_PRESS_LPS22HB_OD_IRQ_MASK,
> +			.addr = 0x12,
> +			.mask_int1 = 0x04,
> +			.mask_int2 = 0x08,
> +			.addr_ihl = 0x12,
> +			.mask_ihl = 0x80,
> +			.addr_od = 0x12,
> +			.mask_od = 0x40,
>  			.addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
>  		},
> -		.multi_read_bit = ST_PRESS_LPS22HB_MULTIREAD_BIT,
> +		.multi_read_bit = true,
>  	},
>  };
>  
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux