dri-devel Archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/15] drm: struct drm_edid conversions
@ 2024-04-16 13:22 Jani Nikula
  2024-04-16 13:22 ` [PATCH 01/15] drm/panel: simple: switch to struct drm_edid Jani Nikula
                   ` (15 more replies)
  0 siblings, 16 replies; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel; +Cc: Jani Nikula

I've these laying in a branch for a while, maybe let's try to make some
forward progress in this front.

Build tested only, on x86, arm, and arm64.

BR,
Jani.


Jani Nikula (15):
  drm/panel: simple: switch to struct drm_edid
  drm/panel-samsung-atna33xc20: switch to struct drm_edid
  drm/panel-edp: switch to struct drm_edid
  drm/bridge/analogix/anx6345: switch to struct drm_edid
  drm/bridge/analogix/anx78xx: switch to struct drm_edid
  drm/sun4i: hdmi: switch to struct drm_edid
  drm/vc4: hdmi: switch to struct drm_edid
  drm/bridge: anx7625: use struct drm_edid more
  drm/gud: switch to struct drm_edid
  drm/i2c: tda998x: switch to struct drm_edid
  drm/bochs: switch to struct drm_edid
  drm/virtio: switch to struct drm_edid
  drm/rockchip: cdn-dp: switch to struct drm_edid
  drm/rockchip: inno_hdmi: switch to struct drm_edid
  drm/rockchip: rk3066_hdmi: switch to struct drm_edid

 .../drm/bridge/analogix/analogix-anx6345.c    | 15 +++---
 .../drm/bridge/analogix/analogix-anx78xx.c    | 23 +++++-----
 drivers/gpu/drm/bridge/analogix/anx7625.c     | 26 +++++++----
 drivers/gpu/drm/bridge/analogix/anx7625.h     | 10 +---
 drivers/gpu/drm/gud/gud_connector.c           | 12 ++---
 drivers/gpu/drm/i2c/tda998x_drv.c             | 19 ++++----
 drivers/gpu/drm/panel/panel-edp.c             | 17 ++++---
 .../gpu/drm/panel/panel-samsung-atna33xc20.c  | 13 ++++--
 drivers/gpu/drm/panel/panel-simple.c          | 15 +++---
 drivers/gpu/drm/rockchip/cdn-dp-core.c        | 33 +++++++------
 drivers/gpu/drm/rockchip/cdn-dp-core.h        |  2 +-
 drivers/gpu/drm/rockchip/inno_hdmi.c          | 12 ++---
 drivers/gpu/drm/rockchip/rk3066_hdmi.c        | 12 ++---
 drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c        | 18 +++++---
 drivers/gpu/drm/tiny/bochs.c                  | 23 ++++------
 drivers/gpu/drm/vc4/vc4_hdmi.c                | 46 ++++++++++---------
 drivers/gpu/drm/virtio/virtgpu_display.c      | 10 ++--
 drivers/gpu/drm/virtio/virtgpu_drv.h          |  2 +-
 drivers/gpu/drm/virtio/virtgpu_vq.c           | 12 ++---
 19 files changed, 167 insertions(+), 153 deletions(-)

