linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7] IIO: More application of IWYU principles to includes.
@ 2025-07-10 17:11 Jonathan Cameron
  2025-07-10 17:11 ` [PATCH 1/7] iio: pressure: bmp280: Apply iwyu " Jonathan Cameron
                   ` (7 more replies)
  0 siblings, 8 replies; 11+ messages in thread
From: Jonathan Cameron @ 2025-07-10 17:11 UTC (permalink / raw)
  To: linux-iio, Nuno Sá, Andy Shevchenko, David Lechner
  Cc: Denis Ciocca, Vasileios Amoiridis, Jonathan Cameron

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

I decided to look at a slightly larger set to continue trying to come
up with consistent rules (for IIO anyway) on what we want to include
direclty and what assumptions we can make about a header always including
another.

As the series goes on reduce the amount of info on particular choices made
just because the commit descriptions were getting very long.

A few open questions.
- linux/stddef.h - do we want to included this directly?
- linux/types.h - do we want to include this directly?
- linux/dev_printk.h - include even if device.h is needed for other reasons
  or rely on that as a grouping header if present and only use dev_printk
  where we don't need device.h.

I'll share a refreshed IWYU config once we come to firmer conclusions
on the various choices.  I haven't yet figured out now to not include
anything at all for things like CONFIG*

Jonathan Cameron (7):
  iio: pressure: bmp280: Apply iwyu principles to includes.
  iio: pressure: zpa2326: Apply iwyu principles to includes
  iio: pressure: mpl115: Apply iwyu principles to includes
  iio: pressure: ms5611: Apply iwyu principles to includes
  iio: pressure: hsc030pa: Apply IWYU principles to includes.
  iio: pressure: mprls0025pa: Apply IWYU principles to includes.
  iio: st_sensors: Apply IWYU principles to includes

 drivers/iio/accel/st_accel_buffer.c           |  6 ++++--
 drivers/iio/accel/st_accel_core.c             | 12 ++++++++---
 drivers/iio/accel/st_accel_i2c.c              |  5 ++++-
 drivers/iio/accel/st_accel_spi.c              |  3 ++-
 .../iio/common/st_sensors/st_sensors_buffer.c | 15 +++++++++-----
 .../iio/common/st_sensors/st_sensors_core.c   | 19 ++++++++++++++----
 .../iio/common/st_sensors/st_sensors_core.h   |  2 ++
 .../iio/common/st_sensors/st_sensors_i2c.c    |  8 ++++++--
 .../iio/common/st_sensors/st_sensors_spi.c    | 11 ++++++++--
 .../common/st_sensors/st_sensors_trigger.c    | 13 +++++++++---
 drivers/iio/gyro/st_gyro_buffer.c             |  6 ++++--
 drivers/iio/gyro/st_gyro_core.c               | 11 +++++++---
 drivers/iio/gyro/st_gyro_i2c.c                |  3 ++-
 drivers/iio/gyro/st_gyro_spi.c                |  3 ++-
 drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_core.c  |  5 ++++-
 drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_i2c.c   |  5 ++---
 drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_spi.c   |  5 ++---
 drivers/iio/magnetometer/st_magn_buffer.c     |  5 +++--
 drivers/iio/magnetometer/st_magn_core.c       | 11 +++++++---
 drivers/iio/magnetometer/st_magn_i2c.c        |  3 ++-
 drivers/iio/magnetometer/st_magn_spi.c        |  3 ++-
 drivers/iio/pressure/bmp280-core.c            | 17 ++++++++++++++--
 drivers/iio/pressure/bmp280-i2c.c             |  4 ++++
 drivers/iio/pressure/bmp280-regmap.c          |  6 ++++--
 drivers/iio/pressure/bmp280-spi.c             |  6 ++++++
 drivers/iio/pressure/hsc030pa.c               | 12 +++++------
 drivers/iio/pressure/hsc030pa.h               |  5 ++---
 drivers/iio/pressure/hsc030pa_i2c.c           |  4 ----
 drivers/iio/pressure/hsc030pa_spi.c           |  5 -----
 drivers/iio/pressure/mpl115.c                 | 13 +++++++++---
 drivers/iio/pressure/mpl115.h                 |  1 +
 drivers/iio/pressure/mpl115_i2c.c             |  8 +++++++-
 drivers/iio/pressure/mpl115_spi.c             |  5 +++++
 drivers/iio/pressure/mprls0025pa.c            |  9 +++++++--
 drivers/iio/pressure/mprls0025pa.h            |  9 ++-------
 drivers/iio/pressure/mprls0025pa_i2c.c        |  1 -
 drivers/iio/pressure/ms5611_core.c            | 15 +++++++++++---
 drivers/iio/pressure/ms5611_i2c.c             |  5 ++++-
 drivers/iio/pressure/ms5611_spi.c             |  9 +++++++--
 drivers/iio/pressure/st_pressure_buffer.c     |  6 ++++--
 drivers/iio/pressure/st_pressure_core.c       |  9 ++++++---
 drivers/iio/pressure/st_pressure_i2c.c        |  3 ++-
 drivers/iio/pressure/st_pressure_spi.c        |  3 ++-
 drivers/iio/pressure/zpa2326.c                | 20 +++++++++++++++----
 drivers/iio/pressure/zpa2326.h                |  3 +++
 drivers/iio/pressure/zpa2326_i2c.c            |  7 +++++--
 drivers/iio/pressure/zpa2326_spi.c            |  6 +++++-
 include/linux/iio/common/st_sensors_i2c.h     |  5 ++---
 include/linux/iio/common/st_sensors_spi.h     |  5 ++---
 49 files changed, 249 insertions(+), 106 deletions(-)

-- 
2.50.0


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

* [PATCH 1/7] iio: pressure: bmp280: Apply iwyu principles to includes.
  2025-07-10 17:11 [PATCH 0/7] IIO: More application of IWYU principles to includes Jonathan Cameron
