Introduce rzg2l_du_crtc_clk_get(), a helper wrapping devm_clk_get()
that appends a numeric index suffix to the clock name when hw_index is
non-zero (e.g. "vclk" -> "vclk1"), preserving backward compatibility
with existing devicetree bindings for index 0.

This is preparatory work for RZ/G3E that has two DU instances
where each requires independently named clock entries.

No functional change intended.

Signed-off-by: Tommaso Merciai <[email protected]>
---
v6->v7:
 - New patch.

 drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c 
b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c
index 88915babca12..622044f994e8 100644
--- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c
+++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c
@@ -377,6 +377,17 @@ static const struct drm_crtc_funcs crtc_funcs_rz = {
  * Initialization
  */
 
+static struct clk *rzg2l_du_crtc_clk_get(struct device *dev, const char *name,
+                                        unsigned int hw_index)
+{
+       char buf[16];
+
+       if (hw_index != 0)
+               snprintf(buf, sizeof(buf), "%s%u", name, hw_index);
+
+       return devm_clk_get(dev, hw_index == 0 ? name : buf);
+}
+
 int rzg2l_du_crtc_create(struct rzg2l_du_device *rcdu)
 {
        struct platform_device *pdev = to_platform_device(rcdu->dev);
@@ -396,19 +407,19 @@ int rzg2l_du_crtc_create(struct rzg2l_du_device *rcdu)
                return PTR_ERR(rcrtc->rstc);
        }
 
-       rcrtc->rzg2l_clocks.aclk = devm_clk_get(rcdu->dev, "aclk");
+       rcrtc->rzg2l_clocks.aclk = rzg2l_du_crtc_clk_get(rcdu->dev, "aclk", 0);
        if (IS_ERR(rcrtc->rzg2l_clocks.aclk)) {
                dev_err(rcdu->dev, "no axi clock for DU\n");
                return PTR_ERR(rcrtc->rzg2l_clocks.aclk);
        }
 
-       rcrtc->rzg2l_clocks.pclk = devm_clk_get(rcdu->dev, "pclk");
+       rcrtc->rzg2l_clocks.pclk = rzg2l_du_crtc_clk_get(rcdu->dev, "pclk", 0);
        if (IS_ERR(rcrtc->rzg2l_clocks.pclk)) {
                dev_err(rcdu->dev, "no peripheral clock for DU\n");
                return PTR_ERR(rcrtc->rzg2l_clocks.pclk);
        }
 
-       rcrtc->rzg2l_clocks.dclk = devm_clk_get(rcdu->dev, "vclk");
+       rcrtc->rzg2l_clocks.dclk = rzg2l_du_crtc_clk_get(rcdu->dev, "vclk", 0);
        if (IS_ERR(rcrtc->rzg2l_clocks.dclk)) {
                dev_err(rcdu->dev, "no video clock for DU\n");
                return PTR_ERR(rcrtc->rzg2l_clocks.dclk);
-- 
2.54.0

Reply via email to