All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: Jani Nikula <jani.nikula@intel.com>,
	dri-devel@lists.freedesktop.org,
	Andrzej Hajda <andrzej.hajda@intel.com>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	Robert Foss <rfoss@kernel.org>,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
	Jonas Karlman <jonas@kwiboo.se>,
	Jernej Skrabec <jernej.skrabec@gmail.com>
Subject: [PATCH v2] drm: bridge: dw_hdmi: switch to ->edid_read callback
Date: Tue,  9 Jan 2024 12:13:13 +0200	[thread overview]
Message-ID: <20240109101313.2427048-1-jani.nikula@intel.com> (raw)
In-Reply-To: <a8f71940221fb085b8767f8123f496c9b36b22cc.1704276309.git.jani.nikula@intel.com>

Prefer using the struct drm_edid based callback and functions.

v2: Fix -Wuninitialized (kernel test robot)

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 43 ++++++++++++++---------
 1 file changed, 26 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index 52d91a0df85e..8eea3f59f585 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -2454,27 +2454,35 @@ static enum drm_connector_status dw_hdmi_detect(struct dw_hdmi *hdmi)
 	return result;
 }
 
-static struct edid *dw_hdmi_get_edid(struct dw_hdmi *hdmi,
-				     struct drm_connector *connector)
+static const struct drm_edid *dw_hdmi_edid_read(struct dw_hdmi *hdmi,
+						struct drm_connector *connector)
 {
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
+	const struct edid *edid;
 
 	if (!hdmi->ddc)
 		return NULL;
 
-	edid = drm_get_edid(connector, hdmi->ddc);
-	if (!edid) {
+	drm_edid = drm_edid_read_ddc(connector, hdmi->ddc);
+	if (!drm_edid) {
 		dev_dbg(hdmi->dev, "failed to get edid\n");
 		return NULL;
 	}
 
+	/*
+	 * FIXME: This should use connector->display_info.is_hdmi and
+	 * connector->display_info.has_audio from a path that has read the EDID
+	 * and called drm_edid_connector_update().
+	 */
+	edid = drm_edid_raw(drm_edid);
+
 	dev_dbg(hdmi->dev, "got edid: width[%d] x height[%d]\n",
 		edid->width_cm, edid->height_cm);
 
 	hdmi->sink_is_hdmi = drm_detect_hdmi_monitor(edid);
 	hdmi->sink_has_audio = drm_detect_monitor_audio(edid);
 
-	return edid;
+	return drm_edid;
 }
 
 /* -----------------------------------------------------------------------------
@@ -2493,17 +2501,18 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
 {
 	struct dw_hdmi *hdmi = container_of(connector, struct dw_hdmi,
 					     connector);
-	struct edid *edid;
+	const struct drm_edid *drm_edid;
 	int ret;
 
-	edid = dw_hdmi_get_edid(hdmi, connector);
-	if (!edid)
+	drm_edid = dw_hdmi_edid_read(hdmi, connector);
+	if (!drm_edid)
 		return 0;
 
-	drm_connector_update_edid_property(connector, edid);
-	cec_notifier_set_phys_addr_from_edid(hdmi->cec_notifier, edid);
-	ret = drm_add_edid_modes(connector, edid);
-	kfree(edid);
+	drm_edid_connector_update(connector, drm_edid);
+	cec_notifier_set_phys_addr(hdmi->cec_notifier,
+				   connector->display_info.source_physical_address);
+	ret = drm_edid_connector_add_modes(connector);
+	drm_edid_free(drm_edid);
 
 	return ret;
 }
@@ -2980,12 +2989,12 @@ static enum drm_connector_status dw_hdmi_bridge_detect(struct drm_bridge *bridge
 	return dw_hdmi_detect(hdmi);
 }
 
-static struct edid *dw_hdmi_bridge_get_edid(struct drm_bridge *bridge,
-					    struct drm_connector *connector)
+static const struct drm_edid *dw_hdmi_bridge_edid_read(struct drm_bridge *bridge,
+						       struct drm_connector *connector)
 {
 	struct dw_hdmi *hdmi = bridge->driver_private;
 
-	return dw_hdmi_get_edid(hdmi, connector);
+	return dw_hdmi_edid_read(hdmi, connector);
 }
 
 static const struct drm_bridge_funcs dw_hdmi_bridge_funcs = {
@@ -3002,7 +3011,7 @@ static const struct drm_bridge_funcs dw_hdmi_bridge_funcs = {
 	.mode_set = dw_hdmi_bridge_mode_set,
 	.mode_valid = dw_hdmi_bridge_mode_valid,
 	.detect = dw_hdmi_bridge_detect,
-	.get_edid = dw_hdmi_bridge_get_edid,
+	.edid_read = dw_hdmi_bridge_edid_read,
 };
 
 /* -----------------------------------------------------------------------------
-- 
2.39.2


  parent reply	other threads:[~2024-01-09 10:13 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-03 10:08 [PATCH v2 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
2024-01-03 10:08 ` [PATCH v2 01/39] drm/bridge: add ->edid_read hook and drm_bridge_edid_read() Jani Nikula
2024-01-03 10:08 ` [PATCH v2 02/39] drm/bridge: switch to drm_bridge_read_edid() Jani Nikula
2024-01-03 10:33   ` Thomas Zimmermann
2024-01-03 10:57     ` Jani Nikula
2024-01-03 10:08 ` [PATCH v2 03/39] drm/bridge: chrontel-ch7033: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 04/39] drm/bridge: lt8912b: use drm_bridge_read_edid() Jani Nikula
2024-01-03 10:08 ` [PATCH v2 05/39] drm/bridge: lt8912b: clear the EDID property on failures Jani Nikula
2024-01-03 10:08 ` [PATCH v2 06/39] drm/bridge: lt8912b: use ->edid_read callback Jani Nikula
2024-01-03 10:08 ` [PATCH v2 07/39] drm/bridge: lt9611uxc: use drm_bridge_read_edid() Jani Nikula
2024-01-03 10:08 ` [PATCH v2 08/39] drm: bridge: simple-bridge: use drm_bridge_edid_read() Jani Nikula
2024-01-03 10:08 ` [PATCH v2 09/39] drm: bridge: simple-bridge: clear the EDID property on failures Jani Nikula
2024-01-03 10:08 ` [PATCH v2 10/39] drm/bridge: tfp410: use drm_bridge_edid_read() Jani Nikula
2024-01-03 10:08 ` [PATCH v2 11/39] drm/bridge: tfp410: clear the EDID property on failures Jani Nikula
2024-01-03 10:08 ` [PATCH v2 12/39] drm/meson: switch to drm_bridge_edid_read() Jani Nikula
2024-01-03 10:08 ` [PATCH v2 13/39] drm/bridge: remove drm_bridge_get_edid() in favour of drm_bridge_edid_read() Jani Nikula
2024-01-03 10:08 ` [PATCH v2 14/39] drm/bridge: anx7625: switch to ->edid_read callback Jani Nikula
2024-01-03 10:08 ` [PATCH v2 15/39] drm/bridge: cdns-mhdp8546: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 16/39] drm/bridge: cdns-mhdp8546: clear the EDID property on failures Jani Nikula
2024-01-03 10:08 ` [PATCH v2 17/39] drm/bridge: display-connector: switch to ->edid_read callback Jani Nikula
2024-01-03 10:08 ` [PATCH v2 18/39] drm/bridge: it6505: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 19/39] drm: bridge: it66121: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 20/39] drm/bridge: lt9611: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 21/39] drm/bridge: lt9611uxc: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 22/39] drm/bridge: megachips: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 23/39] drm/bridge: nxp-ptn3460: " Jani Nikula
2024-01-03 20:20   ` kernel test robot
2024-01-03 20:20     ` kernel test robot
2024-01-04 12:17     ` Jani Nikula
2024-01-09 10:14   ` [PATCH v2] " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 24/39] drm/bridge: sii902x: use display info is_hdmi Jani Nikula
2024-01-03 10:08 ` [PATCH v2 25/39] drm/bridge: sii902x: switch to ->edid_read callback Jani Nikula
2024-01-03 10:08 ` [PATCH v2 26/39] drm/mediatek/dp: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 27/39] drm/mediatek/hdmi: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 28/39] drm/msm/hdmi: fix indent Jani Nikula
2024-01-03 10:08 ` [PATCH v2 29/39] drm/msm/hdmi: switch to ->edid_read callback Jani Nikula
2024-01-03 10:08 ` [PATCH v2 30/39] drm/omap/hdmi4: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 31/39] drm/omap/hdmi5: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 32/39] drm: xlnx: zynqmp_dpsub: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 33/39] drm: adv7511: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 34/39] drm: bridge: dw_hdmi: " Jani Nikula
2024-01-04  5:44   ` kernel test robot
2024-01-04  5:44     ` kernel test robot
2024-01-04 12:21     ` Jani Nikula
2024-01-09 10:11   ` [PATCH v2] drm/bridge: nxp-ptn3460: " Jani Nikula
2024-01-09 10:16     ` Jani Nikula
2024-01-09 10:13   ` Jani Nikula [this message]
2024-01-03 10:08 ` [PATCH v2 35/39] drm: bridge: dw_hdmi: clear the EDID property and CEC address on failures Jani Nikula
2024-01-03 10:08 ` [PATCH v2 36/39] drm/bridge: tc358767: update the EDID property Jani Nikula
2024-01-03 10:08 ` [PATCH v2 37/39] drm/bridge: tc358767: switch to ->edid_read callback Jani Nikula
2024-01-03 10:08 ` [PATCH v2 38/39] drm/bridge: ti-sn65dsi86: " Jani Nikula
2024-01-03 10:08 ` [PATCH v2 39/39] drm/bridge: remove ->get_edid callback Jani Nikula
2024-01-03 10:11 ` [PATCH v2 00/39] drm/bridge: switch to struct drm_edid Jani Nikula

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240109101313.2427048-1-jani.nikula@intel.com \
    --to=jani.nikula@intel.com \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=andrzej.hajda@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=neil.armstrong@linaro.org \
    --cc=rfoss@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.