linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] iio: Introduce and use aligned_s64 type
@ 2024-09-03 17:59 Andy Shevchenko
  2024-09-03 17:59 ` [PATCH v2 1/3] types: Complement the aligned types with signed 64-bit one Andy Shevchenko
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Andy Shevchenko @ 2024-09-03 17:59 UTC (permalink / raw)
  To: Uwe Kleine-König, Andy Shevchenko, Jonathan Cameron,
	Srinivas Pandruvada, Basavaraj Natikar, linux-input, linux-iio,
	linux-kernel
  Cc: Jiri Kosina, Jonathan Cameron, Lars-Peter Clausen,
	Lorenzo Bianconi

Instead of having open coded idea of aligned member, use
a newly defined type like it's done in, e.g., u64 case.
Update a few IIO drivers to show how to use it.

v2 (took only one year from v1, not bad!):
- avoided touching unrelated comments, code lines, etc. (Jonathan)
- used kernel internal type for the in-kernel code (Jonathan)

Andy Shevchenko (3):
  types: Complement the aligned types with signed 64-bit one
  iio: imu: st_lsm6dsx: Use aligned data type for timestamp
  iio: hid-sensor: Use aligned data type for timestamp

 drivers/iio/accel/hid-sensor-accel-3d.c              | 2 +-
 drivers/iio/gyro/hid-sensor-gyro-3d.c                | 2 +-
 drivers/iio/humidity/hid-sensor-humidity.c           | 2 +-
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h              | 3 +--
 drivers/iio/light/hid-sensor-als.c                   | 2 +-
 drivers/iio/orientation/hid-sensor-incl-3d.c         | 2 +-
 drivers/iio/orientation/hid-sensor-rotation.c        | 2 +-
 drivers/iio/position/hid-sensor-custom-intel-hinge.c | 2 +-
 drivers/iio/pressure/hid-sensor-press.c              | 2 +-
 drivers/iio/temperature/hid-sensor-temperature.c     | 2 +-
 include/linux/types.h                                | 3 ++-
 include/uapi/linux/types.h                           | 1 +
 12 files changed, 13 insertions(+), 12 deletions(-)

-- 
2.43.0.rc1.1336.g36b5255a03ac


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/3] types: Complement the aligned types with signed 64-bit one
  2024-09-03 17:59 [PATCH v2 0/3] iio: Introduce and use aligned_s64 type Andy Shevchenko
@ 2024-09-03 17:59 ` Andy Shevchenko
  2024-09-03 17:59 ` [PATCH v2 2/3] iio: imu: st_lsm6dsx: Use aligned data type for timestamp Andy Shevchenko
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 8+ messages in thread
From: Andy Shevchenko @ 2024-09-03 17:59 UTC (permalink / raw)
  To: Uwe Kleine-König, Andy Shevchenko, Jonathan Cameron,
	Srinivas Pandruvada, Basavaraj Natikar, linux-input, linux-iio,
	linux-kernel
  Cc: Jiri Kosina, Jonathan Cameron, Lars-Peter Clausen,
	Lorenzo Bianconi

Some user may want to use aligned signed 64-bit type.
Provide it for them.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 include/linux/types.h      | 3 ++-
 include/uapi/linux/types.h | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/linux/types.h b/include/linux/types.h
index 2bc8766ba20c..2d7b9ae8714c 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -115,8 +115,9 @@ typedef u64			u_int64_t;
 typedef s64			int64_t;
 #endif
 
-/* this is a special 64bit data type that is 8-byte aligned */
+/* These are the special 64-bit data types that are 8-byte aligned */
 #define aligned_u64		__aligned_u64
+#define aligned_s64		__aligned_s64
 #define aligned_be64		__aligned_be64
 #define aligned_le64		__aligned_le64
 
diff --git a/include/uapi/linux/types.h b/include/uapi/linux/types.h
index 6375a0684052..48b933938877 100644
--- a/include/uapi/linux/types.h
+++ b/include/uapi/linux/types.h
@@ -53,6 +53,7 @@ typedef __u32 __bitwise __wsum;
  * No conversions are necessary between 32-bit user-space and a 64-bit kernel.
  */
 #define __aligned_u64 __u64 __attribute__((aligned(8)))
+#define __aligned_s64 __s64 __attribute__((aligned(8)))
 #define __aligned_be64 __be64 __attribute__((aligned(8)))
 #define __aligned_le64 __le64 __attribute__((aligned(8)))
 
-- 
2.43.0.rc1.1336.g36b5255a03ac


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 2/3] iio: imu: st_lsm6dsx: Use aligned data type for timestamp
  2024-09-03 17:59 [PATCH v2 0/3] iio: Introduce and use aligned_s64 type Andy Shevchenko
  2024-09-03 17:59 ` [PATCH v2 1/3] types: Complement the aligned types with signed 64-bit one Andy Shevchenko
