2022-11-08 14:44:50

by Andy Shevchenko

[permalink] [raw]
Subject: [PATCH v2 3/6] pwm: lpss: Include headers we are direct user of

For the sake of integrity, include headers we are direct user of.

While at it, move the struct pwm_lpss_chip to be after
the struct pwm_lpss_boardinfo as the former uses pointer
to the latter.

Replace device.h with a forward declaration in order to improve
the compilation time due to reducing overhead of device.h parsing
with entire train of dependencies.

Signed-off-by: Andy Shevchenko <[email protected]>
Reviewed-by: Mika Westerberg <[email protected]>
Reviewed-by: Hans de Goede <[email protected]>
---
drivers/pwm/pwm-lpss.h | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/drivers/pwm/pwm-lpss.h b/drivers/pwm/pwm-lpss.h
index 2c746c51b883..4561d229b27d 100644
--- a/drivers/pwm/pwm-lpss.h
+++ b/drivers/pwm/pwm-lpss.h
@@ -10,16 +10,12 @@
#ifndef __PWM_LPSS_H
#define __PWM_LPSS_H

-#include <linux/device.h>
#include <linux/pwm.h>
+#include <linux/types.h>

-#define LPSS_MAX_PWMS 4
+struct device;

-struct pwm_lpss_chip {
- struct pwm_chip chip;
- void __iomem *regs;
- const struct pwm_lpss_boardinfo *info;
-};
+#define LPSS_MAX_PWMS 4

struct pwm_lpss_boardinfo {
unsigned long clk_rate;
@@ -43,6 +39,12 @@ extern const struct pwm_lpss_boardinfo pwm_lpss_bsw_info;
extern const struct pwm_lpss_boardinfo pwm_lpss_bxt_info;
extern const struct pwm_lpss_boardinfo pwm_lpss_tng_info;

+struct pwm_lpss_chip {
+ struct pwm_chip chip;
+ void __iomem *regs;
+ const struct pwm_lpss_boardinfo *info;
+};
+
struct pwm_lpss_chip *pwm_lpss_probe(struct device *dev, void __iomem *base,
const struct pwm_lpss_boardinfo *info);

--
2.35.1



2022-11-10 07:39:18

by Uwe Kleine-König

[permalink] [raw]
Subject: Re: [PATCH v2 3/6] pwm: lpss: Include headers we are direct user of

Hello,

On Tue, Nov 08, 2022 at 04:22:23PM +0200, Andy Shevchenko wrote:
> For the sake of integrity, include headers we are direct user of.
>
> While at it, move the struct pwm_lpss_chip to be after
> the struct pwm_lpss_boardinfo as the former uses pointer
> to the latter.

That part is fine.

> Replace device.h with a forward declaration in order to improve
> the compilation time due to reducing overhead of device.h parsing
> with entire train of dependencies.

Together with "For the sake of integrity, include headers we are direct
user of." this makes an a bit schizophrenic impression on me. You add
<linux/types.h> because the file is a direct user of it, but you drop
<linux/device.h> despite being a direct user.

If you adapt the reasoning to something like:

Replace the inclusion of <linux/device.h> by a forward declaration of
struct device plus a (cheaper) #include of <linux/types.h> as
<linux/device.h> is an expensive include (measured in compiler effort).

I could better live with it. I would even split this into two patches
then. (i.e. move struct pwm_lpss_chip vs the include and forward change)

Best regards
Uwe

--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | https://www.pengutronix.de/ |


Attachments:
(No filename) (1.30 kB)
signature.asc (499.00 B)
Download all attachments

2022-11-10 10:25:10

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v2 3/6] pwm: lpss: Include headers we are direct user of

On Thu, Nov 10, 2022 at 9:22 AM Uwe Kleine-König
<[email protected]> wrote:
> On Tue, Nov 08, 2022 at 04:22:23PM +0200, Andy Shevchenko wrote:
> > For the sake of integrity, include headers we are direct user of.
> >
> > While at it, move the struct pwm_lpss_chip to be after
> > the struct pwm_lpss_boardinfo as the former uses pointer
> > to the latter.
>
> That part is fine.
>
> > Replace device.h with a forward declaration in order to improve
> > the compilation time due to reducing overhead of device.h parsing
> > with entire train of dependencies.
>
> Together with "For the sake of integrity, include headers we are direct
> user of." this makes an a bit schizophrenic impression on me. You add
> <linux/types.h> because the file is a direct user of it, but you drop
> <linux/device.h> despite being a direct user.

