drm/sun4i: Add support for D1 TCON TOP
authorSamuel Holland <samuel@sholland.org>
Sun, 24 Apr 2022 16:26:30 +0000 (11:26 -0500)
committerMaxime Ripard <maxime@cerno.tech>
Tue, 26 Apr 2022 12:25:43 +0000 (14:25 +0200)
D1 has a TCON TOP with TCON TV0 and DSI, but no TCON TV1. This puts the
DSI clock name at index 1 in clock-output-names. Support this by only
incrementing the index for clocks that are actually supported.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20220424162633.12369-13-samuel@sholland.org
drivers/gpu/drm/sun4i/sun8i_tcon_top.c

index 1b9b8b4..da97682 100644 (file)
@@ -189,22 +189,23 @@ static int sun8i_tcon_top_bind(struct device *dev, struct device *master,
         * if TVE is active on each TCON TV. If it is, mux should be switched
         * to TVE clock parent.
         */
+       i = 0;
        clk_data->hws[CLK_TCON_TOP_TV0] =
                sun8i_tcon_top_register_gate(dev, "tcon-tv0", regs,
                                             &tcon_top->reg_lock,
-                                            TCON_TOP_TCON_TV0_GATE, 0);
+                                            TCON_TOP_TCON_TV0_GATE, i++);
 
        if (quirks->has_tcon_tv1)
                clk_data->hws[CLK_TCON_TOP_TV1] =
                        sun8i_tcon_top_register_gate(dev, "tcon-tv1", regs,
                                                     &tcon_top->reg_lock,
-                                                    TCON_TOP_TCON_TV1_GATE, 1);
+                                                    TCON_TOP_TCON_TV1_GATE, i++);
 
        if (quirks->has_dsi)
                clk_data->hws[CLK_TCON_TOP_DSI] =
                        sun8i_tcon_top_register_gate(dev, "dsi", regs,
                                                     &tcon_top->reg_lock,
-                                                    TCON_TOP_TCON_DSI_GATE, 2);
+                                                    TCON_TOP_TCON_DSI_GATE, i++);
 
        for (i = 0; i < CLK_NUM; i++)
                if (IS_ERR(clk_data->hws[i])) {
@@ -272,6 +273,10 @@ static const struct sun8i_tcon_top_quirks sun8i_r40_tcon_top_quirks = {
        .has_dsi        = true,
 };
 
+static const struct sun8i_tcon_top_quirks sun20i_d1_tcon_top_quirks = {
+       .has_dsi        = true,
+};
+
 static const struct sun8i_tcon_top_quirks sun50i_h6_tcon_top_quirks = {
        /* Nothing special */
 };
@@ -283,6 +288,10 @@ const struct of_device_id sun8i_tcon_top_of_table[] = {
                .data = &sun8i_r40_tcon_top_quirks
        },
        {
+               .compatible = "allwinner,sun20i-d1-tcon-top",
+               .data = &sun20i_d1_tcon_top_quirks
+       },
+       {
                .compatible = "allwinner,sun50i-h6-tcon-top",
                .data = &sun50i_h6_tcon_top_quirks
        },