The display-connector bridge is the last bridge in the chain on
platforms using drm_bridge_connector, and is responsible for the
physical connector interface.

Implement the atomic_sro_readout_state hook and wire up the default
drm_atomic_helper_bridge_compare_state() as the compare hook.

Signed-off-by: Maxime Ripard <[email protected]>
---
 drivers/gpu/drm/bridge/display-connector.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/bridge/display-connector.c 
b/drivers/gpu/drm/bridge/display-connector.c
index f7a5bfd9c075..ebd2691a88fe 100644
--- a/drivers/gpu/drm/bridge/display-connector.c
+++ b/drivers/gpu/drm/bridge/display-connector.c
@@ -13,10 +13,11 @@
 #include <linux/platform_device.h>
 #include <linux/regulator/consumer.h>
 #include <linux/workqueue.h>
 
 #include <drm/drm_atomic_helper.h>
+#include <drm/drm_atomic_sro_helper.h>
 #include <drm/drm_bridge.h>
 #include <drm/drm_edid.h>
 
 struct display_connector {
        struct drm_bridge       bridge;
@@ -204,10 +205,22 @@ static u32 *display_connector_get_input_bus_fmts(struct 
drm_bridge *bridge,
        return prev_bridge->funcs->atomic_get_input_bus_fmts(prev_bridge, 
prev_bridge_state,
                                                             crtc_state, 
conn_state, output_fmt,
                                                             num_input_fmts);
 }
 
+static int
+display_connector_readout_state(struct drm_bridge *bridge,
+                               struct drm_atomic_sro_state *state,
+                               struct drm_bridge_state *bridge_state,
+                               struct drm_crtc_state *crtc_state,
+                               struct drm_connector_state *conn_state)
+{
+       // TODO: Actually implement it
+
+       return 0;
+}
+
 static const struct drm_bridge_funcs display_connector_bridge_funcs = {
        .attach = display_connector_attach,
        .detect = display_connector_bridge_detect,
        .hpd_enable = display_connector_hpd_enable,
        .hpd_disable = display_connector_hpd_disable,
@@ -215,10 +228,12 @@ static const struct drm_bridge_funcs 
display_connector_bridge_funcs = {
        .atomic_get_output_bus_fmts = display_connector_get_output_bus_fmts,
        .atomic_get_input_bus_fmts = display_connector_get_input_bus_fmts,
        .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_sro_readout_state       = display_connector_readout_state,
+       .atomic_sro_compare_state       = 
drm_atomic_helper_bridge_compare_state,
 };
 
 static irqreturn_t display_connector_hpd_irq(int irq, void *arg)
 {
        struct display_connector *conn = arg;

-- 
2.54.0

Reply via email to