* [PATCH 0/2] iio: gyro: Add support for iam20380 sensor
@ 2024-11-13 16:05 Frank Li
2024-11-13 16:05 ` [PATCH 1/2] dt-bindings: iio: imu: mpu6050: Add invensense,iam20380 compatible string Frank Li
2024-11-13 16:05 ` [PATCH 2/2] iio: gyro: Add support for iam20380 sensor Frank Li
0 siblings, 2 replies; 5+ messages in thread
From: Frank Li @ 2024-11-13 16:05 UTC (permalink / raw)
To: Jean-Baptiste Maneyrol, Jonathan Cameron, Lars-Peter Clausen,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-iio, devicetree, linux-kernel, Frank Li, Han Xu
Add iam20380 sensor support.
- add binding doc
- Add support for the Invensense IAM20380 sensor to the MPU6050 driver. It is
similar to the IAM20680. But IAM20380 only supports gyro and WHOAMI
register data is difference
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Han Xu (2):
dt-bindings: iio: imu: mpu6050: Add invensense,iam20380 compatible string
iio: gyro: Add support for iam20380 sensor
.../bindings/iio/imu/invensense,mpu6050.yaml | 1 +
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 25 ++++++++++++++++++++++
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c | 6 ++++++
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h | 2 ++
4 files changed, 34 insertions(+)
---
base-commit: 28955f4fa2823e39f1ecfb3a37a364563527afbc
change-id: 20241112-iam20380-da900d806bf4
Best regards,
---
Frank Li <Frank.Li@nxp.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] dt-bindings: iio: imu: mpu6050: Add invensense,iam20380 compatible string
2024-11-13 16:05 [PATCH 0/2] iio: gyro: Add support for iam20380 sensor Frank Li
@ 2024-11-13 16:05 ` Frank Li
2024-11-14 20:09 ` Conor Dooley
2024-11-13 16:05 ` [PATCH 2/2] iio: gyro: Add support for iam20380 sensor Frank Li
1 sibling, 1 reply; 5+ messages in thread
From: Frank Li @ 2024-11-13 16:05 UTC (permalink / raw)
To: Jean-Baptiste Maneyrol, Jonathan Cameron, Lars-Peter Clausen,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-iio, devicetree, linux-kernel, Frank Li, Han Xu
From: Han Xu <han.xu@nxp.com>
Add compatible string "invensense,iam20380" for the Invensense IAM20380
sensor. The IAM20380 is similar to the IAM20680, but only supports gyro.
Signed-off-by: Han Xu <han.xu@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Documentation/devicetree/bindings/iio/imu/invensense,mpu6050.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/iio/imu/invensense,mpu6050.yaml b/Documentation/devicetree/bindings/iio/imu/invensense,mpu6050.yaml
index f91954870a44c..0bce71529e34c 100644
--- a/Documentation/devicetree/bindings/iio/imu/invensense,mpu6050.yaml
+++ b/Documentation/devicetree/bindings/iio/imu/invensense,mpu6050.yaml
@@ -16,6 +16,7 @@ properties:
compatible:
oneOf:
- enum:
+ - invensense,iam20380
- invensense,iam20680
- invensense,icm20608
- invensense,icm20609
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] iio: gyro: Add support for iam20380 sensor
2024-11-13 16:05 [PATCH 0/2] iio: gyro: Add support for iam20380 sensor Frank Li
2024-11-13 16:05 ` [PATCH 1/2] dt-bindings: iio: imu: mpu6050: Add invensense,iam20380 compatible string Frank Li
@ 2024-11-13 16:05 ` Frank Li
2024-11-13 19:28 ` Jean-Baptiste Maneyrol
1 sibling, 1 reply; 5+ messages in thread
From: Frank Li @ 2024-11-13 16:05 UTC (permalink / raw)
To: Jean-Baptiste Maneyrol, Jonathan Cameron, Lars-Peter Clausen,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-iio, devicetree, linux-kernel, Frank Li, Han Xu
From: Han Xu <han.xu@nxp.com>
Add support for the Invensense IAM20380 sensor to the MPU6050 driver. It is
similar to the IAM20680. But IAM20380 only supports gyro and WHOAMI
register data is difference.
Signed-off-by: Han Xu <han.xu@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 25 +++++++++++++++++++++++++
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c | 6 ++++++
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h | 2 ++
3 files changed, 33 insertions(+)
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
index 40271352b02cf..f6e41ee14298a 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
@@ -140,6 +140,23 @@ static const struct inv_mpu6050_chip_config chip_config_6500 = {
.user_ctrl = 0,
};
+static const struct inv_mpu6050_chip_config chip_config_6500_gyro = {
+ .clk = INV_CLK_PLL,
+ .fsr = INV_MPU6050_FSR_2000DPS,
+ .lpf = INV_MPU6050_FILTER_20HZ,
+ .divider = INV_MPU6050_FIFO_RATE_TO_DIVIDER(50),
+ .gyro_en = true,
+ .accl_en = false,
+ .temp_en = false,
+ .magn_en = false,
+ .gyro_fifo_enable = false,
+ .accl_fifo_enable = false,
+ .temp_fifo_enable = false,
+ .magn_fifo_enable = false,
+ .accl_fs = INV_MPU6050_FS_02G,
+ .user_ctrl = 0,
+};
+
/* Indexed by enum inv_devices */
static const struct inv_mpu6050_hw hw_info[] = {
{
@@ -277,6 +294,14 @@ static const struct inv_mpu6050_hw hw_info[] = {
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
.startup_time = {INV_ICM20690_GYRO_STARTUP_TIME, INV_ICM20690_ACCEL_STARTUP_TIME},
},
+ { .whoami = INV_IAM20380_WHOAMI_VALUE,
+ .name = "IAM20380",
+ .reg = ®_set_6500,
+ .config = &chip_config_6500_gyro,
+ .fifo_size = 512,
+ .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
+ .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ },
{
.whoami = INV_IAM20680_WHOAMI_VALUE,
.name = "IAM20680",
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
index 7a5926ba6b97d..62f7d16c2ddcb 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
@@ -34,6 +34,7 @@ static bool inv_mpu_i2c_aux_bus(struct device *dev)
case INV_ICM20689:
case INV_ICM20600:
case INV_ICM20602:
+ case INV_IAM20380:
case INV_IAM20680:
/* no i2c auxiliary bus on the chip */
return false;
@@ -187,6 +188,7 @@ static const struct i2c_device_id inv_mpu_id[] = {
{"icm20600", INV_ICM20600},
{"icm20602", INV_ICM20602},
{"icm20690", INV_ICM20690},
+ {"iam20380", INV_IAM20380},
{"iam20680", INV_IAM20680},
{"iam20680hp", INV_IAM20680HP},
{"iam20680ht", INV_IAM20680HT},
@@ -252,6 +254,10 @@ static const struct of_device_id inv_of_match[] = {
.compatible = "invensense,icm20690",
.data = (void *)INV_ICM20690
},
+ {
+ .compatible = "invensense,iam20380",
+ .data = (void *)INV_IAM20380
+ },
{
.compatible = "invensense,iam20680",
.data = (void *)INV_IAM20680
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h b/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
index a6862cf426396..211901f8b8eb6 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
@@ -84,6 +84,7 @@ enum inv_devices {
INV_ICM20600,
INV_ICM20602,
INV_ICM20690,
+ INV_IAM20380,
INV_IAM20680,
INV_IAM20680HP,
INV_IAM20680HT,
@@ -425,6 +426,7 @@ struct inv_mpu6050_state {
#define INV_ICM20600_WHOAMI_VALUE 0x11
#define INV_ICM20602_WHOAMI_VALUE 0x12
#define INV_ICM20690_WHOAMI_VALUE 0x20
+#define INV_IAM20380_WHOAMI_VALUE 0xB5
#define INV_IAM20680_WHOAMI_VALUE 0xA9
#define INV_IAM20680HP_WHOAMI_VALUE 0xF8
#define INV_IAM20680HT_WHOAMI_VALUE 0xFA
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] iio: gyro: Add support for iam20380 sensor
2024-11-13 16:05 ` [PATCH 2/2] iio: gyro: Add support for iam20380 sensor Frank Li
@ 2024-11-13 19:28 ` Jean-Baptiste Maneyrol
0 siblings, 0 replies; 5+ messages in thread
From: Jean-Baptiste Maneyrol @ 2024-11-13 19:28 UTC (permalink / raw)
To: Frank Li, Jonathan Cameron, Lars-Peter Clausen, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, Han Xu
Hello Frank,
thanks for the patches, but there are several problems.
I think there is a misunderstanding about the inv_mpu6050_chip_config structure. The values here are only the default value at startup, it doesn't define if accel/gyro or mag is present or not. It is just for setting values at startup.
For disabling accel, you need to change the IIO channels by defining a new iio_chan_spec table with only gyro channels. Otherwise, it will still be possible to enable accel in the iio device.
You're also missing SPI support. You need to add the ids and compatible definition also in the inv_mpu_spi.c file.
Thanks,
JB
________________________________________
From: Frank Li <Frank.Li@nxp.com>
Sent: Wednesday, November 13, 2024 17:05
To: Jean-Baptiste Maneyrol <Jean-Baptiste.Maneyrol@tdk.com>; Jonathan Cameron <jic23@kernel.org>; Lars-Peter Clausen <lars@metafoo.de>; Rob Herring <robh@kernel.org>; Krzysztof Kozlowski <krzk+dt@kernel.org>; Conor Dooley <conor+dt@kernel.org>
Cc: linux-iio@vger.kernel.org <linux-iio@vger.kernel.org>; devicetree@vger.kernel.org <devicetree@vger.kernel.org>; linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>; Frank Li <Frank.Li@nxp.com>; Han Xu <han.xu@nxp.com>
Subject: [PATCH 2/2] iio: gyro: Add support for iam20380 sensor
This Message Is From an External Sender
This message came from outside your organization.
From: Han Xu <han.xu@nxp.com>
Add support for the Invensense IAM20380 sensor to the MPU6050 driver. It is
similar to the IAM20680. But IAM20380 only supports gyro and WHOAMI
register data is difference.
Signed-off-by: Han Xu <han.xu@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 25 +++++++++++++++++++++++++
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c | 6 ++++++
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h | 2 ++
3 files changed, 33 insertions(+)
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
index 40271352b02cf..f6e41ee14298a 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
@@ -140,6 +140,23 @@ static const struct inv_mpu6050_chip_config chip_config_6500 = {
.user_ctrl = 0,
};
+static const struct inv_mpu6050_chip_config chip_config_6500_gyro = {
+ .clk = INV_CLK_PLL,
+ .fsr = INV_MPU6050_FSR_2000DPS,
+ .lpf = INV_MPU6050_FILTER_20HZ,
+ .divider = INV_MPU6050_FIFO_RATE_TO_DIVIDER(50),
+ .gyro_en = true,
+ .accl_en = false,
+ .temp_en = false,
+ .magn_en = false,
+ .gyro_fifo_enable = false,
+ .accl_fifo_enable = false,
+ .temp_fifo_enable = false,
+ .magn_fifo_enable = false,
+ .accl_fs = INV_MPU6050_FS_02G,
+ .user_ctrl = 0,
+};
+
/* Indexed by enum inv_devices */
static const struct inv_mpu6050_hw hw_info[] = {
{
@@ -277,6 +294,14 @@ static const struct inv_mpu6050_hw hw_info[] = {
.temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
.startup_time = {INV_ICM20690_GYRO_STARTUP_TIME, INV_ICM20690_ACCEL_STARTUP_TIME},
},
+ { .whoami = INV_IAM20380_WHOAMI_VALUE,
+ .name = "IAM20380",
+ .reg = ®_set_6500,
+ .config = &chip_config_6500_gyro,
+ .fifo_size = 512,
+ .temp = {INV_ICM20608_TEMP_OFFSET, INV_ICM20608_TEMP_SCALE},
+ .startup_time = {INV_MPU6500_GYRO_STARTUP_TIME, INV_MPU6500_ACCEL_STARTUP_TIME},
+ },
{
.whoami = INV_IAM20680_WHOAMI_VALUE,
.name = "IAM20680",
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
index 7a5926ba6b97d..62f7d16c2ddcb 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
@@ -34,6 +34,7 @@ static bool inv_mpu_i2c_aux_bus(struct device *dev)
case INV_ICM20689:
case INV_ICM20600:
case INV_ICM20602:
+ case INV_IAM20380:
case INV_IAM20680:
/* no i2c auxiliary bus on the chip */
return false;
@@ -187,6 +188,7 @@ static const struct i2c_device_id inv_mpu_id[] = {
{"icm20600", INV_ICM20600},
{"icm20602", INV_ICM20602},
{"icm20690", INV_ICM20690},
+ {"iam20380", INV_IAM20380},
{"iam20680", INV_IAM20680},
{"iam20680hp", INV_IAM20680HP},
{"iam20680ht", INV_IAM20680HT},
@@ -252,6 +254,10 @@ static const struct of_device_id inv_of_match[] = {
.compatible = "invensense,icm20690",
.data = (void *)INV_ICM20690
},
+ {
+ .compatible = "invensense,iam20380",
+ .data = (void *)INV_IAM20380
+ },
{
.compatible = "invensense,iam20680",
.data = (void *)INV_IAM20680
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h b/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
index a6862cf426396..211901f8b8eb6 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h
@@ -84,6 +84,7 @@ enum inv_devices {
INV_ICM20600,
INV_ICM20602,
INV_ICM20690,
+ INV_IAM20380,
INV_IAM20680,
INV_IAM20680HP,
INV_IAM20680HT,
@@ -425,6 +426,7 @@ struct inv_mpu6050_state {
#define INV_ICM20600_WHOAMI_VALUE 0x11
#define INV_ICM20602_WHOAMI_VALUE 0x12
#define INV_ICM20690_WHOAMI_VALUE 0x20
+#define INV_IAM20380_WHOAMI_VALUE 0xB5
#define INV_IAM20680_WHOAMI_VALUE 0xA9
#define INV_IAM20680HP_WHOAMI_VALUE 0xF8
#define INV_IAM20680HT_WHOAMI_VALUE 0xFA
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] dt-bindings: iio: imu: mpu6050: Add invensense,iam20380 compatible string
2024-11-13 16:05 ` [PATCH 1/2] dt-bindings: iio: imu: mpu6050: Add invensense,iam20380 compatible string Frank Li
@ 2024-11-14 20:09 ` Conor Dooley
0 siblings, 0 replies; 5+ messages in thread
From: Conor Dooley @ 2024-11-14 20:09 UTC (permalink / raw)
To: Frank Li
Cc: Jean-Baptiste Maneyrol, Jonathan Cameron, Lars-Peter Clausen,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-iio,
devicetree, linux-kernel, Han Xu
[-- Attachment #1: Type: text/plain, Size: 394 bytes --]
On Wed, Nov 13, 2024 at 11:05:56AM -0500, Frank Li wrote:
> From: Han Xu <han.xu@nxp.com>
>
> Add compatible string "invensense,iam20380" for the Invensense IAM20380
> sensor. The IAM20380 is similar to the IAM20680, but only supports gyro.
>
> Signed-off-by: Han Xu <han.xu@nxp.com>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-11-14 20:09 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-13 16:05 [PATCH 0/2] iio: gyro: Add support for iam20380 sensor Frank Li
2024-11-13 16:05 ` [PATCH 1/2] dt-bindings: iio: imu: mpu6050: Add invensense,iam20380 compatible string Frank Li
2024-11-14 20:09 ` Conor Dooley
2024-11-13 16:05 ` [PATCH 2/2] iio: gyro: Add support for iam20380 sensor Frank Li
2024-11-13 19:28 ` Jean-Baptiste Maneyrol
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox