There is an opaque obj in Linux/DRM to encapsulate edid data as
`drm_edid`. This obj isn't present in other platforms but we need to
pass it through DC when adding sink. To pass this data without
compromise the independence of DC code, make some DC functions accept
edid data as private options.

Signed-off-by: Melissa Wen <[email protected]>

---
v7: change add_remote_sink in link_service.h too
---
 drivers/gpu/drm/amd/display/dc/core/dc_link_exports.c | 9 ++++-----
 drivers/gpu/drm/amd/display/dc/dc.h                   | 9 ++++-----
 drivers/gpu/drm/amd/display/dc/inc/link_service.h     | 2 +-
 drivers/gpu/drm/amd/display/dc/link/link_detection.c  | 4 ++--
 drivers/gpu/drm/amd/display/dc/link/link_detection.h  | 9 ++++-----
 5 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_exports.c 
b/drivers/gpu/drm/amd/display/dc/core/dc_link_exports.c
index 9acd30019717..dd7a03ad8156 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_exports.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_exports.c
@@ -279,11 +279,10 @@ unsigned int dc_dp_trace_get_link_loss_count(struct 
dc_link *link)
        return link->dc->link_srv->dp_trace_get_link_loss_count(link);
 }
 
-struct dc_sink *dc_link_add_remote_sink(
-               struct dc_link *link,
-               const uint8_t *edid,
-               int len,
-               struct dc_sink_init_data *init_data)
+struct dc_sink *dc_link_add_remote_sink(struct dc_link *link,
+                                       const void *edid,
+                                       int len,
+                                       struct dc_sink_init_data *init_data)
 {
        return link->dc->link_srv->add_remote_sink(link, edid, len, init_data);
 }
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h 
b/drivers/gpu/drm/amd/display/dc/dc.h
index 5c19df8ef641..2efb9add13ff 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -2020,11 +2020,10 @@ struct dc_sink_init_data;
  * @len - size of the edid in byte
  * @init_data -
  */
-struct dc_sink *dc_link_add_remote_sink(
-               struct dc_link *dc_link,
-               const uint8_t *edid,
-               int len,
-               struct dc_sink_init_data *init_data);
+struct dc_sink *dc_link_add_remote_sink(struct dc_link *dc_link,
+                                       const void *edid,
+                                       int len,
+                                       struct dc_sink_init_data *init_data);
 
 /* Remove remote sink from a link with dc_connection_mst_branch connection 
type.
  * @link - link the sink should be removed from
diff --git a/drivers/gpu/drm/amd/display/dc/inc/link_service.h 
b/drivers/gpu/drm/amd/display/dc/inc/link_service.h
index 1e34e84160aa..f1a6002b0182 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/link_service.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/link_service.h
@@ -109,7 +109,7 @@ struct link_service {
                        enum dc_connection_type *type);
        struct dc_sink *(*add_remote_sink)(
                        struct dc_link *link,
-                       const uint8_t *edid,
+                       const void *edid,
                        int len,
                        struct dc_sink_init_data *init_data);
        void (*remove_remote_sink)(struct dc_link *link, struct dc_sink *sink);
diff --git a/drivers/gpu/drm/amd/display/dc/link/link_detection.c 
b/drivers/gpu/drm/amd/display/dc/link/link_detection.c
index c466c1404ed1..d2528e35ae0b 100644
--- a/drivers/gpu/drm/amd/display/dc/link/link_detection.c
+++ b/drivers/gpu/drm/amd/display/dc/link/link_detection.c
@@ -1540,7 +1540,7 @@ static bool link_add_remote_sink_helper(struct dc_link 
*dc_link, struct dc_sink
 
 struct dc_sink *link_add_remote_sink(
                struct dc_link *link,
-               const uint8_t *edid,
+               const void *edid,
                int len,
                struct dc_sink_init_data *init_data)
 {
@@ -1567,7 +1567,7 @@ struct dc_sink *link_add_remote_sink(
        if (!dc_sink)
                return NULL;
 
-       memmove(dc_sink->dc_edid.raw_edid, edid, len);
+       memmove(dc_sink->dc_edid.raw_edid, (const uint8_t *) edid, len);
        dc_sink->dc_edid.length = len;
 
        if (!link_add_remote_sink_helper(
diff --git a/drivers/gpu/drm/amd/display/dc/link/link_detection.h 
b/drivers/gpu/drm/amd/display/dc/link/link_detection.h
index 1ab29476060b..d9097c1144ba 100644
--- a/drivers/gpu/drm/amd/display/dc/link/link_detection.h
+++ b/drivers/gpu/drm/amd/display/dc/link/link_detection.h
@@ -29,11 +29,10 @@
 bool link_detect(struct dc_link *link, enum dc_detect_reason reason);
 bool link_detect_connection_type(struct dc_link *link,
                enum dc_connection_type *type);
-struct dc_sink *link_add_remote_sink(
-               struct dc_link *link,
-               const uint8_t *edid,
-               int len,
-               struct dc_sink_init_data *init_data);
+struct dc_sink *link_add_remote_sink(struct dc_link *link,
+                                    const void *edid,
+                                    int len,
+                                    struct dc_sink_init_data *init_data);
 void link_remove_remote_sink(struct dc_link *link, struct dc_sink *sink);
 bool link_reset_cur_dp_mst_topology(struct dc_link *link);
 const struct dc_link_status *link_get_status(const struct dc_link *link);
-- 
2.51.0

Reply via email to