Skip to content

Commit a095fad

Browse files
jmaneyrol-invnjic23
authored andcommitted
iio: imu: inv_icm42600: add gyroscope IIO device
Add IIO device for gyroscope sensor with data polling interface. Attributes: raw, scale, sampling_frequency, calibbias. Gyroscope in low noise mode. Signed-off-by: Jean-Baptiste Maneyrol <jmaneyrol@invensense.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
1 parent 9f9ff91 commit a095fad

File tree

3 files changed

+613
-0
lines changed

3 files changed

+613
-0
lines changed

drivers/iio/imu/inv_icm42600/inv_icm42600.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ struct inv_icm42600_suspended {
120120
* @orientation: sensor chip orientation relative to main hardware.
121121
* @conf: chip sensors configurations.
122122
* @suspended: suspended sensors configuration.
123+
* @indio_gyro: gyroscope IIO device.
124+
* @buffer: data transfer buffer aligned for DMA.
123125
*/
124126
struct inv_icm42600_state {
125127
struct mutex lock;
@@ -131,6 +133,8 @@ struct inv_icm42600_state {
131133
struct iio_mount_matrix orientation;
132134
struct inv_icm42600_conf conf;
133135
struct inv_icm42600_suspended suspended;
136+
struct iio_dev *indio_gyro;
137+
uint8_t buffer[2] ____cacheline_aligned;
134138
};
135139

136140
/* Virtual register addresses: @bank on MSB (4 upper bits), @address on LSB */
@@ -369,4 +373,6 @@ int inv_icm42600_debugfs_reg(struct iio_dev *indio_dev, unsigned int reg,
369373
int inv_icm42600_core_probe(struct regmap *regmap, int chip,
370374
inv_icm42600_bus_setup bus_setup);
371375

376+
struct iio_dev *inv_icm42600_gyro_init(struct inv_icm42600_state *st);
377+
372378
#endif

drivers/iio/imu/inv_icm42600/inv_icm42600_core.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,10 @@ int inv_icm42600_core_probe(struct regmap *regmap, int chip,
509509
if (ret)
510510
return ret;
511511

512+
st->indio_gyro = inv_icm42600_gyro_init(st);
513+
if (IS_ERR(st->indio_gyro))
514+
return PTR_ERR(st->indio_gyro);
515+
512516
/* setup runtime power management */
513517
ret = pm_runtime_set_active(dev);
514518
if (ret)

0 commit comments

Comments
 (0)