@ 2025-07-10 17:11 ` Jonathan Cameron
  2025-07-10 19:09   ` Andy Shevchenko
  2025-07-10 17:11 ` [PATCH 2/7] iio: pressure: zpa2326: " Jonathan Cameron
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 11+ messages in thread
From: Jonathan Cameron @ 2025-07-10 17:11 UTC (permalink / raw)
  To: linux-iio, Nuno Sá, Andy Shevchenko, David Lechner
  Cc: Denis Ciocca, Vasileios Amoiridis, Jonathan Cameron

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

The recent introduction of a warning on missing include of
linux/export.h when W=1 motivated revisiting the includes in affected
drivers.  In general IWYU principles avoid complex include paths that
make it hard to refactor headers.

- Move linux/unaligned.h entry to appropriate place.
- Drop comment on linux/irq.h as we don't generally keep a record
  in code of why includes are there.

Remove
- linux/device.h from bmp280-regmap.c as struct device forwards definition
  is enough.
- linux/module.h from bmp280-regmap.c as the module stuff is all in the
  other files.
Add all of:
- linux/array_size.h for ARRAY_SIZE()
- linux/device.h in the i2c and spi drivers
- linux/err.h for PTR_ERR() etc and also assume includes errno.h
- linux/export.h for EXPORT_SYMBOL*()
- linux/jiffies.h for msecs_to_jiffies
- linux/log2.h for ilog2()
- linux/math64.h for div64_s64
- linux/minmax.h for clamp_val()
- linux/mod_devicetable.h for spi_device_id etc
- linux/mutex.h for various mutex calls
- linux/pm.h for pm_ptr()
- linux/stddef.h for false / true
- linux/string.h for memcpy
- linux/string_choices.h for str_enable_disable
- linux/time.h for USEC_PER_MSEC
- linux/types.h for local bool definition.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
I'm not sure on whether we should bother with stddef.h or types.h
Looking for feedback on any others.
---
 drivers/iio/pressure/bmp280-core.c   | 17 +++++++++++++++--
 drivers/iio/pressure/bmp280-i2c.c    |  4 ++++
 drivers/iio/pressure/bmp280-regmap.c |  6 ++++--
 drivers/iio/pressure/bmp280-spi.c    |  6 ++++++
 4 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/drivers/iio/pressure/bmp280-core.c b/drivers/iio/pressure/bmp280-core.c
index 74505c9ec1a0..e5d2de8cd5ef 100644
--- a/drivers/iio/pressure/bmp280-core.c
+++ b/drivers/iio/pressure/bmp280-core.c
@@ -30,23 +30,36 @@
 
 #define pr_fmt(fmt) "bmp280: " fmt
 
+#include <linux/array_size.h>
 #include <linux/bitops.h>
 #include <linux/bitfield.h>
 #include <linux/cleanup.h>
 #include <linux/completion.h>
 #include <linux/delay.h>
 #include <linux/device.h>
+#include <linux/err.h>
+#include <linux/export.h>
 #include <linux/gpio/consumer.h>
 #include <linux/interrupt.h>
-#include <linux/irq.h> /* For irq_get_irq_data() */
+#include <linux/irq.h>
+#include <linux/jiffies.h>
+#include <linux/log2.h>
+#include <linux/math64.h>
+#include <linux/minmax.h>
 #include <linux/module.h>
+#include <linux/mutex.h>
 #include <linux/nvmem-provider.h>
 #include <linux/pm_runtime.h>
 #include <linux/property.h>
+#include <linux/string.h>
+#include <linux/string_choices.h>
 #include <linux/random.h>
 #include <linux/regmap.h>
 #include <linux/regulator/consumer.h>
+#include <linux/stddef.h>
+#include <linux/time64.h>
 #include <linux/types.h>
+#include <linux/unaligned.h>
 
 #include <linux/iio/buffer.h>
 #include <linux/iio/iio.h>
@@ -54,7 +67,7 @@
 #include <linux/iio/trigger_consumer.h>
 #include <linux/iio/triggered_buffer.h>
 
-#include <linux/unaligned.h>
+#include <asm/byteorder.h>
 
 #include "bmp280.h"
 
diff --git a/drivers/iio/pressure/bmp280-i2c.c b/drivers/iio/pressure/bmp280-i2c.c
index 8e459b6c97ff..6484341af710 100644
--- a/drivers/iio/pressure/bmp280-i2c.c
+++ b/drivers/iio/pressure/bmp280-i2c.c
@@ -1,6 +1,10 @@
 // SPDX-License-Identifier: GPL-2.0-only
+#include <linux/device.h>
+#include <linux/err.h>
 #include <linux/i2c.h>
 #include <linux/module.h>
+#include <linux/mod_devicetable.h>
+#include <linux/pm.h>
 #include <linux/regmap.h>
 
 #include "bmp280.h"
diff --git a/drivers/iio/pressure/bmp280-regmap.c b/drivers/iio/pressure/bmp280-regmap.c
index b6a7b417c8cf..d34bf89afdda 100644
--- a/drivers/iio/pressure/bmp280-regmap.c
+++ b/drivers/iio/pressure/bmp280-regmap.c
@@ -1,9 +1,11 @@
 // SPDX-License-Identifier: GPL-2.0
-#include <linux/device.h>
-#include <linux/module.h>
+#include <linux/export.h>
 #include <linux/regmap.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
 
 #include "bmp280.h"
+struct device;
 
 static bool bmp180_is_writeable_reg(struct device *dev, unsigned int reg)
 {
diff --git a/drivers/iio/pressure/bmp280-spi.c b/drivers/iio/pressure/bmp280-spi.c
index 3b90384f17d7..8ac68bfb8110 100644
--- a/drivers/iio/pressure/bmp280-spi.c
+++ b/drivers/iio/pressure/bmp280-spi.c
@@ -5,10 +5,16 @@
  * Inspired by the older BMP085 driver drivers/misc/bmp085-spi.c
  */
 #include <linux/bits.h>
+#include <linux/device.h>
 #include <linux/err.h>
 #include <linux/module.h>
+#include <linux/mod_devicetable.h>
+#include <linux/pm.h>
 #include <linux/regmap.h>
 #include <linux/spi/spi.h>
+#include <linux/stddef.h>
+#include <linux/string.h>
+#include <linux/types.h>
 
 #include "bmp280.h"
 
-- 
2.50.0


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

* [PATCH 2/7] iio: pressure: zpa2326: Apply iwyu principles to includes
  2025-07-10 17:11 [PATCH 0/7] IIO: More application of IWYU principles to includes Jonathan Cameron
  2025-07-10 17:11 ` [PATCH 1/7] iio: pressure: bmp280: Apply iwyu " Jonathan Cameron
@ 2025-07-10 17:11 ` Jonathan Cameron
  2025-07-10 17:11 ` [PATCH 3/7] iio: pressure: mpl115: " Jonathan Cameron
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Jonathan Cameron @ 2025-07-10 17:11 UTC (permalink / raw)
  To: linux-iio, Nuno Sá, Andy Shevchenko, David Lechner
  Cc: Denis Ciocca, Vasileios Amoiridis, Jonathan Cameron

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Motivated by the new warning when W=1 if linux/exports.h is not included
but the macros within it are used.  Given the includes need improving go
the whole way and apply include what you use principles to this driver.

Reasoning:
- First sort includes into alphabetical order, keeping the separate iio
  specific block and asm blocks as appropriate.
