Yes Denis, I've tested it with the changes and the output values look fine. Thanks for your review. Tiberiu > -----Original Message----- > From: Denis CIOCCA [mailto:denis.ciocca@xxxxxx] > Sent: Wednesday, March 9, 2016 2:47 PM > To: Breana, Tiberiu A <tiberiu.a.breana@xxxxxxxxx> > Cc: linux-iio@xxxxxxxxxxxxxxx; Armando VISCONTI > <armando.visconti@xxxxxx>; Giuseppe BARBA <giuseppe.barba@xxxxxx>; > Marco BIANCO <marco.bianco@xxxxxx> > Subject: Re: [PATCH] iio: accel: Add support for the h3lis331dl accelerometer > > Hi Tiberiu, > > Since at the beginning u found some issue, did u finally try with my > comments and it works fine? > > If so, > > Reviewed-by: Denis Ciocca <denis.ciocca@xxxxxx> > Acked-by: Denis Ciocca <denis.ciocca@xxxxxx> > > > Thanks for ur job. > > Denis > > > > > > On Mar 9, 2016, at 20:06, Tiberiu Breana <tiberiu.a.breana@xxxxxxxxx> > wrote: > > > > This commit adds support for STMicroelectronics h3lis331dl high-g > > accelerometer. The datasheet for this device can be found here: > > > > http://www.st.com/web/en/resource/technical/document/ > > datasheet/DM00053090.pdf > > > > Signed-off-by: Tiberiu Breana <tiberiu.a.breana@xxxxxxxxx> > > --- > > .../devicetree/bindings/iio/st-sensors.txt | 1 + > > drivers/iio/accel/Kconfig | 2 +- > > drivers/iio/accel/st_accel.h | 1 + > > drivers/iio/accel/st_accel_core.c | 92 ++++++++++++++++++++++ > > drivers/iio/accel/st_accel_i2c.c | 4 + > > 5 files changed, 99 insertions(+), 1 deletion(-) > > > > diff --git a/Documentation/devicetree/bindings/iio/st-sensors.txt > > b/Documentation/devicetree/bindings/iio/st-sensors.txt > > index d4b87cc..71b7bdf 100644 > > --- a/Documentation/devicetree/bindings/iio/st-sensors.txt > > +++ b/Documentation/devicetree/bindings/iio/st-sensors.txt > > @@ -37,6 +37,7 @@ Accelerometers: > > - st,lsm330-accel > > - st,lsm303agr-accel > > - st,lis2dh12-accel > > +- st,h3lis331dl-accel > > > > Gyroscopes: > > - st,l3g4200d-gyro > > diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig > > index b0d3ecf..7636eec 100644 > > --- a/drivers/iio/accel/Kconfig > > +++ b/drivers/iio/accel/Kconfig > > @@ -64,7 +64,7 @@ config IIO_ST_ACCEL_3AXIS > > help > > Say yes here to build support for STMicroelectronics accelerometers: > > LSM303DLH, LSM303DLHC, LIS3DH, LSM330D, LSM330DL, LSM330DLC, > > - LIS331DLH, LSM303DL, LSM303DLM, LSM330, LIS2DH12. > > + LIS331DLH, LSM303DL, LSM303DLM, LSM330, LIS2DH12, H3LIS331DL. > > > > This driver can also be built as a module. If so, these modules > > will be created: > > diff --git a/drivers/iio/accel/st_accel.h > > b/drivers/iio/accel/st_accel.h index 5d4a189..57f83a6 100644 > > --- a/drivers/iio/accel/st_accel.h > > +++ b/drivers/iio/accel/st_accel.h > > @@ -14,6 +14,7 @@ > > #include <linux/types.h> > > #include <linux/iio/common/st_sensors.h> > > > > +#define H3LIS331DL_DRIVER_NAME "h3lis331dl_accel" > > #define LIS3LV02DL_ACCEL_DEV_NAME "lis3lv02dl_accel" > > #define LSM303DLHC_ACCEL_DEV_NAME "lsm303dlhc_accel" > > #define LIS3DH_ACCEL_DEV_NAME "lis3dh" > > diff --git a/drivers/iio/accel/st_accel_core.c > > b/drivers/iio/accel/st_accel_core.c > > index a03a141..fee32e3 100644 > > --- a/drivers/iio/accel/st_accel_core.c > > +++ b/drivers/iio/accel/st_accel_core.c > > @@ -39,6 +39,9 @@ > > #define ST_ACCEL_FS_AVL_6G 6 > > #define ST_ACCEL_FS_AVL_8G 8 > > #define ST_ACCEL_FS_AVL_16G 16 > > +#define ST_ACCEL_FS_AVL_100G 100 > > +#define ST_ACCEL_FS_AVL_200G 200 > > +#define ST_ACCEL_FS_AVL_400G 400 > > > > /* CUSTOM VALUES FOR SENSOR 1 */ > > #define ST_ACCEL_1_WAI_EXP 0x33 > > @@ -181,6 +184,33 @@ > > #define ST_ACCEL_5_IG1_EN_MASK 0x08 > > #define ST_ACCEL_5_MULTIREAD_BIT false > > > > +/* CUSTOM VALUES FOR SENSOR 6 */ > > +#define ST_ACCEL_6_WAI_EXP 0x32 > > +#define ST_ACCEL_6_ODR_ADDR 0x20 > > +#define ST_ACCEL_6_ODR_MASK 0x18 > > +#define ST_ACCEL_6_ODR_AVL_50HZ_VAL 0x00 > > +#define ST_ACCEL_6_ODR_AVL_100HZ_VAL 0x01 > > +#define ST_ACCEL_6_ODR_AVL_400HZ_VAL 0x02 > > +#define ST_ACCEL_6_ODR_AVL_1000HZ_VAL 0x03 > > +#define ST_ACCEL_6_PW_ADDR 0x20 > > +#define ST_ACCEL_6_PW_MASK 0x20 > > +#define ST_ACCEL_6_FS_ADDR 0x23 > > +#define ST_ACCEL_6_FS_MASK 0x30 > > +#define ST_ACCEL_6_FS_AVL_100_VAL 0x00 > > +#define ST_ACCEL_6_FS_AVL_200_VAL 0x01 > > +#define ST_ACCEL_6_FS_AVL_400_VAL 0x03 > > +#define ST_ACCEL_6_FS_AVL_100_GAIN IIO_G_TO_M_S_2(49000) > > +#define ST_ACCEL_6_FS_AVL_200_GAIN IIO_G_TO_M_S_2(98000) > > +#define ST_ACCEL_6_FS_AVL_400_GAIN IIO_G_TO_M_S_2(195000) > > +#define ST_ACCEL_6_BDU_ADDR 0x23 > > +#define ST_ACCEL_6_BDU_MASK 0x80 > > +#define ST_ACCEL_6_DRDY_IRQ_ADDR 0x22 > > +#define ST_ACCEL_6_DRDY_IRQ_INT1_MASK 0x02 > > +#define ST_ACCEL_6_DRDY_IRQ_INT2_MASK 0x10 > > +#define ST_ACCEL_6_IHL_IRQ_ADDR 0x22 > > +#define ST_ACCEL_6_IHL_IRQ_MASK 0x80 > > +#define ST_ACCEL_6_MULTIREAD_BIT true > > + > > static const struct iio_chan_spec st_accel_8bit_channels[] = { > > ST_SENSORS_LSM_CHANNELS(IIO_ACCEL, > > BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE), @@ > > -557,6 +587,68 @@ static const struct st_sensor_settings > st_accel_sensors_settings[] = { > > .multi_read_bit = ST_ACCEL_5_MULTIREAD_BIT, > > .bootime = 2, /* guess */ > > }, > > + { > > + .wai = ST_ACCEL_6_WAI_EXP, > > + .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS, > > + .sensors_supported = { > > + [0] = H3LIS331DL_DRIVER_NAME, > > + }, > > + .ch = (struct iio_chan_spec *)st_accel_12bit_channels, > > + .odr = { > > + .addr = ST_ACCEL_6_ODR_ADDR, > > + .mask = ST_ACCEL_6_ODR_MASK, > > + .odr_avl = { > > + { 50, ST_ACCEL_6_ODR_AVL_50HZ_VAL }, > > + { 100, ST_ACCEL_6_ODR_AVL_100HZ_VAL, }, > > + { 400, ST_ACCEL_6_ODR_AVL_400HZ_VAL, }, > > + { 1000, ST_ACCEL_6_ODR_AVL_1000HZ_VAL, }, > > + }, > > + }, > > + .pw = { > > + .addr = ST_ACCEL_6_PW_ADDR, > > + .mask = ST_ACCEL_6_PW_MASK, > > + .value_on = ST_SENSORS_DEFAULT_POWER_ON_VALUE, > > + .value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE, > > + }, > > + .enable_axis = { > > + .addr = ST_SENSORS_DEFAULT_AXIS_ADDR, > > + .mask = ST_SENSORS_DEFAULT_AXIS_MASK, > > + }, > > + .fs = { > > + .addr = ST_ACCEL_6_FS_ADDR, > > + .mask = ST_ACCEL_6_FS_MASK, > > + .fs_avl = { > > + [0] = { > > + .num = ST_ACCEL_FS_AVL_100G, > > + .value = ST_ACCEL_6_FS_AVL_100_VAL, > > + .gain = ST_ACCEL_6_FS_AVL_100_GAIN, > > + }, > > + [1] = { > > + .num = ST_ACCEL_FS_AVL_200G, > > + .value = ST_ACCEL_6_FS_AVL_200_VAL, > > + .gain = ST_ACCEL_6_FS_AVL_200_GAIN, > > + }, > > + [2] = { > > + .num = ST_ACCEL_FS_AVL_400G, > > + .value = ST_ACCEL_6_FS_AVL_400_VAL, > > + .gain = ST_ACCEL_6_FS_AVL_400_GAIN, > > + }, > > + }, > > + }, > > + .bdu = { > > + .addr = ST_ACCEL_6_BDU_ADDR, > > + .mask = ST_ACCEL_6_BDU_MASK, > > + }, > > + .drdy_irq = { > > + .addr = ST_ACCEL_6_DRDY_IRQ_ADDR, > > + .mask_int1 = ST_ACCEL_6_DRDY_IRQ_INT1_MASK, > > + .mask_int2 = ST_ACCEL_6_DRDY_IRQ_INT2_MASK, > > + .addr_ihl = ST_ACCEL_6_IHL_IRQ_ADDR, > > + .mask_ihl = ST_ACCEL_6_IHL_IRQ_MASK, > > + }, > > + .multi_read_bit = ST_ACCEL_6_MULTIREAD_BIT, > > + .bootime = 2, > > + }, > > }; > > > > static int st_accel_read_raw(struct iio_dev *indio_dev, diff --git > > a/drivers/iio/accel/st_accel_i2c.c b/drivers/iio/accel/st_accel_i2c.c > > index 294a32f..7333ee9 100644 > > --- a/drivers/iio/accel/st_accel_i2c.c > > +++ b/drivers/iio/accel/st_accel_i2c.c > > @@ -76,6 +76,10 @@ static const struct of_device_id st_accel_of_match[] > = { > > .compatible = "st,lis2dh12-accel", > > .data = LIS2DH12_ACCEL_DEV_NAME, > > }, > > + { > > + .compatible = "st,h3lis331dl-accel", > > + .data = H3LIS331DL_DRIVER_NAME, > > + }, > > {}, > > }; > > MODULE_DEVICE_TABLE(of, st_accel_of_match); > > -- > > 1.9.1 > > > > -- > > 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 -- 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