[PATCH] pinctrl: sophgo: allocate power_cfg with priv
Rosen Penev <[email protected]> Thu, 30 Apr 2026 15:04:09 -0700
| Newsgroups | dev.linux.lists.sophgo,org.kernel.vger.linux-gpio,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Use a flexible array member to combine allocations and simplify code slightly. Signed-off-by: Rosen Penev <[email protected]> --- drivers/pinctrl/sophgo/pinctrl-cv18xx.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/pinctrl/sophgo/pinctrl-cv18xx.c b/drivers/pinctrl/sophgo/pinctrl-cv18xx.c index c3a2dcf71f2a..154ba9a4f08c 100644 --- a/drivers/pinctrl/sophgo/pinctrl-cv18xx.c +++ b/drivers/pinctrl/sophgo/pinctrl-cv18xx.c @@ -27,8 +27,8 @@ #include "pinctrl-cv18xx.h" struct cv1800_priv { - u32 *power_cfg; void __iomem *regs[2]; + u32 power_cfg[]; }; static unsigned int cv1800_dt_get_pin_mux(u32 value) @@ -417,15 +417,11 @@ static int cv1800_pinctrl_init(struct platform_device *pdev, const struct sophgo_pinctrl_data *pctrl_data = pctrl->data; struct cv1800_priv *priv; - priv = devm_kzalloc(&pdev->dev, sizeof(struct cv1800_priv), GFP_KERNEL); + priv = devm_kzalloc(&pdev->dev, struct_size(priv, power_cfg, pctrl_data->npds), + GFP_KERNEL); if (!priv) return -ENOMEM; - priv->power_cfg = devm_kcalloc(&pdev->dev, pctrl_data->npds, - sizeof(u32), GFP_KERNEL); - if (!priv->power_cfg) - return -ENOMEM; - priv->regs[0] = devm_platform_ioremap_resource_byname(pdev, "sys"); if (IS_ERR(priv->regs[0])) return PTR_ERR(priv->regs[0]); -- 2.54.0