Make use of the recently introduced devm_clk_bulk_get_all_enabled()
helper to simplify the code a bit.

Signed-off-by: Cristian Ciocaltea <cristian.ciocal...@collabora.com>
---
 drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 28 +++++++++++++-------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c 
b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c
index 
c8b362cc2b95fd490029a9c0552ad9fbc5631d17..20ecc0729db9f5e321041ae7b3349bff5246a926
 100644
--- a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c
+++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c
@@ -214,17 +214,13 @@ MODULE_DEVICE_TABLE(of, dw_hdmi_qp_rockchip_dt_ids);
 static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,
                                    void *data)
 {
-       static const char * const clk_names[] = {
-               "pclk", "earc", "aud", "hdp", "hclk_vo1",
-               "ref" /* keep "ref" last */
-       };
        struct platform_device *pdev = to_platform_device(dev);
        struct dw_hdmi_qp_plat_data plat_data;
        struct drm_device *drm = data;
        struct drm_connector *connector;
        struct drm_encoder *encoder;
        struct rockchip_hdmi_qp *hdmi;
-       struct clk *clk;
+       struct clk_bulk_data *clks;
        int ret, irq, i;
        u32 val;
 
@@ -270,18 +266,22 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, 
struct device *master,
                return PTR_ERR(hdmi->vo_regmap);
        }
 
-       for (i = 0; i < ARRAY_SIZE(clk_names); i++) {
-               clk = devm_clk_get_enabled(hdmi->dev, clk_names[i]);
+       ret = devm_clk_bulk_get_all_enabled(hdmi->dev, &clks);
+       if (ret < 0) {
+               drm_err(hdmi, "Failed to get clocks: %d\n", ret);
+               return ret;
+       }
 
-               if (IS_ERR(clk)) {
-                       ret = PTR_ERR(clk);
-                       if (ret != -EPROBE_DEFER)
-                               drm_err(hdmi, "Failed to get %s clock: %d\n",
-                                       clk_names[i], ret);
-                       return ret;
+       for (i = 0; i < ret; i++) {
+               if (!strcmp(clks[i].id, "ref")) {
+                       hdmi->ref_clk = clks[1].clk;
+                       break;
                }
        }
-       hdmi->ref_clk = clk;
+       if (!hdmi->ref_clk) {
+               drm_err(hdmi, "Missing ref clock\n");
+               return -EINVAL;
+       }
 
        hdmi->enable_gpio = devm_gpiod_get_optional(hdmi->dev, "enable",
                                                    GPIOD_OUT_HIGH);

---
base-commit: 40384c840ea1944d7c5a392e8975ed088ecf0b37
change-id: 20241202-dw-hdmi-qp-rk-clk-bulk-3dfa0152e814

Reply via email to