Re: [PATCH] media: v4l2-common: Always register clock with device-specific name
From: Laurent Pinchart
Date: Fri Mar 27 2026 - 14:09:42 EST
On Fri, Mar 27, 2026 at 06:52:12PM +0100, Paul Cercueil wrote:
> If we need to register a dummy fixed-frequency clock, always register it
> using a device-specific name.
>
> This supports the use case where a system has two of the same sensor,
> meaning two instances of the same driver, which previously both tried
> (and failed) to create a clock with the same name.
>
> Signed-off-by: Paul Cercueil <paul@xxxxxxxxxxxxxxx>
> ---
> drivers/media/v4l2-core/v4l2-common.c | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/media/v4l2-core/v4l2-common.c b/drivers/media/v4l2-core/v4l2-common.c
> index 554c591e1113..5f3295c3122a 100644
> --- a/drivers/media/v4l2-core/v4l2-common.c
> +++ b/drivers/media/v4l2-core/v4l2-common.c
> @@ -792,14 +792,11 @@ struct clk *__devm_v4l2_sensor_clk_get(struct device *dev, const char *id,
> if (ret)
> return ERR_PTR(ret == -EINVAL ? -EPROBE_DEFER : ret);
>
> - if (!id) {
> - clk_id = kasprintf(GFP_KERNEL, "clk-%s", dev_name(dev));
> - if (!clk_id)
> - return ERR_PTR(-ENOMEM);
> - id = clk_id;
> - }
> + clk_id = kasprintf(GFP_KERNEL, "clk-%s", dev_name(dev));
This will now fail if the same device needs to register two clocks. You
need to include the id in the name. Maybe something like
clk_id = kasprintf(GFP_KERNEL, "clk-%s-%s", dev_name(dev), id);
> + if (!clk_id)
> + return ERR_PTR(-ENOMEM);
>
> - clk_hw = devm_clk_hw_register_fixed_rate(dev, id, NULL, 0, rate);
> + clk_hw = devm_clk_hw_register_fixed_rate(dev, clk_id, NULL, 0, rate);
> if (IS_ERR(clk_hw))
> return ERR_CAST(clk_hw);
>
--
Regards,
Laurent Pinchart