RE: [PATCH v2 1/2] pwm: Manage owner assignment implicitly for drivers
Hi Uwe, > -Original Message- > From: Uwe Kleine-König > Sent: Friday, August 4, 2023 11:27 PM > To: Thierry Reding ; Laurent Pinchart > > Cc: Linus Walleij ; Bartosz Golaszewski > ; Andy Shevchenko ; Douglas Anderson > ; Andrzej Hajda ; Neil > Armstrong ; Robert Foss ; > Jonas Karlman ; Jernej Skrabec > ; David Airlie ; Daniel Vetter > ; Pavel Machek ; Lee Jones > ; Hector Martin ; Sven Peter > ; Alyssa Rosenzweig ; Nicolas > Ferre ; Alexandre Belloni > ; Claudiu Beznea > ; Ray Jui ; Scott > Branden ; Broadcom internal kernel review list > ; Florian Fainelli > ; Alexander Shiyan ; > Benson Leung ; Guenter Roeck > ; Shawn Guo ; Sascha > Hauer ; Pengutronix Kernel Team > ; Fabio Estevam ; NXP > Linux Team ; Paul Cercueil ; > Vladimir Zapolskiy ; Kevin Hilman ; > Jerome Brunet ; Martin Blumenstingl > ; Conor Dooley > ; Daire McNamara > ; Matthias Brugger > ; AngeloGioacchino Del Regno > ; Jonathan Neuschäfer > ; Heiko Stuebner ; Krzysztof > Kozlowski ; Alim Akhtar > ; Palmer Dabbelt ; Paul > Walmsley ; Michael Walle ; > Orson Zhai ; Baolin Wang > ; Chunyan Zhang > ; Fabrice Gasnier ; > Maxime Coquelin ; Alexandre Torgue > ; Chen-Yu Tsai ; Samuel > Holland ; Hammer Hsieh > ; Jonathan Hunter ; > iwamatsu nobuhiro(岩松 信洋 ○DITC□DIT○OST) > ; Sean Anderson > ; Michal Simek ; > Johan Hovold ; Alex Elder ; Greg > Kroah-Hartman ; Anjelique Melendez > ; Dmitry Baryshkov > ; Luca Weiss ; Bjorn > Andersson ; linux-...@vger.kernel.org; > linux-g...@vger.kernel.org; dri-devel@lists.freedesktop.org; > linux-l...@vger.kernel.org; as...@lists.linux.dev; > linux-arm-ker...@lists.infradead.org; linux-rpi-ker...@lists.infradead.org; > chrome-platf...@lists.linux.dev; linux-m...@vger.kernel.org; > linux-amlo...@lists.infradead.org; linux-ri...@lists.infradead.org; > linux-media...@lists.infradead.org; linux-rockc...@lists.infradead.org; > linux-samsung-...@vger.kernel.org; > linux-st...@st-md-mailman.stormreply.com; linux-su...@lists.linux.dev; > linux-te...@vger.kernel.org; greybus-...@lists.linaro.org; > linux-stag...@lists.linux.dev > Subject: [PATCH v2 1/2] pwm: Manage owner assignment implicitly for drivers > > Instead of requiring each driver to care for assigning the owner member of > struct pwm_ops, handle that implicitly using a macro. Note that the owner > member has to be moved to struct pwm_chip, as the ops structure usually lives > in read-only memory and so cannot be modified. > > The upside is that new lowlevel drivers cannot forget the assignment and save > one line each. The pwm-crc driver didn't assign .owner, that's not a problem > in > practise though as the driver cannot be compiled as a module. > > Signed-off-by: Uwe Kleine-König > --- > drivers/gpio/gpio-mvebu.c | 1 - > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 1 - > drivers/leds/rgb/leds-qcom-lpg.c | 1 - > drivers/pwm/core.c| 24 > ++-- > drivers/pwm/pwm-ab8500.c | 1 - > drivers/pwm/pwm-apple.c | 1 - > drivers/pwm/pwm-atmel-hlcdc.c | 1 - > drivers/pwm/pwm-atmel-tcb.c | 1 - > drivers/pwm/pwm-atmel.c | 1 - > drivers/pwm/pwm-bcm-iproc.c | 1 - > drivers/pwm/pwm-bcm-kona.c| 1 - > drivers/pwm/pwm-bcm2835.c | 1 - > drivers/pwm/pwm-berlin.c | 1 - > drivers/pwm/pwm-brcmstb.c | 1 - > drivers/pwm/pwm-clk.c | 1 - > drivers/pwm/pwm-clps711x.c| 1 - > drivers/pwm/pwm-cros-ec.c | 1 - > drivers/pwm/pwm-dwc.c | 1 - > drivers/pwm/pwm-ep93xx.c | 1 - > drivers/pwm/pwm-fsl-ftm.c | 1 - > drivers/pwm/pwm-hibvt.c | 1 - > drivers/pwm/pwm-img.c | 1 - > drivers/pwm/pwm-imx-tpm.c | 1 - > drivers/pwm/pwm-imx1.c| 1 - > drivers/pwm/pwm-imx27.c | 1 - > drivers/pwm/pwm-intel-lgm.c | 1 - > drivers/pwm/pwm-iqs620a.c | 1 - > drivers/pwm/pwm-jz4740.c | 1 - > drivers/pwm/pwm-keembay.c | 1 - > drivers/pwm/pwm-lp3943.c | 1 - > drivers/pwm/pwm-lpc18xx-sct.c | 1 - > drivers/pwm/pwm-lpc32xx.c | 1 - > drivers/pwm/pwm-lpss.c| 1 - > drivers/pwm/pwm-mediatek.c| 1 - > drivers/pwm/pwm-meson.c | 1 - > drivers/pwm/pwm-microchip-core.c | 1 - > drivers/pwm/pwm-mtk-disp.c| 1 - > drivers/pwm/pwm-mxs.c | 1 - > drivers/pwm/pwm-ntxec.c | 1 - > drivers/pwm/pwm-omap-dmtimer.c| 1 - > drivers/pwm/pwm-pca9685.c | 1 - > drivers/pwm/pwm-pxa.c | 1 - > drivers/pwm/pwm-raspberrypi-poe.c | 1 - > drivers/pwm/pwm-rcar.c| 1 - > drivers/pwm/pwm-renesas-tpu.c | 1 - > drivers/pwm/pwm-rockchip.c| 1 - > drivers/pwm/pwm-rz-mtu3.c | 1 - >
RE: [PATCH v2 01/11] pwm: Make .get_state() callback return an error code
> -Original Message- > From: Uwe Kleine-König > Sent: Thursday, December 1, 2022 12:22 AM > To: Thierry Reding > Cc: Conor Dooley ; Linus Walleij > ; Bartosz Golaszewski ; Douglas > Anderson ; Pavel Machek ; > Claudiu Beznea ; Nicolas Ferre > ; Alexandre Belloni > ; Ray Jui ; Scott > Branden ; Broadcom internal kernel review list > ; Benson Leung > ; Guenter Roeck ; Shawn > Guo ; Sascha Hauer ; > Pengutronix Kernel Team ; Fabio Estevam > ; NXP Linux Team ; Kevin > Hilman ; Jerome Brunet ; > Martin Blumenstingl ; Matthias > Brugger ; Florian Fainelli ; > Heiko Stuebner ; Palmer Dabbelt > ; Paul Walmsley ; > Michael Walle ; Orson Zhai ; > Baolin Wang ; Chunyan Zhang > ; Fabrice Gasnier ; > Maxime Coquelin ; Alexandre Torgue > ; Chen-Yu Tsai ; Samuel > Holland ; Hammer Hsieh > ; iwamatsu nobuhiro(岩松 信洋 □SWC◯AC > T) ; Sean Anderson > ; Michal Simek ; > Bjorn Andersson ; Stephen Boyd > ; Matthias Kaehlcke ; Satya > Priya ; linux-...@vger.kernel.org; > linux-g...@vger.kernel.org; dri-devel@lists.freedesktop.org; > linux-l...@vger.kernel.org; linux-arm-ker...@lists.infradead.org; > chrome-platf...@lists.linux.dev; linux-amlo...@lists.infradead.org; > linux-media...@lists.infradead.org; linux-rpi-ker...@lists.infradead.org; > linux-rockc...@lists.infradead.org; linux-ri...@lists.infradead.org; > linux-st...@st-md-mailman.stormreply.com; linux-su...@lists.linux.dev > Subject: [PATCH v2 01/11] pwm: Make .get_state() callback return an error > code > > .get_state() might fail in some cases. To make it possible that a driver > signals > such a failure change the prototype of .get_state() to return an error code. > > This patch was created using coccinelle and the following semantic patch: > > @p1@ > identifier getstatefunc; > identifier driver; > @@ > struct pwm_ops driver = { > ..., > .get_state = getstatefunc > ,... > }; > > @p2@ > identifier p1.getstatefunc; > identifier chip, pwm, state; > @@ > -void > +int > getstatefunc(struct pwm_chip *chip, struct pwm_device *pwm, struct > pwm_state *state) { >... > - return; > + return 0; >... > } > > plus the actual change of the prototype in include/linux/pwm.h (plus some > manual fixing of indentions and empty lines). > > So for now all drivers return success unconditionally. They are adapted in the > following patches to make the changes easier reviewable. > > Signed-off-by: Uwe Kleine-König > a/drivers/pwm/pwm-visconti.c b/drivers/pwm/pwm-visconti.c index > 927c4cbb1daf..e3fb79b3e2a7 100644 > --- a/drivers/pwm/pwm-visconti.c > +++ b/drivers/pwm/pwm-visconti.c > @@ -103,8 +103,8 @@ static int visconti_pwm_apply(struct pwm_chip *chip, > struct pwm_device *pwm, > return 0; > } > > -static void visconti_pwm_get_state(struct pwm_chip *chip, struct > pwm_device *pwm, > -struct pwm_state *state) > +static int visconti_pwm_get_state(struct pwm_chip *chip, struct > pwm_device *pwm, > + struct pwm_state *state) > { > struct visconti_pwm_chip *priv = visconti_pwm_from_chip(chip); > u32 period, duty, pwmc0, pwmc0_clk; > @@ -122,6 +122,8 @@ static void visconti_pwm_get_state(struct pwm_chip > *chip, struct pwm_device *pwm > state->polarity = PWM_POLARITY_NORMAL; > > state->enabled = true; > + > + return 0; > } > > static const struct pwm_ops visconti_pwm_ops = { diff --git for the Visconti pwd: Reviewed-by: Nobuhiro Iwamatsu