@ 2024-09-03 17:59 ` Andy Shevchenko
  2024-09-03 18:09   ` Andy Shevchenko
  2024-09-03 17:59 ` [PATCH v2 3/3] iio: hid-sensor: " Andy Shevchenko
  2024-09-07 15:37 ` [PATCH v2 0/3] iio: Introduce and use aligned_s64 type Jonathan Cameron
  3 siblings, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2024-09-03 17:59 UTC (permalink / raw)
  To: Uwe Kleine-König, Andy Shevchenko, Jonathan Cameron,
	Srinivas Pandruvada, Basavaraj Natikar, linux-input, linux-iio,
	linux-kernel
  Cc: Jiri Kosina, Jonathan Cameron, Lars-Peter Clausen,
	Lorenzo Bianconi

Use __aligned_s64 for the timestamp field.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
index a3b93566533b..d5e2771042bd 100644
--- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
+++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h
@@ -444,10 +444,9 @@ struct st_lsm6dsx_hw {
 	const struct st_lsm6dsx_settings *settings;
 
 	struct iio_mount_matrix orientation;
-	/* Ensure natural alignment of buffer elements */
 	struct {
 		__le16 channels[3];
-		s64 ts __aligned(8);
+		aligned_s64 ts;
 	} scan[ST_LSM6DSX_ID_MAX];
 };
 
-- 
2.43.0.rc1.1336.g36b5255a03ac


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 3/3] iio: hid-sensor: Use aligned data type for timestamp
  2024-09-03 17:59 [PATCH v2 0/3] iio: Introduce and use aligned_s64 type Andy Shevchenko
  2024-09-03 17:59 ` [PATCH v2 1/3] types: Complement the aligned types with signed 64-bit one Andy Shevchenko
  2024-09-03 17:59 ` [PATCH v2 2/3] iio: imu: st_lsm6dsx: Use aligned data type for timestamp Andy Shevchenko
@ 2024-09-03 17:59 ` Andy Shevchenko
  2024-09-07 15:37 ` [PATCH v2 0/3] iio: Introduce and use aligned_s64 type Jonathan Cameron
  3 siblings, 0 replies; 8+ messages in thread
From: Andy Shevchenko @ 2024-09-03 17:59 UTC (permalink / raw)
  To: Uwe Kleine-König, Andy Shevchenko, Jonathan Cameron,
	Srinivas Pandruvada, Basavaraj Natikar, linux-input, linux-iio,
	linux-kernel
  Cc: Jiri Kosina, Jonathan Cameron, Lars-Peter Clausen,
	Lorenzo Bianconi

Use aligned_s64 for the timestamp field.

Note, the actual data is signed, hence with this we also amend that.
While at it, drop redundant __alignment directive.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/iio/accel/hid-sensor-accel-3d.c              | 2 +-
 drivers/iio/gyro/hid-sensor-gyro-3d.c                | 2 +-
 drivers/iio/humidity/hid-sensor-humidity.c           | 2 +-
 drivers/iio/light/hid-sensor-als.c                   | 2 +-
 drivers/iio/orientation/hid-sensor-incl-3d.c         | 2 +-
 drivers/iio/orientation/hid-sensor-rotation.c        | 2 +-
 drivers/iio/position/hid-sensor-custom-intel-hinge.c | 2 +-
 drivers/iio/pressure/hid-sensor-press.c              | 2 +-
 drivers/iio/temperature/hid-sensor-temperature.c     | 2 +-
 9 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/iio/accel/hid-sensor-accel-3d.c b/drivers/iio/accel/hid-sensor-accel-3d.c
