]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm: renesas: rz-du: Add atomic_pre_enable
authorChris Brandt <chris.brandt@renesas.com>
Wed, 21 May 2025 21:03:35 +0000 (17:03 -0400)
committerBiju Das <biju.das.jz@bp.renesas.com>
Sat, 24 May 2025 07:34:26 +0000 (08:34 +0100)
When drm_panel.prepare_prev_first is set to true in a panel driver, the
panel expects the MIPI DSI hardware to be already configured before the
panel's prepare function is called because it might need to send DCS
commands.

Signed-off-by: Chris Brandt <chris.brandt@renesas.com>
Tested-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Link: https://lore.kernel.org/r/20250521210335.3149065-1-chris.brandt@renesas.com
drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c

index 8ba0dde8d48227944263159313e184e581d9cb58..91e1a9adad7d636dae81f0a5d18c173988525716 100644 (file)
@@ -532,8 +532,8 @@ static int rzg2l_mipi_dsi_attach(struct drm_bridge *bridge,
                                 flags);
 }
 
-static void rzg2l_mipi_dsi_atomic_enable(struct drm_bridge *bridge,
-                                        struct drm_atomic_state *state)
+static void rzg2l_mipi_dsi_atomic_pre_enable(struct drm_bridge *bridge,
+                                            struct drm_atomic_state *state)
 {
        struct rzg2l_mipi_dsi *dsi = bridge_to_rzg2l_mipi_dsi(bridge);
        const struct drm_display_mode *mode;
@@ -550,6 +550,13 @@ static void rzg2l_mipi_dsi_atomic_enable(struct drm_bridge *bridge,
                return;
 
        rzg2l_mipi_dsi_set_display_timing(dsi, mode);
+}
+
+static void rzg2l_mipi_dsi_atomic_enable(struct drm_bridge *bridge,
+                                        struct drm_atomic_state *state)
+{
+       struct rzg2l_mipi_dsi *dsi = bridge_to_rzg2l_mipi_dsi(bridge);
+       int ret;
 
        ret = rzg2l_mipi_dsi_start_hs_clock(dsi);
        if (ret < 0)
@@ -593,6 +600,7 @@ static const struct drm_bridge_funcs rzg2l_mipi_dsi_bridge_ops = {
        .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
        .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
        .atomic_reset = drm_atomic_helper_bridge_reset,
+       .atomic_pre_enable = rzg2l_mipi_dsi_atomic_pre_enable,
        .atomic_enable = rzg2l_mipi_dsi_atomic_enable,
        .atomic_disable = rzg2l_mipi_dsi_atomic_disable,
        .mode_valid = rzg2l_mipi_dsi_bridge_mode_valid,