@@ -1,6 +1,7 @@
// SPDX-License-Identifier: MIT
#include "amdgpu_dm/dc_edid.h"
#include "dc.h"
+#include <drm/drm_edid.h>
bool dc_edid_is_same_edid(struct dc_sink *prev_sink,
struct dc_sink *current_sink)
@@ -25,3 +26,9 @@ void dc_edid_copy_edid_to_dc(struct dc_sink *dc_sink,
memmove(dc_sink->dc_edid.raw_edid, (const uint8_t *) edid, len);
dc_sink->dc_edid.length = len;
}
+
+
+void dc_edid_sink_edid_free(struct dc_sink *sink)
+{
+ drm_edid_free(sink->drm_edid);
+}
@@ -9,5 +9,6 @@ bool dc_edid_is_same_edid(struct dc_sink *prev_sink,
struct dc_sink *current_sink);
void dc_edid_copy_edid_to_dc(struct dc_sink *dc_sink,
const void *edid, int len);
+void dc_edid_sink_edid_free(struct dc_sink *sink);
#endif /* __DC_EDID_H__ */
@@ -26,6 +26,7 @@
#include "dm_services.h"
#include "dm_helpers.h"
#include "core_types.h"
+#include "dc_edid.h"
/*******************************************************************************
* Private functions
@@ -65,6 +66,8 @@ void dc_sink_retain(struct dc_sink *sink)
static void dc_sink_free(struct kref *kref)
{
struct dc_sink *sink = container_of(kref, struct dc_sink, refcount);
+
+ dc_edid_sink_edid_free(sink);
kfree(sink->dc_container_id);
kfree(sink);
}
@@ -46,6 +46,8 @@
#include "dmub/inc/dmub_cmd.h"
+#include <drm/drm_edid.h>
+
struct abm_save_restore;
/* forward declaration */
@@ -2430,6 +2432,7 @@ struct scdc_caps {
struct dc_sink {
enum signal_type sink_signal;
struct dc_edid dc_edid; /* raw edid */
+ const struct drm_edid *drm_edid; /* Linux DRM edid*/
struct dc_edid_caps edid_caps; /* parse display caps */
struct dc_container_id *dc_container_id;
uint32_t dongle_max_pix_clk;
Add Linux opaque object to dc_sink for storing edid data cross driver, drm_edid. Also include the Linux call to free this object, the drm_edid_free() Signed-off-by: Melissa Wen <mwen@igalia.com> --- drivers/gpu/drm/amd/display/amdgpu_dm/dc_edid.c | 7 +++++++ drivers/gpu/drm/amd/display/amdgpu_dm/dc_edid.h | 1 + drivers/gpu/drm/amd/display/dc/core/dc_sink.c | 3 +++ drivers/gpu/drm/amd/display/dc/dc.h | 3 +++ 4 files changed, 14 insertions(+)