index 9b7a73a4c48a..431a12171504 100644
--- a/drivers/iio/accel/hid-sensor-accel-3d.c
+++ b/drivers/iio/accel/hid-sensor-accel-3d.c
@@ -28,7 +28,7 @@ struct accel_3d_state {
 	/* Ensure timestamp is naturally aligned */
 	struct {
 		u32 accel_val[3];
-		s64 timestamp __aligned(8);
+		aligned_s64 timestamp;
 	} scan;
 	int scale_pre_decml;
 	int scale_post_decml;
diff --git a/drivers/iio/gyro/hid-sensor-gyro-3d.c b/drivers/iio/gyro/hid-sensor-gyro-3d.c
index 59a38bf9459b..d6562bd425f2 100644
--- a/drivers/iio/gyro/hid-sensor-gyro-3d.c
+++ b/drivers/iio/gyro/hid-sensor-gyro-3d.c
@@ -27,7 +27,7 @@ struct gyro_3d_state {
 	struct hid_sensor_hub_attribute_info gyro[GYRO_3D_CHANNEL_MAX];
 	struct {
 		u32 gyro_val[GYRO_3D_CHANNEL_MAX];
-		u64 timestamp __aligned(8);
+		aligned_s64 timestamp;
 	} scan;
 	int scale_pre_decml;
 	int scale_post_decml;
diff --git a/drivers/iio/humidity/hid-sensor-humidity.c b/drivers/iio/humidity/hid-sensor-humidity.c
index bf6d2636a85e..eb1c022f73c8 100644
--- a/drivers/iio/humidity/hid-sensor-humidity.c
+++ b/drivers/iio/humidity/hid-sensor-humidity.c
@@ -18,7 +18,7 @@ struct hid_humidity_state {
 	struct hid_sensor_hub_attribute_info humidity_attr;
 	struct {
 		s32 humidity_data;
-		u64 timestamp __aligned(8);
+		aligned_s64 timestamp;
 	} scan;
 	int scale_pre_decml;
 	int scale_post_decml;
diff --git a/drivers/iio/light/hid-sensor-als.c b/drivers/iio/light/hid-sensor-als.c
index 260281194f61..0c1d97aecd71 100644
--- a/drivers/iio/light/hid-sensor-als.c
+++ b/drivers/iio/light/hid-sensor-als.c
@@ -31,7 +31,7 @@ struct als_state {
 	struct iio_chan_spec channels[CHANNEL_SCAN_INDEX_MAX + 1];
 	struct {
 		u32 illum[CHANNEL_SCAN_INDEX_MAX];
-		u64 timestamp __aligned(8);
+		aligned_s64 timestamp;
 	} scan;
 	int scale_pre_decml;
 	int scale_post_decml;
diff --git a/drivers/iio/orientation/hid-sensor-incl-3d.c b/drivers/iio/orientation/hid-sensor-incl-3d.c
index 8943d5c78bc0..f5e5fb68caf8 100644
--- a/drivers/iio/orientation/hid-sensor-incl-3d.c
+++ b/drivers/iio/orientation/hid-sensor-incl-3d.c
@@ -29,7 +29,7 @@ struct incl_3d_state {
 	struct hid_sensor_hub_attribute_info incl[INCLI_3D_CHANNEL_MAX];
 	struct {
 		u32 incl_val[INCLI_3D_CHANNEL_MAX];
-		u64 timestamp __aligned(8);
+		aligned_s64 timestamp;
 	} scan;
 	int scale_pre_decml;
 	int scale_post_decml;
diff --git a/drivers/iio/orientation/hid-sensor-rotation.c b/drivers/iio/orientation/hid-sensor-rotation.c
index 5e8cadd5177a..501c312ce752 100644
--- a/drivers/iio/orientation/hid-sensor-rotation.c
+++ b/drivers/iio/orientation/hid-sensor-rotation.c
@@ -20,7 +20,7 @@ struct dev_rot_state {
 	struct hid_sensor_hub_attribute_info quaternion;
 	struct {
 		s32 sampled_vals[4] __aligned(16);
-		u64 timestamp __aligned(8);
+		aligned_s64 timestamp;
 	} scan;
 	int scale_pre_decml;
 	int scale_post_decml;
diff --git a/drivers/iio/position/hid-sensor-custom-intel-hinge.c b/drivers/iio/position/hid-sensor-custom-intel-hinge.c
index 76e173850a35..6239e2f72a05 100644
--- a/drivers/iio/position/hid-sensor-custom-intel-hinge.c
+++ b/drivers/iio/position/hid-sensor-custom-intel-hinge.c
@@ -39,7 +39,7 @@ struct hinge_state {
 	const char *labels[CHANNEL_SCAN_INDEX_MAX];
 	struct {
 		u32 hinge_val[3];
-		u64 timestamp __aligned(8);
+		aligned_s64 timestamp;
 	} scan;
 
 	int scale_pre_decml;
diff --git a/drivers/iio/pressure/hid-sensor-press.c b/drivers/iio/pressure/hid-sensor-press.c
index 956045e2db29..0419bb3c3494 100644
--- a/drivers/iio/pressure/hid-sensor-press.c
+++ b/drivers/iio/pressure/hid-sensor-press.c
@@ -24,7 +24,7 @@ struct press_state {
 	struct hid_sensor_hub_attribute_info press_attr;
 	struct {
 		u32 press_data;
-		u64 timestamp __aligned(8);
+		aligned_s64 timestamp;
 	} scan;
 	int scale_pre_decml;
 	int scale_post_decml;
diff --git a/drivers/iio/temperature/hid-sensor-temperature.c b/drivers/iio/temperature/hid-sensor-temperature.c
index 0143fd478933..d2209cd5b98c 100644
--- a/drivers/iio/temperature/hid-sensor-temperature.c
+++ b/drivers/iio/temperature/hid-sensor-temperature.c
@@ -18,7 +18,7 @@ struct temperature_state {
 	struct hid_sensor_hub_attribute_info temperature_attr;
 	struct {
 		s32 temperature_data;
-		u64 timestamp __aligned(8);
+		aligned_s64 timestamp;
 	} scan;
 	int scale_pre_decml;
 	int scale_post_decml;
-- 
2.43.0.rc1.1336.g36b5255a03ac


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 2/3] iio: imu: st_lsm6dsx: Use aligned data type for timestamp
  2024-09-03 17:59 ` [PATCH v2 2/3] iio: imu: st_lsm6dsx: Use aligned data type for timestamp Andy Shevchenko
@ 2024-09-03 18:09   ` Andy Shevchenko
  0 siblings, 0 replies; 8+ messages in thread
From: Andy Shevchenko @ 2024-09-03 18:09 UTC (permalink / raw)
  To: Uwe Kleine-König, Jonathan Cameron, Srinivas Pandruvada,
	Basavaraj Natikar, linux-input, linux-iio, linux-kernel
  Cc: Jiri Kosina, Jonathan Cameron, Lars-Peter Clausen,
	Lorenzo Bianconi

On Tue, Sep 03, 2024 at 08:59:05PM +0300, Andy Shevchenko wrote:
> Use __aligned_s64 for the timestamp field.

Oh, heck. I forgot to change the commit message...

...

> -	/* Ensure natural alignment of buffer elements */

...and for some reason this haven't been updated to be not removed.

I have updated locally, but will wait for other comments, maybe it's the only
problem and Jonathan can fix whilst applying.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/3] iio: Introduce and use aligned_s64 type
  2024-09-03 17:59 [PATCH v2 0/3] iio: Introduce and use aligned_s64 type Andy Shevchenko
                   ` (2 preceding siblings ...)
  2024-09-03 17:59 ` [PATCH v2 3/3] iio: hid-sensor: " Andy Shevchenko
@ 2024-09-07 15:37 ` Jonathan Cameron
  2024-09-09  9:20   ` Andy Shevchenko
  3 siblings, 1 reply; 8+ messages in thread
From: Jonathan Cameron @ 2024-09-07 15:37 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Uwe Kleine-König, Jonathan Cameron, Srinivas Pandruvada,
	Basavaraj Natikar, linux-input, linux-iio, linux-kernel,
	Jiri Kosina, Lars-Peter Clausen, Lorenzo Bianconi

On Tue,  3 Sep 2024 20:59:03 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> Instead of having open coded idea of aligned member, use
> a newly defined type like it's done in, e.g., u64 case.
> Update a few IIO drivers to show how to use it.
> 
> v2 (took only one year from v1, not bad!):
:)

Applied with that tweak for patch 2 that you called out.

Will probably be next cycle though before these go upstream
(so think of this as queuing them up very early for 6.13 :)

> - avoided touching unrelated comments, code lines, etc. (Jonathan)
> - used kernel internal type for the in-kernel code (Jonathan)
> 
> Andy Shevchenko (3):
>   types: Complement the aligned types with signed 64-bit one
>   iio: imu: st_lsm6dsx: Use aligned data type for timestamp
>   iio: hid-sensor: Use aligned data type for timestamp
> 
>  drivers/iio/accel/hid-sensor-accel-3d.c              | 2 +-
>  drivers/iio/gyro/hid-sensor-gyro-3d.c                | 2 +-
>  drivers/iio/humidity/hid-sensor-humidity.c           | 2 +-
>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h              | 3 +--
>  drivers/iio/light/hid-sensor-als.c                   | 2 +-
>  drivers/iio/orientation/hid-sensor-incl-3d.c         | 2 +-
>  drivers/iio/orientation/hid-sensor-rotation.c        | 2 +-
>  drivers/iio/position/hid-sensor-custom-intel-hinge.c | 2 +-
>  drivers/iio/pressure/hid-sensor-press.c              | 2 +-
>  drivers/iio/temperature/hid-sensor-temperature.c     | 2 +-
>  include/linux/types.h                                | 3 ++-
>  include/uapi/linux/types.h                           | 1 +
>  12 files changed, 13 insertions(+), 12 deletions(-)
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/3] iio: Introduce and use aligned_s64 type
  2024-09-07 15:37 ` [PATCH v2 0/3] iio: Introduce and use aligned_s64 type Jonathan Cameron
@ 2024-09-09  9:20   ` Andy Shevchenko
  2024-09-09 19:01     ` Jonathan Cameron
  0 siblings, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2024-09-09  9:20 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Uwe Kleine-König, Jonathan Cameron, Srinivas Pandruvada,
	Basavaraj Natikar, linux-input, linux-iio, linux-kernel,
	Jiri Kosina, Lars-Peter Clausen, Lorenzo Bianconi

On Sat, Sep 07, 2024 at 04:37:52PM +0100, Jonathan Cameron wrote:
> On Tue,  3 Sep 2024 20:59:03 +0300
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> 
> > Instead of having open coded idea of aligned member, use
> > a newly defined type like it's done in, e.g., u64 case.
> > Update a few IIO drivers to show how to use it.
> > 
> > v2 (took only one year from v1, not bad!):
> :)
> 
> Applied with that tweak for patch 2 that you called out.

Please, also do
s/__aligned_s64/aligned_s64/
in the commit message there.

> Will probably be next cycle though before these go upstream
> (so think of this as queuing them up very early for 6.13 :)

Sure, thanks!

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/3] iio: Introduce and use aligned_s64 type
  2024-09-09  9:20   ` Andy Shevchenko
@ 2024-09-09 19:01     ` Jonathan Cameron
  0 siblings, 0 replies; 8+ messages in thread
From: Jonathan Cameron @ 2024-09-09 19:01 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Uwe Kleine-König, Jonathan Cameron, Srinivas Pandruvada,
	Basavaraj Natikar, linux-input, linux-iio, linux-kernel,
	Jiri Kosina, Lars-Peter Clausen, Lorenzo Bianconi

On Mon, 9 Sep 2024 12:20:38 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> On Sat, Sep 07, 2024 at 04:37:52PM +0100, Jonathan Cameron wrote:
> > On Tue,  3 Sep 2024 20:59:03 +0300
> > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> >   
> > > Instead of having open coded idea of aligned member, use
> > > a newly defined type like it's done in, e.g., u64 case.
> > > Update a few IIO drivers to show how to use it.
> > > 
> > > v2 (took only one year from v1, not bad!):  
> > :)
> > 
> > Applied with that tweak for patch 2 that you called out.  
> 
> Please, also do
> s/__aligned_s64/aligned_s64/
> in the commit message there.
done I think

> 
> > Will probably be next cycle though before these go upstream
> > (so think of this as queuing them up very early for 6.13 :)  
> 
> Sure, thanks!
> 


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-09-09 19:01 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-03 17:59 [PATCH v2 0/3] iio: Introduce and use aligned_s64 type Andy Shevchenko
2024-09-03 17:59 ` [PATCH v2 1/3] types: Complement the aligned types with signed 64-bit one Andy Shevchenko
2024-09-03 17:59 ` [PATCH v2 2/3] iio: imu: st_lsm6dsx: Use aligned data type for timestamp Andy Shevchenko
2024-09-03 18:09   ` Andy Shevchenko
2024-09-03 17:59 ` [PATCH v2 3/3] iio: hid-sensor: " Andy Shevchenko
2024-09-07 15:37 ` [PATCH v2 0/3] iio: Introduce and use aligned_s64 type Jonathan Cameron
2024-09-09  9:20   ` Andy Shevchenko
2024-09-09 19:01     ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).