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