From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: kernel@pengutronix.de, Shawn Guo <shawnguo@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>,
NXP Linux Team <linux-imx@nxp.com>,
linux-pwm@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 065/115] pwm: imx-tpm: Make use of devm_pwmchip_alloc() function
Date: Wed, 6 Dec 2023 12:44:19 +0100 [thread overview]
Message-ID: <54815ba81395492a7098755951d0ce7616a7f4fe.1701860672.git.u.kleine-koenig@pengutronix.de> (raw)
In-Reply-To: <cover.1701860672.git.u.kleine-koenig@pengutronix.de>
This prepares the pwm-tmp driver to further changes of the pwm core
outlined in the commit introducing devm_pwmchip_alloc(). There is no
intended semantical change and the driver should behave as before.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
drivers/pwm/pwm-imx-tpm.c | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
diff --git a/drivers/pwm/pwm-imx-tpm.c b/drivers/pwm/pwm-imx-tpm.c
index 9fc290e647e1..04f8ab315748 100644
--- a/drivers/pwm/pwm-imx-tpm.c
+++ b/drivers/pwm/pwm-imx-tpm.c
@@ -57,7 +57,6 @@
#define PWM_IMX_TPM_MOD_MOD GENMASK(PWM_IMX_TPM_MOD_WIDTH - 1, 0)
struct imx_tpm_pwm_chip {
- struct pwm_chip chip;
struct clk *clk;
void __iomem *base;
struct mutex lock;
@@ -75,7 +74,7 @@ struct imx_tpm_pwm_param {
static inline struct imx_tpm_pwm_chip *
to_imx_tpm_pwm_chip(struct pwm_chip *chip)
{
- return container_of(chip, struct imx_tpm_pwm_chip, chip);
+ return pwmchip_get_drvdata(chip);
}
/*
@@ -336,35 +335,40 @@ static const struct pwm_ops imx_tpm_pwm_ops = {
static int pwm_imx_tpm_probe(struct platform_device *pdev)
{
+ struct pwm_chip *chip;
struct imx_tpm_pwm_chip *tpm;
+ void __iomem *base;
int ret;
+ unsigned int npwm;
u32 val;
- tpm = devm_kzalloc(&pdev->dev, sizeof(*tpm), GFP_KERNEL);
- if (!tpm)
- return -ENOMEM;
+ base = devm_platform_ioremap_resource(pdev, 0);
+ if (IS_ERR(base))
+ return PTR_ERR(base);
+
+ /* get number of channels */
+ val = readl(tpm->base + PWM_IMX_TPM_PARAM);
+ npwm = FIELD_GET(PWM_IMX_TPM_PARAM_CHAN, val);
+
+ chip = devm_pwmchip_alloc(&pdev->dev, npwm, sizeof(*tpm));
+ if (IS_ERR(chip))
+ return PTR_ERR(chip);
+ tpm = to_imx_tpm_pwm_chip(chip);
platform_set_drvdata(pdev, tpm);
- tpm->base = devm_platform_ioremap_resource(pdev, 0);
- if (IS_ERR(tpm->base))
- return PTR_ERR(tpm->base);
+ tpm->base = base;
tpm->clk = devm_clk_get_enabled(&pdev->dev, NULL);
if (IS_ERR(tpm->clk))
return dev_err_probe(&pdev->dev, PTR_ERR(tpm->clk),
"failed to get PWM clock\n");
- tpm->chip.dev = &pdev->dev;
- tpm->chip.ops = &imx_tpm_pwm_ops;
-
- /* get number of channels */
- val = readl(tpm->base + PWM_IMX_TPM_PARAM);
- tpm->chip.npwm = FIELD_GET(PWM_IMX_TPM_PARAM_CHAN, val);
+ chip->ops = &imx_tpm_pwm_ops;
mutex_init(&tpm->lock);
- ret = devm_pwmchip_add(&pdev->dev, &tpm->chip);
+ ret = devm_pwmchip_add(&pdev->dev, chip);
if (ret)
return dev_err_probe(&pdev->dev, ret, "failed to add PWM chip\n");
--
2.42.0
next prev parent reply other threads:[~2023-12-06 11:48 UTC|newest]
Thread overview: 127+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-06 11:43 [PATCH v4 000/115] pwm: Fix lifetime issues for pwm_chips Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 001/115] pwm: Reduce number of pointer dereferences in pwm_device_request() Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 002/115] pwm: crc: Use consistent variable naming for driver data Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 006/115] pwm: cros-ec: Change prototype of helpers to prepare further changes Uwe Kleine-König
2023-12-07 2:06 ` Tzung-Bi Shih
2023-12-06 11:43 ` [PATCH v4 007/115] pwm: Provide a macro to get the parent device of a given chip Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 008/115] pwm: ab8500: Make use of pwmchip_parent() macro Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 009/115] pwm: atmel: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 010/115] pwm: atmel-tcb: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 011/115] pwm: bcm-kona: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 012/115] pwm: crc: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 013/115] pwm: cros-ec: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 014/115] pwm: dwc: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 015/115] pwm: ep93xx: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 016/115] pwm: fsl-ftm: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 017/115] pwm: img: Make use of parent device pointer in driver data Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 018/115] pwm: imx27: Make use of pwmchip_parent() macro Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 019/115] pwm: jz4740: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 020/115] pwm: lpc18xx-sct: Make use of parent device pointer in driver data Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 021/115] pwm: lpss: Make use of pwmchip_parent() macro Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 022/115] pwm: mediatek: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 023/115] pwm: meson: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 024/115] pwm: mtk-disp: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 025/115] pwm: omap: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 026/115] pwm: pca9685: Store parent device in driver data Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 027/115] pwm: raspberrypi-poe: Make use of pwmchip_parent() macro Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 028/115] pwm: rcar: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 029/115] pwm: rz-mtu3: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 030/115] pwm: samsung: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 031/115] pwm: sifive: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 032/115] pwm: stm32-lp: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 033/115] pwm: stm32: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 034/115] pwm: stmpe: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 035/115] pwm: sun4i: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 036/115] pwm: tiecap: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 037/115] pwm: tiehrpwm: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 038/115] pwm: twl-led: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 039/115] pwm: twl: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 040/115] pwm: vt8500: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 041/115] staging: greybus: pwm: " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 042/115] pwm: Provide wrappers for storing and getting driver private data Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 043/115] pwm: Provide devm_pwmchip_alloc() function Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 044/115] pwm: ab8500: Make use of " Uwe Kleine-König
2023-12-06 11:43 ` [PATCH v4 045/115] pwm: apple: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 046/115] pwm: atmel-hlcdc: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 047/115] pwm: atmel: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 048/115] pwm: atmel-tcb: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 049/115] pwm: bcm2835: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 050/115] pwm: bcm-iproc: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 051/115] pwm: bcm-kona: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 052/115] pwm: berlin: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 053/115] pwm: brcmstb: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 054/115] pwm: clk: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 055/115] pwm: clps711x: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 056/115] pwm: crc: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 057/115] pwm: cros-ec: " Uwe Kleine-König
2023-12-07 2:07 ` Tzung-Bi Shih
2023-12-06 11:44 ` [PATCH v4 058/115] pwm: dwc: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 059/115] pwm: ep93xx: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 060/115] pwm: fsl-ftm: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 061/115] pwm: hibvt: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 062/115] pwm: img: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 063/115] pwm: imx1: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 064/115] pwm: imx27: " Uwe Kleine-König
2023-12-06 11:44 ` Uwe Kleine-König [this message]
2023-12-06 11:44 ` [PATCH v4 066/115] pwm: intel-lgm: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 067/115] pwm: iqs620a: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 068/115] pwm: jz4740: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 069/115] pwm: keembay: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 070/115] pwm: lp3943: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 071/115] pwm: lpc18xx-sct: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 072/115] pwm: lpc32xx: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 073/115] pwm: lpss-*: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 074/115] pwm: mediatek: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 075/115] pwm: meson: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 076/115] pwm: microchip-core: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 077/115] pwm: mtk-disp: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 078/115] pwm: mxs: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 079/115] pwm: ntxec: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 080/115] pwm: omap-dmtimer: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 081/115] pwm: pca9685: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 082/115] pwm: pxa: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 083/115] pwm: raspberrypi-poe: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 084/115] pwm: rcar: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 085/115] pwm: renesas-tpu: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 086/115] pwm: rockchip: " Uwe Kleine-König
2023-12-06 13:06 ` Heiko Stübner
2023-12-06 11:44 ` [PATCH v4 087/115] pwm: rz-mtu3: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 088/115] pwm: samsung: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 089/115] pwm: sifive: " Uwe Kleine-König
2023-12-08 9:30 ` Emil Renner Berthing
2023-12-08 9:52 ` Uwe Kleine-König
2023-12-08 9:59 ` Emil Renner Berthing
2023-12-06 11:44 ` [PATCH v4 090/115] pwm: sl28cpld: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 091/115] pwm: spear: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 092/115] pwm: sprd: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 093/115] pwm: sti: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 094/115] pwm: stm32-lp: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 095/115] pwm: stm32: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 096/115] pwm: stmpe: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 097/115] pwm: sun4i: " Uwe Kleine-König
2023-12-06 17:11 ` Andre Przywara
2023-12-13 20:31 ` Jernej Škrabec
2023-12-06 11:44 ` [PATCH v4 098/115] pwm: sunplus: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 099/115] pwm: tegra: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 100/115] pwm: tiecap: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 101/115] pwm: twl-led: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 102/115] pwm: twl: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 103/115] pwm: visconti: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 104/115] pwm: vt8500: " Uwe Kleine-König
2023-12-06 11:44 ` [PATCH v4 105/115] pwm: xilinx: " Uwe Kleine-König
2023-12-06 11:45 ` [PATCH v4 106/115] gpio: mvebu: " Uwe Kleine-König
2023-12-06 11:45 ` [PATCH v4 107/115] drm/bridge: ti-sn65dsi86: " Uwe Kleine-König
2024-01-22 15:19 ` Robert Foss
2023-12-06 11:45 ` [PATCH v4 108/115] leds: qcom-lpg: " Uwe Kleine-König
2023-12-07 17:05 ` Lee Jones
2023-12-06 11:45 ` [PATCH v4 110/115] pwm: Ensure that pwm_chips are allocated using pwmchip_alloc() Uwe Kleine-König
2023-12-06 11:45 ` [PATCH v4 111/115] pwm: Ensure a struct pwm has the same lifetime as its pwm_chip Uwe Kleine-König
2023-12-06 11:45 ` [PATCH v4 112/115] pwm: Ensure the memory backing a PWM chip isn't freed while used Uwe Kleine-König
2023-12-06 11:45 ` [PATCH v4 113/115] pwm: Add more locking Uwe Kleine-König
2023-12-06 11:45 ` [PATCH v4 114/115] pwm: Make pwmchip_[sg]et_drvdata a wrapper around dev_set_drvdata Uwe Kleine-König
2023-12-06 11:45 ` [PATCH v4 115/115] WIP: pwm: Add support for pwmchip devices for faster and easier userspace access Uwe Kleine-König
2023-12-08 15:41 ` [PATCH v4 000/115] pwm: Fix lifetime issues for pwm_chips Thierry Reding
2023-12-08 18:50 ` Uwe Kleine-König
2023-12-11 11:33 ` Thierry Reding
2023-12-11 12:18 ` Uwe Kleine-König
2023-12-12 21:05 ` Uwe Kleine-König
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54815ba81395492a7098755951d0ce7616a7f4fe.1701860672.git.u.kleine-koenig@pengutronix.de \
--to=u.kleine-koenig@pengutronix.de \
--cc=festevam@gmail.com \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-imx@nxp.com \
--cc=linux-pwm@vger.kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
--cc=thierry.reding@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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 read-only IMAP folder(s) and NNTP newsgroup(s).