Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

iio: move inv_icm42600 timestamp module in common

Create new inv_sensors common modules and move inv_icm42600
timestamp module inside. This module will be used by IMUs and
also in the future by other chips.

Modify inv_icm42600 driver to use timestamp module and do some
headers cleanup.

Signed-off-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20230606162147.79667-3-inv.git-commit@tdk.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Jean-Baptiste Maneyrol and committed by
Jonathan Cameron
d99ff463 6e9f2d83

+38 -9
+1
drivers/iio/common/Kconfig
··· 5 5 6 6 source "drivers/iio/common/cros_ec_sensors/Kconfig" 7 7 source "drivers/iio/common/hid-sensors/Kconfig" 8 + source "drivers/iio/common/inv_sensors/Kconfig" 8 9 source "drivers/iio/common/ms_sensors/Kconfig" 9 10 source "drivers/iio/common/scmi_sensors/Kconfig" 10 11 source "drivers/iio/common/ssp_sensors/Kconfig"
+1
drivers/iio/common/Makefile
··· 10 10 # When adding new entries keep the list in alphabetical order 11 11 obj-y += cros_ec_sensors/ 12 12 obj-y += hid-sensors/ 13 + obj-y += inv_sensors/ 13 14 obj-y += ms_sensors/ 14 15 obj-y += scmi_sensors/ 15 16 obj-y += ssp_sensors/
+7
drivers/iio/common/inv_sensors/Kconfig
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + # 3 + # TDK-InvenSense sensors common library 4 + # 5 + 6 + config IIO_INV_SENSORS_TIMESTAMP 7 + tristate
+6
drivers/iio/common/inv_sensors/Makefile
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + # 3 + # Makefile for TDK-InvenSense sensors module. 4 + # 5 + 6 + obj-$(CONFIG_IIO_INV_SENSORS_TIMESTAMP) += inv_icm42600_timestamp.o
+1
drivers/iio/imu/inv_icm42600/Kconfig
··· 3 3 config INV_ICM42600 4 4 tristate 5 5 select IIO_BUFFER 6 + select IIO_INV_SENSORS_TIMESTAMP 6 7 7 8 config INV_ICM42600_I2C 8 9 tristate "InvenSense ICM-426xx I2C driver"
-1
drivers/iio/imu/inv_icm42600/Makefile
··· 6 6 inv-icm42600-y += inv_icm42600_accel.o 7 7 inv-icm42600-y += inv_icm42600_temp.o 8 8 inv-icm42600-y += inv_icm42600_buffer.o 9 - inv-icm42600-y += inv_icm42600_timestamp.o 10 9 11 10 obj-$(CONFIG_INV_ICM42600_I2C) += inv-icm42600-i2c.o 12 11 inv-icm42600-i2c-y += inv_icm42600_i2c.o
+3 -2
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c
··· 10 10 #include <linux/regmap.h> 11 11 #include <linux/delay.h> 12 12 #include <linux/math64.h> 13 - #include <linux/iio/iio.h> 13 + 14 14 #include <linux/iio/buffer.h> 15 + #include <linux/iio/common/inv_icm42600_timestamp.h> 16 + #include <linux/iio/iio.h> 15 17 #include <linux/iio/kfifo_buf.h> 16 18 17 19 #include "inv_icm42600.h" 18 20 #include "inv_icm42600_temp.h" 19 21 #include "inv_icm42600_buffer.h" 20 - #include "inv_icm42600_timestamp.h" 21 22 22 23 #define INV_ICM42600_ACCEL_CHAN(_modifier, _index, _ext_info) \ 23 24 { \
+3 -2
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c
··· 9 9 #include <linux/pm_runtime.h> 10 10 #include <linux/regmap.h> 11 11 #include <linux/delay.h> 12 - #include <linux/iio/iio.h> 12 + 13 13 #include <linux/iio/buffer.h> 14 + #include <linux/iio/common/inv_icm42600_timestamp.h> 15 + #include <linux/iio/iio.h> 14 16 15 17 #include "inv_icm42600.h" 16 - #include "inv_icm42600_timestamp.h" 17 18 #include "inv_icm42600_buffer.h" 18 19 19 20 /* FIFO header: 1 byte */
+3 -1
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c
··· 15 15 #include <linux/pm_runtime.h> 16 16 #include <linux/property.h> 17 17 #include <linux/regmap.h> 18 + 19 + #include <linux/iio/common/inv_icm42600_timestamp.h> 18 20 #include <linux/iio/iio.h> 19 21 20 22 #include "inv_icm42600.h" 21 23 #include "inv_icm42600_buffer.h" 22 - #include "inv_icm42600_timestamp.h" 23 24 24 25 static const struct regmap_range_cfg inv_icm42600_regmap_ranges[] = { 25 26 { ··· 800 799 MODULE_AUTHOR("InvenSense, Inc."); 801 800 MODULE_DESCRIPTION("InvenSense ICM-426xx device driver"); 802 801 MODULE_LICENSE("GPL"); 802 + MODULE_IMPORT_NS(IIO_INV_SENSORS_TIMESTAMP);
+3 -2
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c
··· 10 10 #include <linux/regmap.h> 11 11 #include <linux/delay.h> 12 12 #include <linux/math64.h> 13 - #include <linux/iio/iio.h> 13 + 14 14 #include <linux/iio/buffer.h> 15 + #include <linux/iio/common/inv_icm42600_timestamp.h> 16 + #include <linux/iio/iio.h> 15 17 #include <linux/iio/kfifo_buf.h> 16 18 17 19 #include "inv_icm42600.h" 18 20 #include "inv_icm42600_temp.h" 19 21 #include "inv_icm42600_buffer.h" 20 - #include "inv_icm42600_timestamp.h" 21 22 22 23 #define INV_ICM42600_GYRO_CHAN(_modifier, _index, _ext_info) \ 23 24 { \
+10 -1
drivers/iio/imu/inv_icm42600/inv_icm42600_timestamp.c drivers/iio/common/inv_sensors/inv_icm42600_timestamp.c
··· 6 6 #include <linux/errno.h> 7 7 #include <linux/kernel.h> 8 8 #include <linux/math64.h> 9 + #include <linux/module.h> 9 10 10 - #include "inv_icm42600_timestamp.h" 11 + #include <linux/iio/common/inv_icm42600_timestamp.h> 11 12 12 13 /* internal chip period is 32kHz, 31250ns */ 13 14 #define INV_ICM42600_TIMESTAMP_PERIOD 31250 ··· 55 54 /* use theoretical value for chip period */ 56 55 inv_update_acc(&ts->chip_period, INV_ICM42600_TIMESTAMP_PERIOD); 57 56 } 57 + EXPORT_SYMBOL_NS_GPL(inv_icm42600_timestamp_init, IIO_INV_SENSORS_TIMESTAMP); 58 58 59 59 int inv_icm42600_timestamp_update_odr(struct inv_icm42600_timestamp *ts, 60 60 uint32_t period, bool fifo) ··· 68 66 69 67 return 0; 70 68 } 69 + EXPORT_SYMBOL_NS_GPL(inv_icm42600_timestamp_update_odr, IIO_INV_SENSORS_TIMESTAMP); 71 70 72 71 static bool inv_validate_period(uint32_t period, uint32_t mult) 73 72 { ··· 156 153 if (valid) 157 154 inv_align_timestamp_it(ts); 158 155 } 156 + EXPORT_SYMBOL_NS_GPL(inv_icm42600_timestamp_interrupt, IIO_INV_SENSORS_TIMESTAMP); 159 157 160 158 void inv_icm42600_timestamp_apply_odr(struct inv_icm42600_timestamp *ts, 161 159 uint32_t fifo_period, size_t fifo_nb, ··· 188 184 ts->timestamp = ts->it.up - interval; 189 185 } 190 186 } 187 + EXPORT_SYMBOL_NS_GPL(inv_icm42600_timestamp_apply_odr, IIO_INV_SENSORS_TIMESTAMP); 188 + 189 + MODULE_AUTHOR("InvenSense, Inc."); 190 + MODULE_DESCRIPTION("InvenSense sensors timestamp module"); 191 + MODULE_LICENSE("GPL");
drivers/iio/imu/inv_icm42600/inv_icm42600_timestamp.h include/linux/iio/common/inv_icm42600_timestamp.h