Factorize timestamp module
Subsystems (3)
v2 cover Factorize timestamp module
From: Jean-Baptiste Maneyrol <[email protected]>
The purpose if this series is to make timestamping from inv_icm42600 driver an independent module and use it for both inv_icm42600 and inv_mpu6050 drivers.
Create a new inv_sensors_timestamp common module based on inv_icm42600 driver and use it in the 2 drivers.
WARNING: this patch requires following commit in fixes-togreg bbaae0c79ebd ("iio: imu: inv_icm42600: fix timestamp reset")
Changelog
- v2: do some headers cleanup and add some justifications in the patches descriptions.
Jean-Baptiste Maneyrol (4):
iio: imu: inv_icm42600: make timestamp module chip independent
iio: move inv_icm42600 timestamp module in common
iio: make invensense timestamp module generic
iio: imu: inv_mpu6050: use the common inv_sensors timestamp module
drivers/iio/common/Kconfig | 1 +
drivers/iio/common/Makefile | 1 +
drivers/iio/common/inv_sensors/Kconfig | 7 ++
drivers/iio/common/inv_sensors/Makefile | 6 ++
.../inv_sensors/inv_sensors_timestamp.c} | 100 +++++++++---------
drivers/iio/imu/inv_icm42600/Kconfig | 1 +
drivers/iio/imu/inv_icm42600/Makefile | 1 -
.../iio/imu/inv_icm42600/inv_icm42600_accel.c | 35 +++---
.../imu/inv_icm42600/inv_icm42600_buffer.c | 33 +++---
.../iio/imu/inv_icm42600/inv_icm42600_core.c | 14 ++-
.../iio/imu/inv_icm42600/inv_icm42600_gyro.c | 35 +++---
.../imu/inv_icm42600/inv_icm42600_timestamp.h | 85 ---------------
drivers/iio/imu/inv_mpu6050/Kconfig | 1 +
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 30 ++++--
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h | 18 ++--
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c | 83 ++-------------
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c | 6 +-
.../linux/iio/common/inv_sensors_timestamp.h | 95 +++++++++++++++++
18 files changed, 278 insertions(+), 274 deletions(-)
create mode 100644 drivers/iio/common/inv_sensors/Kconfig
create mode 100644 drivers/iio/common/inv_sensors/Makefile
rename drivers/iio/{imu/inv_icm42600/inv_icm42600_timestamp.c => common/inv_sensors/inv_sensors_timestamp.c} (56%)
delete mode 100644 drivers/iio/imu/inv_icm42600/inv_icm42600_timestamp.h
create mode 100644 include/linux/iio/common/inv_sensors_timestamp.hSignature · 1 line
2.34.1
PATCH v2 1/4 iio: imu: inv_icm42600: make timestamp module chip independent
From: Jean-Baptiste Maneyrol <[email protected]>
Move icm42600 dependent function inside the core module. Do some headers cleanup at the same time.
--- drivers/iio/imu/inv_icm42600/inv_icm42600_core.c | 11 +++++++++++ .../iio/imu/inv_icm42600/inv_icm42600_timestamp.c | 14 +------------- .../iio/imu/inv_icm42600/inv_icm42600_timestamp.h | 6 ------ 3 files changed, 12 insertions(+), 19 deletions(-)
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +11 -0
@@ -516,6 +516,17 @@ static int inv_icm42600_irq_init(struct inv_icm42600_state *st, int irq, "inv_icm42600", st); } +static int inv_icm42600_timestamp_setup (struct inv_icm42600_state *st) +{ +unsigned int val; + +/* enable timestamp register */ + val =INV_ICM42600_TMST_CONFIG_TMST_TO_REGS_EN | +INV_ICM42600_TMST_CONFIG_TMST_EN ; +return regmap_update_bits (st->map,INV_ICM42600_REG_TMST_CONFIG , +INV_ICM42600_TMST_CONFIG_MASK , val); +} +static int inv_icm42600_enable_regulator_vddio (struct inv_icm42600_state *st) {int ret;
drivers/iio/imu/inv_icm42600/inv_icm42600_timestamp.c +1 -13
@@ -3,11 +3,10 @@* Copyright (C) 2020 Invensense, Inc. */ +#include <linux/errno.h> #include <linux/kernel.h> -#include <linux/regmap.h> #include <linux/math64.h> -#include "inv_icm42600.h" #include "inv_icm42600_timestamp.h" /* internal chip period is 32kHz, 31250ns */
@@ -56,17 +55,6 @@ void inv_icm42600_timestamp_init(struct inv_icm42600_timestamp *ts,inv_update_acc (&ts->chip_period,INV_ICM42600_TIMESTAMP_PERIOD ); } -int inv_icm42600_timestamp_setup (struct inv_icm42600_state *st) -{ -unsigned int val; - -/* enable timestamp register */ - val =INV_ICM42600_TMST_CONFIG_TMST_TO_REGS_EN | -INV_ICM42600_TMST_CONFIG_TMST_EN ; -return regmap_update_bits (st->map,INV_ICM42600_REG_TMST_CONFIG , -INV_ICM42600_TMST_CONFIG_MASK , val); -} -int inv_icm42600_timestamp_update_odr (struct inv_icm42600_timestamp *ts,uint32_t period,bool fifo) {
drivers/iio/imu/inv_icm42600/inv_icm42600_timestamp.h +0 -6
@@ -6,10 +6,6 @@#ifndef INV_ICM42600_TIMESTAMP_H_ #define INV_ICM42600_TIMESTAMP_H_ -#include <linux/kernel.h> - -struct inv_icm42600_state ; -/** * struct inv_icm42600_timestamp_interval - timestamps interval * @lo: interval lower bound
@@ -53,8 +49,6 @@ struct inv_icm42600_timestamp {void inv_icm42600_timestamp_init (struct inv_icm42600_timestamp *ts,uint32_t period); -int inv_icm42600_timestamp_setup (struct inv_icm42600_state *st); -int inv_icm42600_timestamp_update_odr (struct inv_icm42600_timestamp *ts,uint32_t period,bool fifo);
Signature · 1 line
2.34.1
PATCH v2 2/4 iio: move inv_icm42600 timestamp module in common
In reply to [email protected]From: Jean-Baptiste Maneyrol <[email protected]>
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.
---
drivers/iio/common/Kconfig | 1 +
drivers/iio/common/Makefile | 1 +
drivers/iio/common/inv_sensors/Kconfig | 7 +++++++
drivers/iio/common/inv_sensors/Makefile | 6 ++++++
.../inv_sensors}/inv_icm42600_timestamp.c | 11 ++++++++++-
drivers/iio/imu/inv_icm42600/Kconfig | 1 +
drivers/iio/imu/inv_icm42600/Makefile | 1 -
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c | 5 +++--
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c | 5 +++--
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c | 4 +++-
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c | 5 +++--
.../linux/iio/common}/inv_icm42600_timestamp.h | 0
12 files changed, 38 insertions(+), 9 deletions(-)
create mode 100644 drivers/iio/common/inv_sensors/Kconfig
create mode 100644 drivers/iio/common/inv_sensors/Makefile
rename drivers/iio/{imu/inv_icm42600 => common/inv_sensors}/inv_icm42600_timestamp.c (91%)
rename {drivers/iio/imu/inv_icm42600 => include/linux/iio/common}/inv_icm42600_timestamp.h (100%)drivers/iio/common/Kconfig +1 -0
@@ -5,6 +5,7 @@ source "drivers/iio/common/cros_ec_sensors/Kconfig" source "drivers/iio/common/hid-sensors/Kconfig" +source "drivers/iio/common/inv_sensors/Kconfig" source "drivers/iio/common/ms_sensors/Kconfig" source "drivers/iio/common/scmi_sensors/Kconfig" source "drivers/iio/common/ssp_sensors/Kconfig"
drivers/iio/common/Makefile +1 -0
@@ -10,6 +10,7 @@ # When adding new entries keep the list in alphabetical order obj-y += cros_ec_sensors/ obj-y += hid-sensors/ +obj-y += inv_sensors/ obj-y += ms_sensors/ obj-y += scmi_sensors/ obj-y += ssp_sensors/
drivers/iio/common/inv_sensors/Kconfig new file +7 -0
@@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# TDK-InvenSense sensors common library +# + +config IIO_INV_SENSORS_TIMESTAMP + tristate
drivers/iio/common/inv_sensors/Makefile new file +6 -0
@@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Makefile for TDK-InvenSense sensors module. +# + +obj-$(CONFIG_IIO_INV_SENSORS_TIMESTAMP) += inv_icm42600_timestamp.o
drivers/iio/common/inv_sensors/inv_icm42600_timestamp.c renamed from drivers/iio/imu/inv_icm42600/inv_icm42600_timestamp.c +10 -1
@@ -6,8 +6,9 @@#include <linux/errno.h> #include <linux/kernel.h> #include <linux/math64.h> +#include <linux/module.h> -#include "inv_icm42600_timestamp.h" +#include <linux/iio/common/inv_icm42600_timestamp.h> /* internal chip period is 32kHz, 31250ns */ #define INV_ICM42600_TIMESTAMP_PERIOD 31250
@@ -54,6 +55,7 @@ void inv_icm42600_timestamp_init(struct inv_icm42600_timestamp *ts,/* use theoretical value for chip period */ inv_update_acc (&ts->chip_period,INV_ICM42600_TIMESTAMP_PERIOD ); } +EXPORT_SYMBOL_NS_GPL (inv_icm42600_timestamp_init,IIO_INV_SENSORS_TIMESTAMP );int inv_icm42600_timestamp_update_odr (struct inv_icm42600_timestamp *ts,uint32_t period,bool fifo)
@@ -66,6 +68,7 @@ int inv_icm42600_timestamp_update_odr(struct inv_icm42600_timestamp *ts,return 0 ; } +EXPORT_SYMBOL_NS_GPL (inv_icm42600_timestamp_update_odr,IIO_INV_SENSORS_TIMESTAMP );static bool inv_validate_period (uint32_t period,uint32_t mult) {
@@ -153,6 +156,7 @@ void inv_icm42600_timestamp_interrupt(struct inv_icm42600_timestamp *ts,if (valid)inv_align_timestamp_it (ts); } +EXPORT_SYMBOL_NS_GPL (inv_icm42600_timestamp_interrupt,IIO_INV_SENSORS_TIMESTAMP ); void inv_icm42600_timestamp_apply_odr(struct inv_icm42600_timestamp *ts, uint32_t fifo_period, size_t fifo_nb,
@@ -184,3 +188,8 @@ void inv_icm42600_timestamp_apply_odr(struct inv_icm42600_timestamp *ts, ts->timestamp = ts->it.up - interval; } } +EXPORT_SYMBOL_NS_GPL (inv_icm42600_timestamp_apply_odr,IIO_INV_SENSORS_TIMESTAMP ); + +MODULE_AUTHOR ("InvenSense, Inc." ); +MODULE_DESCRIPTION ("InvenSense sensors timestamp module" ); +MODULE_LICENSE ("GPL" );
drivers/iio/imu/inv_icm42600/Kconfig +1 -0
@@ -3,6 +3,7 @@ config INV_ICM42600 tristate select IIO_BUFFER + select IIO_INV_SENSORS_TIMESTAMP config INV_ICM42600_I2C tristate "InvenSense ICM-426xx I2C driver"
drivers/iio/imu/inv_icm42600/Makefile +0 -1
@@ -6,7 +6,6 @@ inv-icm42600-y += inv_icm42600_gyro.o inv-icm42600-y += inv_icm42600_accel.o inv-icm42600-y += inv_icm42600_temp.o inv-icm42600-y += inv_icm42600_buffer.o -inv-icm42600-y += inv_icm42600_timestamp.o obj-$(CONFIG_INV_ICM42600_I2C) += inv-icm42600-i2c.o inv-icm42600-i2c-y += inv_icm42600_i2c.o
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c +3 -2
@@ -10,14 +10,15 @@#include <linux/regmap.h> #include <linux/delay.h> #include <linux/math64.h> -#include <linux/iio/iio.h> +#include <linux/iio/buffer.h> +#include <linux/iio/common/inv_icm42600_timestamp.h> +#include <linux/iio/iio.h> #include <linux/iio/kfifo_buf.h> #include "inv_icm42600.h" #include "inv_icm42600_temp.h" #include "inv_icm42600_buffer.h" -#include "inv_icm42600_timestamp.h" #define INV_ICM42600_ACCEL_CHAN (_modifier, _index, _ext_info) \ { \
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c +3 -2
@@ -9,11 +9,12 @@#include <linux/pm_runtime.h> #include <linux/regmap.h> #include <linux/delay.h> -#include <linux/iio/iio.h> +#include <linux/iio/buffer.h> +#include <linux/iio/common/inv_icm42600_timestamp.h> +#include <linux/iio/iio.h> #include "inv_icm42600.h" -#include "inv_icm42600_timestamp.h" #include "inv_icm42600_buffer.h" /* FIFO header: 1 byte */
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +3 -1
@@ -15,11 +15,12 @@#include <linux/pm_runtime.h> #include <linux/property.h> #include <linux/regmap.h> + +#include <linux/iio/common/inv_icm42600_timestamp.h> #include <linux/iio/iio.h> #include "inv_icm42600.h" #include "inv_icm42600_buffer.h" -#include "inv_icm42600_timestamp.h" static const struct regmap_range_cfg inv_icm42600_regmap_ranges[] = { {
@@ -799,3 +800,4 @@ EXPORT_NS_GPL_DEV_PM_OPS(inv_icm42600_pm_ops, IIO_ICM42600) = {MODULE_AUTHOR ("InvenSense, Inc." );MODULE_DESCRIPTION ("InvenSense ICM-426xx device driver" );MODULE_LICENSE ("GPL" ); +MODULE_IMPORT_NS (IIO_INV_SENSORS_TIMESTAMP );
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c +3 -2
@@ -10,14 +10,15 @@#include <linux/regmap.h> #include <linux/delay.h> #include <linux/math64.h> -#include <linux/iio/iio.h> +#include <linux/iio/buffer.h> +#include <linux/iio/common/inv_icm42600_timestamp.h> +#include <linux/iio/iio.h> #include <linux/iio/kfifo_buf.h> #include "inv_icm42600.h" #include "inv_icm42600_temp.h" #include "inv_icm42600_buffer.h" -#include "inv_icm42600_timestamp.h" #define INV_ICM42600_GYRO_CHAN (_modifier, _index, _ext_info) \ { \
include/linux/iio/common/inv_icm42600_timestamp.h renamed from drivers/iio/imu/inv_icm42600/inv_icm42600_timestamp.h +0 -0
Signature · 1 line
2.34.1
PATCH v2 3/4 iio: make invensense timestamp module generic
In reply to [email protected]From: Jean-Baptiste Maneyrol <[email protected]>
Rename common module to inv_sensors_timestamp, add configuration at init (chip internal clock, acceptable jitter, ...) and update inv_icm42600 driver integration.
---
drivers/iio/common/inv_sensors/Makefile | 2 +-
...00_timestamp.c => inv_sensors_timestamp.c} | 87 +++++++++--------
.../iio/imu/inv_icm42600/inv_icm42600_accel.c | 32 ++++---
.../imu/inv_icm42600/inv_icm42600_buffer.c | 30 +++---
.../iio/imu/inv_icm42600/inv_icm42600_core.c | 1 -
.../iio/imu/inv_icm42600/inv_icm42600_gyro.c | 32 ++++---
.../linux/iio/common/inv_icm42600_timestamp.h | 79 ---------------
.../linux/iio/common/inv_sensors_timestamp.h | 95 +++++++++++++++++++
8 files changed, 194 insertions(+), 164 deletions(-)
rename drivers/iio/common/inv_sensors/{inv_icm42600_timestamp.c => inv_sensors_timestamp.c} (58%)
delete mode 100644 include/linux/iio/common/inv_icm42600_timestamp.h
create mode 100644 include/linux/iio/common/inv_sensors_timestamp.hdrivers/iio/common/inv_sensors/Makefile +1 -1
@@ -3,4 +3,4 @@ # Makefile for TDK-InvenSense sensors module. # -obj-$(CONFIG_IIO_INV_SENSORS_TIMESTAMP) += inv_icm42600_timestamp.o +obj-$(CONFIG_IIO_INV_SENSORS_TIMESTAMP) += inv_sensors_timestamp.o
drivers/iio/common/inv_sensors/inv_sensors_timestamp.c renamed from drivers/iio/common/inv_sensors/inv_icm42600_timestamp.c +43 -44
171 lines not on this page · raw message
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c +20 -12
@@ -12,7 +12,7 @@#include <linux/math64.h> #include <linux/iio/buffer.h> -#include <linux/iio/common/inv_icm42600_timestamp.h> +#include <linux/iio/common/inv_sensors_timestamp.h> #include <linux/iio/iio.h> #include <linux/iio/kfifo_buf.h>
@@ -99,7 +99,7 @@ static int inv_icm42600_accel_update_scan_mode(struct iio_dev *indio_dev, const unsigned long *scan_mask) {struct inv_icm42600_state *st =iio_device_get_drvdata (indio_dev); -struct inv_icm42600_timestamp *ts =iio_priv (indio_dev); +struct inv_sensors_timestamp *ts =iio_priv (indio_dev);struct inv_icm42600_sensor_conf conf =INV_ICM42600_SENSOR_CONF_INIT ;unsigned int fifo_en =0 ;unsigned int sleep_temp =0 ;
@@ -127,7 +127,7 @@ static int inv_icm42600_accel_update_scan_mode(struct iio_dev *indio_dev, }/* update data FIFO write */ -inv_icm42600_timestamp_apply_odr (ts,0 ,0 ,0 ); +inv_sensors_timestamp_apply_odr (ts,0 ,0 ,0 ); ret =inv_icm42600_buffer_set_fifo_en (st, fifo_en | st->fifo.en);if (ret) goto out_unlock;
@@ -312,7 +312,7 @@ static int inv_icm42600_accel_write_odr(struct iio_dev *indio_dev, int val, int val2) {struct inv_icm42600_state *st =iio_device_get_drvdata (indio_dev); -struct inv_icm42600_timestamp *ts =iio_priv (indio_dev); +struct inv_sensors_timestamp *ts =iio_priv (indio_dev);struct device *dev =regmap_get_device (st->map);unsigned int idx;struct inv_icm42600_sensor_conf conf =INV_ICM42600_SENSOR_CONF_INIT ;
@@ -331,8 +331,8 @@ static int inv_icm42600_accel_write_odr(struct iio_dev *indio_dev,pm_runtime_get_sync (dev);mutex_lock (&st->lock); - ret =inv_icm42600_timestamp_update_odr (ts,inv_icm42600_odr_to_period (conf.odr), -iio_buffer_enabled (indio_dev)); + ret =inv_sensors_timestamp_update_odr (ts,inv_icm42600_odr_to_period (conf.odr), +iio_buffer_enabled (indio_dev));if (ret) goto out_unlock;
@@ -708,7 +708,8 @@ struct iio_dev *inv_icm42600_accel_init(struct inv_icm42600_state *st) {struct device *dev =regmap_get_device (st->map);const char *name; -struct inv_icm42600_timestamp *ts; +struct inv_sensors_timestamp_chip ts_chip; +struct inv_sensors_timestamp *ts;struct iio_dev *indio_dev;int ret;
@@ -720,8 +721,15 @@ struct iio_dev *inv_icm42600_accel_init(struct inv_icm42600_state *st)if (!indio_dev)return ERR_PTR (-ENOMEM ); +/* +* clock period is 32kHz (31250ns) +* jitter is +/- 2% (20 per mille) +*/ + ts_chip.clock_period =31250 ; + ts_chip.jitter =20 ; + ts_chip.init_period =inv_icm42600_odr_to_period (st->conf.accel.odr); ts =iio_priv (indio_dev); -inv_icm42600_timestamp_init (ts,inv_icm42600_odr_to_period (st->conf.accel.odr)); +inv_sensors_timestamp_init (ts, &ts_chip);iio_device_set_drvdata (indio_dev, st); indio_dev->name = name;
@@ -746,7 +754,7 @@ struct iio_dev *inv_icm42600_accel_init(struct inv_icm42600_state *st)int inv_icm42600_accel_parse_fifo (struct iio_dev *indio_dev) {struct inv_icm42600_state *st =iio_device_get_drvdata (indio_dev); -struct inv_icm42600_timestamp *ts =iio_priv (indio_dev); +struct inv_sensors_timestamp *ts =iio_priv (indio_dev);ssize_t i, size;unsigned int no;const void *accel, *gyro, *timestamp;
@@ -769,15 +777,15 @@ int inv_icm42600_accel_parse_fifo(struct iio_dev *indio_dev)/* update odr */ if (odr &INV_ICM42600_SENSOR_ACCEL ) -inv_icm42600_timestamp_apply_odr (ts, st->fifo.period, - st->fifo.nb.total, no); +inv_sensors_timestamp_apply_odr (ts, st->fifo.period, + st->fifo.nb.total, no);/* buffer is copied to userspace, zeroing it to avoid any data leak */ memset (&buffer,0 ,sizeof (buffer));memcpy (&buffer.accel, accel,sizeof (buffer.accel));/* convert 8 bits FIFO temperature in high resolution format */ buffer.temp = temp ? (*temp *64 ) :0 ; - ts_val =inv_icm42600_timestamp_pop (ts); + ts_val =inv_sensors_timestamp_pop (ts);iio_push_to_buffers_with_timestamp (indio_dev, &buffer, ts_val); }
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c +15 -15
@@ -11,7 +11,7 @@#include <linux/delay.h> #include <linux/iio/buffer.h> -#include <linux/iio/common/inv_icm42600_timestamp.h> +#include <linux/iio/common/inv_sensors_timestamp.h> #include <linux/iio/iio.h> #include "inv_icm42600.h"
@@ -276,12 +276,12 @@ static int inv_icm42600_buffer_preenable(struct iio_dev *indio_dev) {struct inv_icm42600_state *st =iio_device_get_drvdata (indio_dev);struct device *dev =regmap_get_device (st->map); -struct inv_icm42600_timestamp *ts =iio_priv (indio_dev); +struct inv_sensors_timestamp *ts =iio_priv (indio_dev);pm_runtime_get_sync (dev);mutex_lock (&st->lock); -inv_icm42600_timestamp_reset (ts); +inv_sensors_timestamp_reset (ts);mutex_unlock (&st->lock);return 0 ;
@@ -505,7 +505,7 @@ int inv_icm42600_buffer_fifo_read(struct inv_icm42600_state *st,int inv_icm42600_buffer_fifo_parse (struct inv_icm42600_state *st) { -struct inv_icm42600_timestamp *ts; +struct inv_sensors_timestamp *ts;int ret;if (st->fifo.nb.total ==0 )
@@ -513,8 +513,8 @@ int inv_icm42600_buffer_fifo_parse(struct inv_icm42600_state *st)/* handle gyroscope timestamp and FIFO data parsing */ ts =iio_priv (st->indio_gyro); -inv_icm42600_timestamp_interrupt (ts, st->fifo.period, st->fifo.nb.total, - st->fifo.nb.gyro, st->timestamp.gyro); +inv_sensors_timestamp_interrupt (ts, st->fifo.period, st->fifo.nb.total, + st->fifo.nb.gyro, st->timestamp.gyro);if (st->fifo.nb.gyro >0 ) { ret =inv_icm42600_gyro_parse_fifo (st->indio_gyro);if (ret)
@@ -523,8 +523,8 @@ int inv_icm42600_buffer_fifo_parse(struct inv_icm42600_state *st)/* handle accelerometer timestamp and FIFO data parsing */ ts =iio_priv (st->indio_accel); -inv_icm42600_timestamp_interrupt (ts, st->fifo.period, st->fifo.nb.total, - st->fifo.nb.accel, st->timestamp.accel); +inv_sensors_timestamp_interrupt (ts, st->fifo.period, st->fifo.nb.total, + st->fifo.nb.accel, st->timestamp.accel);if (st->fifo.nb.accel >0 ) { ret =inv_icm42600_accel_parse_fifo (st->indio_accel);if (ret)
@@ -537,7 +537,7 @@ int inv_icm42600_buffer_fifo_parse(struct inv_icm42600_state *st)int inv_icm42600_buffer_hwfifo_flush (struct inv_icm42600_state *st,unsigned int count) { -struct inv_icm42600_timestamp *ts; +struct inv_sensors_timestamp *ts;int64_t gyro_ts, accel_ts;int ret;
@@ -553,9 +553,9 @@ int inv_icm42600_buffer_hwfifo_flush(struct inv_icm42600_state *st,if (st->fifo.nb.gyro >0 ) { ts =iio_priv (st->indio_gyro); -inv_icm42600_timestamp_interrupt (ts, st->fifo.period, - st->fifo.nb.total, st->fifo.nb.gyro, - gyro_ts); +inv_sensors_timestamp_interrupt (ts, st->fifo.period, + st->fifo.nb.total, st->fifo.nb.gyro, + gyro_ts); ret =inv_icm42600_gyro_parse_fifo (st->indio_gyro);if (ret)return ret;
@@ -563,9 +563,9 @@ int inv_icm42600_buffer_hwfifo_flush(struct inv_icm42600_state *st,if (st->fifo.nb.accel >0 ) { ts =iio_priv (st->indio_accel); -inv_icm42600_timestamp_interrupt (ts, st->fifo.period, - st->fifo.nb.total, st->fifo.nb.accel, - accel_ts); +inv_sensors_timestamp_interrupt (ts, st->fifo.period, + st->fifo.nb.total, st->fifo.nb.accel, + accel_ts); ret =inv_icm42600_accel_parse_fifo (st->indio_accel);if (ret)return ret;
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +0 -1
@@ -16,7 +16,6 @@#include <linux/property.h> #include <linux/regmap.h> -#include <linux/iio/common/inv_icm42600_timestamp.h> #include <linux/iio/iio.h> #include "inv_icm42600.h"
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c +20 -12
@@ -12,7 +12,7 @@#include <linux/math64.h> #include <linux/iio/buffer.h> -#include <linux/iio/common/inv_icm42600_timestamp.h> +#include <linux/iio/common/inv_sensors_timestamp.h> #include <linux/iio/iio.h> #include <linux/iio/kfifo_buf.h>
@@ -99,7 +99,7 @@ static int inv_icm42600_gyro_update_scan_mode(struct iio_dev *indio_dev, const unsigned long *scan_mask) {struct inv_icm42600_state *st =iio_device_get_drvdata (indio_dev); -struct inv_icm42600_timestamp *ts =iio_priv (indio_dev); +struct inv_sensors_timestamp *ts =iio_priv (indio_dev);struct inv_icm42600_sensor_conf conf =INV_ICM42600_SENSOR_CONF_INIT ;unsigned int fifo_en =0 ;unsigned int sleep_gyro =0 ;
@@ -127,7 +127,7 @@ static int inv_icm42600_gyro_update_scan_mode(struct iio_dev *indio_dev, }/* update data FIFO write */ -inv_icm42600_timestamp_apply_odr (ts,0 ,0 ,0 ); +inv_sensors_timestamp_apply_odr (ts,0 ,0 ,0 ); ret =inv_icm42600_buffer_set_fifo_en (st, fifo_en | st->fifo.en);if (ret) goto out_unlock;
@@ -324,7 +324,7 @@ static int inv_icm42600_gyro_write_odr(struct iio_dev *indio_dev, int val, int val2) {struct inv_icm42600_state *st =iio_device_get_drvdata (indio_dev); -struct inv_icm42600_timestamp *ts =iio_priv (indio_dev); +struct inv_sensors_timestamp *ts =iio_priv (indio_dev);struct device *dev =regmap_get_device (st->map);unsigned int idx;struct inv_icm42600_sensor_conf conf =INV_ICM42600_SENSOR_CONF_INIT ;
@@ -343,8 +343,8 @@ static int inv_icm42600_gyro_write_odr(struct iio_dev *indio_dev,pm_runtime_get_sync (dev);mutex_lock (&st->lock); - ret =inv_icm42600_timestamp_update_odr (ts,inv_icm42600_odr_to_period (conf.odr), -iio_buffer_enabled (indio_dev)); + ret =inv_sensors_timestamp_update_odr (ts,inv_icm42600_odr_to_period (conf.odr), +iio_buffer_enabled (indio_dev));if (ret) goto out_unlock;
@@ -719,7 +719,8 @@ struct iio_dev *inv_icm42600_gyro_init(struct inv_icm42600_state *st) {struct device *dev =regmap_get_device (st->map);const char *name; -struct inv_icm42600_timestamp *ts; +struct inv_sensors_timestamp_chip ts_chip; +struct inv_sensors_timestamp *ts;struct iio_dev *indio_dev;int ret;
@@ -731,8 +732,15 @@ struct iio_dev *inv_icm42600_gyro_init(struct inv_icm42600_state *st)if (!indio_dev)return ERR_PTR (-ENOMEM ); +/* +* clock period is 32kHz (31250ns) +* jitter is +/- 2% (20 per mille) +*/ + ts_chip.clock_period =31250 ; + ts_chip.jitter =20 ; + ts_chip.init_period =inv_icm42600_odr_to_period (st->conf.accel.odr); ts =iio_priv (indio_dev); -inv_icm42600_timestamp_init (ts,inv_icm42600_odr_to_period (st->conf.gyro.odr)); +inv_sensors_timestamp_init (ts, &ts_chip);iio_device_set_drvdata (indio_dev, st); indio_dev->name = name;
@@ -758,7 +766,7 @@ struct iio_dev *inv_icm42600_gyro_init(struct inv_icm42600_state *st)int inv_icm42600_gyro_parse_fifo (struct iio_dev *indio_dev) {struct inv_icm42600_state *st =iio_device_get_drvdata (indio_dev); -struct inv_icm42600_timestamp *ts =iio_priv (indio_dev); +struct inv_sensors_timestamp *ts =iio_priv (indio_dev);ssize_t i, size;unsigned int no;const void *accel, *gyro, *timestamp;
@@ -781,15 +789,15 @@ int inv_icm42600_gyro_parse_fifo(struct iio_dev *indio_dev)/* update odr */ if (odr &INV_ICM42600_SENSOR_GYRO ) -inv_icm42600_timestamp_apply_odr (ts, st->fifo.period, - st->fifo.nb.total, no); +inv_sensors_timestamp_apply_odr (ts, st->fifo.period, + st->fifo.nb.total, no);/* buffer is copied to userspace, zeroing it to avoid any data leak */ memset (&buffer,0 ,sizeof (buffer));memcpy (&buffer.gyro, gyro,sizeof (buffer.gyro));/* convert 8 bits FIFO temperature in high resolution format */ buffer.temp = temp ? (*temp *64 ) :0 ; - ts_val =inv_icm42600_timestamp_pop (ts); + ts_val =inv_sensors_timestamp_pop (ts);iio_push_to_buffers_with_timestamp (indio_dev, &buffer, ts_val); }
include/linux/iio/common/inv_icm42600_timestamp.h deleted +0 -79
79 lines not on this page · raw message
include/linux/iio/common/inv_sensors_timestamp.h new file +95 -0
95 lines not on this page · raw message
Signature · 1 line
2.34.1
PATCH v2 4/4 iio: imu: inv_mpu6050: use the common inv_sensors timestamp module
In reply to [email protected]From: Jean-Baptiste Maneyrol <[email protected]>
Replace timestamping by the new common inv_sensors timestamp module. The principle behind is the same but the implementation in the new module is far better providing less jitter and a better estimation.
--- drivers/iio/imu/inv_mpu6050/Kconfig | 1 + drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 30 +++++-- drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h | 18 ++-- drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c | 83 ++----------------- drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c | 6 +- 5 files changed, 45 insertions(+), 93 deletions(-)
drivers/iio/imu/inv_mpu6050/Kconfig +1 -0
@@ -7,6 +7,7 @@ config INV_MPU6050_IIO tristate select IIO_BUFFER select IIO_TRIGGERED_BUFFER + select IIO_INV_SENSORS_TIMESTAMP config INV_MPU6050_I2C tristate "Invensense MPU6050 devices (I2C)"
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c +23 -7
@@ -12,12 +12,15 @@#include <linux/jiffies.h> #include <linux/irq.h> #include <linux/interrupt.h> -#include <linux/iio/iio.h> #include <linux/acpi.h> #include <linux/platform_device.h> #include <linux/regulator/consumer.h> #include <linux/pm.h> #include <linux/pm_runtime.h> + +#include <linux/iio/common/inv_sensors_timestamp.h> +#include <linux/iio/iio.h> +#include "inv_mpu_iio.h" #include "inv_mpu_magn.h"
@@ -521,6 +524,7 @@ static int inv_mpu6050_init_config(struct iio_dev *indio_dev)int result;u8 d;struct inv_mpu6050_state *st =iio_priv (indio_dev); +struct inv_sensors_timestamp_chip timestamp; result =inv_mpu6050_set_gyro_fsr (st, st->chip_config.fsr);if (result)
@@ -544,12 +548,12 @@ static int inv_mpu6050_init_config(struct iio_dev *indio_dev)if (result)return result; -/* -* Internal chip period is 1ms (1kHz). -* Let's use at the beginning the theorical value before measuring -* with interrupt timestamps. -*/ - st->chip_period =NSEC_PER_MSEC ; +/* clock jitter is +/- 2% */ + timestamp.clock_period =NSEC_PER_SEC /INV_MPU6050_INTERNAL_FREQ_HZ ; + timestamp.jitter =20 ; + timestamp.init_period = +NSEC_PER_SEC /INV_MPU6050_DIVIDER_TO_FIFO_RATE (st->chip_config.divider); +inv_sensors_timestamp_init (&st->timestamp, ×tamp);/* magn chip init, noop if not present in the chip */ result =inv_mpu_magn_probe (st);
@@ -936,6 +940,8 @@ inv_mpu6050_fifo_rate_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int fifo_rate; +u32 fifo_period; +bool fifo_on;u8 d;int result;struct iio_dev *indio_dev =dev_to_iio_dev (dev);
@@ -952,12 +958,21 @@ inv_mpu6050_fifo_rate_store(struct device *dev, struct device_attribute *attr, d =INV_MPU6050_FIFO_RATE_TO_DIVIDER (fifo_rate);/* compute back the fifo rate to handle truncation cases */ fifo_rate =INV_MPU6050_DIVIDER_TO_FIFO_RATE (d); + fifo_period =NSEC_PER_SEC / fifo_rate;mutex_lock (&st->lock);if (d == st->chip_config.divider) { result =0 ; goto fifo_rate_fail_unlock; } + + fifo_on = st->chip_config.accl_fifo_enable || + st->chip_config.gyro_fifo_enable || + st->chip_config.magn_fifo_enable; + result =inv_sensors_timestamp_update_odr (&st->timestamp, fifo_period, fifo_on); +if (result) + goto fifo_rate_fail_unlock; + result =pm_runtime_resume_and_get (pdev);if (result) goto fifo_rate_fail_unlock;
@@ -1785,3 +1800,4 @@ EXPORT_NS_GPL_DEV_PM_OPS(inv_mpu_pmops, IIO_MPU6050) = {MODULE_AUTHOR ("Invensense Corporation" );MODULE_DESCRIPTION ("Invensense device MPU6050 driver" );MODULE_LICENSE ("GPL" ); +MODULE_IMPORT_NS (IIO_INV_SENSORS_TIMESTAMP );
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +8 -10
@@ -9,15 +9,17 @@#include <linux/i2c.h> #include <linux/i2c-mux.h> #include <linux/mutex.h> -#include <linux/iio/iio.h> -#include <linux/iio/buffer.h> +#include <linux/platform_data/invensense_mpu6050.h> #include <linux/regmap.h> -#include <linux/iio/sysfs.h> + +#include <linux/iio/buffer.h> +#include <linux/iio/common/inv_sensors_timestamp.h> +#include <linux/iio/iio.h> #include <linux/iio/kfifo_buf.h> #include <linux/iio/trigger.h> #include <linux/iio/triggered_buffer.h> #include <linux/iio/trigger_consumer.h> -#include <linux/platform_data/invensense_mpu6050.h> +#include <linux/iio/sysfs.h> /** * struct inv_mpu6050_reg_map - Notable registers.
@@ -170,9 +172,7 @@ struct inv_mpu6050_hw {* @map regmap pointer. * @irq interrupt number. * @irq_mask the int_pin_cfg mask to configure interrupt type. -* @chip_period: chip internal period estimation (~1kHz). -* @it_timestamp: timestamp from previous interrupt. -* @data_timestamp: timestamp for next data sample. +* @timestamp: timestamping module * @vdd_supply: VDD voltage regulator for the chip. * @vddio_supply I/O voltage regulator for the chip. * @magn_disabled: magnetometer disabled for backward compatibility reason.
@@ -196,9 +196,7 @@ struct inv_mpu6050_state {int irq;u8 irq_mask;unsigned skip_samples; -s64 chip_period; -s64 it_timestamp; -s64 data_timestamp; +struct inv_sensors_timestamp timestamp;struct regulator *vdd_supply;struct regulator *vddio_supply;bool magn_disabled;
drivers/iio/imu/inv_mpu6050/inv_mpu_ring.c +8 -75
109 lines not on this page · raw message
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c +5 -1
@@ -4,6 +4,9 @@*/ #include <linux/pm_runtime.h> + +#include <linux/iio/common/inv_sensors_timestamp.h> +#include "inv_mpu_iio.h" static unsigned int inv_scan_query_mpu6050 (struct iio_dev *indio_dev)
@@ -106,7 +109,8 @@ int inv_mpu6050_prepare_fifo(struct inv_mpu6050_state *st, bool enable)int ret;if (enable) { - st->it_timestamp =0 ; +/* reset timestamping */ +inv_sensors_timestamp_reset (&st->timestamp);/* reset FIFO */ d = st->chip_config.user_ctrl |INV_MPU6050_BIT_FIFO_RST ; ret =regmap_write (st->map, st->reg->user_ctrl, d);
Signature · 1 line
2.34.1
Tue, Jun 06, 2023 at 04:21:43PM +0000, [email protected] kirjoitti:
Quoted 9 lines
From: Jean-Baptiste Maneyrol <[email protected]>
The purpose if this series is to make timestamping from
inv_icm42600driver an independent module and use it for bothinv_icm42600andinv_mpu6050drivers.Create a new
inv_sensors_timestampcommon module based oninv_icm42600driver and use it in the 2 drivers.
Quoted 6 lines
WARNING: this patch requires following commit in fixes-togreg
bbaae0c79ebd("iio: imu:inv_icm42600: fix timestamp reset")Changelog
- v2: do some headers cleanup and add some justifications in the patches descriptions.
What I haven't noticed is my tag. It's your responsibility to add given tag and it's polite to Cc to the reviewers (but this will imply by the tag anyway in this case).
Any explanation why did you do so?
Signature · 2 lines
With Best Regards, Andy Shevchenko
Jean-Baptiste Maneyrol
maintainerHello Andy,
really sorry, I forgot to do that. I'm still not very familiar with all the details of the process, sorry.
I will send a new v3 with the Reviewed-by tag. Is it OK like this?
Thanks a lot, and sorry again.
JB
From: [email protected] <[email protected]>
Sent: Wednesday, June 7, 2023 08:26
To: INV Git Commit <[email protected]>
Cc: [email protected] <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>; Jean-Baptiste Maneyrol <[email protected]>
Subject: Re: [PATCH v2 0/4] Factorize timestamp module
[CAUTION] This is an EXTERNAL email. Do not click links or open attachments unless you recognize the sender and know the content is safe.
======================================================================
Tue, Jun 06, 2023 at 04:21:43PM +0000, [email protected] kirjoitti:
Quoted 9 lines
From: Jean-Baptiste Maneyrol <[email protected]>
The purpose if this series is to make timestamping from
inv_icm42600driver an independent module and use it for bothinv_icm42600andinv_mpu6050drivers.Create a new
inv_sensors_timestampcommon module based oninv_icm42600driver and use it in the 2 drivers.
Quoted 6 lines
WARNING: this patch requires following commit in fixes-togreg
bbaae0c79ebd("iio: imu:inv_icm42600: fix timestamp reset")Changelog
- v2: do some headers cleanup and add some justifications in the patches descriptions.
What I haven't noticed is my tag. It's your responsibility to add given tag and it's polite to Cc to the reviewers (but this will imply by the tag anyway in this case).
Any explanation why did you do so?
Signature · 2 lines
With Best Regards, Andy Shevchenko
Andy Shevchenko
Reviewed-byQuoted 4 lines · Jean-Baptiste Maneyrol
Hello Andy,
really sorry, I forgot to do that. I'm still not very familiar with all the details of the process, sorry.
Understand.
Quoted 1 line
I will send a new v3 with the Reviewed-by tag. Is it OK like this?
I believe no need to resend right now as I can simply repeat it here
But next time be more careful.
And thank you for what you are doing!
Quoted 38 lines
Thanks a lot, and sorry again.
From: [email protected] <[email protected]>
Sent: Wednesday, June 7, 2023 08:26
To: INV Git Commit <[email protected]>
Cc: [email protected] <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>; Jean-Baptiste Maneyrol <[email protected]>
Subject: Re: [PATCH v2 0/4] Factorize timestamp module[CAUTION] This is an EXTERNAL email. Do not click links or open attachments unless you recognize the sender and know the content is safe.
======================================================================
Tue, Jun 06, 2023 at 04:21:43PM +0000, [email protected] kirjoitti:Quoted 9 lines
From: Jean-Baptiste Maneyrol <[email protected]>
The purpose if this series is to make timestamping from
inv_icm42600driver an independent module and use it for bothinv_icm42600andinv_mpu6050drivers.Create a new
inv_sensors_timestampcommon module based oninv_icm42600driver and use it in the 2 drivers.Quoted 6 lines
WARNING: this patch requires following commit in fixes-togreg
bbaae0c79ebd("iio: imu:inv_icm42600: fix timestamp reset")Changelog
- v2: do some headers cleanup and add some justifications in the patches descriptions.What I haven't noticed is my tag. It's your responsibility to add given tag and it's polite to Cc to the reviewers (but this will imply by the tag anyway in this case).
Any explanation why did you do so?
--
With Best Regards,
Andy Shevchenko
Signature · 2 lines
With Best Regards, Andy Shevchenko
Quoted 5 lines · On Wed, 7 Jun 2023 17:44:39 +0300 Andy Shevchenko <[email protected]>…
Quoted 3 lines · Jean-Baptiste Maneyrol
Hello Andy,
Quoted 8 lines
Quoted 1 line
really sorry, I forgot to do that. I'm still not very familiar with all the details of the process, sorry.
Understand.
Quoted 1 line
I will send a new v3 with the Reviewed-by tag. Is it OK like this?
I believe no need to resend right now as I can simply repeat it here
Reviewed-by Andy Shevchenko <[email protected]>
That works for me ;)
Thanks Andy.
Quoted 44 lines
But next time be more careful.
And thank you for what you are doing!
Quoted 38 lines
Thanks a lot, and sorry again.
From: [email protected] <[email protected]>
Sent: Wednesday, June 7, 2023 08:26
To: INV Git Commit <[email protected]>
Cc: [email protected] <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>; Jean-Baptiste Maneyrol <[email protected]>
Subject: Re: [PATCH v2 0/4] Factorize timestamp module[CAUTION] This is an EXTERNAL email. Do not click links or open attachments unless you recognize the sender and know the content is safe.
======================================================================
Tue, Jun 06, 2023 at 04:21:43PM +0000, [email protected] kirjoitti:Quoted 9 lines
From: Jean-Baptiste Maneyrol <[email protected]>
The purpose if this series is to make timestamping from
inv_icm42600driver an independent module and use it for bothinv_icm42600andinv_mpu6050drivers.Create a new
inv_sensors_timestampcommon module based oninv_icm42600driver and use it in the 2 drivers.Quoted 6 lines
WARNING: this patch requires following commit in fixes-togreg
bbaae0c79ebd("iio: imu:inv_icm42600: fix timestamp reset")Changelog
- v2: do some headers cleanup and add some justifications in the patches descriptions.What I haven't noticed is my tag. It's your responsibility to add given tag and it's polite to Cc to the reviewers (but this will imply by the tag anyway in this case).
Any explanation why did you do so?
--
With Best Regards,
Andy Shevchenko
Quoted 12 lines · On Thu, 8 Jun 2023 11:57:40 +0100 Jonathan Cameron…
Quoted 9 lines · On Wed, 7 Jun 2023 17:44:39 +0300 Andy Shevchenko <[email protected]>…
Quoted 4 lines · Jean-Baptiste Maneyrol
Hello Andy,
really sorry, I forgot to do that. I'm still not very familiar with all the details of the process, sorry.
Understand.
Quoted 8 lines
Quoted 4 lines
Quoted 1 line
I will send a new v3 with the Reviewed-by tag. Is it OK like this?
I believe no need to resend right now as I can simply repeat it here
Reviewed-by Andy Shevchenko <[email protected]>That works for me ;)
Thanks Andy.
Applied to the togreg branch of iio.git. However note that these aren't going to make the coming merge window so will only be pushed out as testing until I can rebase on rc1.
Thanks,
Jonathan
Quoted 46 lines
Quoted 45 lines
But next time be more careful.
And thank you for what you are doing!
Quoted 38 lines
Thanks a lot, and sorry again.
From: [email protected] <[email protected]>
Sent: Wednesday, June 7, 2023 08:26
To: INV Git Commit <[email protected]>
Cc: [email protected] <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>; Jean-Baptiste Maneyrol <[email protected]>
Subject: Re: [PATCH v2 0/4] Factorize timestamp module[CAUTION] This is an EXTERNAL email. Do not click links or open attachments unless you recognize the sender and know the content is safe.
======================================================================
Tue, Jun 06, 2023 at 04:21:43PM +0000, [email protected] kirjoitti:Quoted 9 lines
From: Jean-Baptiste Maneyrol <[email protected]>
The purpose if this series is to make timestamping from
inv_icm42600driver an independent module and use it for bothinv_icm42600andinv_mpu6050drivers.Create a new
inv_sensors_timestampcommon module based oninv_icm42600driver and use it in the 2 drivers.Quoted 6 lines
WARNING: this patch requires following commit in fixes-togreg
bbaae0c79ebd("iio: imu:inv_icm42600: fix timestamp reset")Changelog
- v2: do some headers cleanup and add some justifications in the patches descriptions.What I haven't noticed is my tag. It's your responsibility to add given tag and it's polite to Cc to the reviewers (but this will imply by the tag anyway in this case).
Any explanation why did you do so?
--
With Best Regards,
Andy Shevchenko
Quoted 5 lines · On Wed, 7 Jun 2023 09:28:12 +0000 Jean-Baptiste Maneyrol…
Hello Andy,
really sorry, I forgot to do that. I'm still not very familiar with all the details of the process, sorry.
I will send a new v3 with the Reviewed-by tag. Is it OK like this?
Go for it. Other option is to reply with a whoops: forgot this tag and
include the tag. That way b4 will pick it up for me when I apply.
Jonathan
Quoted 37 lines
Thanks a lot, and sorry again.
JBFrom: [email protected] <[email protected]>
Sent: Wednesday, June 7, 2023 08:26
To: INV Git Commit <[email protected]>
Cc: [email protected] <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>; Jean-Baptiste Maneyrol <[email protected]>
Subject: Re: [PATCH v2 0/4] Factorize timestamp module
[CAUTION] This is an EXTERNAL email. Do not click links or open attachments unless you recognize the sender and know the content is safe.======================================================================
Tue, Jun 06, 2023 at 04:21:43PM +0000, [email protected] kirjoitti:Quoted 9 lines
From: Jean-Baptiste Maneyrol <[email protected]>
The purpose if this series is to make timestamping from
inv_icm42600driver an independent module and use it for bothinv_icm42600andinv_mpu6050drivers.Create a new
inv_sensors_timestampcommon module based oninv_icm42600driver and use it in the 2 drivers.Quoted 6 lines
WARNING: this patch requires following commit in fixes-togreg
bbaae0c79ebd("iio: imu:inv_icm42600: fix timestamp reset")Changelog
- v2: do some headers cleanup and add some justifications in the patches descriptions.What I haven't noticed is my tag. It's your responsibility to add given tag and it's polite to Cc to the reviewers (but this will imply by the tag anyway in this case).
Any explanation why did you do so?