Message ID | 20221108142226.63161-4-andriy.shevchenko@linux.intel.com |
---|---|
State | Superseded |
Headers | show |
Series | pinctrl: intel: Enable PWM optional feature | expand |
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
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 > <u.kleine-koenig@pengutronix.de> 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
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);