Message ID | 20221117110806.65470-7-andriy.shevchenko@linux.intel.com |
---|---|
State | New |
Headers | show |
Series | [v5,1/7] pwm: Add a stub for devm_pwmchip_add() | expand |
Hello Andy, On Tue, Nov 22, 2022 at 07:35:38PM +0200, Andy Shevchenko wrote: > On Tue, Nov 22, 2022 at 05:47:03PM +0100, Uwe Kleine-König wrote: > > On Thu, Nov 17, 2022 at 01:08:05PM +0200, Andy Shevchenko wrote: > > > In case the PWM LPSS module is not provided, allow users to be > > > compiled with the help of the devm_pwm_lpss_probe() stub. > > ... > > > > +static inline > > > +struct pwm_lpss_chip *devm_pwm_lpss_probe(struct device *dev, void __iomem *base, > > > + const struct pwm_lpss_boardinfo *info) > > > +{ > > > + return ERR_PTR(-ENODEV); > > > +} > > > +#endif /* CONFIG_PWM_LPSS */ > > > > Hmm, this is actually never used, because if > > !IS_REACHABLE(CONFIG_PWM_LPSS), the only caller (that is added in patch > > 7) has: > > > > if (!IS_REACHABLE(CONFIG_PWM_LPSS)) > > return 0; > > > > before devm_pwm_lpss_probe() is called. > > > > Not sure if it's safe to just drop this patch. > > How is it supposed to be compiled and linked then? The compiler optimizes everything away after that return 0 and so doesn't need that symbol at all. I just tested compiling your series without patch #6, x86_64 allmodconfig + PWM=n. nm doesn't report the need for devm_pwm_lpss_probe in drivers/pinctrl/intel/pinctrl-intel.o. The build isn't done yet, but I don't expect surprises. Best regards Uwe
Hello Andy, On Tue, Nov 22, 2022 at 08:32:53PM +0200, Andy Shevchenko wrote: > On Tue, Nov 22, 2022 at 07:14:44PM +0100, Uwe Kleine-König wrote: > > I just tested compiling your series without patch #6, x86_64 allmodconfig + PWM=n. > > > > nm doesn't report the need for devm_pwm_lpss_probe in > > drivers/pinctrl/intel/pinctrl-intel.o. > > Sounds like you are right. I tried a brief test with m/m, y/m, m/y, and m/n > variants between PINCTRL_INTEL and PWM_LPSS and all were built fine. > > That said, I will drop this patch and send a PR with the rest. Sounds good. > Thank you for thorough review! Thank you for the interesting thread. I like our conversations. Best regards Uwe
diff --git a/include/linux/platform_data/x86/pwm-lpss.h b/include/linux/platform_data/x86/pwm-lpss.h index c852fe24fe2a..6ef21b8baec7 100644 --- a/include/linux/platform_data/x86/pwm-lpss.h +++ b/include/linux/platform_data/x86/pwm-lpss.h @@ -4,6 +4,8 @@ #ifndef __PLATFORM_DATA_X86_PWM_LPSS_H #define __PLATFORM_DATA_X86_PWM_LPSS_H +#include <linux/err.h> +#include <linux/kconfig.h> #include <linux/types.h> struct device; @@ -27,7 +29,16 @@ struct pwm_lpss_boardinfo { bool other_devices_aml_touches_pwm_regs; }; +#if IS_REACHABLE(CONFIG_PWM_LPSS) struct pwm_lpss_chip *devm_pwm_lpss_probe(struct device *dev, void __iomem *base, const struct pwm_lpss_boardinfo *info); +#else +static inline +struct pwm_lpss_chip *devm_pwm_lpss_probe(struct device *dev, void __iomem *base, + const struct pwm_lpss_boardinfo *info) +{ + return ERR_PTR(-ENODEV); +} +#endif /* CONFIG_PWM_LPSS */ #endif /* __PLATFORM_DATA_X86_PWM_LPSS_H */