Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp4452697imu; Sat, 19 Jan 2019 09:41:32 -0800 (PST) X-Google-Smtp-Source: ALg8bN4Vvv5LezR7aLQ0jnu5HZjl0iHs5pbwcHKtCTuhhoM1tXOKtmXd8AYJo5LvxEKnlqZsDmwl X-Received: by 2002:a65:6148:: with SMTP id o8mr22206286pgv.451.1547919692649; Sat, 19 Jan 2019 09:41:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547919692; cv=none; d=google.com; s=arc-20160816; b=drsZITT47wmDtyoXqxn5vgm2e2B+oGs+idxyXrWE04h3RaaFW9VHIRfvJZf2RaBIhb ZEBmc+4tmFouiqLMOtj28Z4tR2kDhF/3CmngJeyc4w0O9SuI4SQNssMbb+BPm1EeNUc8 +83odbmG039x243prJkfDFtorpYuMr1aL1xWLJOZZo2IjEjJ8vQsAJnX8BX3ZZIJdXUl Vm4zaFjEVCQdH6FiJqLgusDtJ9fVQEF/0BhSnJ6zQOluy+dHXTTJssfMv5MWtbd4uzOJ J8O5rpfRvyB5KDRfz6K2zI1KwMoZjkd2IrIafurj7eUqWoqzToSbriJAPmdJoDlSTfcp oulQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date; bh=so0M3wuc0Tmrf3vhH4WqoF3ek7541djivQRN/rrZ52E=; b=DXHGqLtujsrnJAkaLqkP2pzTJ0rmGUuDvR58fBatSRMpY5acicPyYi1SoPyeOcEXJb TcOqMekPjAUWXLvNCja1x0E4P9ETTuUJzdT6GPI/ZXpBPDZGKXl96zGxVNqXc7XbeFWI JpKoZ6CvBiG3ohC9uCsNLbP0Osr6O40NrlCl/FQZr9o4+YExaCFMbAboVc+WWHAdOgam fSiNlZLTcFuu8UFQzFNWaP3Nc6YpAn+4UUir/kXtyHTryPSG4CAMqMEGvSRdpP+c+Jf+ day8UkHvM9SQLE8oR+1ml1COyaCVf3m1G/c/VVR0EXc4+yuepf94ObX5wTvPspOTtdGh vEhA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w24si7185567plp.304.2019.01.19.09.41.17; Sat, 19 Jan 2019 09:41:32 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728777AbfASRkM (ORCPT + 99 others); Sat, 19 Jan 2019 12:40:12 -0500 Received: from saturn.retrosnub.co.uk ([46.235.226.198]:47164 "EHLO saturn.retrosnub.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728423AbfASRkL (ORCPT ); Sat, 19 Jan 2019 12:40:11 -0500 Received: from archlinux (cpc91196-cmbg18-2-0-cust659.5-4.cable.virginm.net [81.96.234.148]) by saturn.retrosnub.co.uk (Postfix; Retrosnub mail submission) with ESMTPSA id 9854F9E7555; Sat, 19 Jan 2019 17:40:08 +0000 (GMT) Date: Sat, 19 Jan 2019 17:40:06 +0000 From: Jonathan Cameron To: Denis CIOCCA Cc: Mario Tesi , "linux-iio@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Mario TESI Subject: Re: [PATCH] iio:st_pressure:initial lps22hh sensor support Message-ID: <20190119174006.16f06638@archlinux> In-Reply-To: <20190119173330.29e49c63@archlinux> References: <1547486660-15359-1-git-send-email-mario.tesi@st.com> <2844d78742404a0ebea470fa5e0ec722@SFHDAG2NODE1.st.com> <20190119173330.29e49c63@archlinux> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, 19 Jan 2019 17:33:30 +0000 Jonathan Cameron wrote: > On Tue, 15 Jan 2019 00:18:58 +0000 > Denis CIOCCA wrote: > > > Acked-by: Denis Ciocca Denis, One random question inline. Not about this patch as such... > > > > > > -----Original Message----- > > From: linux-iio-owner@vger.kernel.org On Behalf Of Mario Tesi > > Sent: Monday, January 14, 2019 9:24 AM > > To: jic23@kernel.org > > Cc: linux-iio@vger.kernel.org; linux-kernel@vger.kernel.org; Mario TESI > > Subject: [PATCH] iio:st_pressure:initial lps22hh sensor support > > > > From: mario tesi > > > > Initial support for ST LPS22HH pressure sensor. Datasheet: > > http://www2.st.com/resource/en/datasheet/lps22hh.pdf > > > > Features: > > * pressure, temperature data and timestamping channels > > * sampling frequency selection [1..200] Hz > > * interrupt based trigger > > * over I2C or SPI interface > > > > Signed-off-by: mario tesi > Applied to the togreg branch of iio.git and pushed out as testing for > the autobuilders to play with it. > > Thanks, > > Jonathan > > > --- > > drivers/iio/pressure/Kconfig | 2 +- > > drivers/iio/pressure/st_pressure.h | 2 + > > drivers/iio/pressure/st_pressure_core.c | 69 +++++++++++++++++++++++++++++++++ drivers/iio/pressure/st_pressure_i2c.c | 5 +++ drivers/iio/pressure/st_pressure_spi.c | 5 +++ > > 5 files changed, 82 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/iio/pressure/Kconfig b/drivers/iio/pressure/Kconfig index eaa7cfc..efeb89f 100644 > > --- a/drivers/iio/pressure/Kconfig > > +++ b/drivers/iio/pressure/Kconfig > > @@ -165,7 +165,7 @@ config IIO_ST_PRESS > > select IIO_TRIGGERED_BUFFER if (IIO_BUFFER) > > help > > Say yes here to build support for STMicroelectronics pressure > > - sensors: LPS001WP, LPS25H, LPS331AP, LPS22HB. > > + sensors: LPS001WP, LPS25H, LPS331AP, LPS22HB, LPS22HH. > > > > This driver can also be built as a module. If so, these modules > > will be created: > > diff --git a/drivers/iio/pressure/st_pressure.h b/drivers/iio/pressure/st_pressure.h > > index e67eb0d..5794660 100644 > > --- a/drivers/iio/pressure/st_pressure.h > > +++ b/drivers/iio/pressure/st_pressure.h > > @@ -21,6 +21,7 @@ enum st_press_type { > > LPS22HB, > > LPS33HW, > > LPS35HW, > > + LPS22HH, > > ST_PRESS_MAX, > > }; > > > > @@ -30,6 +31,7 @@ enum st_press_type { > > #define LPS22HB_PRESS_DEV_NAME "lps22hb" > > #define LPS33HW_PRESS_DEV_NAME "lps33hw" > > #define LPS35HW_PRESS_DEV_NAME "lps35hw" > > +#define LPS22HH_PRESS_DEV_NAME "lps22hh" > > > > /** > > * struct st_sensors_platform_data - default press platform data diff --git a/drivers/iio/pressure/st_pressure_core.c b/drivers/iio/pressure/st_pressure_core.c > > index 4ddb6cf..38dcdb7 100644 > > --- a/drivers/iio/pressure/st_pressure_core.c > > +++ b/drivers/iio/pressure/st_pressure_core.c > > @@ -492,6 +492,75 @@ > > .multi_read_bit = false, > > .bootime = 2, > > }, > > + { > > + /* > > + * CUSTOM VALUES FOR LPS22HH SENSOR > > + * See LPS22HH datasheet: > > + * http://www2.st.com/resource/en/datasheet/lps22hh.pdf > > + */ > > + .wai = 0xb3, > > + .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS, > > + .sensors_supported = { > > + [0] = LPS22HH_PRESS_DEV_NAME, > > + }, > > + .ch = (struct iio_chan_spec *)st_press_lps22hb_channels, Why is ch not const stuct iio_chan_spec * in the structure definition? I tried it to see if it would throw complaints at me and it didn't rather implying the code never assumes it can change the content of channels via this pointer. It dates right back to the start of this driver I think. If we make it const, we can get rid of all the casts in locations like this which would be a nice tidy up. Never good to cast away a const without very very good reasons! Jonathan > > + .num_ch = ARRAY_SIZE(st_press_lps22hb_channels), > > + .odr = { > > + .addr = 0x10, > > + .mask = 0x70, > > + .odr_avl = { > > + { .hz = 1, .value = 0x01 }, > > + { .hz = 10, .value = 0x02 }, > > + { .hz = 25, .value = 0x03 }, > > + { .hz = 50, .value = 0x04 }, > > + { .hz = 75, .value = 0x05 }, > > + { .hz = 100, .value = 0x06 }, > > + { .hz = 200, .value = 0x07 }, > > + }, > > + }, > > + .pw = { > > + .addr = 0x10, > > + .mask = 0x70, > > + .value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE, > > + }, > > + .fs = { > > + .fs_avl = { > > + /* > > + * Pressure and temperature sensitivity values > > + * as defined in table 3 of LPS22HH datasheet. > > + */ > > + [0] = { > > + .num = ST_PRESS_FS_AVL_1260MB, > > + .gain = ST_PRESS_KPASCAL_NANO_SCALE, > > + .gain2 = ST_PRESS_LPS22HB_LSB_PER_CELSIUS, > > + }, > > + }, > > + }, > > + .bdu = { > > + .addr = 0x10, > > + .mask = BIT(1), > > + }, > > + .drdy_irq = { > > + .int1 = { > > + .addr = 0x12, > > + .mask = BIT(2), > > + .addr_od = 0x11, > > + .mask_od = BIT(5), > > + }, > > + .addr_ihl = 0x11, > > + .mask_ihl = BIT(6), > > + .stat_drdy = { > > + .addr = ST_SENSORS_DEFAULT_STAT_ADDR, > > + .mask = 0x03, > > + }, > > + }, > > + .sim = { > > + .addr = 0x10, > > + .value = BIT(0), > > + }, > > + .multi_read_bit = false, > > + .bootime = 2, > > + }, > > }; > > > > static int st_press_write_raw(struct iio_dev *indio_dev, diff --git a/drivers/iio/pressure/st_pressure_i2c.c b/drivers/iio/pressure/st_pressure_i2c.c > > index 2026a10..a60849d 100644 > > --- a/drivers/iio/pressure/st_pressure_i2c.c > > +++ b/drivers/iio/pressure/st_pressure_i2c.c > > @@ -45,6 +45,10 @@ > > .compatible = "st,lps35hw", > > .data = LPS35HW_PRESS_DEV_NAME, > > }, > > + { > > + .compatible = "st,lps22hh", > > + .data = LPS22HH_PRESS_DEV_NAME, > > + }, > > {}, > > }; > > MODULE_DEVICE_TABLE(of, st_press_of_match); @@ -69,6 +73,7 @@ > > { LPS22HB_PRESS_DEV_NAME, LPS22HB }, > > { LPS33HW_PRESS_DEV_NAME, LPS33HW }, > > { LPS35HW_PRESS_DEV_NAME, LPS35HW }, > > + { LPS22HH_PRESS_DEV_NAME, LPS22HH }, > > {}, > > }; > > MODULE_DEVICE_TABLE(i2c, st_press_id_table); diff --git a/drivers/iio/pressure/st_pressure_spi.c b/drivers/iio/pressure/st_pressure_spi.c > > index 9a3441b..79a12ed 100644 > > --- a/drivers/iio/pressure/st_pressure_spi.c > > +++ b/drivers/iio/pressure/st_pressure_spi.c > > @@ -49,6 +49,10 @@ > > .compatible = "st,lps35hw", > > .data = LPS35HW_PRESS_DEV_NAME, > > }, > > + { > > + .compatible = "st,lps22hh", > > + .data = LPS22HH_PRESS_DEV_NAME, > > + }, > > {}, > > }; > > MODULE_DEVICE_TABLE(of, st_press_of_match); @@ -93,6 +97,7 @@ static int st_press_spi_remove(struct spi_device *spi) > > { LPS22HB_PRESS_DEV_NAME }, > > { LPS33HW_PRESS_DEV_NAME }, > > { LPS35HW_PRESS_DEV_NAME }, > > + { LPS22HH_PRESS_DEV_NAME }, > > {}, > > }; > > MODULE_DEVICE_TABLE(spi, st_press_id_table); > > -- > > 1.9.1 > > >