From patchwork Sat Jun 22 12:33:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaustabh Chakraborty X-Patchwork-Id: 13708314 Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E878314B97A; Sat, 22 Jun 2024 12:36:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719059822; cv=none; b=dIiY67Al5an0QJHnzm09B8HirRkHOwQQ6r24/9aWttpN9iMMcAurfoNeUlOjUwMTP/so8ZHf2Iqf86hHKGiGODT/kIxMZvqvBIcbNGsuCLahvCvU8qaF/yCh2bLyztMRGlFgosfHzRPs2eFrbBCwwy0jcroHOIxTSVYd6Jct/Ek= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719059822; c=relaxed/simple; bh=h7whw2AYyqsNwF3U1uayY34akXxwQgj4aLRDnufhU30=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=KYcirar2/iOHgSe3MyRTQu9EPpF9LoTg5RWygZexz/NlkdOVi+GMNc+MsLadvjMizGBi19RgNXQnGrgUKkFzrm0uaGS48eX+ZOV2Dr5pnkQd9MLkE4KdyS1+19+00x+3sTC0rh/FfLSNrOX5x5US/CtrQtw5FG7ACy9fCfprWH4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=LetzEit2; arc=none smtp.client-ip=178.21.23.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="LetzEit2" X-Virus-Scanned: SPAM Filter at disroot.org From: Kaustabh Chakraborty DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1719059809; bh=h7whw2AYyqsNwF3U1uayY34akXxwQgj4aLRDnufhU30=; h=From:To:Cc:Subject:Date; b=LetzEit217K8UR7WrWhaKJpHe7GjdnOlCg9PFcFYnsT4bDBHG2an60rDLSYdFzGkb TpXLsw0kH29fJSlWtARUHmHzvRMbD3AFF8bYUdSKwO/duJ9aE1QbOJs8cE+Vl1G1ZI eKP8P6Rx4OXitJQCvrrd6BH1UZCdZDcSKaLrzmqu82tnRB1bwRhpWh4O3owM+hrtU4 te05FFlzi9QmIspLCE8NY/jTRBwXXx2BDvDg2wZe7/NtdOZ6rF8IichJRN8rZytlmM 3pDqRXVzp7NT6lWttnkLpYULmUZB695WQ/7qaGw+ZsMFOib/C0RU138w0kZRUBI+rK VwbRyBCDk1gsQ== To: linux-iio@vger.kernel.org, jic23@kernel.org, denis.ciocca@st.com Cc: devicetree@vger.kernel.org, linus.walleij@linaro.org, robh+dt@kernel.org, kauschluss@disroot.org Subject: [PATCH v5 1/2] iio: accel: st_accel: add support for LIS2DS12 Date: Sat, 22 Jun 2024 18:03:45 +0530 Message-ID: <20240622123520.39253-1-kauschluss@disroot.org> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Define sensor settings for LIS2DS12 by STMicroelectronics (WhoAmI 0x43) and add support in the I2C and SPI drivers. Datasheet: https://www.st.com/resource/en/datasheet/lis2ds12.pdf Signed-off-by: Kaustabh Chakraborty Reviewed-by: Linus Walleij --- Changes in v5: - clarify incompatibility with other devices in description v4: https://lore.kernel.org/linux-iio/20240611160821.13941-1-kauschluss@disroot.org/ Changes in v4: - add compatible string to documentation - correct register addresses and settings v3: https://lore.kernel.org/linux-iio/20240601192914.141906-1-kauschluss@disroot.org/ Changes in v3: - fix code formatting v2: https://lore.kernel.org/linux-iio/20240601183233.118397-1-kauschluss@disroot.org/ Changes in v2: - add SPI support - link datasheet in commit description v1: https://lore.kernel.org/linux-iio/20240526083302.87172-1-kauschluss@disroot.org/ --- drivers/iio/accel/st_accel.h | 1 + drivers/iio/accel/st_accel_core.c | 81 +++++++++++++++++++++++++++++++ drivers/iio/accel/st_accel_i2c.c | 5 ++ drivers/iio/accel/st_accel_spi.c | 5 ++ 4 files changed, 92 insertions(+) diff --git a/drivers/iio/accel/st_accel.h b/drivers/iio/accel/st_accel.h index e7525615712b..2659f536cef6 100644 --- a/drivers/iio/accel/st_accel.h +++ b/drivers/iio/accel/st_accel.h @@ -35,6 +35,7 @@ #define LIS3DHH_ACCEL_DEV_NAME "lis3dhh" #define LIS3DE_ACCEL_DEV_NAME "lis3de" #define LIS2DE12_ACCEL_DEV_NAME "lis2de12" +#define LIS2DS12_ACCEL_DEV_NAME "lis2ds12" #define LIS2HH12_ACCEL_DEV_NAME "lis2hh12" #define LIS302DL_ACCEL_DEV_NAME "lis302dl" #define LSM303C_ACCEL_DEV_NAME "lsm303c_accel" diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c index d2104e14e255..0e371efbda70 100644 --- a/drivers/iio/accel/st_accel_core.c +++ b/drivers/iio/accel/st_accel_core.c @@ -925,6 +925,87 @@ static const struct st_sensor_settings st_accel_sensors_settings[] = { .multi_read_bit = true, .bootime = 2, }, + { + .wai = 0x43, + .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS, + .sensors_supported = { + [0] = LIS2DS12_ACCEL_DEV_NAME, + }, + .ch = (struct iio_chan_spec *)st_accel_16bit_channels, + .odr = { + .addr = 0x20, + .mask = 0xf0, + .odr_avl = { + { .hz = 10, .value = 0x01, }, + { .hz = 50, .value = 0x02, }, + { .hz = 100, .value = 0x03, }, + { .hz = 200, .value = 0x04, }, + { .hz = 400, .value = 0x05, }, + { .hz = 800, .value = 0x06, }, + }, + }, + .pw = { + .addr = 0x20, + .mask = 0xf0, + .value_off = ST_SENSORS_DEFAULT_POWER_OFF_VALUE, + }, + .enable_axis = { + .addr = ST_SENSORS_DEFAULT_AXIS_ADDR, + .mask = ST_SENSORS_DEFAULT_AXIS_MASK, + }, + .fs = { + .addr = 0x20, + .mask = 0x0c, + .fs_avl = { + [0] = { + .num = ST_ACCEL_FS_AVL_2G, + .value = 0x00, + .gain = IIO_G_TO_M_S_2(61), + }, + [1] = { + .num = ST_ACCEL_FS_AVL_4G, + .value = 0x02, + .gain = IIO_G_TO_M_S_2(122), + }, + [2] = { + .num = ST_ACCEL_FS_AVL_8G, + .value = 0x03, + .gain = IIO_G_TO_M_S_2(244), + }, + [3] = { + .num = ST_ACCEL_FS_AVL_16G, + .value = 0x01, + .gain = IIO_G_TO_M_S_2(488), + }, + }, + }, + .bdu = { + .addr = 0x20, + .mask = 0x01, + }, + .drdy_irq = { + .int1 = { + .addr = 0x23, + .mask = 0x01, + }, + .int2 = { + .addr = 0x24, + .mask = 0x01, + }, + .addr_ihl = 0x22, + .mask_ihl = 0x02, + .stat_drdy = { + .addr = ST_SENSORS_DEFAULT_STAT_ADDR, + .mask = 0x01, + }, + }, + .sim = { + .addr = 0x21, + .value = BIT(0), + }, + .multi_read_bit = true, + .bootime = 2, + }, { .wai = 0x41, .wai_addr = ST_SENSORS_DEFAULT_WAI_ADDRESS, diff --git a/drivers/iio/accel/st_accel_i2c.c b/drivers/iio/accel/st_accel_i2c.c index fd3749871121..329a4d6fb2ec 100644 --- a/drivers/iio/accel/st_accel_i2c.c +++ b/drivers/iio/accel/st_accel_i2c.c @@ -102,6 +102,10 @@ static const struct of_device_id st_accel_of_match[] = { .compatible = "st,lis2de12", .data = LIS2DE12_ACCEL_DEV_NAME, }, + { + .compatible = "st,lis2ds12", + .data = LIS2DS12_ACCEL_DEV_NAME, + }, { .compatible = "st,lis2hh12", .data = LIS2HH12_ACCEL_DEV_NAME, @@ -154,6 +158,7 @@ static const struct i2c_device_id st_accel_id_table[] = { { LIS2DW12_ACCEL_DEV_NAME }, { LIS3DE_ACCEL_DEV_NAME }, { LIS2DE12_ACCEL_DEV_NAME }, + { LIS2DS12_ACCEL_DEV_NAME }, { LIS2HH12_ACCEL_DEV_NAME }, { LIS302DL_ACCEL_DEV_NAME }, { LSM303C_ACCEL_DEV_NAME }, diff --git a/drivers/iio/accel/st_accel_spi.c b/drivers/iio/accel/st_accel_spi.c index f72a24f45322..825adab37105 100644 --- a/drivers/iio/accel/st_accel_spi.c +++ b/drivers/iio/accel/st_accel_spi.c @@ -64,6 +64,10 @@ static const struct of_device_id st_accel_of_match[] = { .compatible = "st,lis2dh12-accel", .data = LIS2DH12_ACCEL_DEV_NAME, }, + { + .compatible = "st,lis2ds12", + .data = LIS2DS12_ACCEL_DEV_NAME, + }, { .compatible = "st,lis3l02dq", .data = LIS3L02DQ_ACCEL_DEV_NAME, @@ -151,6 +155,7 @@ static const struct spi_device_id st_accel_id_table[] = { { LSM330_ACCEL_DEV_NAME }, { LSM303AGR_ACCEL_DEV_NAME }, { LIS2DH12_ACCEL_DEV_NAME }, + { LIS2DS12_ACCEL_DEV_NAME }, { LIS3L02DQ_ACCEL_DEV_NAME }, { LNG2DM_ACCEL_DEV_NAME }, { H3LIS331DL_ACCEL_DEV_NAME }, From patchwork Sat Jun 22 12:33:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kaustabh Chakraborty X-Patchwork-Id: 13708315 Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9D27155305; Sat, 22 Jun 2024 12:37:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719059823; cv=none; b=TkReyJAJHAVfw4IMvFjU8YG/rmivnKvD4MtibmsIxTJpBWJ1uB+gWFUkxbFMXytnVhutE5ZNfOjZEikWkrqUq+uzqGSGVyoS8HuZYddG+60Bem8YIpsVL/cNBqCTJneeAUHOEY4fSILQMLf4sauAET6tg3aGrnzmL4bPw5QZLDs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719059823; c=relaxed/simple; bh=mjI1IpIB03V6+dpHJaTjeA3Yprjb/QAF8z+E4rr/Hj0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Rhp2E3WgLkcFPTRPeG9t4ADEZ+6K3dRo/MW99R3JCiaiPPErh/Gz7KFjPjH2nvgmr85XuxBd+Gp43IgS6MnidNLok0gxP82X5MRYMESbDvnxbUgRUBkkEYVyQv5WAJVX+Z/0w1rMVy7r8/+4LQT5zte9elQnTlEVpEYV0WBkZlk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=aRLwOow+; arc=none smtp.client-ip=178.21.23.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="aRLwOow+" X-Virus-Scanned: SPAM Filter at disroot.org From: Kaustabh Chakraborty DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1719059817; bh=mjI1IpIB03V6+dpHJaTjeA3Yprjb/QAF8z+E4rr/Hj0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=aRLwOow+d0dbu4u26YmZ+8yvcOF172jnKXl9Jt3drT5GuUltXkR4q0ywIuR0JIzpy 4wXnmJQKylxkHPeKCxW/sM7LpSELxHGaldmKCEED3VE7UH0oDLuKzHGmO2z5r17nvU DKaCwx0B9raMb8cJlgFMBWJscEd5N6dICq+VAFY65BVKUhEugXHtLcN46Sc3/YWebP 7ycdbd5k48V1czKyQXWjdzjYw4NjszN7DetyVfnkFa81QyFKI5FNoEG1isbqbefSwU BT9B0D/5dcjIKc+3tKSGsbamHLR+rpdmre/ZSKvwC+fdqyLYGp9klm6Ukf/S73rAbT yyE5+cc56cwsQ== To: linux-iio@vger.kernel.org, jic23@kernel.org, denis.ciocca@st.com Cc: devicetree@vger.kernel.org, linus.walleij@linaro.org, robh+dt@kernel.org, kauschluss@disroot.org Subject: [PATCH v5 2/2] dt-bindings: iio: st-sensors: add LIS2DS12 accelerometer Date: Sat, 22 Jun 2024 18:03:46 +0530 Message-ID: <20240622123520.39253-2-kauschluss@disroot.org> In-Reply-To: <20240622123520.39253-1-kauschluss@disroot.org> References: <20240622123520.39253-1-kauschluss@disroot.org> Precedence: bulk X-Mailing-List: linux-iio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 LIS2DS12 is an accelerometer by STMicroelectronics. It is identifiable by its WhoAmI value 0x43. Its register interface is not compatible with existing parts. For example: - The full-scale values are present in register 0x20, in bits 2 and 3 (mask 0x0c). Most other supported sensors have the register address set to 0x21, 0x23, 0x24, or 0x25. There is one sensor setting though (bearing WhoAmI 0x3b) which has it's address set to 0x20, but the mask is set to 0x20, not 0x0c. - The full-scale values 2G, 4G, 8G, and 16G correspond to the register values 0x00, 0x02, 0x03, 0x01 respectively. None of the sensor settings have the value 0x01 associated with 16G. Add the compatible string without any fallback. Signed-off-by: Kaustabh Chakraborty --- Documentation/devicetree/bindings/iio/st,st-sensors.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/iio/st,st-sensors.yaml b/Documentation/devicetree/bindings/iio/st,st-sensors.yaml index fff7e3d83a02..71c1ee33a393 100644 --- a/Documentation/devicetree/bindings/iio/st,st-sensors.yaml +++ b/Documentation/devicetree/bindings/iio/st,st-sensors.yaml @@ -26,6 +26,7 @@ properties: - st,lis2dw12 - st,lis2hh12 - st,lis2dh12-accel + - st,lis2ds12 - st,lis302dl - st,lis331dl-accel - st,lis331dlh-accel