But we don't use device.h.

> If you adapt the reasoning to something like:
>
> Replace the inclusion of <linux/device.h> by a forward declaration of
> struct device plus a (cheaper) #include of <linux/types.h> as
> <linux/device.h> is an expensive include (measured in compiler effort).

Fine with me, thanks for the draft.

> I could better live with it. I would even split this into two patches
> then. (i.e. move struct pwm_lpss_chip vs the include and forward change)

I think for this small change for a driver that hasn't been modified
often it's fine to have them in one. But tell me if you are insisting
on a split, I can do that.

--
With Best Regards,
Andy Shevchenko

2022-11-10 10:36:13

by Uwe Kleine-König

[permalink] [raw]
Subject: Re: [PATCH v2 3/6] pwm: lpss: Include headers we are direct user of

On Thu, Nov 10, 2022 at 11:53:59AM +0200, Andy Shevchenko wrote:
> On Thu, Nov 10, 2022 at 9:22 AM Uwe Kleine-K?nig
> <[email protected]> wrote:
> > On Tue, Nov 08, 2022 at 04:22:23PM +0200, Andy Shevchenko wrote:
> > > For the sake of integrity, include headers we are direct user of.
> > >
> > > While at it, move the struct pwm_lpss_chip to be after
> > > the struct pwm_lpss_boardinfo as the former uses pointer
> > > to the latter.
> >
> > That part is fine.
> >
> > > Replace device.h with a forward declaration in order to improve
> > > the compilation time due to reducing overhead of device.h parsing
> > > with entire train of dependencies.
> >
> > Together with "For the sake of integrity, include headers we are direct
> > user of." this makes an a bit schizophrenic impression on me. You add
> > <linux/types.h> because the file is a direct user of it, but you drop
> > <linux/device.h> despite being a direct user.
>
> But we don't use device.h.

What is the canonical header to provide struct device?

> > If you adapt the reasoning to something like:
> >
> > Replace the inclusion of <linux/device.h> by a forward declaration of
> > struct device plus a (cheaper) #include of <linux/types.h> as
> > <linux/device.h> is an expensive include (measured in compiler effort).
>
> Fine with me, thanks for the draft.
>
> > I could better live with it. I would even split this into two patches
> > then. (i.e. move struct pwm_lpss_chip vs the include and forward change)
>
> I think for this small change for a driver that hasn't been modified
> often it's fine to have them in one. But tell me if you are insisting
> on a split, I can do that.

I don't insist.

Best regards
Uwe

--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | https://www.pengutronix.de/ |


Attachments:
(No filename) (1.86 kB)
signature.asc (499.00 B)
Download all attachments

2022-11-10 11:20:46

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v2 3/6] pwm: lpss: Include headers we are direct user of

On Thu, Nov 10, 2022 at 12:20 PM Uwe Kleine-König
<[email protected]> wrote:
> On Thu, Nov 10, 2022 at 11:53:59AM +0200, Andy Shevchenko wrote:
> > On Thu, Nov 10, 2022 at 9:22 AM Uwe Kleine-König
> > <[email protected]> wrote:
> > > On Tue, Nov 08, 2022 at 04:22:23PM +0200, Andy Shevchenko wrote:

...

> > > > Replace device.h with a forward declaration in order to improve
> > > > the compilation time due to reducing overhead of device.h parsing
> > > > with entire train of dependencies.
> > >
> > > Together with "For the sake of integrity, include headers we are direct
> > > user of." this makes an a bit schizophrenic impression on me. You add
> > > <linux/types.h> because the file is a direct user of it, but you drop
> > > <linux/device.h> despite being a direct user.
> >
> > But we don't use device.h.
>
> What is the canonical header to provide struct device?

But we don't use the struct device here. We use _pointer_ to a struct device.


--
With Best Regards,
Andy Shevchenko