-- 
2.39.2


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 01/15] drm/panel: simple: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-16 17:41   ` Neil Armstrong
  2024-04-16 13:22 ` [PATCH 02/15] drm/panel-samsung-atna33xc20: " Jani Nikula
                   ` (14 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel; +Cc: Jani Nikula, Neil Armstrong, Jessica Zhang, Sam Ravnborg

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Jessica Zhang <quic_jesszhan@quicinc.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
---
 drivers/gpu/drm/panel/panel-simple.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index 7215cf767898..d3264fa2f3ff 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -151,7 +151,7 @@ struct panel_simple {
 
 	struct gpio_desc *enable_gpio;
 
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 
 	struct drm_display_mode override_mode;
 
@@ -309,8 +309,8 @@ static int panel_simple_suspend(struct device *dev)
 	regulator_disable(p->supply);
 	p->unprepared_time = ktime_get_boottime();
 
-	kfree(p->edid);
-	p->edid = NULL;
+	drm_edid_free(p->drm_edid);
+	p->drm_edid = NULL;
 
 	return 0;
 }
@@ -399,11 +399,12 @@ static int panel_simple_get_modes(struct drm_panel *panel,
 	if (p->ddc) {
 		pm_runtime_get_sync(panel->dev);
 
-		if (!p->edid)
-			p->edid = drm_get_edid(connector, p->ddc);
+		if (!p->drm_edid)
+			p->drm_edid = drm_edid_read_ddc(connector, p->ddc);
 
-		if (p->edid)
-			num += drm_add_edid_modes(connector, p->edid);
+		drm_edid_connector_update(connector, p->drm_edid);
+
+		num += drm_edid_connector_add_modes(connector);
 
 		pm_runtime_mark_last_busy(panel->dev);
 		pm_runtime_put_autosuspend(panel->dev);
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 02/15] drm/panel-samsung-atna33xc20: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
  2024-04-16 13:22 ` [PATCH 01/15] drm/panel: simple: switch to struct drm_edid Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-16 17:41   ` Neil Armstrong
  2024-04-16 13:22 ` [PATCH 03/15] drm/panel-edp: " Jani Nikula
                   ` (13 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel; +Cc: Jani Nikula, Neil Armstrong, Jessica Zhang, Sam Ravnborg

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Jessica Zhang <quic_jesszhan@quicinc.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
---
 drivers/gpu/drm/panel/panel-samsung-atna33xc20.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c b/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c
index 6828a4f24d14..a9f0d214a900 100644
--- a/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c
+++ b/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c
@@ -36,7 +36,7 @@ struct atana33xc20_panel {
 	struct gpio_desc *el_on3_gpio;
 	struct drm_dp_aux *aux;
 
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 
 	ktime_t powered_off_time;
 	ktime_t powered_on_time;
@@ -253,9 +253,12 @@ static int atana33xc20_get_modes(struct drm_panel *panel,
 
 	pm_runtime_get_sync(panel->dev);
 
-	if (!p->edid)
-		p->edid = drm_get_edid(connector, &aux_ep->aux->ddc);
-	num = drm_add_edid_modes(connector, p->edid);
+	if (!p->drm_edid)
+		p->drm_edid = drm_edid_read_ddc(connector, &aux_ep->aux->ddc);
+
+	drm_edid_connector_update(connector, p->drm_edid);
+
+	num = drm_edid_connector_add_modes(connector);
 
 	pm_runtime_mark_last_busy(panel->dev);
 	pm_runtime_put_autosuspend(panel->dev);
@@ -351,7 +354,7 @@ static void atana33xc20_remove(struct dp_aux_ep_device *aux_ep)
 	drm_panel_disable(&panel->base);
 	drm_panel_unprepare(&panel->base);
 
-	kfree(panel->edid);
+	drm_edid_free(panel->drm_edid);
 }
 
 static void atana33xc20_shutdown(struct dp_aux_ep_device *aux_ep)
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 03/15] drm/panel-edp: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
  2024-04-16 13:22 ` [PATCH 01/15] drm/panel: simple: switch to struct drm_edid Jani Nikula
  2024-04-16 13:22 ` [PATCH 02/15] drm/panel-samsung-atna33xc20: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-16 17:43   ` Neil Armstrong
  2024-04-16 13:22 ` [PATCH 04/15] drm/bridge/analogix/anx6345: " Jani Nikula
                   ` (12 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel
  Cc: Jani Nikula, Douglas Anderson, Neil Armstrong, Jessica Zhang,
	Sam Ravnborg

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Douglas Anderson <dianders@chromium.org>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Jessica Zhang <quic_jesszhan@quicinc.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
---
 drivers/gpu/drm/panel/panel-edp.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c
index d29bacf25c12..ece1e3553c1f 100644
--- a/drivers/gpu/drm/panel/panel-edp.c
+++ b/drivers/gpu/drm/panel/panel-edp.c
@@ -242,7 +242,7 @@ struct panel_edp {
 
 	const struct edp_panel_entry *detected_panel;
 
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 
 	struct drm_display_mode override_mode;
 
@@ -617,13 +617,16 @@ static int panel_edp_get_modes(struct drm_panel *panel,
 	if (p->ddc) {
 		pm_runtime_get_sync(panel->dev);
 
-		if (!p->edid)
-			p->edid = drm_get_edid(connector, p->ddc);
+		if (!p->drm_edid)
+			p->drm_edid = drm_edid_read_ddc(connector, p->ddc);
+
+		drm_edid_connector_update(connector, p->drm_edid);
+
 		/*
 		 * If both edid and hard-coded modes exists, skip edid modes to
 		 * avoid multiple preferred modes.
 		 */
-		if (p->edid && !has_hard_coded_modes) {
+		if (p->drm_edid && !has_hard_coded_modes) {
 			if (has_override_edid_mode) {
 				/*
 				 * override_edid_mode is specified. Use
@@ -632,7 +635,7 @@ static int panel_edp_get_modes(struct drm_panel *panel,
 				num += panel_edp_override_edid_mode(p, connector,
 						p->detected_panel->override_edid_mode);
 			} else {
-				num += drm_add_edid_modes(connector, p->edid);
+				num += drm_edid_connector_add_modes(connector);
 			}
 		}
 
@@ -981,8 +984,8 @@ static void panel_edp_remove(struct device *dev)
 	if (panel->ddc && (!panel->aux || panel->ddc != &panel->aux->ddc))
 		put_device(&panel->ddc->dev);
 
-	kfree(panel->edid);
-	panel->edid = NULL;
+	drm_edid_free(panel->drm_edid);
+	panel->drm_edid = NULL;
 }
 
 static void panel_edp_shutdown(struct device *dev)
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 04/15] drm/bridge/analogix/anx6345: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (2 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 03/15] drm/panel-edp: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-16 13:22 ` [PATCH 05/15] drm/bridge/analogix/anx78xx: " Jani Nikula
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel
  Cc: Jani Nikula, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Robert Foss <rfoss@kernel.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
---
 .../gpu/drm/bridge/analogix/analogix-anx6345.c    | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
index c9e35731e6a1..42ab6014fe12 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
@@ -47,7 +47,7 @@ struct anx6345 {
 	struct drm_dp_aux aux;
 	struct drm_bridge bridge;
 	struct i2c_client *client;
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 	struct drm_connector connector;
 	struct drm_panel *panel;
 	struct regulator *dvdd12;
@@ -458,7 +458,7 @@ static int anx6345_get_modes(struct drm_connector *connector)
 
 	mutex_lock(&anx6345->lock);
 
-	if (!anx6345->edid) {
+	if (!anx6345->drm_edid) {
 		if (!anx6345->powered) {
 			anx6345_poweron(anx6345);
 			power_off = true;
@@ -470,19 +470,18 @@ static int anx6345_get_modes(struct drm_connector *connector)
 			goto unlock;
 		}
 
-		anx6345->edid = drm_get_edid(connector, &anx6345->aux.ddc);
-		if (!anx6345->edid)
+		anx6345->drm_edid = drm_edid_read_ddc(connector, &anx6345->aux.ddc);
+		if (!anx6345->drm_edid)
 			DRM_ERROR("Failed to read EDID from panel\n");
 
-		err = drm_connector_update_edid_property(connector,
-							 anx6345->edid);
+		err = drm_edid_connector_update(connector, anx6345->drm_edid);
 		if (err) {
 			DRM_ERROR("Failed to update EDID property: %d\n", err);
 			goto unlock;
 		}
 	}
 
-	num_modes += drm_add_edid_modes(connector, anx6345->edid);
+	num_modes += drm_edid_connector_add_modes(connector);
 
 	/* Driver currently supports only 6bpc */
 	connector->display_info.bpc = 6;
@@ -793,7 +792,7 @@ static void anx6345_i2c_remove(struct i2c_client *client)
 
 	unregister_i2c_dummy_clients(anx6345);
 
-	kfree(anx6345->edid);
+	drm_edid_free(anx6345->drm_edid);
 
 	mutex_destroy(&anx6345->lock);
 }
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 05/15] drm/bridge/analogix/anx78xx: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (3 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 04/15] drm/bridge/analogix/anx6345: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-16 13:22 ` [PATCH 06/15] drm/sun4i: hdmi: " Jani Nikula
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel
  Cc: Jani Nikula, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Robert Foss <rfoss@kernel.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
---
 .../drm/bridge/analogix/analogix-anx78xx.c    | 23 ++++++++++---------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
index 5748a8581af4..ae79bcd8fa55 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
@@ -67,7 +67,7 @@ struct anx78xx {
 	struct drm_dp_aux aux;
 	struct drm_bridge bridge;
 	struct i2c_client *client;
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 	struct drm_connector connector;
 	struct anx78xx_platform_data pdata;
 	struct mutex lock;
@@ -830,8 +830,8 @@ static int anx78xx_get_modes(struct drm_connector *connector)
 	if (WARN_ON(!anx78xx->powered))
 		return 0;
 
-	if (anx78xx->edid)
-		return drm_add_edid_modes(connector, anx78xx->edid);
+	if (anx78xx->drm_edid)
+		return drm_edid_connector_add_modes(connector);
 
 	mutex_lock(&anx78xx->lock);
 
@@ -841,20 +841,21 @@ static int anx78xx_get_modes(struct drm_connector *connector)
 		goto unlock;
 	}
 
-	anx78xx->edid = drm_get_edid(connector, &anx78xx->aux.ddc);
-	if (!anx78xx->edid) {
+	anx78xx->drm_edid = drm_edid_read_ddc(connector, &anx78xx->aux.ddc);
+
+	err = drm_edid_connector_update(connector, anx78xx->drm_edid);
+
+	if (!anx78xx->drm_edid) {
 		DRM_ERROR("Failed to read EDID\n");
 		goto unlock;
 	}
 
-	err = drm_connector_update_edid_property(connector,
-						 anx78xx->edid);
 	if (err) {
 		DRM_ERROR("Failed to update EDID property: %d\n", err);
 		goto unlock;
 	}
 
-	num_modes = drm_add_edid_modes(connector, anx78xx->edid);
+	num_modes = drm_edid_connector_add_modes(connector);
 
 unlock:
 	mutex_unlock(&anx78xx->lock);
@@ -1091,8 +1092,8 @@ static bool anx78xx_handle_common_int_4(struct anx78xx *anx78xx, u8 irq)
 		event = true;
 		anx78xx_poweroff(anx78xx);
 		/* Free cached EDID */
-		kfree(anx78xx->edid);
-		anx78xx->edid = NULL;
+		drm_edid_free(anx78xx->drm_edid);
+		anx78xx->drm_edid = NULL;
 	} else if (irq & SP_HPD_PLUG) {
 		DRM_DEBUG_KMS("IRQ: Hot plug detect - cable plug\n");
 		event = true;
@@ -1363,7 +1364,7 @@ static void anx78xx_i2c_remove(struct i2c_client *client)
 
 	unregister_i2c_dummy_clients(anx78xx);
 
-	kfree(anx78xx->edid);
+	drm_edid_free(anx78xx->drm_edid);
 }
 
 static const struct of_device_id anx78xx_match_table[] = {
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 06/15] drm/sun4i: hdmi: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (4 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 05/15] drm/bridge/analogix/anx78xx: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-18 11:51   ` Maxime Ripard
  2024-04-16 13:22 ` [PATCH 07/15] drm/vc4: " Jani Nikula
                   ` (9 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel
  Cc: Jani Nikula, Maxime Ripard, Chen-Yu Tsai, Jernej Skrabec,
	Samuel Holland, linux-arm-kernel, linux-sunxi

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Maxime Ripard <mripard@kernel.org>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Samuel Holland <samuel@sholland.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-sunxi@lists.linux.dev
---
 drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
index 2d1880c61b50..245b34adca5a 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
@@ -214,20 +214,24 @@ sun4i_hdmi_connector_mode_valid(struct drm_connector *connector,
 static int sun4i_hdmi_get_modes(struct drm_connector *connector)
 {
 	struct sun4i_hdmi *hdmi = drm_connector_to_sun4i_hdmi(connector);
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 	int ret;
 
-	edid = drm_get_edid(connector, hdmi->ddc_i2c ?: hdmi->i2c);
-	if (!edid)
+	drm_edid = drm_edid_read_ddc(connector, hdmi->ddc_i2c ?: hdmi->i2c);
+
+	drm_edid_connector_update(connector, drm_edid);
+	cec_s_phys_addr(hdmi->cec_adap,
+			connector->display_info.source_physical_address, false);
+
+	if (!drm_edid)
 		return 0;
 
 	DRM_DEBUG_DRIVER("Monitor is %s monitor\n",
 			 connector->display_info.is_hdmi ? "an HDMI" : "a DVI");
 
-	drm_connector_update_edid_property(connector, edid);
-	cec_s_phys_addr_from_edid(hdmi->cec_adap, edid);
-	ret = drm_add_edid_modes(connector, edid);
-	kfree(edid);
+
+	ret = drm_edid_connector_add_modes(connector);
+	drm_edid_free(drm_edid);
 
 	return ret;
 }
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 07/15] drm/vc4: hdmi: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (5 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 06/15] drm/sun4i: hdmi: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-18 11:51   ` Maxime Ripard
  2024-04-16 13:22 ` [PATCH 08/15] drm/bridge: anx7625: use struct drm_edid more Jani Nikula
                   ` (8 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel
  Cc: Jani Nikula, Maxime Ripard, Maarten Lankhorst, Thomas Zimmermann

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Maxime Ripard <mripard@kernel.org>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 46 ++++++++++++++++++----------------
 1 file changed, 25 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 5f8d51b29370..d30f8e8e8967 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -412,15 +412,14 @@ static void vc4_hdmi_handle_hotplug(struct vc4_hdmi *vc4_hdmi,
 				    enum drm_connector_status status)
 {
 	struct drm_connector *connector = &vc4_hdmi->connector;
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 	int ret;
 
 	/*
-	 * NOTE: This function should really be called with
-	 * vc4_hdmi->mutex held, but doing so results in reentrancy
-	 * issues since cec_s_phys_addr_from_edid might call
-	 * .adap_enable, which leads to that funtion being called with
-	 * our mutex held.
+	 * NOTE: This function should really be called with vc4_hdmi->mutex
+	 * held, but doing so results in reentrancy issues since
+	 * cec_s_phys_addr() might call .adap_enable, which leads to that
+	 * funtion being called with our mutex held.
 	 *
 	 * A similar situation occurs with vc4_hdmi_reset_link() that
 	 * will call into our KMS hooks if the scrambling was enabled.
@@ -435,12 +434,16 @@ static void vc4_hdmi_handle_hotplug(struct vc4_hdmi *vc4_hdmi,
 		return;
 	}
 
-	edid = drm_get_edid(connector, vc4_hdmi->ddc);
-	if (!edid)
+	drm_edid = drm_edid_read_ddc(connector, vc4_hdmi->ddc);
+
+	drm_edid_connector_update(connector, drm_edid);
+	cec_s_phys_addr(vc4_hdmi->cec_adap,
+			connector->display_info.source_physical_address, false);
+
+	if (!drm_edid)
 		return;
 
-	cec_s_phys_addr_from_edid(vc4_hdmi->cec_adap, edid);
-	kfree(edid);
+	drm_edid_free(drm_edid);
 
 	for (;;) {
 		ret = vc4_hdmi_reset_link(connector, ctx);
@@ -492,28 +495,29 @@ static int vc4_hdmi_connector_get_modes(struct drm_connector *connector)
 {
 	struct vc4_hdmi *vc4_hdmi = connector_to_vc4_hdmi(connector);
 	struct vc4_dev *vc4 = to_vc4_dev(connector->dev);
+	const struct drm_edid *drm_edid;
 	int ret = 0;
-	struct edid *edid;
 
 	/*
-	 * NOTE: This function should really take vc4_hdmi->mutex, but
-	 * doing so results in reentrancy issues since
-	 * cec_s_phys_addr_from_edid might call .adap_enable, which
-	 * leads to that funtion being called with our mutex held.
+	 * NOTE: This function should really take vc4_hdmi->mutex, but doing so
+	 * results in reentrancy issues since cec_s_phys_addr() might call
+	 * .adap_enable, which leads to that funtion being called with our mutex
+	 * held.
 	 *
 	 * Concurrency isn't an issue at the moment since we don't share
 	 * any state with any of the other frameworks so we can ignore
 	 * the lock for now.
 	 */
 
-	edid = drm_get_edid(connector, vc4_hdmi->ddc);
-	cec_s_phys_addr_from_edid(vc4_hdmi->cec_adap, edid);
-	if (!edid)
+	drm_edid = drm_edid_read_ddc(connector, vc4_hdmi->ddc);
+	drm_edid_connector_update(connector, drm_edid);
+	cec_s_phys_addr(vc4_hdmi->cec_adap,
+			connector->display_info.source_physical_address, false);
+	if (!drm_edid)
 		return 0;
 
-	drm_connector_update_edid_property(connector, edid);
-	ret = drm_add_edid_modes(connector, edid);
-	kfree(edid);
+	ret = drm_edid_connector_add_modes(connector);
+	drm_edid_free(drm_edid);
 
 	if (!vc4->hvs->vc5_hdmi_enable_hdmi_20) {
 		struct drm_device *drm = connector->dev;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 08/15] drm/bridge: anx7625: use struct drm_edid more
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (6 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 07/15] drm/vc4: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-16 13:22 ` [PATCH 09/15] drm/gud: switch to struct drm_edid Jani Nikula
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel
  Cc: Jani Nikula, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Robert Foss <rfoss@kernel.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
---
 drivers/gpu/drm/bridge/analogix/anx7625.c | 26 +++++++++++++++--------
 drivers/gpu/drm/bridge/analogix/anx7625.h | 10 ++-------
 2 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 9d96d28d6fe8..efee71a450f3 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -464,9 +464,11 @@ static int anx7625_odfc_config(struct anx7625_data *ctx,
  */
 static int anx7625_set_k_value(struct anx7625_data *ctx)
 {
-	struct edid *edid = (struct edid *)ctx->slimport_edid_p.edid_raw_data;
+	struct drm_edid_product_id id;
 
-	if (edid->mfg_id[0] == IVO_MID0 && edid->mfg_id[1] == IVO_MID1)
+	drm_edid_get_product_id(ctx->cached_drm_edid, &id);
+
+	if (be16_to_cpu(id.manufacturer_name) == IVO_MID)
 		return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
 					 MIPI_DIGITAL_ADJ_1, 0x3B);
 
@@ -1526,7 +1528,8 @@ static int anx7625_wait_hpd_asserted(struct drm_dp_aux *aux,
 
 static void anx7625_remove_edid(struct anx7625_data *ctx)
 {
-	ctx->slimport_edid_p.edid_block_num = -1;
+	drm_edid_free(ctx->cached_drm_edid);
+	ctx->cached_drm_edid = NULL;
 }
 
 static void anx7625_dp_adjust_swing(struct anx7625_data *ctx)
@@ -1787,27 +1790,32 @@ static ssize_t anx7625_aux_transfer(struct drm_dp_aux *aux,
 static const struct drm_edid *anx7625_edid_read(struct anx7625_data *ctx)
 {
 	struct device *dev = ctx->dev;
-	struct s_edid_data *p_edid = &ctx->slimport_edid_p;
+	u8 *edid_buf;
 	int edid_num;
 
-	if (ctx->slimport_edid_p.edid_block_num > 0)
+	if (ctx->cached_drm_edid)
 		goto out;
 
+	edid_buf = kmalloc(FOUR_BLOCK_SIZE, GFP_KERNEL);
+	if (!edid_buf)
+		return NULL;
+
 	pm_runtime_get_sync(dev);
 	_anx7625_hpd_polling(ctx, 5000 * 100);
-	edid_num = sp_tx_edid_read(ctx, p_edid->edid_raw_data);
+	edid_num = sp_tx_edid_read(ctx, edid_buf);
 	pm_runtime_put_sync(dev);
 
 	if (edid_num < 1) {
 		DRM_DEV_ERROR(dev, "Fail to read EDID: %d\n", edid_num);
+		kfree(edid_buf);
 		return NULL;
 	}
 
-	p_edid->edid_block_num = edid_num;
+	ctx->cached_drm_edid = drm_edid_alloc(edid_buf, FOUR_BLOCK_SIZE);
+	kfree(edid_buf);
 
 out:
-	return drm_edid_alloc(ctx->slimport_edid_p.edid_raw_data,
-			      FOUR_BLOCK_SIZE);
+	return drm_edid_dup(ctx->cached_drm_edid);
 }
 
 static enum drm_connector_status anx7625_sink_detect(struct anx7625_data *ctx)
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
index 39ed35d33836..eb5580f1ab2f 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.h
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
@@ -286,8 +286,7 @@
 
 #define  MIPI_LANE_CTRL_10               0x0F
 #define  MIPI_DIGITAL_ADJ_1     0x1B
-#define  IVO_MID0               0x26
-#define  IVO_MID1               0xCF
+#define  IVO_MID                0x26CF
 
 #define  MIPI_PLL_M_NUM_23_16   0x1E
 #define  MIPI_PLL_M_NUM_15_8    0x1F
@@ -417,11 +416,6 @@ enum audio_wd_len {
 #define EDID_TRY_CNT	3
 #define SUPPORT_PIXEL_CLOCK	300000
 
-struct s_edid_data {
-	int edid_block_num;
-	u8 edid_raw_data[FOUR_BLOCK_SIZE];
-};
-
 /***************** Display End *****************/
 
 #define MAX_LANES_SUPPORT	4
@@ -466,7 +460,7 @@ struct anx7625_data {
 	struct anx7625_i2c_client i2c;
 	struct i2c_client *last_client;
 	struct timer_list hdcp_timer;
-	struct s_edid_data slimport_edid_p;
+	const struct drm_edid *cached_drm_edid;
 	struct device *codec_dev;
 	hdmi_codec_plugged_cb plugged_cb;
 	struct work_struct work;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 09/15] drm/gud: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (7 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 08/15] drm/bridge: anx7625: use struct drm_edid more Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-17 15:26   ` Noralf Trønnes
  2024-04-16 13:22 ` [PATCH 10/15] drm/i2c: tda998x: " Jani Nikula
                   ` (6 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel; +Cc: Jani Nikula, Noralf Trønnes

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: "Noralf Trønnes" <noralf@tronnes.org>
---
 drivers/gpu/drm/gud/gud_connector.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/gud/gud_connector.c b/drivers/gpu/drm/gud/gud_connector.c
index 034e78360d4f..0f07d77c5d52 100644
--- a/drivers/gpu/drm/gud/gud_connector.c
+++ b/drivers/gpu/drm/gud/gud_connector.c
@@ -221,7 +221,7 @@ static int gud_connector_get_modes(struct drm_connector *connector)
 	struct gud_display_mode_req *reqmodes = NULL;
 	struct gud_connector_get_edid_ctx edid_ctx;
 	unsigned int i, num_modes = 0;
-	struct edid *edid = NULL;
+	const struct drm_edid *drm_edid = NULL;
 	int idx, ret;
 
 	if (!drm_dev_enter(connector->dev, &idx))
@@ -238,13 +238,13 @@ static int gud_connector_get_modes(struct drm_connector *connector)
 		gud_conn_err(connector, "Invalid EDID size", ret);
 	} else if (ret > 0) {
 		edid_ctx.len = ret;
-		edid = drm_do_get_edid(connector, gud_connector_get_edid_block, &edid_ctx);
+		drm_edid = drm_edid_read_custom(connector, gud_connector_get_edid_block, &edid_ctx);
 	}
 
 	kfree(edid_ctx.buf);
-	drm_connector_update_edid_property(connector, edid);
+	drm_edid_connector_update(connector, drm_edid);
 
-	if (edid && edid_ctx.edid_override)
+	if (drm_edid && edid_ctx.edid_override)
 		goto out;
 
 	reqmodes = kmalloc_array(GUD_CONNECTOR_MAX_NUM_MODES, sizeof(*reqmodes), GFP_KERNEL);
@@ -276,10 +276,10 @@ static int gud_connector_get_modes(struct drm_connector *connector)
 	}
 out:
 	if (!num_modes)
-		num_modes = drm_add_edid_modes(connector, edid);
+		num_modes = drm_edid_connector_add_modes(connector);
 
 	kfree(reqmodes);
-	kfree(edid);
+	drm_edid_free(drm_edid);
 	drm_dev_exit(idx);
 
 	return num_modes;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 10/15] drm/i2c: tda998x: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (8 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 09/15] drm/gud: switch to struct drm_edid Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-16 13:22 ` [PATCH 11/15] drm/bochs: " Jani Nikula
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel; +Cc: Jani Nikula, Russell King

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Russell King <linux@armlinux.org.uk>
---
 drivers/gpu/drm/i2c/tda998x_drv.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index d8d7de18dd65..2160f05bbd16 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1283,7 +1283,7 @@ static int read_edid_block(void *data, u8 *buf, unsigned int blk, size_t length)
 static int tda998x_connector_get_modes(struct drm_connector *connector)
 {
 	struct tda998x_priv *priv = conn_to_tda998x_priv(connector);
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 	int n;
 
 	/*
@@ -1297,25 +1297,26 @@ static int tda998x_connector_get_modes(struct drm_connector *connector)
 	if (priv->rev == TDA19988)
 		reg_clear(priv, REG_TX4, TX4_PD_RAM);
 
-	edid = drm_do_get_edid(connector, read_edid_block, priv);
+	drm_edid = drm_edid_read_custom(connector, read_edid_block, priv);
 
 	if (priv->rev == TDA19988)
 		reg_set(priv, REG_TX4, TX4_PD_RAM);
 
-	if (!edid) {
+	drm_edid_connector_update(connector, drm_edid);
+	cec_notifier_set_phys_addr(priv->cec_notify,
+				   connector->display_info.source_physical_address);
+
+	if (!drm_edid) {
 		dev_warn(&priv->hdmi->dev, "failed to read EDID\n");
 		return 0;
 	}
 
-	drm_connector_update_edid_property(connector, edid);
-	cec_notifier_set_phys_addr_from_edid(priv->cec_notify, edid);
-
 	mutex_lock(&priv->audio_mutex);
-	n = drm_add_edid_modes(connector, edid);
-	priv->sink_has_audio = drm_detect_monitor_audio(edid);
+	n = drm_edid_connector_add_modes(connector);
+	priv->sink_has_audio = connector->display_info.has_audio;
 	mutex_unlock(&priv->audio_mutex);
 
-	kfree(edid);
+	drm_edid_free(drm_edid);
 
 	return n;
 }
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 11/15] drm/bochs: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (9 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 10/15] drm/i2c: tda998x: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-16 13:22 ` [PATCH 12/15] drm/virtio: " Jani Nikula
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel; +Cc: Jani Nikula, Gerd Hoffmann, virtualization

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux.dev
---
 drivers/gpu/drm/tiny/bochs.c | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
index c23c9f0cf49c..1ea3c4de07af 100644
--- a/drivers/gpu/drm/tiny/bochs.c
+++ b/drivers/gpu/drm/tiny/bochs.c
@@ -85,7 +85,7 @@ struct bochs_device {
 	u16 yres_virtual;
 	u32 stride;
 	u32 bpp;
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 
 	/* drm */
 	struct drm_device *dev;
@@ -199,10 +199,10 @@ static int bochs_hw_load_edid(struct bochs_device *bochs)
 	if (drm_edid_header_is_valid(header) != 8)
 		return -1;
 
-	kfree(bochs->edid);
-	bochs->edid = drm_do_get_edid(&bochs->connector,
-				      bochs_get_edid_block, bochs);
-	if (bochs->edid == NULL)
+	drm_edid_free(bochs->drm_edid);
+	bochs->drm_edid = drm_edid_read_custom(&bochs->connector,
+					       bochs_get_edid_block, bochs);
+	if (bochs->drm_edid == NULL)
 		return -1;
 
 	return 0;
@@ -303,7 +303,7 @@ static void bochs_hw_fini(struct drm_device *dev)
 	if (bochs->fb_map)
 		iounmap(bochs->fb_map);
 	pci_release_regions(to_pci_dev(dev->dev));
-	kfree(bochs->edid);
+	drm_edid_free(bochs->drm_edid);
 }
 
 static void bochs_hw_blank(struct bochs_device *bochs, bool blank)
@@ -471,12 +471,9 @@ static const struct drm_simple_display_pipe_funcs bochs_pipe_funcs = {
 
 static int bochs_connector_get_modes(struct drm_connector *connector)
 {
-	struct bochs_device *bochs =
-		container_of(connector, struct bochs_device, connector);
-	int count = 0;
+	int count;
 
-	if (bochs->edid)
-		count = drm_add_edid_modes(connector, bochs->edid);
+	count = drm_edid_connector_add_modes(connector);
 
 	if (!count) {
 		count = drm_add_modes_noedid(connector, 8192, 8192);
@@ -507,10 +504,10 @@ static void bochs_connector_init(struct drm_device *dev)
 	drm_connector_helper_add(connector, &bochs_connector_connector_helper_funcs);
 
 	bochs_hw_load_edid(bochs);
-	if (bochs->edid) {
+	if (bochs->drm_edid) {
 		DRM_INFO("Found EDID data blob.\n");
 		drm_connector_attach_edid_property(connector);
-		drm_connector_update_edid_property(connector, bochs->edid);
+		drm_edid_connector_update(&bochs->connector, bochs->drm_edid);
 	}
 }
 
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 12/15] drm/virtio: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (10 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 11/15] drm/bochs: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-16 13:22 ` [PATCH 13/15] drm/rockchip: cdn-dp: " Jani Nikula
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel
  Cc: Jani Nikula, David Airlie, Gerd Hoffmann, Gurchetan Singh,
	Chia-I Wu, virtualization

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: David Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Gurchetan Singh <gurchetansingh@chromium.org>
Cc: Chia-I Wu <olvaffe@gmail.com>
Cc: virtualization@lists.linux.dev
---
 drivers/gpu/drm/virtio/virtgpu_display.c | 10 ++++------
 drivers/gpu/drm/virtio/virtgpu_drv.h     |  2 +-
 drivers/gpu/drm/virtio/virtgpu_vq.c      | 12 ++++++------
 3 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
index ad924a8502e9..64baf2f22d9f 100644
--- a/drivers/gpu/drm/virtio/virtgpu_display.c
+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
@@ -164,11 +164,9 @@ static int virtio_gpu_conn_get_modes(struct drm_connector *connector)
 	struct drm_display_mode *mode = NULL;
 	int count, width, height;
 
-	if (output->edid) {
-		count = drm_add_edid_modes(connector, output->edid);
-		if (count)
-			return count;
-	}
+	count = drm_edid_connector_add_modes(connector);
+	if (count)
+		return count;
 
 	width  = le32_to_cpu(output->info.r.width);
 	height = le32_to_cpu(output->info.r.height);
@@ -369,5 +367,5 @@ void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev)
 		return;
 
 	for (i = 0 ; i < vgdev->num_scanouts; ++i)
-		kfree(vgdev->outputs[i].edid);
+		drm_edid_free(vgdev->outputs[i].drm_edid);
 }
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
index bb7d86a0c6a1..64c236169db8 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.h
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
@@ -179,7 +179,7 @@ struct virtio_gpu_output {
 	struct drm_encoder enc;
 	struct virtio_gpu_display_one info;
 	struct virtio_gpu_update_cursor cursor;
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 	int cur_x;
 	int cur_y;
 	bool needs_modeset;
diff --git a/drivers/gpu/drm/virtio/virtgpu_vq.c b/drivers/gpu/drm/virtio/virtgpu_vq.c
index b1a00c0c25a7..0d3d0d09f39b 100644
--- a/drivers/gpu/drm/virtio/virtgpu_vq.c
+++ b/drivers/gpu/drm/virtio/virtgpu_vq.c
@@ -741,21 +741,21 @@ static void virtio_gpu_cmd_get_edid_cb(struct virtio_gpu_device *vgdev,
 		(struct virtio_gpu_resp_edid *)vbuf->resp_buf;
 	uint32_t scanout = le32_to_cpu(cmd->scanout);
 	struct virtio_gpu_output *output;
-	struct edid *new_edid, *old_edid;
+	const struct drm_edid *new_edid, *old_edid;
 
 	if (scanout >= vgdev->num_scanouts)
 		return;
 	output = vgdev->outputs + scanout;
 
-	new_edid = drm_do_get_edid(&output->conn, virtio_get_edid_block, resp);
-	drm_connector_update_edid_property(&output->conn, new_edid);
+	new_edid = drm_edid_read_custom(&output->conn, virtio_get_edid_block, resp);
+	drm_edid_connector_update(&output->conn, new_edid);
 
 	spin_lock(&vgdev->display_info_lock);
-	old_edid = output->edid;
-	output->edid = new_edid;
+	old_edid = output->drm_edid;
+	output->drm_edid = new_edid;
 	spin_unlock(&vgdev->display_info_lock);
 
-	kfree(old_edid);
+	drm_edid_free(old_edid);
 	wake_up(&vgdev->resp_wq);
 }
 
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 13/15] drm/rockchip: cdn-dp: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (11 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 12/15] drm/virtio: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-19 10:58   ` Heiko Stuebner
  2024-04-16 13:22 ` [PATCH 14/15] drm/rockchip: inno_hdmi: " Jani Nikula
                   ` (2 subsequent siblings)
  15 siblings, 1 reply; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel
  Cc: Jani Nikula, Sandy Huang, Heiko Stübner, Andy Yan,
	linux-arm-kernel, linux-rockchip

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Sandy Huang <hjc@rock-chips.com>
Cc: "Heiko Stübner" <heiko@sntech.de>
Cc: Andy Yan <andy.yan@rock-chips.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-rockchip@lists.infradead.org
---
 drivers/gpu/drm/rockchip/cdn-dp-core.c | 33 +++++++++++++++-----------
 drivers/gpu/drm/rockchip/cdn-dp-core.h |  2 +-
 2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
index a855c45ae7f3..9e3d7cb84c5d 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
@@ -262,20 +262,21 @@ static const struct drm_connector_funcs cdn_dp_atomic_connector_funcs = {
 static int cdn_dp_connector_get_modes(struct drm_connector *connector)
 {
 	struct cdn_dp_device *dp = connector_to_dp(connector);
-	struct edid *edid;
 	int ret = 0;
 
 	mutex_lock(&dp->lock);
-	edid = dp->edid;
-	if (edid) {
+
+	if (dp->drm_edid) {
+		/* FIXME: get rid of drm_edid_raw() */
+		const struct edid *edid = drm_edid_raw(dp->drm_edid);
+
 		DRM_DEV_DEBUG_KMS(dp->dev, "got edid: width[%d] x height[%d]\n",
 				  edid->width_cm, edid->height_cm);
 
-		dp->sink_has_audio = drm_detect_monitor_audio(edid);
-
-		drm_connector_update_edid_property(connector, edid);
-		ret = drm_add_edid_modes(connector, edid);
 	}
+
+	ret = drm_edid_connector_add_modes(connector);
+
 	mutex_unlock(&dp->lock);
 
 	return ret;
@@ -380,9 +381,13 @@ static int cdn_dp_get_sink_capability(struct cdn_dp_device *dp)
 		return ret;
 	}
 
-	kfree(dp->edid);
-	dp->edid = drm_do_get_edid(&dp->connector,
-				   cdn_dp_get_edid_block, dp);
+	drm_edid_free(dp->drm_edid);
+	dp->drm_edid = drm_edid_read_custom(&dp->connector,
+					    cdn_dp_get_edid_block, dp);
+	drm_edid_connector_update(&dp->connector, dp->drm_edid);
+
+	dp->sink_has_audio = dp->connector.display_info.has_audio;
+
 	return 0;
 }
 
@@ -488,8 +493,8 @@ static int cdn_dp_disable(struct cdn_dp_device *dp)
 	dp->max_lanes = 0;
 	dp->max_rate = 0;
 	if (!dp->connected) {
-		kfree(dp->edid);
-		dp->edid = NULL;
+		drm_edid_free(dp->drm_edid);
+		dp->drm_edid = NULL;
 	}
 
 	return 0;
@@ -1131,8 +1136,8 @@ static void cdn_dp_unbind(struct device *dev, struct device *master, void *data)
 	pm_runtime_disable(dev);
 	if (dp->fw_loaded)
 		release_firmware(dp->fw);
-	kfree(dp->edid);
-	dp->edid = NULL;
+	drm_edid_free(dp->drm_edid);
+	dp->drm_edid = NULL;
 }
 
 static const struct component_ops cdn_dp_component_ops = {
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.h b/drivers/gpu/drm/rockchip/cdn-dp-core.h
index 5b2fed1f5f55..8e6e95d269da 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.h
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.h
@@ -70,7 +70,7 @@ struct cdn_dp_device {
 	struct drm_display_mode mode;
 	struct platform_device *audio_pdev;
 	struct work_struct event_work;
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 
 	struct mutex lock;
 	bool connected;
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 14/15] drm/rockchip: inno_hdmi: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (12 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 13/15] drm/rockchip: cdn-dp: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-19 10:58   ` Heiko Stuebner
  2024-04-16 13:22 ` [PATCH 15/15] drm/rockchip: rk3066_hdmi: " Jani Nikula
  2024-05-07 15:34 ` [PATCH 00/15] drm: struct drm_edid conversions Thomas Zimmermann
  15 siblings, 1 reply; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel
  Cc: Jani Nikula, Sandy Huang, Heiko Stübner, Andy Yan,
	linux-arm-kernel, linux-rockchip

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Sandy Huang <hjc@rock-chips.com>
Cc: "Heiko Stübner" <heiko@sntech.de>
Cc: Andy Yan <andy.yan@rock-chips.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-rockchip@lists.infradead.org
---
 drivers/gpu/drm/rockchip/inno_hdmi.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.c b/drivers/gpu/drm/rockchip/inno_hdmi.c
index 1d2261643743..3df2cfcf9998 100644
--- a/drivers/gpu/drm/rockchip/inno_hdmi.c
+++ b/drivers/gpu/drm/rockchip/inno_hdmi.c
@@ -606,18 +606,16 @@ inno_hdmi_connector_detect(struct drm_connector *connector, bool force)
 static int inno_hdmi_connector_get_modes(struct drm_connector *connector)
 {
 	struct inno_hdmi *hdmi = connector_to_inno_hdmi(connector);
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 	int ret = 0;
 
 	if (!hdmi->ddc)
 		return 0;
 
-	edid = drm_get_edid(connector, hdmi->ddc);
-	if (edid) {
-		drm_connector_update_edid_property(connector, edid);
-		ret = drm_add_edid_modes(connector, edid);
-		kfree(edid);
-	}
+	drm_edid = drm_edid_read_ddc(connector, hdmi->ddc);
+	drm_edid_connector_update(connector, drm_edid);
+	ret = drm_edid_connector_add_modes(connector);
+	drm_edid_free(drm_edid);
 
 	return ret;
 }
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* [PATCH 15/15] drm/rockchip: rk3066_hdmi: switch to struct drm_edid
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (13 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 14/15] drm/rockchip: inno_hdmi: " Jani Nikula
@ 2024-04-16 13:22 ` Jani Nikula
  2024-04-19 10:58   ` Heiko Stuebner
  2024-05-07 15:34 ` [PATCH 00/15] drm: struct drm_edid conversions Thomas Zimmermann
  15 siblings, 1 reply; 27+ messages in thread
From: Jani Nikula @ 2024-04-16 13:22 UTC (permalink / raw
  To: dri-devel
  Cc: Jani Nikula, Sandy Huang, Heiko Stübner, Andy Yan,
	linux-arm-kernel, linux-rockchip

Prefer struct drm_edid based functions over struct edid.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: Sandy Huang <hjc@rock-chips.com>
Cc: "Heiko Stübner" <heiko@sntech.de>
Cc: Andy Yan <andy.yan@rock-chips.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-rockchip@lists.infradead.org
---
 drivers/gpu/drm/rockchip/rk3066_hdmi.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/rk3066_hdmi.c b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
index 95cd1b49eda8..784de990da1b 100644
--- a/drivers/gpu/drm/rockchip/rk3066_hdmi.c
+++ b/drivers/gpu/drm/rockchip/rk3066_hdmi.c
@@ -466,18 +466,16 @@ rk3066_hdmi_connector_detect(struct drm_connector *connector, bool force)
 static int rk3066_hdmi_connector_get_modes(struct drm_connector *connector)
 {
 	struct rk3066_hdmi *hdmi = connector_to_rk3066_hdmi(connector);
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 	int ret = 0;
 
 	if (!hdmi->ddc)
 		return 0;
 
-	edid = drm_get_edid(connector, hdmi->ddc);
-	if (edid) {
-		drm_connector_update_edid_property(connector, edid);
-		ret = drm_add_edid_modes(connector, edid);
-		kfree(edid);
-	}
+	drm_edid = drm_edid_read_ddc(connector, hdmi->ddc);
+	drm_edid_connector_update(connector, drm_edid);
+	ret = drm_edid_connector_add_modes(connector);
+	drm_edid_free(drm_edid);
 
 	return ret;
 }
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* Re: [PATCH 01/15] drm/panel: simple: switch to struct drm_edid
  2024-04-16 13:22 ` [PATCH 01/15] drm/panel: simple: switch to struct drm_edid Jani Nikula
@ 2024-04-16 17:41   ` Neil Armstrong
  0 siblings, 0 replies; 27+ messages in thread
From: Neil Armstrong @ 2024-04-16 17:41 UTC (permalink / raw
  To: Jani Nikula, dri-devel; +Cc: Jessica Zhang, Sam Ravnborg

On 16/04/2024 15:22, Jani Nikula wrote:
> Prefer struct drm_edid based functions over struct edid.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> 
> ---
> 
> Cc: Neil Armstrong <neil.armstrong@linaro.org>
> Cc: Jessica Zhang <quic_jesszhan@quicinc.com>
> Cc: Sam Ravnborg <sam@ravnborg.org>
> ---
>   drivers/gpu/drm/panel/panel-simple.c | 15 ++++++++-------
>   1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
> index 7215cf767898..d3264fa2f3ff 100644
> --- a/drivers/gpu/drm/panel/panel-simple.c
> +++ b/drivers/gpu/drm/panel/panel-simple.c
> @@ -151,7 +151,7 @@ struct panel_simple {
>   
>   	struct gpio_desc *enable_gpio;
>   
> -	struct edid *edid;
> +	const struct drm_edid *drm_edid;
>   
>   	struct drm_display_mode override_mode;
>   
> @@ -309,8 +309,8 @@ static int panel_simple_suspend(struct device *dev)
>   	regulator_disable(p->supply);
>   	p->unprepared_time = ktime_get_boottime();
>   
> -	kfree(p->edid);
> -	p->edid = NULL;
> +	drm_edid_free(p->drm_edid);
> +	p->drm_edid = NULL;
>   
>   	return 0;
>   }
> @@ -399,11 +399,12 @@ static int panel_simple_get_modes(struct drm_panel *panel,
>   	if (p->ddc) {
>   		pm_runtime_get_sync(panel->dev);
>   
> -		if (!p->edid)
> -			p->edid = drm_get_edid(connector, p->ddc);
> +		if (!p->drm_edid)
> +			p->drm_edid = drm_edid_read_ddc(connector, p->ddc);
>   
> -		if (p->edid)
> -			num += drm_add_edid_modes(connector, p->edid);
> +		drm_edid_connector_update(connector, p->drm_edid);
> +
> +		num += drm_edid_connector_add_modes(connector);
>   
>   		pm_runtime_mark_last_busy(panel->dev);
>   		pm_runtime_put_autosuspend(panel->dev);

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 02/15] drm/panel-samsung-atna33xc20: switch to struct drm_edid
  2024-04-16 13:22 ` [PATCH 02/15] drm/panel-samsung-atna33xc20: " Jani Nikula
@ 2024-04-16 17:41   ` Neil Armstrong
  0 siblings, 0 replies; 27+ messages in thread
From: Neil Armstrong @ 2024-04-16 17:41 UTC (permalink / raw
  To: Jani Nikula, dri-devel; +Cc: Jessica Zhang, Sam Ravnborg

On 16/04/2024 15:22, Jani Nikula wrote:
> Prefer struct drm_edid based functions over struct edid.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> 
> ---
> 
> Cc: Neil Armstrong <neil.armstrong@linaro.org>
> Cc: Jessica Zhang <quic_jesszhan@quicinc.com>
> Cc: Sam Ravnborg <sam@ravnborg.org>
> ---
>   drivers/gpu/drm/panel/panel-samsung-atna33xc20.c | 13 ++++++++-----
>   1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c b/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c
> index 6828a4f24d14..a9f0d214a900 100644
> --- a/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c
> +++ b/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c
> @@ -36,7 +36,7 @@ struct atana33xc20_panel {
>   	struct gpio_desc *el_on3_gpio;
>   	struct drm_dp_aux *aux;
>   
> -	struct edid *edid;
> +	const struct drm_edid *drm_edid;
>   
>   	ktime_t powered_off_time;
>   	ktime_t powered_on_time;
> @@ -253,9 +253,12 @@ static int atana33xc20_get_modes(struct drm_panel *panel,
>   
>   	pm_runtime_get_sync(panel->dev);
>   
> -	if (!p->edid)
> -		p->edid = drm_get_edid(connector, &aux_ep->aux->ddc);
> -	num = drm_add_edid_modes(connector, p->edid);
> +	if (!p->drm_edid)
> +		p->drm_edid = drm_edid_read_ddc(connector, &aux_ep->aux->ddc);
> +
> +	drm_edid_connector_update(connector, p->drm_edid);
> +
> +	num = drm_edid_connector_add_modes(connector);
>   
>   	pm_runtime_mark_last_busy(panel->dev);
>   	pm_runtime_put_autosuspend(panel->dev);
> @@ -351,7 +354,7 @@ static void atana33xc20_remove(struct dp_aux_ep_device *aux_ep)
>   	drm_panel_disable(&panel->base);
>   	drm_panel_unprepare(&panel->base);
>   
> -	kfree(panel->edid);
> +	drm_edid_free(panel->drm_edid);
>   }
>   
>   static void atana33xc20_shutdown(struct dp_aux_ep_device *aux_ep)

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 03/15] drm/panel-edp: switch to struct drm_edid
  2024-04-16 13:22 ` [PATCH 03/15] drm/panel-edp: " Jani Nikula
@ 2024-04-16 17:43   ` Neil Armstrong
  0 siblings, 0 replies; 27+ messages in thread
From: Neil Armstrong @ 2024-04-16 17:43 UTC (permalink / raw
  To: Jani Nikula, dri-devel; +Cc: Douglas Anderson, Jessica Zhang, Sam Ravnborg

On 16/04/2024 15:22, Jani Nikula wrote:
> Prefer struct drm_edid based functions over struct edid.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> 
> ---
> 
> Cc: Douglas Anderson <dianders@chromium.org>
> Cc: Neil Armstrong <neil.armstrong@linaro.org>
> Cc: Jessica Zhang <quic_jesszhan@quicinc.com>
> Cc: Sam Ravnborg <sam@ravnborg.org>
> ---
>   drivers/gpu/drm/panel/panel-edp.c | 17 ++++++++++-------
>   1 file changed, 10 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c
> index d29bacf25c12..ece1e3553c1f 100644
> --- a/drivers/gpu/drm/panel/panel-edp.c
> +++ b/drivers/gpu/drm/panel/panel-edp.c
> @@ -242,7 +242,7 @@ struct panel_edp {
>   
>   	const struct edp_panel_entry *detected_panel;
>   
> -	struct edid *edid;
> +	const struct drm_edid *drm_edid;
>   
>   	struct drm_display_mode override_mode;
>   
> @@ -617,13 +617,16 @@ static int panel_edp_get_modes(struct drm_panel *panel,
>   	if (p->ddc) {
>   		pm_runtime_get_sync(panel->dev);
>   
> -		if (!p->edid)
> -			p->edid = drm_get_edid(connector, p->ddc);
> +		if (!p->drm_edid)
> +			p->drm_edid = drm_edid_read_ddc(connector, p->ddc);
> +
> +		drm_edid_connector_update(connector, p->drm_edid);
> +
>   		/*
>   		 * If both edid and hard-coded modes exists, skip edid modes to
>   		 * avoid multiple preferred modes.
>   		 */
> -		if (p->edid && !has_hard_coded_modes) {
> +		if (p->drm_edid && !has_hard_coded_modes) {
>   			if (has_override_edid_mode) {
>   				/*
>   				 * override_edid_mode is specified. Use
> @@ -632,7 +635,7 @@ static int panel_edp_get_modes(struct drm_panel *panel,
>   				num += panel_edp_override_edid_mode(p, connector,
>   						p->detected_panel->override_edid_mode);
>   			} else {
> -				num += drm_add_edid_modes(connector, p->edid);
> +				num += drm_edid_connector_add_modes(connector);
>   			}
>   		}
>   
> @@ -981,8 +984,8 @@ static void panel_edp_remove(struct device *dev)
>   	if (panel->ddc && (!panel->aux || panel->ddc != &panel->aux->ddc))
>   		put_device(&panel->ddc->dev);
>   
> -	kfree(panel->edid);
> -	panel->edid = NULL;
> +	drm_edid_free(panel->drm_edid);
> +	panel->drm_edid = NULL;
>   }
>   
>   static void panel_edp_shutdown(struct device *dev)

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 09/15] drm/gud: switch to struct drm_edid
  2024-04-16 13:22 ` [PATCH 09/15] drm/gud: switch to struct drm_edid Jani Nikula
@ 2024-04-17 15:26   ` Noralf Trønnes
  0 siblings, 0 replies; 27+ messages in thread
From: Noralf Trønnes @ 2024-04-17 15:26 UTC (permalink / raw
  To: Jani Nikula, dri-devel; +Cc: noralf



On 4/16/24 15:22, Jani Nikula wrote:
> Prefer struct drm_edid based functions over struct edid.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> 
> ---
> 

Thanks,

Reviewed-by: Noralf Trønnes <noralf@tronnes.org>

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 06/15] drm/sun4i: hdmi: switch to struct drm_edid
  2024-04-16 13:22 ` [PATCH 06/15] drm/sun4i: hdmi: " Jani Nikula
@ 2024-04-18 11:51   ` Maxime Ripard
  0 siblings, 0 replies; 27+ messages in thread
From: Maxime Ripard @ 2024-04-18 11:51 UTC (permalink / raw
  To: Jani Nikula
  Cc: dri-devel, linux-arm-kernel, linux-sunxi, Chen-Yu Tsai,
	Jernej Skrabec, Maxime Ripard, Samuel Holland

On Tue, 16 Apr 2024 16:22:20 +0300, Jani Nikula wrote:
> Prefer struct drm_edid based functions over struct edid.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> 

Acked-by: Maxime Ripard <mripard@kernel.org>

Thanks!
Maxime

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 07/15] drm/vc4: hdmi: switch to struct drm_edid
  2024-04-16 13:22 ` [PATCH 07/15] drm/vc4: " Jani Nikula
@ 2024-04-18 11:51   ` Maxime Ripard
  0 siblings, 0 replies; 27+ messages in thread
From: Maxime Ripard @ 2024-04-18 11:51 UTC (permalink / raw
  To: Jani Nikula
  Cc: dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann

On Tue, 16 Apr 2024 16:22:21 +0300, Jani Nikula wrote:
> Prefer struct drm_edid based functions over struct edid.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> 

Acked-by: Maxime Ripard <mripard@kernel.org>

Thanks!
Maxime

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 13/15] drm/rockchip: cdn-dp: switch to struct drm_edid
  2024-04-16 13:22 ` [PATCH 13/15] drm/rockchip: cdn-dp: " Jani Nikula
@ 2024-04-19 10:58   ` Heiko Stuebner
  0 siblings, 0 replies; 27+ messages in thread
From: Heiko Stuebner @ 2024-04-19 10:58 UTC (permalink / raw
  To: dri-devel, Jani Nikula
  Cc: Jani Nikula, Sandy Huang, Andy Yan, linux-arm-kernel,
	linux-rockchip

Am Dienstag, 16. April 2024, 15:22:27 CEST schrieb Jani Nikula:
> Prefer struct drm_edid based functions over struct edid.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Acked-by: Heiko Stuebner <heiko@sntech.de>



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 14/15] drm/rockchip: inno_hdmi: switch to struct drm_edid
  2024-04-16 13:22 ` [PATCH 14/15] drm/rockchip: inno_hdmi: " Jani Nikula
@ 2024-04-19 10:58   ` Heiko Stuebner
  0 siblings, 0 replies; 27+ messages in thread
From: Heiko Stuebner @ 2024-04-19 10:58 UTC (permalink / raw
  To: dri-devel, Jani Nikula
  Cc: Jani Nikula, Sandy Huang, Andy Yan, linux-arm-kernel,
	linux-rockchip

Am Dienstag, 16. April 2024, 15:22:28 CEST schrieb Jani Nikula:
> Prefer struct drm_edid based functions over struct edid.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Acked-by: Heiko Stuebner <heiko@sntech.de>



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 15/15] drm/rockchip: rk3066_hdmi: switch to struct drm_edid
  2024-04-16 13:22 ` [PATCH 15/15] drm/rockchip: rk3066_hdmi: " Jani Nikula
@ 2024-04-19 10:58   ` Heiko Stuebner
  0 siblings, 0 replies; 27+ messages in thread
From: Heiko Stuebner @ 2024-04-19 10:58 UTC (permalink / raw
  To: dri-devel, Jani Nikula
  Cc: Jani Nikula, Sandy Huang, Andy Yan, linux-arm-kernel,
	linux-rockchip

Am Dienstag, 16. April 2024, 15:22:29 CEST schrieb Jani Nikula:
> Prefer struct drm_edid based functions over struct edid.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Acked-by: Heiko Stuebner <heiko@sntech.de>



^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 00/15] drm: struct drm_edid conversions
  2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
                   ` (14 preceding siblings ...)
  2024-04-16 13:22 ` [PATCH 15/15] drm/rockchip: rk3066_hdmi: " Jani Nikula
@ 2024-05-07 15:34 ` Thomas Zimmermann
  2024-05-10 13:28   ` Jani Nikula
  15 siblings, 1 reply; 27+ messages in thread
From: Thomas Zimmermann @ 2024-05-07 15:34 UTC (permalink / raw
  To: Jani Nikula, dri-devel

Hi

Am 16.04.24 um 15:22 schrieb Jani Nikula:
> I've these laying in a branch for a while, maybe let's try to make some
> forward progress in this front.

Could you take another look at the udl patches at [1]? The second 
iteration of the patches is self-contained within the driver. So the 
most-controversial points should be resolved now.

Best regards
Thomas

[1] https://patchwork.freedesktop.org/series/132039/#rev2

>
> Build tested only, on x86, arm, and arm64.
>
> BR,
> Jani.
>
>
> Jani Nikula (15):
>    drm/panel: simple: switch to struct drm_edid
>    drm/panel-samsung-atna33xc20: switch to struct drm_edid
>    drm/panel-edp: switch to struct drm_edid
>    drm/bridge/analogix/anx6345: switch to struct drm_edid
>    drm/bridge/analogix/anx78xx: switch to struct drm_edid
>    drm/sun4i: hdmi: switch to struct drm_edid
>    drm/vc4: hdmi: switch to struct drm_edid
>    drm/bridge: anx7625: use struct drm_edid more
>    drm/gud: switch to struct drm_edid
>    drm/i2c: tda998x: switch to struct drm_edid
>    drm/bochs: switch to struct drm_edid
>    drm/virtio: switch to struct drm_edid
>    drm/rockchip: cdn-dp: switch to struct drm_edid
>    drm/rockchip: inno_hdmi: switch to struct drm_edid
>    drm/rockchip: rk3066_hdmi: switch to struct drm_edid
>
>   .../drm/bridge/analogix/analogix-anx6345.c    | 15 +++---
>   .../drm/bridge/analogix/analogix-anx78xx.c    | 23 +++++-----
>   drivers/gpu/drm/bridge/analogix/anx7625.c     | 26 +++++++----
>   drivers/gpu/drm/bridge/analogix/anx7625.h     | 10 +---
>   drivers/gpu/drm/gud/gud_connector.c           | 12 ++---
>   drivers/gpu/drm/i2c/tda998x_drv.c             | 19 ++++----
>   drivers/gpu/drm/panel/panel-edp.c             | 17 ++++---
>   .../gpu/drm/panel/panel-samsung-atna33xc20.c  | 13 ++++--
>   drivers/gpu/drm/panel/panel-simple.c          | 15 +++---
>   drivers/gpu/drm/rockchip/cdn-dp-core.c        | 33 +++++++------
>   drivers/gpu/drm/rockchip/cdn-dp-core.h        |  2 +-
>   drivers/gpu/drm/rockchip/inno_hdmi.c          | 12 ++---
>   drivers/gpu/drm/rockchip/rk3066_hdmi.c        | 12 ++---
>   drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c        | 18 +++++---
>   drivers/gpu/drm/tiny/bochs.c                  | 23 ++++------
>   drivers/gpu/drm/vc4/vc4_hdmi.c                | 46 ++++++++++---------
>   drivers/gpu/drm/virtio/virtgpu_display.c      | 10 ++--
>   drivers/gpu/drm/virtio/virtgpu_drv.h          |  2 +-
>   drivers/gpu/drm/virtio/virtgpu_vq.c           | 12 ++---
>   19 files changed, 167 insertions(+), 153 deletions(-)
>

-- 
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH 00/15] drm: struct drm_edid conversions
  2024-05-07 15:34 ` [PATCH 00/15] drm: struct drm_edid conversions Thomas Zimmermann
@ 2024-05-10 13:28   ` Jani Nikula
  0 siblings, 0 replies; 27+ messages in thread
From: Jani Nikula @ 2024-05-10 13:28 UTC (permalink / raw
  To: Thomas Zimmermann, dri-devel

On Tue, 07 May 2024, Thomas Zimmermann <tzimmermann@suse.de> wrote:
> Hi
>
> Am 16.04.24 um 15:22 schrieb Jani Nikula:
>> I've these laying in a branch for a while, maybe let's try to make some
>> forward progress in this front.
>
> Could you take another look at the udl patches at [1]? The second 
> iteration of the patches is self-contained within the driver. So the 
> most-controversial points should be resolved now.

Done.

I've also resent the remaining patches from this series [2]. With [1]
and [2] merged, we could remove drm_do_get_edid() interface altogether.

BR,
Jani.


[2] https://lore.kernel.org/r/cover.1715347488.git.jani.nikula@intel.com

>
> Best regards
> Thomas
>
> [1] https://patchwork.freedesktop.org/series/132039/#rev2
>
>>
>> Build tested only, on x86, arm, and arm64.
>>
>> BR,
>> Jani.
>>
>>
>> Jani Nikula (15):
>>    drm/panel: simple: switch to struct drm_edid
>>    drm/panel-samsung-atna33xc20: switch to struct drm_edid
>>    drm/panel-edp: switch to struct drm_edid
>>    drm/bridge/analogix/anx6345: switch to struct drm_edid
>>    drm/bridge/analogix/anx78xx: switch to struct drm_edid
>>    drm/sun4i: hdmi: switch to struct drm_edid
>>    drm/vc4: hdmi: switch to struct drm_edid
>>    drm/bridge: anx7625: use struct drm_edid more
>>    drm/gud: switch to struct drm_edid
>>    drm/i2c: tda998x: switch to struct drm_edid
>>    drm/bochs: switch to struct drm_edid
>>    drm/virtio: switch to struct drm_edid
>>    drm/rockchip: cdn-dp: switch to struct drm_edid
>>    drm/rockchip: inno_hdmi: switch to struct drm_edid
>>    drm/rockchip: rk3066_hdmi: switch to struct drm_edid
>>
>>   .../drm/bridge/analogix/analogix-anx6345.c    | 15 +++---
>>   .../drm/bridge/analogix/analogix-anx78xx.c    | 23 +++++-----
>>   drivers/gpu/drm/bridge/analogix/anx7625.c     | 26 +++++++----
>>   drivers/gpu/drm/bridge/analogix/anx7625.h     | 10 +---
>>   drivers/gpu/drm/gud/gud_connector.c           | 12 ++---
>>   drivers/gpu/drm/i2c/tda998x_drv.c             | 19 ++++----
>>   drivers/gpu/drm/panel/panel-edp.c             | 17 ++++---
>>   .../gpu/drm/panel/panel-samsung-atna33xc20.c  | 13 ++++--
>>   drivers/gpu/drm/panel/panel-simple.c          | 15 +++---
>>   drivers/gpu/drm/rockchip/cdn-dp-core.c        | 33 +++++++------
>>   drivers/gpu/drm/rockchip/cdn-dp-core.h        |  2 +-
>>   drivers/gpu/drm/rockchip/inno_hdmi.c          | 12 ++---
>>   drivers/gpu/drm/rockchip/rk3066_hdmi.c        | 12 ++---
>>   drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c        | 18 +++++---
>>   drivers/gpu/drm/tiny/bochs.c                  | 23 ++++------
>>   drivers/gpu/drm/vc4/vc4_hdmi.c                | 46 ++++++++++---------
>>   drivers/gpu/drm/virtio/virtgpu_display.c      | 10 ++--
>>   drivers/gpu/drm/virtio/virtgpu_drv.h          |  2 +-
>>   drivers/gpu/drm/virtio/virtgpu_vq.c           | 12 ++---
>>   19 files changed, 167 insertions(+), 153 deletions(-)
>>

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2024-05-10 13:28 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-16 13:22 [PATCH 00/15] drm: struct drm_edid conversions Jani Nikula
2024-04-16 13:22 ` [PATCH 01/15] drm/panel: simple: switch to struct drm_edid Jani Nikula
2024-04-16 17:41   ` Neil Armstrong
2024-04-16 13:22 ` [PATCH 02/15] drm/panel-samsung-atna33xc20: " Jani Nikula
2024-04-16 17:41   ` Neil Armstrong
2024-04-16 13:22 ` [PATCH 03/15] drm/panel-edp: " Jani Nikula
2024-04-16 17:43   ` Neil Armstrong
2024-04-16 13:22 ` [PATCH 04/15] drm/bridge/analogix/anx6345: " Jani Nikula
2024-04-16 13:22 ` [PATCH 05/15] drm/bridge/analogix/anx78xx: " Jani Nikula
2024-04-16 13:22 ` [PATCH 06/15] drm/sun4i: hdmi: " Jani Nikula
2024-04-18 11:51   ` Maxime Ripard
2024-04-16 13:22 ` [PATCH 07/15] drm/vc4: " Jani Nikula
2024-04-18 11:51   ` Maxime Ripard
2024-04-16 13:22 ` [PATCH 08/15] drm/bridge: anx7625: use struct drm_edid more Jani Nikula
2024-04-16 13:22 ` [PATCH 09/15] drm/gud: switch to struct drm_edid Jani Nikula
2024-04-17 15:26   ` Noralf Trønnes
2024-04-16 13:22 ` [PATCH 10/15] drm/i2c: tda998x: " Jani Nikula
2024-04-16 13:22 ` [PATCH 11/15] drm/bochs: " Jani Nikula
2024-04-16 13:22 ` [PATCH 12/15] drm/virtio: " Jani Nikula
2024-04-16 13:22 ` [PATCH 13/15] drm/rockchip: cdn-dp: " Jani Nikula
2024-04-19 10:58   ` Heiko Stuebner
2024-04-16 13:22 ` [PATCH 14/15] drm/rockchip: inno_hdmi: " Jani Nikula
2024-04-19 10:58   ` Heiko Stuebner
2024-04-16 13:22 ` [PATCH 15/15] drm/rockchip: rk3066_hdmi: " Jani Nikula
2024-04-19 10:58   ` Heiko Stuebner
2024-05-07 15:34 ` [PATCH 00/15] drm: struct drm_edid conversions Thomas Zimmermann
2024-05-10 13:28   ` Jani Nikula

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).