Get the display mode settings via mode_set bridge function
instead of explicitly de-reference.

Signed-off-by: Jagan Teki <ja...@amarulasolutions.com>
---
Changes for v5:
- new patch

 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 12 +++++++++++-
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h |  1 +
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c 
b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
index a6a272b55f77..731af31e2bde 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c
@@ -718,7 +718,7 @@ static void sun6i_dsi_bridge_atomic_enable(struct 
drm_bridge *bridge,
                                           struct drm_bridge_state 
*old_bridge_state)
 {
        struct sun6i_dsi *dsi = bridge_to_sun6i_dsi(bridge);
-       struct drm_display_mode *mode = 
&bridge->encoder->crtc->state->adjusted_mode;
+       struct drm_display_mode *mode = &dsi->mode;
        struct mipi_dsi_device *device = dsi->device;
        union phy_configure_opts opts = { };
        struct phy_configure_opts_mipi_dphy *cfg = &opts.mipi_dphy;
@@ -854,6 +854,15 @@ static const struct drm_connector_funcs 
sun6i_dsi_connector_funcs = {
        .atomic_destroy_state   = drm_atomic_helper_connector_destroy_state,
 };
 
+static void sun6i_dsi_bridge_mode_set(struct drm_bridge *bridge,
+                                     const struct drm_display_mode *mode,
+                                     const struct drm_display_mode 
*adjusted_mode)
+{
+       struct sun6i_dsi *dsi = bridge_to_sun6i_dsi(bridge);
+
+       drm_mode_copy(&dsi->mode, adjusted_mode);
+}
+
 static int sun6i_dsi_bridge_attach(struct drm_bridge *bridge,
                                   enum drm_bridge_attach_flags flags)
 {
@@ -872,6 +881,7 @@ static const struct drm_bridge_funcs sun6i_dsi_bridge_funcs 
= {
        .atomic_reset           = drm_atomic_helper_bridge_reset,
        .atomic_enable          = sun6i_dsi_bridge_atomic_enable,
        .atomic_disable         = sun6i_dsi_bridge_atomic_disable,
+       .mode_set               = sun6i_dsi_bridge_mode_set,
        .attach                 = sun6i_dsi_bridge_attach,
 };
 
diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h 
b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h
index d269304691c9..acdd586a4157 100644
--- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h
+++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h
@@ -20,6 +20,7 @@ struct sun6i_dsi {
        struct drm_connector    connector;
        struct drm_encoder      encoder;
        struct mipi_dsi_host    host;
+       struct drm_display_mode mode;
 
        struct clk              *bus_clk;
        struct clk              *mod_clk;
-- 
2.25.1

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/linux-sunxi/20211122065223.88059-5-jagan%40amarulasolutions.com.

Reply via email to