Drop:
- linux/kernel.h
Add:
- asm/byteorder.h for le16_to_cpup()
- linux/array_size.h for ARRAY_SIZE()
- linux/bitops.h for test_bit() (also BIT() etc in c files0
- linux/bits.h for BIT() in the header.
- linux/completion.h cof complete()
- linux/device.h for struct device
- linux/err.h for IS_ERR() and error codes.
- linux/export.h for EXPORT_SYMBOL*
- linux/jiffies.h for jiffies and HZ (in param.h)
- linux/pm.h for SET_RUNTIME_PM_OPS etc
  Note that the way this driver handles CONFIG_PM is messy but not topic
  for this series.
- linux/stddef.h for true / false etc
- linux/sysfs.h for struct attribute_group

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
 drivers/iio/pressure/zpa2326.c     | 20 ++++++++++++++++----
 drivers/iio/pressure/zpa2326.h     |  3 +++
 drivers/iio/pressure/zpa2326_i2c.c |  7 +++++--
 drivers/iio/pressure/zpa2326_spi.c |  6 +++++-
 4 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/drivers/iio/pressure/zpa2326.c b/drivers/iio/pressure/zpa2326.c
index 6eef37c0952d..34743ee0be07 100644
--- a/drivers/iio/pressure/zpa2326.c
+++ b/drivers/iio/pressure/zpa2326.c
@@ -51,20 +51,32 @@
  *   hardware samples averaging.
  */
 
-#include <linux/module.h>
-#include <linux/kernel.h>
+#include <linux/array_size.h>
+#include <linux/bitops.h>
+#include <linux/completion.h>
 #include <linux/delay.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/export.h>
 #include <linux/interrupt.h>
-#include <linux/regulator/consumer.h>
+#include <linux/module.h>
+#include <linux/jiffies.h>
+#include <linux/pm.h>
 #include <linux/pm_runtime.h>
 #include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
+#include <linux/stddef.h>
+#include <linux/sysfs.h>
+#include <linux/unaligned.h>
+
 #include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
 #include <linux/iio/buffer.h>
 #include <linux/iio/trigger.h>
 #include <linux/iio/trigger_consumer.h>
 #include <linux/iio/triggered_buffer.h>
-#include <linux/unaligned.h>
+
+#include <asm/byteorder.h>
 #include "zpa2326.h"
 
 /* 200 ms should be enough for the longest conversion time in one-shot mode. */
diff --git a/drivers/iio/pressure/zpa2326.h b/drivers/iio/pressure/zpa2326.h
index 45bd7900975b..a1ab574241eb 100644
--- a/drivers/iio/pressure/zpa2326.h
+++ b/drivers/iio/pressure/zpa2326.h
@@ -10,6 +10,9 @@
 #ifndef _ZPA2326_H
 #define _ZPA2326_H
 
+#include <linux/bits.h>
+#include <linux/types.h>
+
 /* Register map. */
 #define ZPA2326_REF_P_XL_REG              (0x8)
 #define ZPA2326_REF_P_L_REG               (0x9)
diff --git a/drivers/iio/pressure/zpa2326_i2c.c b/drivers/iio/pressure/zpa2326_i2c.c
index a6034bf05d97..ca05b84f420a 100644
--- a/drivers/iio/pressure/zpa2326_i2c.c
+++ b/drivers/iio/pressure/zpa2326_i2c.c
@@ -7,10 +7,13 @@
  * Author: Gregor Boirie <gregor.boirie@parrot.com>
  */
 
-#include <linux/module.h>
-#include <linux/regmap.h>
+#include <linux/bits.h>
+#include <linux/device.h>
+#include <linux/err.h>
 #include <linux/i2c.h>
+#include <linux/module.h>
 #include <linux/mod_devicetable.h>
+#include <linux/regmap.h>
 #include "zpa2326.h"
 
 /*
diff --git a/drivers/iio/pressure/zpa2326_spi.c b/drivers/iio/pressure/zpa2326_spi.c
index af756e2b0f31..14f8b2b809a0 100644
--- a/drivers/iio/pressure/zpa2326_spi.c
+++ b/drivers/iio/pressure/zpa2326_spi.c
@@ -7,10 +7,14 @@
  * Author: Gregor Boirie <gregor.boirie@parrot.com>
  */
 
+#include <linux/bits.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/minmax.h>
 #include <linux/module.h>
+#include <linux/mod_devicetable.h>
 #include <linux/regmap.h>
 #include <linux/spi/spi.h>
-#include <linux/mod_devicetable.h>
 #include "zpa2326.h"
 
 /*
-- 
2.50.0


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

* [PATCH 3/7] iio: pressure: mpl115: Apply iwyu principles to includes
  2025-07-10 17:11 [PATCH 0/7] IIO: More application of IWYU principles to includes Jonathan Cameron
  2025-07-10 17:11 ` [PATCH 1/7] iio: pressure: bmp280: Apply iwyu " Jonathan Cameron
  2025-07-10 17:11 ` [PATCH 2/7] iio: pressure: zpa2326: " Jonathan Cameron
@ 2025-07-10 17:11 ` Jonathan Cameron
  2025-07-10 17:11 ` [PATCH 4/7] iio: pressure: ms5611: " Jonathan Cameron
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Jonathan Cameron @ 2025-07-10 17:11 UTC (permalink / raw)
  To: linux-iio, Nuno Sá, Andy Shevchenko, David Lechner
  Cc: Denis Ciocca, Vasileios Amoiridis, Jonathan Cameron

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Motivated by fixing the new W=1 warning for lack of include of
linux/export.h this reworks all the includes for this driver
along the lines of approximate include what you use principles.

One question here is what to do about gfp_types.h.
For now I've added a rule to allow GFP_KERNEL to come from linux/slab.h
or linux/device.h (for devm_ calls).  In this driver slab.h is
never used directly so linux/device.h provides the symbol.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
 drivers/iio/pressure/mpl115.c     | 13 ++++++++++---
 drivers/iio/pressure/mpl115.h     |  1 +
 drivers/iio/pressure/mpl115_i2c.c |  8 +++++++-
 drivers/iio/pressure/mpl115_spi.c |  5 +++++
 4 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/drivers/iio/pressure/mpl115.c b/drivers/iio/pressure/mpl115.c
index 71beb28b7f2c..448d030d5621 100644
--- a/drivers/iio/pressure/mpl115.c
+++ b/drivers/iio/pressure/mpl115.c
@@ -6,11 +6,18 @@
  *
  * TODO: synchronization with system suspend
  */
-
-#include <linux/module.h>
-#include <linux/iio/iio.h>
+#include <linux/array_size.h>
+#include <linux/bits.h>
 #include <linux/delay.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/export.h>
 #include <linux/gpio/consumer.h>
+#include <linux/module.h>
+#include <linux/mutex.h>
+#include <linux/pm_runtime.h>
+#include <linux/stddef.h>
+#include <linux/iio/iio.h>
 
 #include "mpl115.h"
 
diff --git a/drivers/iio/pressure/mpl115.h b/drivers/iio/pressure/mpl115.h
index 78a0068a17bb..480ee112f134 100644
--- a/drivers/iio/pressure/mpl115.h
+++ b/drivers/iio/pressure/mpl115.h
@@ -7,6 +7,7 @@
  */
 
 #include <linux/pm_runtime.h>
+#include <linux/types.h>
 
 #ifndef _MPL115_H_
 #define _MPL115_H_
diff --git a/drivers/iio/pressure/mpl115_i2c.c b/drivers/iio/pressure/mpl115_i2c.c
index 3db9ef4e2770..160cf1e5a317 100644
--- a/drivers/iio/pressure/mpl115_i2c.c
+++ b/drivers/iio/pressure/mpl115_i2c.c
@@ -9,11 +9,17 @@
  * Datasheet: http://www.nxp.com/files/sensors/doc/data_sheet/MPL115A2.pdf
  */
 
-#include <linux/module.h>
+#include <linux/errno.h>
 #include <linux/i2c.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
+#include <linux/pm.h>
+#include <linux/types.h>
 
 #include "mpl115.h"
 
+struct device;
+
 static int mpl115_i2c_init(struct device *dev)
 {
 	return 0;
diff --git a/drivers/iio/pressure/mpl115_spi.c b/drivers/iio/pressure/mpl115_spi.c
index 4e1d24beff94..26df328769a4 100644
--- a/drivers/iio/pressure/mpl115_spi.c
+++ b/drivers/iio/pressure/mpl115_spi.c
@@ -7,8 +7,13 @@
  * Datasheet: http://www.nxp.com/files/sensors/doc/data_sheet/MPL115A1.pdf
  */
 
+#include <linux/device.h>
+#include <linux/errno.h>
+#include <linux/mod_devicetable.h>
 #include <linux/module.h>
+#include <linux/pm.h>
 #include <linux/spi/spi.h>
+#include <linux/types.h>
 
 #include "mpl115.h"
 
-- 
2.50.0


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

* [PATCH 4/7] iio: pressure: ms5611: Apply iwyu principles to includes
  2025-07-10 17:11 [PATCH 0/7] IIO: More application of IWYU principles to includes Jonathan Cameron
                   ` (2 preceding siblings ...)
  2025-07-10 17:11 ` [PATCH 3/7] iio: pressure: mpl115: " Jonathan Cameron
@ 2025-07-10 17:11 ` Jonathan Cameron
  2025-07-10 17:11 ` [PATCH 5/7] iio: pressure: hsc030pa: Apply IWYU " Jonathan Cameron
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Jonathan Cameron @ 2025-07-10 17:11 UTC (permalink / raw)
  To: linux-iio, Nuno Sá, Andy Shevchenko, David Lechner
  Cc: Denis Ciocca, Vasileios Amoiridis, Jonathan Cameron

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Motivated by fixing the new W=1 warning for lack of include of
linux/export.h this reworks all the includes for this driver
along the lines of approximate include what you use principles.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
 drivers/iio/pressure/ms5611_core.c | 15 ++++++++++++---
 drivers/iio/pressure/ms5611_i2c.c  |  5 ++++-
 drivers/iio/pressure/ms5611_spi.c  |  9 +++++++--
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/drivers/iio/pressure/ms5611_core.c b/drivers/iio/pressure/ms5611_core.c
index bdac27bd5a5d..e5e12b500af8 100644
--- a/drivers/iio/pressure/ms5611_core.c
+++ b/drivers/iio/pressure/ms5611_core.c
@@ -9,12 +9,21 @@
  *  http://www.meas-spec.com/downloads/MS5607-02BA03.pdf
  *
  */
-
-#include <linux/module.h>
-#include <linux/iio/iio.h>
+#include <linux/array_size.h>
+#include <linux/bits.h>
 #include <linux/delay.h>
+#include <linux/device.h>
+#include <linux/errno.h>
+#include <linux/export.h>
+#include <linux/interrupt.h>
+#include <linux/module.h>
+#include <linux/mutex.h>
 #include <linux/regulator/consumer.h>
+#include <linux/sysfs.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
 
+#include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
 #include <linux/iio/buffer.h>
 #include <linux/iio/triggered_buffer.h>
diff --git a/drivers/iio/pressure/ms5611_i2c.c b/drivers/iio/pressure/ms5611_i2c.c
index 1c041b9085fb..2dd4ff38f595 100644
--- a/drivers/iio/pressure/ms5611_i2c.c
+++ b/drivers/iio/pressure/ms5611_i2c.c
@@ -12,12 +12,15 @@
  */
 
 #include <linux/delay.h>
+#include <linux/errno.h>
 #include <linux/i2c.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
-
+#include <linux/types.h>
 #include <linux/unaligned.h>
 
+#include <linux/iio/iio.h>
+
 #include "ms5611.h"
 
 static int ms5611_i2c_reset(struct ms5611_state *st)
diff --git a/drivers/iio/pressure/ms5611_spi.c b/drivers/iio/pressure/ms5611_spi.c
index 25c7bd2d8fdf..46e4188cbce2 100644
--- a/drivers/iio/pressure/ms5611_spi.c
+++ b/drivers/iio/pressure/ms5611_spi.c
@@ -7,12 +7,17 @@
  */
 
 #include <linux/delay.h>
+#include <linux/errno.h>
+#include <linux/minmax.h>
 #include <linux/module.h>
-#include <linux/spi/spi.h>
 #include <linux/mod_devicetable.h>
-
+#include <linux/spi/spi.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
 #include <linux/unaligned.h>
 
+#include <linux/iio/iio.h>
+
 #include "ms5611.h"
 
 static int ms5611_spi_reset(struct ms5611_state *st)
-- 
2.50.0


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

* [PATCH 5/7] iio: pressure: hsc030pa: Apply IWYU principles to includes.
  2025-07-10 17:11 [PATCH 0/7] IIO: More application of IWYU principles to includes Jonathan Cameron
                   ` (3 preceding siblings ...)
  2025-07-10 17:11 ` [PATCH 4/7] iio: pressure: ms5611: " Jonathan Cameron
@ 2025-07-10 17:11 ` Jonathan Cameron
  2025-07-10 17:11 ` [PATCH 6/7] iio: pressure: mprls0025pa: " Jonathan Cameron
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Jonathan Cameron @ 2025-07-10 17:11 UTC (permalink / raw)
  To: linux-iio, Nuno Sá, Andy Shevchenko, David Lechner
  Cc: Denis Ciocca, Vasileios Amoiridis, Jonathan Cameron

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Motivated by solving the W=1 warning recently added that notes that
linux/export.h wasn't included here. Do a thorough job by applying
approximate include what you use principles to includes.  In this
particular case there were quite a few unnecessary includes that are
removed.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
 drivers/iio/pressure/hsc030pa.c     | 12 ++++++------
 drivers/iio/pressure/hsc030pa.h     |  5 ++---
 drivers/iio/pressure/hsc030pa_i2c.c |  4 ----
 drivers/iio/pressure/hsc030pa_spi.c |  5 -----
 4 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/drivers/iio/pressure/hsc030pa.c b/drivers/iio/pressure/hsc030pa.c
index 2d00c0656259..44f97ba1629f 100644
--- a/drivers/iio/pressure/hsc030pa.c
+++ b/drivers/iio/pressure/hsc030pa.c
@@ -10,25 +10,25 @@
 #include <linux/array_size.h>
 #include <linux/bitfield.h>
 #include <linux/bits.h>
-#include <linux/cleanup.h>
-#include <linux/init.h>
+#include <linux/device.h>
+#include <linux/errno.h>
+#include <linux/export.h>
+#include <linux/interrupt.h>
 #include <linux/math64.h>
-#include <linux/mod_devicetable.h>
 #include <linux/module.h>
-#include <linux/printk.h>
 #include <linux/property.h>
 #include <linux/regulator/consumer.h>
+#include <linux/stddef.h>
 #include <linux/string.h>
 #include <linux/types.h>
+#include <linux/unaligned.h>
 #include <linux/units.h>
 
 #include <linux/iio/buffer.h>
 #include <linux/iio/iio.h>
-#include <linux/iio/sysfs.h>
 #include <linux/iio/trigger_consumer.h>
 #include <linux/iio/triggered_buffer.h>
 
-#include <linux/unaligned.h>
 
 #include "hsc030pa.h"
 
diff --git a/drivers/iio/pressure/hsc030pa.h b/drivers/iio/pressure/hsc030pa.h
index 5db46784f4c6..01f2b02a84e8 100644
--- a/drivers/iio/pressure/hsc030pa.h
+++ b/drivers/iio/pressure/hsc030pa.h
@@ -8,6 +8,8 @@
 #ifndef _HSC030PA_H
 #define _HSC030PA_H
 
+#include <linux/compiler.h>
+#include <linux/minmax.h>
 #include <linux/types.h>
 
 #include <linux/iio/iio.h>
@@ -17,9 +19,6 @@
 
 struct device;
 
-struct iio_chan_spec;
-struct iio_dev;
-
 struct hsc_data;
 struct hsc_chip_data;
 
diff --git a/drivers/iio/pressure/hsc030pa_i2c.c b/drivers/iio/pressure/hsc030pa_i2c.c
index a34ef4653f34..96aefd9f213a 100644
--- a/drivers/iio/pressure/hsc030pa_i2c.c
+++ b/drivers/iio/pressure/hsc030pa_i2c.c
@@ -9,14 +9,10 @@
  */
 
 #include <linux/delay.h>
-#include <linux/device.h>
 #include <linux/errno.h>
 #include <linux/i2c.h>
 #include <linux/mod_devicetable.h>
 #include <linux/module.h>
-#include <linux/types.h>
-
-#include <linux/iio/iio.h>
 
 #include "hsc030pa.h"
 
diff --git a/drivers/iio/pressure/hsc030pa_spi.c b/drivers/iio/pressure/hsc030pa_spi.c
index 5d331b3b6da8..ae9f4bb51f30 100644
--- a/drivers/iio/pressure/hsc030pa_spi.c
+++ b/drivers/iio/pressure/hsc030pa_spi.c
@@ -9,14 +9,9 @@
  */
 
 #include <linux/delay.h>
-#include <linux/device.h>
 #include <linux/mod_devicetable.h>
 #include <linux/module.h>
 #include <linux/spi/spi.h>
-#include <linux/stddef.h>
-#include <linux/types.h>
-
-#include <linux/iio/iio.h>
 
 #include "hsc030pa.h"
 
-- 
2.50.0


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

* [PATCH 6/7] iio: pressure: mprls0025pa: Apply IWYU principles to includes.
  2025-07-10 17:11 [PATCH 0/7] IIO: More application of IWYU principles to includes Jonathan Cameron
                   ` (4 preceding siblings ...)
  2025-07-10 17:11 ` [PATCH 5/7] iio: pressure: hsc030pa: Apply IWYU " Jonathan Cameron
@ 2025-07-10 17:11 ` Jonathan Cameron
  2025-07-10 17:11 ` [PATCH 7/7] iio: st_sensors: " Jonathan Cameron
  2025-07-10 19:09 ` [PATCH 0/7] IIO: More application of " Andy Shevchenko
  7 siblings, 0 replies; 11+ messages in thread
From: Jonathan Cameron @ 2025-07-10 17:11 UTC (permalink / raw)
  To: linux-iio, Nuno Sá, Andy Shevchenko, David Lechner
  Cc: Denis Ciocca, Vasileios Amoiridis, Jonathan Cameron

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

General rework of this driver's includes triggered by the new W=1
warning on lack of include of export.h.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
 drivers/iio/pressure/mprls0025pa.c     | 9 +++++++--
 drivers/iio/pressure/mprls0025pa.h     | 9 ++-------
 drivers/iio/pressure/mprls0025pa_i2c.c | 1 -
 3 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/drivers/iio/pressure/mprls0025pa.c b/drivers/iio/pressure/mprls0025pa.c
index 2336f2760eae..60f693e8e79b 100644
--- a/drivers/iio/pressure/mprls0025pa.c
+++ b/drivers/iio/pressure/mprls0025pa.c
@@ -10,13 +10,18 @@
  */
 
 #include <linux/array_size.h>
-#include <linux/bitfield.h>
 #include <linux/bits.h>
+#include <linux/delay.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/export.h>
+#include <linux/interrupt.h>
+#include <linux/jiffies.h>
 #include <linux/math64.h>
-#include <linux/mod_devicetable.h>
 #include <linux/module.h>
 #include <linux/property.h>
 #include <linux/units.h>
+#include <linux/stddef.h>
 
 #include <linux/gpio/consumer.h>
 
diff --git a/drivers/iio/pressure/mprls0025pa.h b/drivers/iio/pressure/mprls0025pa.h
index d62a018eaff3..b2608eb69ec4 100644
--- a/drivers/iio/pressure/mprls0025pa.h
+++ b/drivers/iio/pressure/mprls0025pa.h
@@ -11,11 +11,10 @@
 #ifndef _MPRLS0025PA_H
 #define _MPRLS0025PA_H
 
+#include <linux/compiler.h>
 #include <linux/completion.h>
-#include <linux/delay.h>
-#include <linux/device.h>
+#include <linux/minmax.h>
 #include <linux/mutex.h>
-#include <linux/stddef.h>
 #include <linux/types.h>
 
 #include <linux/iio/iio.h>
@@ -28,10 +27,6 @@
 
 struct device;
 
-struct iio_chan_spec;
-struct iio_dev;
-
-struct mpr_data;
 struct mpr_ops;
 
 enum mpr_func_id {
diff --git a/drivers/iio/pressure/mprls0025pa_i2c.c b/drivers/iio/pressure/mprls0025pa_i2c.c
index 79811fd4a02b..32d3d437a5af 100644
--- a/drivers/iio/pressure/mprls0025pa_i2c.c
+++ b/drivers/iio/pressure/mprls0025pa_i2c.c
@@ -8,7 +8,6 @@
  *  https://prod-edam.honeywell.com/content/dam/honeywell-edam/sps/siot/en-us/products/sensors/pressure-sensors/board-mount-pressure-sensors/micropressure-mpr-series/documents/sps-siot-mpr-series-datasheet-32332628-ciid-172626.pdf
  */
 
-#include <linux/device.h>
 #include <linux/errno.h>
 #include <linux/i2c.h>
 #include <linux/mod_devicetable.h>
-- 
2.50.0


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

* [PATCH 7/7] iio: st_sensors: Apply IWYU principles to includes
  2025-07-10 17:11 [PATCH 0/7] IIO: More application of IWYU principles to includes Jonathan Cameron
                   ` (5 preceding siblings ...)
  2025-07-10 17:11 ` [PATCH 6/7] iio: pressure: mprls0025pa: " Jonathan Cameron
@ 2025-07-10 17:11 ` Jonathan Cameron
  2025-07-10 19:09 ` [PATCH 0/7] IIO: More application of " Andy Shevchenko
  7 siblings, 0 replies; 11+ messages in thread
From: Jonathan Cameron @ 2025-07-10 17:11 UTC (permalink / raw)
  To: linux-iio, Nuno Sá, Andy Shevchenko, David Lechner
  Cc: Denis Ciocca, Vasileios Amoiridis, Jonathan Cameron

From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Motivated initially by the new W=1 warning for missing linux/export.h
includes, this is taking a fresh look at what should be included
across the various library and type specific bits of st_sensors.

It approximately follows include what you use principles but with some
fuzzy matching for things like dev_printk.h. If only dev_err()
etc are used in code and device.h does not otherwise need to be included
we only include linux/dev_printk.h. If device.h is needed for other reasons
only include that.  That is we assume device.h will continue to
include dev_printk.h.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
 Note I haven't figure out what official path to PAGE_SIZE is but
 the relevant code needs a rewrite anyway so I've left it for now.
 
 drivers/iio/accel/st_accel_buffer.c           |  6 ++++--
 drivers/iio/accel/st_accel_core.c             | 12 +++++++++---
 drivers/iio/accel/st_accel_i2c.c              |  5 ++++-
 drivers/iio/accel/st_accel_spi.c              |  3 ++-
 .../iio/common/st_sensors/st_sensors_buffer.c | 15 ++++++++++-----
 .../iio/common/st_sensors/st_sensors_core.c   | 19 +++++++++++++++----
 .../iio/common/st_sensors/st_sensors_core.h   |  2 ++
 .../iio/common/st_sensors/st_sensors_i2c.c    |  8 ++++++--
 .../iio/common/st_sensors/st_sensors_spi.c    | 11 +++++++++--
 .../common/st_sensors/st_sensors_trigger.c    | 13 ++++++++++---
 drivers/iio/gyro/st_gyro_buffer.c             |  6 ++++--
 drivers/iio/gyro/st_gyro_core.c               | 11 ++++++++---
 drivers/iio/gyro/st_gyro_i2c.c                |  3 ++-
 drivers/iio/gyro/st_gyro_spi.c                |  3 ++-
 drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_core.c  |  5 ++++-
 drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_i2c.c   |  5 ++---
 drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_spi.c   |  5 ++---
 drivers/iio/magnetometer/st_magn_buffer.c     |  5 +++--
 drivers/iio/magnetometer/st_magn_core.c       | 11 ++++++++---
 drivers/iio/magnetometer/st_magn_i2c.c        |  3 ++-
 drivers/iio/magnetometer/st_magn_spi.c        |  3 ++-
 drivers/iio/pressure/st_pressure_buffer.c     |  6 ++++--
 drivers/iio/pressure/st_pressure_core.c       |  9 ++++++---
 drivers/iio/pressure/st_pressure_i2c.c        |  3 ++-
 drivers/iio/pressure/st_pressure_spi.c        |  3 ++-
 include/linux/iio/common/st_sensors_i2c.h     |  5 ++---
 include/linux/iio/common/st_sensors_spi.h     |  5 ++---
 27 files changed, 128 insertions(+), 57 deletions(-)

diff --git a/drivers/iio/accel/st_accel_buffer.c b/drivers/iio/accel/st_accel_buffer.c
index b2977ae19b69..53ed46db122d 100644
--- a/drivers/iio/accel/st_accel_buffer.c
+++ b/drivers/iio/accel/st_accel_buffer.c
@@ -7,9 +7,11 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/device.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
+
 #include <linux/iio/iio.h>
-#include <linux/iio/buffer.h>
 #include <linux/iio/trigger.h>
 #include <linux/iio/triggered_buffer.h>
 
diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c
index 99cb661fabb2..c1a44eca4e15 100644
--- a/drivers/iio/accel/st_accel_core.c
+++ b/drivers/iio/accel/st_accel_core.c
@@ -7,16 +7,22 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/acpi.h>
+#include <linux/array_size.h>
+#include <linux/bits.h>
+#include <linux/device.h>
+#include <linux/errno.h>
+#include <linux/export.h>
 #include <linux/module.h>
-#include <linux/mutex.h>
 #include <linux/sysfs.h>
 #include <linux/slab.h>
-#include <linux/acpi.h>
+#include <linux/stddef.h>
+
 #include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
 #include <linux/iio/trigger.h>
 
+#include <linux/platform_data/st_sensors_pdata.h>
 #include <linux/iio/common/st_sensors.h>
 #include "st_accel.h"
 
diff --git a/drivers/iio/accel/st_accel_i2c.c b/drivers/iio/accel/st_accel_i2c.c
index f24449500533..3f567c63c287 100644
--- a/drivers/iio/accel/st_accel_i2c.c
+++ b/drivers/iio/accel/st_accel_i2c.c
@@ -7,12 +7,15 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/dev_printk.h>
+#include <linux/errno.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/i2c.h>
+
 #include <linux/iio/iio.h>
 
+#include <linux/iio/common/st_sensors.h>
 #include <linux/iio/common/st_sensors_i2c.h>
 #include "st_accel.h"
 
diff --git a/drivers/iio/accel/st_accel_spi.c b/drivers/iio/accel/st_accel_spi.c
index d8ec0555f42a..7d9f56df3f75 100644
--- a/drivers/iio/accel/st_accel_spi.c
+++ b/drivers/iio/accel/st_accel_spi.c
@@ -7,7 +7,8 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/dev_printk.h>
+#include <linux/errno.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/spi/spi.h>
diff --git a/drivers/iio/common/st_sensors/st_sensors_buffer.c b/drivers/iio/common/st_sensors/st_sensors_buffer.c
index 57f087c2216f..56943bc37592 100644
--- a/drivers/iio/common/st_sensors/st_sensors_buffer.c
+++ b/drivers/iio/common/st_sensors/st_sensors_buffer.c
@@ -7,14 +7,19 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/align.h>
+#include <linux/bitmap.h>
+#include <linux/errno.h>
+#include <linux/export.h>
+#include <linux/math.h>
+#include <linux/irqreturn.h>
+#include <linux/regmap.h>
+#include <linux/types.h>
+
 #include <linux/iio/iio.h>
-#include <linux/iio/trigger.h>
-#include <linux/interrupt.h>
 #include <linux/iio/buffer.h>
+#include <linux/iio/trigger.h>
 #include <linux/iio/trigger_consumer.h>
-#include <linux/irqreturn.h>
-#include <linux/regmap.h>
 
 #include <linux/iio/common/st_sensors.h>
 
diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c
index 8ce1dccfea4f..ab6e38f1f23a 100644
--- a/drivers/iio/common/st_sensors/st_sensors_core.c
+++ b/drivers/iio/common/st_sensors/st_sensors_core.c
@@ -7,16 +7,27 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/slab.h>
+#include <linux/array_size.h>
+#include <linux/bitops.h>
 #include <linux/delay.h>
-#include <linux/iio/iio.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/export.h>
+#include <linux/math.h>
+#include <linux/module.h>
 #include <linux/mutex.h>
 #include <linux/property.h>
 #include <linux/regulator/consumer.h>
 #include <linux/regmap.h>
+#include <linux/slab.h>
+#include <linux/sprintf.h>
+#include <linux/stddef.h>
+#include <linux/string.h>
 #include <linux/unaligned.h>
+
+#include <linux/iio/iio.h>
+
+#include <linux/platform_data/st_sensors_pdata.h>
 #include <linux/iio/common/st_sensors.h>
 
 #include "st_sensors_core.h"
diff --git a/drivers/iio/common/st_sensors/st_sensors_core.h b/drivers/iio/common/st_sensors/st_sensors_core.h
index 09f3e602a2e2..efd7cc1a97ed 100644
--- a/drivers/iio/common/st_sensors/st_sensors_core.h
+++ b/drivers/iio/common/st_sensors/st_sensors_core.h
@@ -4,6 +4,8 @@
  */
 #ifndef __ST_SENSORS_CORE_H
 #define __ST_SENSORS_CORE_H
+#include <linux/types.h>
+
 struct iio_dev;
 int st_sensors_write_data_with_mask(struct iio_dev *indio_dev,
 				    u8 reg_addr, u8 mask, u8 data);
diff --git a/drivers/iio/common/st_sensors/st_sensors_i2c.c b/drivers/iio/common/st_sensors/st_sensors_i2c.c
index 7156302fe997..e524845e4e09 100644
--- a/drivers/iio/common/st_sensors/st_sensors_i2c.c
+++ b/drivers/iio/common/st_sensors/st_sensors_i2c.c
@@ -7,12 +7,16 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
+#include <linux/dev_printk.h>
+#include <linux/err.h>
+#include <linux/export.h>
 #include <linux/i2c.h>
-#include <linux/kernel.h>
 #include <linux/module.h>
-#include <linux/iio/iio.h>
 #include <linux/regmap.h>
 
+#include <linux/iio/iio.h>
+
+#include <linux/iio/common/st_sensors.h>
 #include <linux/iio/common/st_sensors_i2c.h>
 
 #define ST_SENSORS_I2C_MULTIREAD	0x80
diff --git a/drivers/iio/common/st_sensors/st_sensors_spi.c b/drivers/iio/common/st_sensors/st_sensors_spi.c
index 0da27013943d..8310e235c019 100644
--- a/drivers/iio/common/st_sensors/st_sensors_spi.c
+++ b/drivers/iio/common/st_sensors/st_sensors_spi.c
@@ -7,13 +7,20 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/export.h>
 #include <linux/module.h>
-#include <linux/iio/iio.h>
 #include <linux/property.h>
 #include <linux/regmap.h>
 #include <linux/spi/spi.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
+
+#include <linux/iio/iio.h>
 
+#include <linux/platform_data/st_sensors_pdata.h>
+#include <linux/iio/common/st_sensors.h>
 #include <linux/iio/common/st_sensors_spi.h>
 
 #define ST_SENSORS_SPI_MULTIREAD	0xc0
diff --git a/drivers/iio/common/st_sensors/st_sensors_trigger.c b/drivers/iio/common/st_sensors/st_sensors_trigger.c
index 9d4bf822a15d..9746e5a30de0 100644
--- a/drivers/iio/common/st_sensors/st_sensors_trigger.c
+++ b/drivers/iio/common/st_sensors/st_sensors_trigger.c
@@ -7,11 +7,18 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
-#include <linux/iio/iio.h>
-#include <linux/iio/trigger.h>
+#include <linux/device.h>
+#include <linux/errno.h>
+#include <linux/export.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/regmap.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
+
+#include <linux/iio/iio.h>
+#include <linux/iio/trigger.h>
+
 #include <linux/iio/common/st_sensors.h>
 #include "st_sensors_core.h"
 
diff --git a/drivers/iio/gyro/st_gyro_buffer.c b/drivers/iio/gyro/st_gyro_buffer.c
index 1ebfe7aa6c96..cb78552e17a1 100644
--- a/drivers/iio/gyro/st_gyro_buffer.c
+++ b/drivers/iio/gyro/st_gyro_buffer.c
@@ -7,9 +7,11 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/device.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
+
 #include <linux/iio/iio.h>
-#include <linux/iio/buffer.h>
 #include <linux/iio/trigger.h>
 #include <linux/iio/triggered_buffer.h>
 
diff --git a/drivers/iio/gyro/st_gyro_core.c b/drivers/iio/gyro/st_gyro_core.c
index 7fd82cd707c7..ac6b35fb7aac 100644
--- a/drivers/iio/gyro/st_gyro_core.c
+++ b/drivers/iio/gyro/st_gyro_core.c
@@ -7,15 +7,20 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/array_size.h>
+#include <linux/bits.h>
+#include <linux/device.h>
+#include <linux/errno.h>
+#include <linux/export.h>
 #include <linux/module.h>
-#include <linux/mutex.h>
-#include <linux/interrupt.h>
+#include <linux/stddef.h>
 #include <linux/sysfs.h>
+
 #include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
 #include <linux/iio/trigger.h>
 
+#include <linux/platform_data/st_sensors_pdata.h>
 #include <linux/iio/common/st_sensors.h>
 #include "st_gyro.h"
 
diff --git a/drivers/iio/gyro/st_gyro_i2c.c b/drivers/iio/gyro/st_gyro_i2c.c
index aef5ec8f9dee..d699518a18ab 100644
--- a/drivers/iio/gyro/st_gyro_i2c.c
+++ b/drivers/iio/gyro/st_gyro_i2c.c
@@ -7,7 +7,8 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/device.h>
+#include <linux/errno.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/i2c.h>
diff --git a/drivers/iio/gyro/st_gyro_spi.c b/drivers/iio/gyro/st_gyro_spi.c
index f645da157372..61c03b72b57e 100644
--- a/drivers/iio/gyro/st_gyro_spi.c
+++ b/drivers/iio/gyro/st_gyro_spi.c
@@ -7,7 +7,8 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/device.h>
+#include <linux/errno.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/spi/spi.h>
diff --git a/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_core.c b/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_core.c
index 8f4a67edb335..8af4ab21bd22 100644
--- a/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_core.c
+++ b/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_core.c
@@ -8,7 +8,8 @@
  */
 
 #include <linux/array_size.h>
-#include <linux/dev_printk.h>
+#include <linux/device.h>
+#include <linux/export.h>
 #include <linux/err.h>
 #include <linux/module.h>
 #include <linux/regulator/consumer.h>
@@ -18,6 +19,8 @@
 
 #include "st_lsm9ds0.h"
 
+struct regmap;
+
 static int st_lsm9ds0_probe_accel(struct st_lsm9ds0 *lsm9ds0, struct regmap *regmap)
 {
 	const struct st_sensor_settings *settings;
diff --git a/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_i2c.c b/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_i2c.c
index 4232a9d800fc..0eb0564801cb 100644
--- a/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_i2c.c
+++ b/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_i2c.c
@@ -7,15 +7,14 @@
  * Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  */
 
-#include <linux/device/devres.h>
+#include <linux/device.h>
 #include <linux/err.h>
-#include <linux/gfp_types.h>
 #include <linux/i2c.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/regmap.h>
 
-#include <linux/iio/common/st_sensors_i2c.h>
+#include <linux/iio/common/st_sensors.h>
 
 #include "st_lsm9ds0.h"
 
diff --git a/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_spi.c b/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_spi.c
index acea8a0757d7..b72ad380aa2f 100644
--- a/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_spi.c
+++ b/drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_spi.c
@@ -7,15 +7,14 @@
  * Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  */
 
-#include <linux/device/devres.h>
+#include <linux/device.h>
 #include <linux/err.h>
-#include <linux/gfp_types.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/regmap.h>
 #include <linux/spi/spi.h>
 
-#include <linux/iio/common/st_sensors_spi.h>
+#include <linux/iio/common/st_sensors.h>
 
 #include "st_lsm9ds0.h"
 
diff --git a/drivers/iio/magnetometer/st_magn_buffer.c b/drivers/iio/magnetometer/st_magn_buffer.c
index 79987f42e8d9..91f4b077a554 100644
--- a/drivers/iio/magnetometer/st_magn_buffer.c
+++ b/drivers/iio/magnetometer/st_magn_buffer.c
@@ -6,10 +6,11 @@
  *
  * Denis Ciocca <denis.ciocca@st.com>
  */
+#include <linux/device.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
 
-#include <linux/kernel.h>
 #include <linux/iio/iio.h>
-#include <linux/iio/buffer.h>
 #include <linux/iio/trigger.h>
 #include <linux/iio/triggered_buffer.h>
 
diff --git a/drivers/iio/magnetometer/st_magn_core.c b/drivers/iio/magnetometer/st_magn_core.c
index ef348d316c00..7508a7cf74d4 100644
--- a/drivers/iio/magnetometer/st_magn_core.c
+++ b/drivers/iio/magnetometer/st_magn_core.c
@@ -6,15 +6,20 @@
  *
  * Denis Ciocca <denis.ciocca@st.com>
  */
-
-#include <linux/kernel.h>
+#include <linux/array_size.h>
+#include <linux/bits.h>
+#include <linux/device.h>
+#include <linux/errno.h>
+#include <linux/export.h>
 #include <linux/module.h>
-#include <linux/mutex.h>
+#include <linux/stddef.h>
 #include <linux/sysfs.h>
+
 #include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
 #include <linux/iio/trigger.h>
 
+#include <linux/platform_data/st_sensors_pdata.h>
 #include <linux/iio/common/st_sensors.h>
 #include "st_magn.h"
 
diff --git a/drivers/iio/magnetometer/st_magn_i2c.c b/drivers/iio/magnetometer/st_magn_i2c.c
index ed70e782af5e..e58fec268be1 100644
--- a/drivers/iio/magnetometer/st_magn_i2c.c
+++ b/drivers/iio/magnetometer/st_magn_i2c.c
@@ -7,7 +7,8 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/dev_printk.h>
+#include <linux/errno.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/i2c.h>
diff --git a/drivers/iio/magnetometer/st_magn_spi.c b/drivers/iio/magnetometer/st_magn_spi.c
index 68816362bb95..2a6b0715bb85 100644
--- a/drivers/iio/magnetometer/st_magn_spi.c
+++ b/drivers/iio/magnetometer/st_magn_spi.c
@@ -7,7 +7,8 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/device.h>
+#include <linux/errno.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/spi/spi.h>
diff --git a/drivers/iio/pressure/st_pressure_buffer.c b/drivers/iio/pressure/st_pressure_buffer.c
index 0dbf357c2c22..b83eb7bad11a 100644
--- a/drivers/iio/pressure/st_pressure_buffer.c
+++ b/drivers/iio/pressure/st_pressure_buffer.c
@@ -7,9 +7,11 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/device.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
+
 #include <linux/iio/iio.h>
-#include <linux/iio/buffer.h>
 #include <linux/iio/trigger.h>
 #include <linux/iio/triggered_buffer.h>
 
diff --git a/drivers/iio/pressure/st_pressure_core.c b/drivers/iio/pressure/st_pressure_core.c
index b70d1cee82f3..cb5cca094ca9 100644
--- a/drivers/iio/pressure/st_pressure_core.c
+++ b/drivers/iio/pressure/st_pressure_core.c
@@ -7,14 +7,17 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/array_size.h>
+#include <linux/bits.h>
+#include <linux/device.h>
+#include <linux/errno.h>
+#include <linux/export.h>
 #include <linux/module.h>
-#include <linux/mutex.h>
+#include <linux/stddef.h>
 #include <linux/sysfs.h>
 #include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
 #include <linux/iio/trigger.h>
-#include <linux/unaligned.h>
 
 #include <linux/iio/common/st_sensors.h>
 #include "st_pressure.h"
diff --git a/drivers/iio/pressure/st_pressure_i2c.c b/drivers/iio/pressure/st_pressure_i2c.c
index 0f50bac1fb4d..c6ace6ec6e81 100644
--- a/drivers/iio/pressure/st_pressure_i2c.c
+++ b/drivers/iio/pressure/st_pressure_i2c.c
@@ -7,7 +7,8 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/dev_printk.h>
+#include <linux/errno.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/i2c.h>
diff --git a/drivers/iio/pressure/st_pressure_spi.c b/drivers/iio/pressure/st_pressure_spi.c
index 39827e6841ca..9df0b94f9ccf 100644
--- a/drivers/iio/pressure/st_pressure_spi.c
+++ b/drivers/iio/pressure/st_pressure_spi.c
@@ -7,7 +7,8 @@
  * Denis Ciocca <denis.ciocca@st.com>
  */
 
-#include <linux/kernel.h>
+#include <linux/dev_printk.h>
+#include <linux/errno.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
 #include <linux/spi/spi.h>
diff --git a/include/linux/iio/common/st_sensors_i2c.h b/include/linux/iio/common/st_sensors_i2c.h
index 5f15cf01036c..e9d9a477ef67 100644
--- a/include/linux/iio/common/st_sensors_i2c.h
+++ b/include/linux/iio/common/st_sensors_i2c.h
@@ -10,9 +10,8 @@
 #ifndef ST_SENSORS_I2C_H
 #define ST_SENSORS_I2C_H
 
-#include <linux/i2c.h>
-#include <linux/iio/common/st_sensors.h>
-
+struct iio_dev;
+struct i2c_client;
 int st_sensors_i2c_configure(struct iio_dev *indio_dev,
 			     struct i2c_client *client);
 
diff --git a/include/linux/iio/common/st_sensors_spi.h b/include/linux/iio/common/st_sensors_spi.h
index 90b25f087f06..0bd341330b80 100644
--- a/include/linux/iio/common/st_sensors_spi.h
+++ b/include/linux/iio/common/st_sensors_spi.h
@@ -10,9 +10,8 @@
 #ifndef ST_SENSORS_SPI_H
 #define ST_SENSORS_SPI_H
 
-#include <linux/spi/spi.h>
-#include <linux/iio/common/st_sensors.h>
-
+struct iio_dev;
+struct spi_device;
 int st_sensors_spi_configure(struct iio_dev *indio_dev,
 			     struct spi_device *spi);
 
-- 
2.50.0


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

* Re: [PATCH 0/7] IIO: More application of IWYU principles to includes.
  2025-07-10 17:11 [PATCH 0/7] IIO: More application of IWYU principles to includes Jonathan Cameron
                   ` (6 preceding siblings ...)
  2025-07-10 17:11 ` [PATCH 7/7] iio: st_sensors: " Jonathan Cameron
@ 2025-07-10 19:09 ` Andy Shevchenko
  2025-07-10 19:28   ` David Lechner
  7 siblings, 1 reply; 11+ messages in thread
From: Andy Shevchenko @ 2025-07-10 19:09 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: linux-iio, Nuno Sá, Andy Shevchenko, David Lechner,
	Denis Ciocca, Vasileios Amoiridis, Jonathan Cameron

On Thu, Jul 10, 2025 at 06:11:00PM +0100, Jonathan Cameron wrote:
> 
> I decided to look at a slightly larger set to continue trying to come
> up with consistent rules (for IIO anyway) on what we want to include
> direclty and what assumptions we can make about a header always including
> another.
> 
> As the series goes on reduce the amount of info on particular choices made
> just because the commit descriptions were getting very long.
> 
> A few open questions.
> - linux/stddef.h - do we want to included this directly?

Only if not types.h included.

> - linux/types.h - do we want to include this directly?

Yes.

> - linux/dev_printk.h - include even if device.h is needed for other reasons
>   or rely on that as a grouping header if present and only use dev_printk
>   where we don't need device.h.

I slightly tend to include both as strictly speaking the dev_printk.h should be
device/printk.h, but that boat already sailed long time ago...

> I'll share a refreshed IWYU config once we come to firmer conclusions
> on the various choices.  I haven't yet figured out now to not include
> anything at all for things like CONFIG*

PAGE_SIZE is in asm/page.h.

-- 
With Best Regards,
Andy Shevchenko



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

* Re: [PATCH 1/7] iio: pressure: bmp280: Apply iwyu principles to includes.
  2025-07-10 17:11 ` [PATCH 1/7] iio: pressure: bmp280: Apply iwyu " Jonathan Cameron
@ 2025-07-10 19:09   ` Andy Shevchenko
  0 siblings, 0 replies; 11+ messages in thread
From: Andy Shevchenko @ 2025-07-10 19:09 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: linux-iio, Nuno Sá, Andy Shevchenko, David Lechner,
	Denis Ciocca, Vasileios Amoiridis, Jonathan Cameron

On Thu, Jul 10, 2025 at 06:11:01PM +0100, Jonathan Cameron wrote:
> From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> 
> The recent introduction of a warning on missing include of
> linux/export.h when W=1 motivated revisiting the includes in affected
> drivers.  In general IWYU principles avoid complex include paths that
> make it hard to refactor headers.
> 
> - Move linux/unaligned.h entry to appropriate place.
> - Drop comment on linux/irq.h as we don't generally keep a record
>   in code of why includes are there.
> 
> Remove
> - linux/device.h from bmp280-regmap.c as struct device forwards definition
>   is enough.
> - linux/module.h from bmp280-regmap.c as the module stuff is all in the
>   other files.
> Add all of:
> - linux/array_size.h for ARRAY_SIZE()
> - linux/device.h in the i2c and spi drivers
> - linux/err.h for PTR_ERR() etc and also assume includes errno.h
> - linux/export.h for EXPORT_SYMBOL*()
> - linux/jiffies.h for msecs_to_jiffies
> - linux/log2.h for ilog2()
> - linux/math64.h for div64_s64
> - linux/minmax.h for clamp_val()
> - linux/mod_devicetable.h for spi_device_id etc
> - linux/mutex.h for various mutex calls
> - linux/pm.h for pm_ptr()
> - linux/stddef.h for false / true
> - linux/string.h for memcpy
> - linux/string_choices.h for str_enable_disable
> - linux/time.h for USEC_PER_MSEC
> - linux/types.h for local bool definition.
> 
> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
> I'm not sure on whether we should bother with stddef.h or types.h
> Looking for feedback on any others.

types.h is superior.

-- 
With Best Regards,
Andy Shevchenko



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

* Re: [PATCH 0/7] IIO: More application of IWYU principles to includes.
  2025-07-10 19:09 ` [PATCH 0/7] IIO: More application of " Andy Shevchenko
@ 2025-07-10 19:28   ` David Lechner
  0 siblings, 0 replies; 11+ messages in thread
From: David Lechner @ 2025-07-10 19:28 UTC (permalink / raw)
  To: Andy Shevchenko, Jonathan Cameron
  Cc: linux-iio, Nuno Sá, Andy Shevchenko, Denis Ciocca,
	Vasileios Amoiridis, Jonathan Cameron

On 7/10/25 2:09 PM, Andy Shevchenko wrote:
> On Thu, Jul 10, 2025 at 06:11:00PM +0100, Jonathan Cameron wrote:
>>
>> I decided to look at a slightly larger set to continue trying to come
>> up with consistent rules (for IIO anyway) on what we want to include
>> direclty and what assumptions we can make about a header always including
>> another.
>>
>> As the series goes on reduce the amount of info on particular choices made
>> just because the commit descriptions were getting very long.
>>
>> A few open questions.
>> - linux/stddef.h - do we want to included this directly?
> 
> Only if not types.h included.
> 
>> - linux/types.h - do we want to include this directly?
> 
> Yes.

Agree. It's rare, but I've had compile failures in some cases if this
was missing.

> 
>> - linux/dev_printk.h - include even if device.h is needed for other reasons
>>   or rely on that as a grouping header if present and only use dev_printk
>>   where we don't need device.h.
> 
> I slightly tend to include both as strictly speaking the dev_printk.h should be
> device/printk.h, but that boat already sailed long time ago...

+1 for not having conditional rules. Just include both.

So I would do the same for linux/stddef.h. Either always include it or
always use linux/types.h instead. It just makes things simpler to not have
special cases.

> 
>> I'll share a refreshed IWYU config once we come to firmer conclusions
>> on the various choices.  I haven't yet figured out now to not include
>> anything at all for things like CONFIG*
> 
> PAGE_SIZE is in asm/page.h.
> 


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

end of thread, other threads:[~2025-07-10 19:28 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-10 17:11 [PATCH 0/7] IIO: More application of IWYU principles to includes Jonathan Cameron
2025-07-10 17:11 ` [PATCH 1/7] iio: pressure: bmp280: Apply iwyu " Jonathan Cameron
2025-07-10 19:09   ` Andy Shevchenko
2025-07-10 17:11 ` [PATCH 2/7] iio: pressure: zpa2326: " Jonathan Cameron
2025-07-10 17:11 ` [PATCH 3/7] iio: pressure: mpl115: " Jonathan Cameron
2025-07-10 17:11 ` [PATCH 4/7] iio: pressure: ms5611: " Jonathan Cameron
2025-07-10 17:11 ` [PATCH 5/7] iio: pressure: hsc030pa: Apply IWYU " Jonathan Cameron
2025-07-10 17:11 ` [PATCH 6/7] iio: pressure: mprls0025pa: " Jonathan Cameron
2025-07-10 17:11 ` [PATCH 7/7] iio: st_sensors: " Jonathan Cameron
2025-07-10 19:09 ` [PATCH 0/7] IIO: More application of " Andy Shevchenko
2025-07-10 19:28   ` David Lechner

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).