* [PATCH v3 00/39] drm/bridge: switch to struct drm_edid
@ 2024-01-23 19:37 Jani Nikula
2024-01-23 19:37 ` [PATCH v3 01/39] drm/bridge: add ->edid_read hook and drm_bridge_edid_read() Jani Nikula
` (39 more replies)
0 siblings, 40 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
v3 of [1] with a couple of patches fixed.
BR,
Jani.
[1] https://patchwork.freedesktop.org/series/128149/
Jani Nikula (39):
drm/bridge: add ->edid_read hook and drm_bridge_edid_read()
drm/bridge: switch to drm_bridge_read_edid()
drm/bridge: chrontel-ch7033: switch to drm_bridge_read_edid()
drm/bridge: lt8912b: use drm_bridge_read_edid()
drm/bridge: lt8912b: clear the EDID property on failures
drm/bridge: lt8912b: use ->edid_read callback
drm/bridge: lt9611uxc: use drm_bridge_read_edid()
drm: bridge: simple-bridge: use drm_bridge_edid_read()
drm: bridge: simple-bridge: clear the EDID property on failures
drm/bridge: tfp410: use drm_bridge_edid_read()
drm/bridge: tfp410: clear the EDID property on failures
drm/meson: switch to drm_bridge_edid_read()
drm/bridge: remove drm_bridge_get_edid() in favour of
drm_bridge_edid_read()
drm/bridge: anx7625: switch to ->edid_read callback
drm/bridge: cdns-mhdp8546: switch to ->edid_read callback
drm/bridge: cdns-mhdp8546: clear the EDID property on failures
drm/bridge: display-connector: switch to ->edid_read callback
drm/bridge: it6505: switch to ->edid_read callback
drm: bridge: it66121: switch to ->edid_read callback
drm/bridge: lt9611: switch to ->edid_read callback
drm/bridge: lt9611uxc: switch to ->edid_read callback
drm/bridge: megachips: switch to ->edid_read callback
drm/bridge: nxp-ptn3460: switch to ->edid_read callback
drm/bridge: sii902x: use display info is_hdmi
drm/bridge: sii902x: switch to ->edid_read callback
drm/mediatek/dp: switch to ->edid_read callback
drm/mediatek/hdmi: switch to ->edid_read callback
drm/msm/hdmi: fix indent
drm/msm/hdmi: switch to ->edid_read callback
drm/omap/hdmi4: switch to ->edid_read callback
drm/omap/hdmi5: switch to ->edid_read callback
drm: xlnx: zynqmp_dpsub: switch to ->edid_read callback
drm: adv7511: switch to ->edid_read callback
drm: bridge: dw_hdmi: switch to ->edid_read callback
drm: bridge: dw_hdmi: clear the EDID property and CEC address on
failures
drm/bridge: tc358767: update the EDID property
drm/bridge: tc358767: switch to ->edid_read callback
drm/bridge: ti-sn65dsi86: switch to ->edid_read callback
drm/bridge: remove ->get_edid callback
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 47 ++++++++++++-------
drivers/gpu/drm/bridge/analogix/anx7625.c | 30 ++++--------
.../drm/bridge/cadence/cdns-mhdp8546-core.c | 28 ++++++-----
drivers/gpu/drm/bridge/chrontel-ch7033.c | 12 ++---
drivers/gpu/drm/bridge/display-connector.c | 8 ++--
drivers/gpu/drm/bridge/ite-it6505.c | 17 +++----
drivers/gpu/drm/bridge/ite-it66121.c | 16 +++----
drivers/gpu/drm/bridge/lontium-lt8912b.c | 20 ++++----
drivers/gpu/drm/bridge/lontium-lt9611.c | 8 ++--
drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 18 +++----
.../bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 18 +++----
drivers/gpu/drm/bridge/nxp-ptn3460.c | 22 +++++----
drivers/gpu/drm/bridge/sii902x.c | 38 +++++++--------
drivers/gpu/drm/bridge/simple-bridge.c | 17 +++----
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 43 ++++++++++-------
drivers/gpu/drm/bridge/tc358767.c | 17 +++----
drivers/gpu/drm/bridge/ti-sn65dsi86.c | 8 ++--
drivers/gpu/drm/bridge/ti-tfp410.c | 18 +++----
drivers/gpu/drm/drm_bridge.c | 17 +++----
drivers/gpu/drm/drm_bridge_connector.c | 16 +++----
drivers/gpu/drm/mediatek/mtk_dp.c | 31 +++++++-----
drivers/gpu/drm/mediatek/mtk_hdmi.c | 26 ++++++----
drivers/gpu/drm/meson/meson_encoder_hdmi.c | 20 ++++++--
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 33 ++++++++-----
drivers/gpu/drm/omapdrm/dss/hdmi4.c | 22 ++++++---
drivers/gpu/drm/omapdrm/dss/hdmi5.c | 12 ++---
drivers/gpu/drm/xlnx/zynqmp_dp.c | 8 ++--
include/drm/drm_bridge.h | 25 +++++-----
28 files changed, 328 insertions(+), 267 deletions(-)
--
2.39.2
^ permalink raw reply [flat|nested] 44+ messages in thread
* [PATCH v3 01/39] drm/bridge: add ->edid_read hook and drm_bridge_edid_read()
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-25 10:33 ` Neil Armstrong
2024-01-23 19:37 ` [PATCH v3 02/39] drm/bridge: switch to drm_bridge_read_edid() Jani Nikula
` (38 subsequent siblings)
39 siblings, 1 reply; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Add new struct drm_edid based ->edid_read hook and
drm_bridge_edid_read() function to call the hook.
v2: Include drm/drm_edid.h
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/drm_bridge.c | 46 +++++++++++++++++++++++++++++++++++-
include/drm/drm_bridge.h | 33 ++++++++++++++++++++++++++
2 files changed, 78 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index cee3188adf3d..4f6f8c662d3f 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -27,8 +27,9 @@
#include <linux/mutex.h>
#include <drm/drm_atomic_state_helper.h>
-#include <drm/drm_debugfs.h>
#include <drm/drm_bridge.h>
+#include <drm/drm_debugfs.h>
+#include <drm/drm_edid.h>
#include <drm/drm_encoder.h>
#include <drm/drm_file.h>
#include <drm/drm_of.h>
@@ -1206,6 +1207,47 @@ int drm_bridge_get_modes(struct drm_bridge *bridge,
}
EXPORT_SYMBOL_GPL(drm_bridge_get_modes);
+/**
+ * drm_bridge_edid_read - read the EDID data of the connected display
+ * @bridge: bridge control structure
+ * @connector: the connector to read EDID for
+ *
+ * If the bridge supports output EDID retrieval, as reported by the
+ * DRM_BRIDGE_OP_EDID bridge ops flag, call &drm_bridge_funcs.edid_read to get
+ * the EDID and return it. Otherwise return NULL.
+ *
+ * If &drm_bridge_funcs.edid_read is not set, fall back to using
+ * drm_bridge_get_edid() and wrapping it in struct drm_edid.
+ *
+ * RETURNS:
+ * The retrieved EDID on success, or NULL otherwise.
+ */
+const struct drm_edid *drm_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
+{
+ if (!(bridge->ops & DRM_BRIDGE_OP_EDID))
+ return NULL;
+
+ /* Transitional: Fall back to ->get_edid. */
+ if (!bridge->funcs->edid_read) {
+ const struct drm_edid *drm_edid;
+ struct edid *edid;
+
+ edid = drm_bridge_get_edid(bridge, connector);
+ if (!edid)
+ return NULL;
+
+ drm_edid = drm_edid_alloc(edid, (edid->extensions + 1) * EDID_LENGTH);
+
+ kfree(edid);
+
+ return drm_edid;
+ }
+
+ return bridge->funcs->edid_read(bridge, connector);
+}
+EXPORT_SYMBOL_GPL(drm_bridge_edid_read);
+
/**
* drm_bridge_get_edid - get the EDID data of the connected display
* @bridge: bridge control structure
@@ -1215,6 +1257,8 @@ EXPORT_SYMBOL_GPL(drm_bridge_get_modes);
* DRM_BRIDGE_OP_EDID bridge ops flag, call &drm_bridge_funcs.get_edid to
* get the EDID and return it. Otherwise return NULL.
*
+ * Deprecated. Prefer using drm_bridge_edid_read().
+ *
* RETURNS:
* The retrieved EDID on success, or NULL otherwise.
*/
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index e39da5807ba7..b7aed3ead705 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -557,6 +557,37 @@ struct drm_bridge_funcs {
int (*get_modes)(struct drm_bridge *bridge,
struct drm_connector *connector);
+ /**
+ * @edid_read:
+ *
+ * Read the EDID data of the connected display.
+ *
+ * The @edid_read callback is the preferred way of reporting mode
+ * information for a display connected to the bridge output. Bridges
+ * that support reading EDID shall implement this callback and leave
+ * the @get_modes callback unimplemented.
+ *
+ * The caller of this operation shall first verify the output
+ * connection status and refrain from reading EDID from a disconnected
+ * output.
+ *
+ * This callback is optional. Bridges that implement it shall set the
+ * DRM_BRIDGE_OP_EDID flag in their &drm_bridge->ops.
+ *
+ * The connector parameter shall be used for the sole purpose of EDID
+ * retrieval, and shall not be stored internally by bridge drivers for
+ * future usage.
+ *
+ * RETURNS:
+ *
+ * An edid structure newly allocated with drm_edid_alloc() or returned
+ * from drm_edid_read() family of functions on success, or NULL
+ * otherwise. The caller is responsible for freeing the returned edid
+ * structure with drm_edid_free().
+ */
+ const struct drm_edid *(*edid_read)(struct drm_bridge *bridge,
+ struct drm_connector *connector);
+
/**
* @get_edid:
*
@@ -888,6 +919,8 @@ drm_atomic_helper_bridge_propagate_bus_fmt(struct drm_bridge *bridge,
enum drm_connector_status drm_bridge_detect(struct drm_bridge *bridge);
int drm_bridge_get_modes(struct drm_bridge *bridge,
struct drm_connector *connector);
+const struct drm_edid *drm_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector);
struct edid *drm_bridge_get_edid(struct drm_bridge *bridge,
struct drm_connector *connector);
void drm_bridge_hpd_enable(struct drm_bridge *bridge,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 02/39] drm/bridge: switch to drm_bridge_read_edid()
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
2024-01-23 19:37 ` [PATCH v3 01/39] drm/bridge: add ->edid_read hook and drm_bridge_edid_read() Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 03/39] drm/bridge: chrontel-ch7033: " Jani Nikula
` (37 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/drm_bridge_connector.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/drm_bridge_connector.c b/drivers/gpu/drm/drm_bridge_connector.c
index 3acd67021ec6..982552c9f92c 100644
--- a/drivers/gpu/drm/drm_bridge_connector.c
+++ b/drivers/gpu/drm/drm_bridge_connector.c
@@ -239,27 +239,27 @@ static int drm_bridge_connector_get_modes_edid(struct drm_connector *connector,
struct drm_bridge *bridge)
{
enum drm_connector_status status;
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int n;
status = drm_bridge_connector_detect(connector, false);
if (status != connector_status_connected)
goto no_edid;
- edid = drm_bridge_get_edid(bridge, connector);
- if (!drm_edid_is_valid(edid)) {
- kfree(edid);
+ drm_edid = drm_bridge_edid_read(bridge, connector);
+ if (!drm_edid_valid(drm_edid)) {
+ drm_edid_free(drm_edid);
goto no_edid;
}
- drm_connector_update_edid_property(connector, edid);
- n = drm_add_edid_modes(connector, edid);
+ drm_edid_connector_update(connector, drm_edid);
+ n = drm_edid_connector_add_modes(connector);
- kfree(edid);
+ drm_edid_free(drm_edid);
return n;
no_edid:
- drm_connector_update_edid_property(connector, NULL);
+ drm_edid_connector_update(connector, NULL);
return 0;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 03/39] drm/bridge: chrontel-ch7033: switch to drm_bridge_read_edid()
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
2024-01-23 19:37 ` [PATCH v3 01/39] drm/bridge: add ->edid_read hook and drm_bridge_edid_read() Jani Nikula
2024-01-23 19:37 ` [PATCH v3 02/39] drm/bridge: switch to drm_bridge_read_edid() Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 04/39] drm/bridge: lt8912b: use drm_bridge_read_edid() Jani Nikula
` (36 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based functions.
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>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/chrontel-ch7033.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/bridge/chrontel-ch7033.c b/drivers/gpu/drm/bridge/chrontel-ch7033.c
index 483c28c7fc99..c83486cf6b15 100644
--- a/drivers/gpu/drm/bridge/chrontel-ch7033.c
+++ b/drivers/gpu/drm/bridge/chrontel-ch7033.c
@@ -230,14 +230,14 @@ static const struct drm_connector_funcs ch7033_connector_funcs = {
static int ch7033_connector_get_modes(struct drm_connector *connector)
{
struct ch7033_priv *priv = conn_to_ch7033_priv(connector);
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int ret;
- edid = drm_bridge_get_edid(priv->next_bridge, connector);
- drm_connector_update_edid_property(connector, edid);
- if (edid) {
- ret = drm_add_edid_modes(connector, edid);
- kfree(edid);
+ drm_edid = drm_bridge_edid_read(priv->next_bridge, connector);
+ drm_edid_connector_update(connector, drm_edid);
+ if (drm_edid) {
+ ret = drm_edid_connector_add_modes(connector);
+ drm_edid_free(drm_edid);
} else {
ret = drm_add_modes_noedid(connector, 1920, 1080);
drm_set_preferred_mode(connector, 1024, 768);
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 04/39] drm/bridge: lt8912b: use drm_bridge_read_edid()
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (2 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 03/39] drm/bridge: chrontel-ch7033: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 05/39] drm/bridge: lt8912b: clear the EDID property on failures Jani Nikula
` (35 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula, Adrien Grassein
Prefer using the struct drm_edid based functions.
cc: Adrien Grassein <adrien.grassein@gmail.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>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/lontium-lt8912b.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/bridge/lontium-lt8912b.c b/drivers/gpu/drm/bridge/lontium-lt8912b.c
index 273157428c82..4dc748d5d1ee 100644
--- a/drivers/gpu/drm/bridge/lontium-lt8912b.c
+++ b/drivers/gpu/drm/bridge/lontium-lt8912b.c
@@ -440,16 +440,16 @@ lt8912_connector_mode_valid(struct drm_connector *connector,
static int lt8912_connector_get_modes(struct drm_connector *connector)
{
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int ret = -1;
int num = 0;
struct lt8912 *lt = connector_to_lt8912(connector);
u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24;
- edid = drm_bridge_get_edid(lt->hdmi_port, connector);
- if (edid) {
- drm_connector_update_edid_property(connector, edid);
- num = drm_add_edid_modes(connector, edid);
+ drm_edid = drm_bridge_edid_read(lt->hdmi_port, connector);
+ if (drm_edid) {
+ drm_edid_connector_update(connector, drm_edid);
+ num = drm_edid_connector_add_modes(connector);
} else {
return ret;
}
@@ -459,7 +459,7 @@ static int lt8912_connector_get_modes(struct drm_connector *connector)
if (ret)
num = ret;
- kfree(edid);
+ drm_edid_free(drm_edid);
return num;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 05/39] drm/bridge: lt8912b: clear the EDID property on failures
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (3 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 04/39] drm/bridge: lt8912b: use drm_bridge_read_edid() Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 06/39] drm/bridge: lt8912b: use ->edid_read callback Jani Nikula
` (34 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula, Adrien Grassein
If EDID read fails, clear the EDID property.
Cc: Adrien Grassein <adrien.grassein@gmail.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>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/lontium-lt8912b.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/lontium-lt8912b.c b/drivers/gpu/drm/bridge/lontium-lt8912b.c
index 4dc748d5d1ee..9c0ffc1c6fac 100644
--- a/drivers/gpu/drm/bridge/lontium-lt8912b.c
+++ b/drivers/gpu/drm/bridge/lontium-lt8912b.c
@@ -447,8 +447,8 @@ static int lt8912_connector_get_modes(struct drm_connector *connector)
u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24;
drm_edid = drm_bridge_edid_read(lt->hdmi_port, connector);
+ drm_edid_connector_update(connector, drm_edid);
if (drm_edid) {
- drm_edid_connector_update(connector, drm_edid);
num = drm_edid_connector_add_modes(connector);
} else {
return ret;
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 06/39] drm/bridge: lt8912b: use ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (4 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 05/39] drm/bridge: lt8912b: clear the EDID property on failures Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 07/39] drm/bridge: lt9611uxc: use drm_bridge_read_edid() Jani Nikula
` (33 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula, Adrien Grassein
Prefer using the struct drm_edid based functions.
Cc: Adrien Grassein <adrien.grassein@gmail.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>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/lontium-lt8912b.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/lontium-lt8912b.c b/drivers/gpu/drm/bridge/lontium-lt8912b.c
index 9c0ffc1c6fac..e7c4bef74aa4 100644
--- a/drivers/gpu/drm/bridge/lontium-lt8912b.c
+++ b/drivers/gpu/drm/bridge/lontium-lt8912b.c
@@ -620,8 +620,8 @@ lt8912_bridge_detect(struct drm_bridge *bridge)
return lt8912_check_cable_status(lt);
}
-static struct edid *lt8912_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *lt8912_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct lt8912 *lt = bridge_to_lt8912(bridge);
@@ -630,7 +630,7 @@ static struct edid *lt8912_bridge_get_edid(struct drm_bridge *bridge,
* given to the hdmi connector node.
*/
if (lt->hdmi_port->ops & DRM_BRIDGE_OP_EDID)
- return drm_bridge_get_edid(lt->hdmi_port, connector);
+ return drm_bridge_edid_read(lt->hdmi_port, connector);
dev_warn(lt->dev, "The connected bridge does not supports DRM_BRIDGE_OP_EDID\n");
return NULL;
@@ -642,7 +642,7 @@ static const struct drm_bridge_funcs lt8912_bridge_funcs = {
.mode_set = lt8912_bridge_mode_set,
.enable = lt8912_bridge_enable,
.detect = lt8912_bridge_detect,
- .get_edid = lt8912_bridge_get_edid,
+ .edid_read = lt8912_bridge_edid_read,
};
static int lt8912_bridge_resume(struct device *dev)
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 07/39] drm/bridge: lt9611uxc: use drm_bridge_read_edid()
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (5 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 06/39] drm/bridge: lt8912b: use ->edid_read callback Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 08/39] drm: bridge: simple-bridge: use drm_bridge_edid_read() Jani Nikula
` (32 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based functions.
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>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
index f3f130c1ef0a..4eaf99618749 100644
--- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
+++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
@@ -295,12 +295,12 @@ static int lt9611uxc_connector_get_modes(struct drm_connector *connector)
{
struct lt9611uxc *lt9611uxc = connector_to_lt9611uxc(connector);
unsigned int count;
- struct edid *edid;
+ const struct drm_edid *drm_edid;
- edid = drm_bridge_get_edid(<9611uxc->bridge, connector);
- drm_connector_update_edid_property(connector, edid);
- count = drm_add_edid_modes(connector, edid);
- kfree(edid);
+ drm_edid = drm_bridge_edid_read(<9611uxc->bridge, connector);
+ drm_edid_connector_update(connector, drm_edid);
+ count = drm_edid_connector_add_modes(connector);
+ drm_edid_free(drm_edid);
return count;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 08/39] drm: bridge: simple-bridge: use drm_bridge_edid_read()
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (6 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 07/39] drm/bridge: lt9611uxc: use drm_bridge_read_edid() Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 09/39] drm: bridge: simple-bridge: clear the EDID property on failures Jani Nikula
` (31 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based functions.
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>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/simple-bridge.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/bridge/simple-bridge.c b/drivers/gpu/drm/bridge/simple-bridge.c
index cbe8e778d7c7..e0cf7721bb8c 100644
--- a/drivers/gpu/drm/bridge/simple-bridge.c
+++ b/drivers/gpu/drm/bridge/simple-bridge.c
@@ -51,18 +51,18 @@ drm_connector_to_simple_bridge(struct drm_connector *connector)
static int simple_bridge_get_modes(struct drm_connector *connector)
{
struct simple_bridge *sbridge = drm_connector_to_simple_bridge(connector);
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int ret;
if (sbridge->next_bridge->ops & DRM_BRIDGE_OP_EDID) {
- edid = drm_bridge_get_edid(sbridge->next_bridge, connector);
- if (!edid)
+ drm_edid = drm_bridge_edid_read(sbridge->next_bridge, connector);
+ if (!drm_edid)
DRM_INFO("EDID read failed. Fallback to standard modes\n");
} else {
- edid = NULL;
+ drm_edid = NULL;
}
- if (!edid) {
+ if (!drm_edid) {
/*
* In case we cannot retrieve the EDIDs (missing or broken DDC
* bus from the next bridge), fallback on the XGA standards and
@@ -73,9 +73,9 @@ static int simple_bridge_get_modes(struct drm_connector *connector)
return ret;
}
- drm_connector_update_edid_property(connector, edid);
- ret = drm_add_edid_modes(connector, edid);
- kfree(edid);
+ 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] 44+ messages in thread
* [PATCH v3 09/39] drm: bridge: simple-bridge: clear the EDID property on failures
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (7 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 08/39] drm: bridge: simple-bridge: use drm_bridge_edid_read() Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 10/39] drm/bridge: tfp410: use drm_bridge_edid_read() Jani Nikula
` (30 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
If EDID read fails, clear the EDID property.
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>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/simple-bridge.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/simple-bridge.c b/drivers/gpu/drm/bridge/simple-bridge.c
index e0cf7721bb8c..5813a2c4fc5e 100644
--- a/drivers/gpu/drm/bridge/simple-bridge.c
+++ b/drivers/gpu/drm/bridge/simple-bridge.c
@@ -62,6 +62,8 @@ static int simple_bridge_get_modes(struct drm_connector *connector)
drm_edid = NULL;
}
+ drm_edid_connector_update(connector, drm_edid);
+
if (!drm_edid) {
/*
* In case we cannot retrieve the EDIDs (missing or broken DDC
@@ -73,7 +75,6 @@ static int simple_bridge_get_modes(struct drm_connector *connector)
return ret;
}
- drm_edid_connector_update(connector, drm_edid);
ret = drm_edid_connector_add_modes(connector);
drm_edid_free(drm_edid);
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 10/39] drm/bridge: tfp410: use drm_bridge_edid_read()
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (8 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 09/39] drm: bridge: simple-bridge: clear the EDID property on failures Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 11/39] drm/bridge: tfp410: clear the EDID property on failures Jani Nikula
` (29 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based functions.
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>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/ti-tfp410.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
index 28848a8eb42e..dd14731eb03e 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -50,18 +50,18 @@ drm_connector_to_tfp410(struct drm_connector *connector)
static int tfp410_get_modes(struct drm_connector *connector)
{
struct tfp410 *dvi = drm_connector_to_tfp410(connector);
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int ret;
if (dvi->next_bridge->ops & DRM_BRIDGE_OP_EDID) {
- edid = drm_bridge_get_edid(dvi->next_bridge, connector);
- if (!edid)
+ drm_edid = drm_bridge_edid_read(dvi->next_bridge, connector);
+ if (!drm_edid)
DRM_INFO("EDID read failed. Fallback to standard modes\n");
} else {
- edid = NULL;
+ drm_edid = NULL;
}
- if (!edid) {
+ if (!drm_edid) {
/*
* No EDID, fallback on the XGA standard modes and prefer a mode
* pretty much anything can handle.
@@ -71,11 +71,11 @@ static int tfp410_get_modes(struct drm_connector *connector)
return ret;
}
- drm_connector_update_edid_property(connector, edid);
+ drm_edid_connector_update(connector, drm_edid);
- ret = drm_add_edid_modes(connector, edid);
+ ret = drm_edid_connector_add_modes(connector);
- kfree(edid);
+ drm_edid_free(drm_edid);
return ret;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 11/39] drm/bridge: tfp410: clear the EDID property on failures
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (9 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 10/39] drm/bridge: tfp410: use drm_bridge_edid_read() Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 12/39] drm/meson: switch to drm_bridge_edid_read() Jani Nikula
` (28 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
If EDID read fails, clear the EDID property.
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>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/ti-tfp410.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
index dd14731eb03e..c7bef5c23927 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -61,6 +61,8 @@ static int tfp410_get_modes(struct drm_connector *connector)
drm_edid = NULL;
}
+ drm_edid_connector_update(connector, drm_edid);
+
if (!drm_edid) {
/*
* No EDID, fallback on the XGA standard modes and prefer a mode
@@ -71,8 +73,6 @@ static int tfp410_get_modes(struct drm_connector *connector)
return ret;
}
- drm_edid_connector_update(connector, drm_edid);
-
ret = drm_edid_connector_add_modes(connector);
drm_edid_free(drm_edid);
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 12/39] drm/meson: switch to drm_bridge_edid_read()
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (10 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 11/39] drm/bridge: tfp410: clear the EDID property on failures Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 13/39] drm/bridge: remove drm_bridge_get_edid() in favour of drm_bridge_edid_read() Jani Nikula
` (27 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based functions.
Not ideal, should use source physical address from connector info.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/meson/meson_encoder_hdmi.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
index 25ea76558690..fff6ce394f98 100644
--- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c
+++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
@@ -323,19 +323,31 @@ static void meson_encoder_hdmi_hpd_notify(struct drm_bridge *bridge,
enum drm_connector_status status)
{
struct meson_encoder_hdmi *encoder_hdmi = bridge_to_meson_encoder_hdmi(bridge);
- struct edid *edid;
if (!encoder_hdmi->cec_notifier)
return;
if (status == connector_status_connected) {
- edid = drm_bridge_get_edid(encoder_hdmi->next_bridge, encoder_hdmi->connector);
- if (!edid)
+ const struct drm_edid *drm_edid;
+ const struct edid *edid;
+
+ drm_edid = drm_bridge_edid_read(encoder_hdmi->next_bridge,
+ encoder_hdmi->connector);
+ if (!drm_edid)
return;
+ /*
+ * FIXME: The CEC physical address should be set using
+ * cec_notifier_set_phys_addr(encoder_hdmi->cec_notifier,
+ * connector->display_info.source_physical_address) from a path
+ * that has read the EDID and called
+ * drm_edid_connector_update().
+ */
+ edid = drm_edid_raw(drm_edid);
+
cec_notifier_set_phys_addr_from_edid(encoder_hdmi->cec_notifier, edid);
- kfree(edid);
+ drm_edid_free(drm_edid);
} else
cec_notifier_phys_addr_invalidate(encoder_hdmi->cec_notifier);
}
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 13/39] drm/bridge: remove drm_bridge_get_edid() in favour of drm_bridge_edid_read()
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (11 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 12/39] drm/meson: switch to drm_bridge_edid_read() Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 14/39] drm/bridge: anx7625: switch to ->edid_read callback Jani Nikula
` (26 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
All users of drm_bridge_get_edid() have been converted to use
drm_bridge_edid_read(). Remove drm_bridge_get_edid().
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/drm_bridge.c | 28 ++--------------------------
include/drm/drm_bridge.h | 2 --
2 files changed, 2 insertions(+), 28 deletions(-)
diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index 4f6f8c662d3f..a3065d4aa3d6 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -1217,7 +1217,7 @@ EXPORT_SYMBOL_GPL(drm_bridge_get_modes);
* the EDID and return it. Otherwise return NULL.
*
* If &drm_bridge_funcs.edid_read is not set, fall back to using
- * drm_bridge_get_edid() and wrapping it in struct drm_edid.
+ * &drm_bridge_funcs.get_edid and wrapping it in struct drm_edid.
*
* RETURNS:
* The retrieved EDID on success, or NULL otherwise.
@@ -1233,7 +1233,7 @@ const struct drm_edid *drm_bridge_edid_read(struct drm_bridge *bridge,
const struct drm_edid *drm_edid;
struct edid *edid;
- edid = drm_bridge_get_edid(bridge, connector);
+ edid = bridge->funcs->get_edid(bridge, connector);
if (!edid)
return NULL;
@@ -1248,30 +1248,6 @@ const struct drm_edid *drm_bridge_edid_read(struct drm_bridge *bridge,
}
EXPORT_SYMBOL_GPL(drm_bridge_edid_read);
-/**
- * drm_bridge_get_edid - get the EDID data of the connected display
- * @bridge: bridge control structure
- * @connector: the connector to read EDID for
- *
- * If the bridge supports output EDID retrieval, as reported by the
- * DRM_BRIDGE_OP_EDID bridge ops flag, call &drm_bridge_funcs.get_edid to
- * get the EDID and return it. Otherwise return NULL.
- *
- * Deprecated. Prefer using drm_bridge_edid_read().
- *
- * RETURNS:
- * The retrieved EDID on success, or NULL otherwise.
- */
-struct edid *drm_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
-{
- if (!(bridge->ops & DRM_BRIDGE_OP_EDID))
- return NULL;
-
- return bridge->funcs->get_edid(bridge, connector);
-}
-EXPORT_SYMBOL_GPL(drm_bridge_get_edid);
-
/**
* drm_bridge_hpd_enable - enable hot plug detection for the bridge
* @bridge: bridge control structure
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index b7aed3ead705..ee12f829aaf7 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -921,8 +921,6 @@ int drm_bridge_get_modes(struct drm_bridge *bridge,
struct drm_connector *connector);
const struct drm_edid *drm_bridge_edid_read(struct drm_bridge *bridge,
struct drm_connector *connector);
-struct edid *drm_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector);
void drm_bridge_hpd_enable(struct drm_bridge *bridge,
void (*cb)(void *data,
enum drm_connector_status status),
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 14/39] drm/bridge: anx7625: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (12 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 13/39] drm/bridge: remove drm_bridge_get_edid() in favour of drm_bridge_edid_read() Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 15/39] drm/bridge: cdns-mhdp8546: " Jani Nikula
` (25 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback.
v2: Fix build (goto out;)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/analogix/anx7625.c | 30 ++++++++---------------
1 file changed, 10 insertions(+), 20 deletions(-)
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 29d91493b101..9d96d28d6fe8 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -1784,24 +1784,14 @@ static ssize_t anx7625_aux_transfer(struct drm_dp_aux *aux,
return ret;
}
-static struct edid *anx7625_get_edid(struct anx7625_data *ctx)
+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;
int edid_num;
- u8 *edid;
- edid = kmalloc(FOUR_BLOCK_SIZE, GFP_KERNEL);
- if (!edid) {
- DRM_DEV_ERROR(dev, "Fail to allocate buffer\n");
- return NULL;
- }
-
- if (ctx->slimport_edid_p.edid_block_num > 0) {
- memcpy(edid, ctx->slimport_edid_p.edid_raw_data,
- FOUR_BLOCK_SIZE);
- return (struct edid *)edid;
- }
+ if (ctx->slimport_edid_p.edid_block_num > 0)
+ goto out;
pm_runtime_get_sync(dev);
_anx7625_hpd_polling(ctx, 5000 * 100);
@@ -1810,14 +1800,14 @@ static struct edid *anx7625_get_edid(struct anx7625_data *ctx)
if (edid_num < 1) {
DRM_DEV_ERROR(dev, "Fail to read EDID: %d\n", edid_num);
- kfree(edid);
return NULL;
}
p_edid->edid_block_num = edid_num;
- memcpy(edid, ctx->slimport_edid_p.edid_raw_data, FOUR_BLOCK_SIZE);
- return (struct edid *)edid;
+out:
+ return drm_edid_alloc(ctx->slimport_edid_p.edid_raw_data,
+ FOUR_BLOCK_SIZE);
}
static enum drm_connector_status anx7625_sink_detect(struct anx7625_data *ctx)
@@ -2492,15 +2482,15 @@ anx7625_bridge_detect(struct drm_bridge *bridge)
return anx7625_sink_detect(ctx);
}
-static struct edid *anx7625_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *anx7625_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct anx7625_data *ctx = bridge_to_anx7625(bridge);
struct device *dev = ctx->dev;
DRM_DEV_DEBUG_DRIVER(dev, "drm bridge get edid\n");
- return anx7625_get_edid(ctx);
+ return anx7625_edid_read(ctx);
}
static const struct drm_bridge_funcs anx7625_bridge_funcs = {
@@ -2515,7 +2505,7 @@ static const struct drm_bridge_funcs anx7625_bridge_funcs = {
.atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
.atomic_reset = drm_atomic_helper_bridge_reset,
.detect = anx7625_bridge_detect,
- .get_edid = anx7625_bridge_get_edid,
+ .edid_read = anx7625_bridge_edid_read,
};
static int anx7625_register_i2c_dummy_clients(struct anx7625_data *ctx,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 15/39] drm/bridge: cdns-mhdp8546: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (13 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 14/39] drm/bridge: anx7625: switch to ->edid_read callback Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 16/39] drm/bridge: cdns-mhdp8546: clear the EDID property on failures Jani Nikula
` (24 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
.../drm/bridge/cadence/cdns-mhdp8546-core.c | 26 +++++++++----------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
index 7d470527455b..e44cb89c33f0 100644
--- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
+++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
@@ -1505,33 +1505,33 @@ static void cdns_mhdp_link_down(struct cdns_mhdp_device *mhdp)
mhdp->link_up = false;
}
-static struct edid *cdns_mhdp_get_edid(struct cdns_mhdp_device *mhdp,
- struct drm_connector *connector)
+static const struct drm_edid *cdns_mhdp_edid_read(struct cdns_mhdp_device *mhdp,
+ struct drm_connector *connector)
{
if (!mhdp->plugged)
return NULL;
- return drm_do_get_edid(connector, cdns_mhdp_get_edid_block, mhdp);
+ return drm_edid_read_custom(connector, cdns_mhdp_get_edid_block, mhdp);
}
static int cdns_mhdp_get_modes(struct drm_connector *connector)
{
struct cdns_mhdp_device *mhdp = connector_to_mhdp(connector);
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int num_modes;
if (!mhdp->plugged)
return 0;
- edid = cdns_mhdp_get_edid(mhdp, connector);
- if (!edid) {
+ drm_edid = cdns_mhdp_edid_read(mhdp, connector);
+ if (!drm_edid) {
dev_err(mhdp->dev, "Failed to read EDID\n");
return 0;
}
- drm_connector_update_edid_property(connector, edid);
- num_modes = drm_add_edid_modes(connector, edid);
- kfree(edid);
+ drm_edid_connector_update(connector, drm_edid);
+ num_modes = drm_edid_connector_add_modes(connector);
+ drm_edid_free(drm_edid);
/*
* HACK: Warn about unsupported display formats until we deal
@@ -2220,12 +2220,12 @@ static enum drm_connector_status cdns_mhdp_bridge_detect(struct drm_bridge *brid
return cdns_mhdp_detect(mhdp);
}
-static struct edid *cdns_mhdp_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *cdns_mhdp_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct cdns_mhdp_device *mhdp = bridge_to_mhdp(bridge);
- return cdns_mhdp_get_edid(mhdp, connector);
+ return cdns_mhdp_edid_read(mhdp, connector);
}
static const struct drm_bridge_funcs cdns_mhdp_bridge_funcs = {
@@ -2239,7 +2239,7 @@ static const struct drm_bridge_funcs cdns_mhdp_bridge_funcs = {
.atomic_reset = cdns_mhdp_bridge_atomic_reset,
.atomic_get_input_bus_fmts = cdns_mhdp_get_input_bus_fmts,
.detect = cdns_mhdp_bridge_detect,
- .get_edid = cdns_mhdp_bridge_get_edid,
+ .edid_read = cdns_mhdp_bridge_edid_read,
.hpd_enable = cdns_mhdp_bridge_hpd_enable,
.hpd_disable = cdns_mhdp_bridge_hpd_disable,
};
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 16/39] drm/bridge: cdns-mhdp8546: clear the EDID property on failures
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (14 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 15/39] drm/bridge: cdns-mhdp8546: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 17/39] drm/bridge: display-connector: switch to ->edid_read callback Jani Nikula
` (23 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
If EDID read fails, clear the EDID property.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
index e44cb89c33f0..e226acc5c15e 100644
--- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
+++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
@@ -1524,12 +1524,14 @@ static int cdns_mhdp_get_modes(struct drm_connector *connector)
return 0;
drm_edid = cdns_mhdp_edid_read(mhdp, connector);
+
+ drm_edid_connector_update(connector, drm_edid);
+
if (!drm_edid) {
dev_err(mhdp->dev, "Failed to read EDID\n");
return 0;
}
- drm_edid_connector_update(connector, drm_edid);
num_modes = drm_edid_connector_add_modes(connector);
drm_edid_free(drm_edid);
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 17/39] drm/bridge: display-connector: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (15 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 16/39] drm/bridge: cdns-mhdp8546: clear the EDID property on failures Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 18/39] drm/bridge: it6505: " Jani Nikula
` (22 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/display-connector.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/bridge/display-connector.c
index 08bd5695ddae..ab8e00baf3f1 100644
--- a/drivers/gpu/drm/bridge/display-connector.c
+++ b/drivers/gpu/drm/bridge/display-connector.c
@@ -81,12 +81,12 @@ display_connector_detect(struct drm_bridge *bridge)
}
}
-static struct edid *display_connector_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *display_connector_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct display_connector *conn = to_display_connector(bridge);
- return drm_get_edid(connector, conn->bridge.ddc);
+ return drm_edid_read_ddc(connector, conn->bridge.ddc);
}
/*
@@ -172,7 +172,7 @@ static u32 *display_connector_get_input_bus_fmts(struct drm_bridge *bridge,
static const struct drm_bridge_funcs display_connector_bridge_funcs = {
.attach = display_connector_attach,
.detect = display_connector_detect,
- .get_edid = display_connector_get_edid,
+ .edid_read = display_connector_edid_read,
.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,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 18/39] drm/bridge: it6505: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (16 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 17/39] drm/bridge: display-connector: switch to ->edid_read callback Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 19/39] drm: bridge: it66121: " Jani Nikula
` (21 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/ite-it6505.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/ite-it6505.c
index b589136ca6da..27334173e911 100644
--- a/drivers/gpu/drm/bridge/ite-it6505.c
+++ b/drivers/gpu/drm/bridge/ite-it6505.c
@@ -458,7 +458,7 @@ struct it6505 {
/* it6505 driver hold option */
bool enable_drv_hold;
- struct edid *cached_edid;
+ const struct drm_edid *cached_edid;
};
struct it6505_step_train_para {
@@ -2263,7 +2263,7 @@ static void it6505_plugged_status_to_codec(struct it6505 *it6505)
static void it6505_remove_edid(struct it6505 *it6505)
{
- kfree(it6505->cached_edid);
+ drm_edid_free(it6505->cached_edid);
it6505->cached_edid = NULL;
}
@@ -3034,15 +3034,16 @@ it6505_bridge_detect(struct drm_bridge *bridge)
return it6505_detect(it6505);
}
-static struct edid *it6505_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *it6505_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct it6505 *it6505 = bridge_to_it6505(bridge);
struct device *dev = it6505->dev;
if (!it6505->cached_edid) {
- it6505->cached_edid = drm_do_get_edid(connector, it6505_get_edid_block,
- it6505);
+ it6505->cached_edid = drm_edid_read_custom(connector,
+ it6505_get_edid_block,
+ it6505);
if (!it6505->cached_edid) {
DRM_DEV_DEBUG_DRIVER(dev, "failed to get edid!");
@@ -3050,7 +3051,7 @@ static struct edid *it6505_bridge_get_edid(struct drm_bridge *bridge,
}
}
- return drm_edid_duplicate(it6505->cached_edid);
+ return drm_edid_dup(it6505->cached_edid);
}
static const struct drm_bridge_funcs it6505_bridge_funcs = {
@@ -3065,7 +3066,7 @@ static const struct drm_bridge_funcs it6505_bridge_funcs = {
.atomic_pre_enable = it6505_bridge_atomic_pre_enable,
.atomic_post_disable = it6505_bridge_atomic_post_disable,
.detect = it6505_bridge_detect,
- .get_edid = it6505_bridge_get_edid,
+ .edid_read = it6505_bridge_edid_read,
};
static __maybe_unused int it6505_bridge_resume(struct device *dev)
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 19/39] drm: bridge: it66121: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (17 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 18/39] drm/bridge: it6505: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 20/39] drm/bridge: lt9611: " Jani Nikula
` (20 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/ite-it66121.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c
index 1cf3fb1f13dc..1c3433b5e366 100644
--- a/drivers/gpu/drm/bridge/ite-it66121.c
+++ b/drivers/gpu/drm/bridge/ite-it66121.c
@@ -874,33 +874,33 @@ static void it66121_bridge_hpd_disable(struct drm_bridge *bridge)
dev_err(ctx->dev, "failed to disable HPD IRQ\n");
}
-static struct edid *it66121_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *it66121_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge);
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int ret;
mutex_lock(&ctx->lock);
ret = it66121_preamble_ddc(ctx);
if (ret) {
- edid = NULL;
+ drm_edid = NULL;
goto out_unlock;
}
ret = regmap_write(ctx->regmap, IT66121_DDC_HEADER_REG,
IT66121_DDC_HEADER_EDID);
if (ret) {
- edid = NULL;
+ drm_edid = NULL;
goto out_unlock;
}
- edid = drm_do_get_edid(connector, it66121_get_edid_block, ctx);
+ drm_edid = drm_edid_read_custom(connector, it66121_get_edid_block, ctx);
out_unlock:
mutex_unlock(&ctx->lock);
- return edid;
+ return drm_edid;
}
static const struct drm_bridge_funcs it66121_bridge_funcs = {
@@ -916,7 +916,7 @@ static const struct drm_bridge_funcs it66121_bridge_funcs = {
.mode_set = it66121_bridge_mode_set,
.mode_valid = it66121_bridge_mode_valid,
.detect = it66121_bridge_detect,
- .get_edid = it66121_bridge_get_edid,
+ .edid_read = it66121_bridge_edid_read,
.hpd_enable = it66121_bridge_hpd_enable,
.hpd_disable = it66121_bridge_hpd_disable,
};
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 20/39] drm/bridge: lt9611: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (18 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 19/39] drm: bridge: it66121: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 21/39] drm/bridge: lt9611uxc: " Jani Nikula
` (19 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/lontium-lt9611.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/bridge/lontium-lt9611.c
index b9205d14d943..a9c7e2b07ea1 100644
--- a/drivers/gpu/drm/bridge/lontium-lt9611.c
+++ b/drivers/gpu/drm/bridge/lontium-lt9611.c
@@ -847,13 +847,13 @@ lt9611_bridge_atomic_post_disable(struct drm_bridge *bridge,
lt9611_sleep_setup(lt9611);
}
-static struct edid *lt9611_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *lt9611_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
lt9611_power_on(lt9611);
- return drm_do_get_edid(connector, lt9611_get_edid_block, lt9611);
+ return drm_edid_read_custom(connector, lt9611_get_edid_block, lt9611);
}
static void lt9611_bridge_hpd_enable(struct drm_bridge *bridge)
@@ -893,7 +893,7 @@ static const struct drm_bridge_funcs lt9611_bridge_funcs = {
.attach = lt9611_bridge_attach,
.mode_valid = lt9611_bridge_mode_valid,
.detect = lt9611_bridge_detect,
- .get_edid = lt9611_bridge_get_edid,
+ .edid_read = lt9611_bridge_edid_read,
.hpd_enable = lt9611_bridge_hpd_enable,
.atomic_pre_enable = lt9611_bridge_atomic_pre_enable,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 21/39] drm/bridge: lt9611uxc: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (19 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 20/39] drm/bridge: lt9611: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 22/39] drm/bridge: megachips: " Jani Nikula
` (18 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
index 4eaf99618749..bcf8bccd86d6 100644
--- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
+++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c
@@ -495,8 +495,8 @@ static int lt9611uxc_get_edid_block(void *data, u8 *buf, unsigned int block, siz
return 0;
};
-static struct edid *lt9611uxc_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *lt9611uxc_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct lt9611uxc *lt9611uxc = bridge_to_lt9611uxc(bridge);
int ret;
@@ -510,7 +510,7 @@ static struct edid *lt9611uxc_bridge_get_edid(struct drm_bridge *bridge,
return NULL;
}
- return drm_do_get_edid(connector, lt9611uxc_get_edid_block, lt9611uxc);
+ return drm_edid_read_custom(connector, lt9611uxc_get_edid_block, lt9611uxc);
}
static const struct drm_bridge_funcs lt9611uxc_bridge_funcs = {
@@ -518,7 +518,7 @@ static const struct drm_bridge_funcs lt9611uxc_bridge_funcs = {
.mode_valid = lt9611uxc_bridge_mode_valid,
.mode_set = lt9611uxc_bridge_mode_set,
.detect = lt9611uxc_bridge_detect,
- .get_edid = lt9611uxc_bridge_get_edid,
+ .edid_read = lt9611uxc_bridge_edid_read,
};
static int lt9611uxc_parse_dt(struct device *dev,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 22/39] drm/bridge: megachips: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (20 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 21/39] drm/bridge: lt9611uxc: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 23/39] drm/bridge: nxp-ptn3460: " Jani Nikula
` (17 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
.../bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
index e93083bbec9d..4480523244e4 100644
--- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
+++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
@@ -91,26 +91,26 @@ static int stdp2690_read_block(void *context, u8 *buf, unsigned int block, size_
return 0;
}
-static struct edid *ge_b850v3_lvds_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *ge_b850v3_lvds_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct i2c_client *client;
client = ge_b850v3_lvds_ptr->stdp2690_i2c;
- return drm_do_get_edid(connector, stdp2690_read_block, client);
+ return drm_edid_read_custom(connector, stdp2690_read_block, client);
}
static int ge_b850v3_lvds_get_modes(struct drm_connector *connector)
{
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int num_modes;
- edid = ge_b850v3_lvds_get_edid(&ge_b850v3_lvds_ptr->bridge, connector);
+ drm_edid = ge_b850v3_lvds_edid_read(&ge_b850v3_lvds_ptr->bridge, connector);
- drm_connector_update_edid_property(connector, edid);
- num_modes = drm_add_edid_modes(connector, edid);
- kfree(edid);
+ drm_edid_connector_update(connector, drm_edid);
+ num_modes = drm_edid_connector_add_modes(connector);
+ drm_edid_free(drm_edid);
return num_modes;
}
@@ -226,7 +226,7 @@ static int ge_b850v3_lvds_attach(struct drm_bridge *bridge,
static const struct drm_bridge_funcs ge_b850v3_lvds_funcs = {
.attach = ge_b850v3_lvds_attach,
.detect = ge_b850v3_lvds_bridge_detect,
- .get_edid = ge_b850v3_lvds_get_edid,
+ .edid_read = ge_b850v3_lvds_edid_read,
};
static int ge_b850v3_lvds_init(struct device *dev)
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 23/39] drm/bridge: nxp-ptn3460: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (21 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 22/39] drm/bridge: megachips: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 24/39] drm/bridge: sii902x: use display info is_hdmi Jani Nikula
` (16 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
v2: Fix -Wsometimes-uninitialized (kernel test robot)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/nxp-ptn3460.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
index 7c0076e49953..ed93fd4c3265 100644
--- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
+++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
@@ -154,10 +154,11 @@ static void ptn3460_disable(struct drm_bridge *bridge)
}
-static struct edid *ptn3460_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *ptn3460_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct ptn3460_bridge *ptn_bridge = bridge_to_ptn3460(bridge);
+ const struct drm_edid *drm_edid = NULL;
bool power_off;
u8 *edid;
int ret;
@@ -175,27 +176,28 @@ static struct edid *ptn3460_get_edid(struct drm_bridge *bridge,
EDID_LENGTH);
if (ret) {
kfree(edid);
- edid = NULL;
goto out;
}
+ drm_edid = drm_edid_alloc(edid, EDID_LENGTH);
+
out:
if (power_off)
ptn3460_disable(&ptn_bridge->bridge);
- return (struct edid *)edid;
+ return drm_edid;
}
static int ptn3460_connector_get_modes(struct drm_connector *connector)
{
struct ptn3460_bridge *ptn_bridge = connector_to_ptn3460(connector);
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int num_modes;
- edid = ptn3460_get_edid(&ptn_bridge->bridge, connector);
- drm_connector_update_edid_property(connector, edid);
- num_modes = drm_add_edid_modes(connector, edid);
- kfree(edid);
+ drm_edid = ptn3460_edid_read(&ptn_bridge->bridge, connector);
+ drm_edid_connector_update(connector, drm_edid);
+ num_modes = drm_edid_connector_add_modes(connector);
+ drm_edid_free(drm_edid);
return num_modes;
}
@@ -254,7 +256,7 @@ static const struct drm_bridge_funcs ptn3460_bridge_funcs = {
.pre_enable = ptn3460_pre_enable,
.disable = ptn3460_disable,
.attach = ptn3460_bridge_attach,
- .get_edid = ptn3460_get_edid,
+ .edid_read = ptn3460_edid_read,
};
static int ptn3460_probe(struct i2c_client *client)
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 24/39] drm/bridge: sii902x: use display info is_hdmi
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (22 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 23/39] drm/bridge: nxp-ptn3460: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 25/39] drm/bridge: sii902x: switch to ->edid_read callback Jani Nikula
` (15 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Use the pre-parsed information instead of parsing EDID again.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/sii902x.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c
index 4560ae9cbce1..d59e668498c3 100644
--- a/drivers/gpu/drm/bridge/sii902x.c
+++ b/drivers/gpu/drm/bridge/sii902x.c
@@ -286,12 +286,6 @@ static struct edid *sii902x_get_edid(struct sii902x *sii902x,
mutex_lock(&sii902x->mutex);
edid = drm_get_edid(connector, sii902x->i2cmux->adapter[0]);
- if (edid) {
- if (drm_detect_hdmi_monitor(edid))
- sii902x->sink_is_hdmi = true;
- else
- sii902x->sink_is_hdmi = false;
- }
mutex_unlock(&sii902x->mutex);
@@ -311,6 +305,8 @@ static int sii902x_get_modes(struct drm_connector *connector)
kfree(edid);
}
+ sii902x->sink_is_hdmi = connector->display_info.is_hdmi;
+
return num;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 25/39] drm/bridge: sii902x: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (23 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 24/39] drm/bridge: sii902x: use display info is_hdmi Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 26/39] drm/mediatek/dp: " Jani Nikula
` (14 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/sii902x.c | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c
index d59e668498c3..8f84e98249c7 100644
--- a/drivers/gpu/drm/bridge/sii902x.c
+++ b/drivers/gpu/drm/bridge/sii902x.c
@@ -278,31 +278,31 @@ static const struct drm_connector_funcs sii902x_connector_funcs = {
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
};
-static struct edid *sii902x_get_edid(struct sii902x *sii902x,
- struct drm_connector *connector)
+static const struct drm_edid *sii902x_edid_read(struct sii902x *sii902x,
+ struct drm_connector *connector)
{
- struct edid *edid;
+ const struct drm_edid *drm_edid;
mutex_lock(&sii902x->mutex);
- edid = drm_get_edid(connector, sii902x->i2cmux->adapter[0]);
+ drm_edid = drm_edid_read_ddc(connector, sii902x->i2cmux->adapter[0]);
mutex_unlock(&sii902x->mutex);
- return edid;
+ return drm_edid;
}
static int sii902x_get_modes(struct drm_connector *connector)
{
struct sii902x *sii902x = connector_to_sii902x(connector);
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int num = 0;
- edid = sii902x_get_edid(sii902x, connector);
- drm_connector_update_edid_property(connector, edid);
- if (edid) {
- num = drm_add_edid_modes(connector, edid);
- kfree(edid);
+ drm_edid = sii902x_edid_read(sii902x, connector);
+ drm_edid_connector_update(connector, drm_edid);
+ if (drm_edid) {
+ num = drm_edid_connector_add_modes(connector);
+ drm_edid_free(drm_edid);
}
sii902x->sink_is_hdmi = connector->display_info.is_hdmi;
@@ -461,12 +461,12 @@ static enum drm_connector_status sii902x_bridge_detect(struct drm_bridge *bridge
return sii902x_detect(sii902x);
}
-static struct edid *sii902x_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *sii902x_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct sii902x *sii902x = bridge_to_sii902x(bridge);
- return sii902x_get_edid(sii902x, connector);
+ return sii902x_edid_read(sii902x, connector);
}
static u32 *sii902x_bridge_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
@@ -510,7 +510,7 @@ static const struct drm_bridge_funcs sii902x_bridge_funcs = {
.disable = sii902x_bridge_disable,
.enable = sii902x_bridge_enable,
.detect = sii902x_bridge_detect,
- .get_edid = sii902x_bridge_get_edid,
+ .edid_read = sii902x_bridge_edid_read,
.atomic_reset = drm_atomic_helper_bridge_reset,
.atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 26/39] drm/mediatek/dp: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (24 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 25/39] drm/bridge: sii902x: switch to ->edid_read callback Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 27/39] drm/mediatek/hdmi: " Jani Nikula
` (13 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/mediatek/mtk_dp.c | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/mtk_dp.c
index 2136a596efa1..0ba72102636a 100644
--- a/drivers/gpu/drm/mediatek/mtk_dp.c
+++ b/drivers/gpu/drm/mediatek/mtk_dp.c
@@ -2042,12 +2042,12 @@ static enum drm_connector_status mtk_dp_bdg_detect(struct drm_bridge *bridge)
return ret;
}
-static struct edid *mtk_dp_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *mtk_dp_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct mtk_dp *mtk_dp = mtk_dp_from_bridge(bridge);
bool enabled = mtk_dp->enabled;
- struct edid *new_edid = NULL;
+ const struct drm_edid *drm_edid;
struct mtk_dp_audio_cfg *audio_caps = &mtk_dp->info.audio_cur_cfg;
if (!enabled) {
@@ -2055,7 +2055,7 @@ static struct edid *mtk_dp_get_edid(struct drm_bridge *bridge,
mtk_dp_aux_panel_poweron(mtk_dp, true);
}
- new_edid = drm_get_edid(connector, &mtk_dp->aux.ddc);
+ drm_edid = drm_edid_read_ddc(connector, &mtk_dp->aux.ddc);
/*
* Parse capability here to let atomic_get_input_bus_fmts and
@@ -2063,17 +2063,26 @@ static struct edid *mtk_dp_get_edid(struct drm_bridge *bridge,
*/
if (mtk_dp_parse_capabilities(mtk_dp)) {
drm_err(mtk_dp->drm_dev, "Can't parse capabilities\n");
- kfree(new_edid);
- new_edid = NULL;
+ drm_edid_free(drm_edid);
+ drm_edid = NULL;
}
- if (new_edid) {
+ if (drm_edid) {
+ /*
+ * FIXME: get rid of drm_edid_raw()
+ */
+ const struct edid *edid = drm_edid_raw(drm_edid);
struct cea_sad *sads;
- audio_caps->sad_count = drm_edid_to_sad(new_edid, &sads);
+ audio_caps->sad_count = drm_edid_to_sad(edid, &sads);
kfree(sads);
- audio_caps->detect_monitor = drm_detect_monitor_audio(new_edid);
+ /*
+ * FIXME: This should use connector->display_info.has_audio from
+ * a path that has read the EDID and called
+ * drm_edid_connector_update().
+ */
+ audio_caps->detect_monitor = drm_detect_monitor_audio(edid);
}
if (!enabled) {
@@ -2081,7 +2090,7 @@ static struct edid *mtk_dp_get_edid(struct drm_bridge *bridge,
drm_atomic_bridge_chain_post_disable(bridge, connector->state->state);
}
- return new_edid;
+ return drm_edid;
}
static ssize_t mtk_dp_aux_transfer(struct drm_dp_aux *mtk_aux,
@@ -2433,7 +2442,7 @@ static const struct drm_bridge_funcs mtk_dp_bridge_funcs = {
.atomic_enable = mtk_dp_bridge_atomic_enable,
.atomic_disable = mtk_dp_bridge_atomic_disable,
.mode_valid = mtk_dp_bridge_mode_valid,
- .get_edid = mtk_dp_get_edid,
+ .edid_read = mtk_dp_edid_read,
.detect = mtk_dp_bdg_detect,
};
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 27/39] drm/mediatek/hdmi: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (25 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 26/39] drm/mediatek/dp: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 28/39] drm/msm/hdmi: fix indent Jani Nikula
` (12 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/mediatek/mtk_hdmi.c | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index 86133bf16326..c6bdc565e4a9 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -1265,19 +1265,27 @@ static enum drm_connector_status mtk_hdmi_bridge_detect(struct drm_bridge *bridg
return mtk_hdmi_detect(hdmi);
}
-static struct edid *mtk_hdmi_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *mtk_hdmi_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct mtk_hdmi *hdmi = hdmi_ctx_from_bridge(bridge);
- struct edid *edid;
+ const struct drm_edid *drm_edid;
if (!hdmi->ddc_adpt)
return NULL;
- edid = drm_get_edid(connector, hdmi->ddc_adpt);
- if (!edid)
- return NULL;
- hdmi->dvi_mode = !drm_detect_monitor_audio(edid);
- return edid;
+ drm_edid = drm_edid_read_ddc(connector, hdmi->ddc_adpt);
+ if (drm_edid) {
+ /*
+ * FIXME: This should use !connector->display_info.has_audio (or
+ * !connector->display_info.is_hdmi) from a path that has read
+ * the EDID and called drm_edid_connector_update().
+ */
+ const struct edid *edid = drm_edid_raw(drm_edid);
+
+ hdmi->dvi_mode = !drm_detect_monitor_audio(edid);
+ }
+
+ return drm_edid;
}
static int mtk_hdmi_bridge_attach(struct drm_bridge *bridge,
@@ -1417,7 +1425,7 @@ static const struct drm_bridge_funcs mtk_hdmi_bridge_funcs = {
.atomic_pre_enable = mtk_hdmi_bridge_atomic_pre_enable,
.atomic_enable = mtk_hdmi_bridge_atomic_enable,
.detect = mtk_hdmi_bridge_detect,
- .get_edid = mtk_hdmi_bridge_get_edid,
+ .edid_read = mtk_hdmi_bridge_edid_read,
};
static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 28/39] drm/msm/hdmi: fix indent
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (26 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 27/39] drm/mediatek/hdmi: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 29/39] drm/msm/hdmi: switch to ->edid_read callback Jani Nikula
` (11 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Remove the excess leading tabs.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
index f5e01471b0b0..f28c61570533 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
@@ -290,12 +290,12 @@ static enum drm_mode_status msm_hdmi_bridge_mode_valid(struct drm_bridge *bridge
}
static const struct drm_bridge_funcs msm_hdmi_bridge_funcs = {
- .pre_enable = msm_hdmi_bridge_pre_enable,
- .post_disable = msm_hdmi_bridge_post_disable,
- .mode_set = msm_hdmi_bridge_mode_set,
- .mode_valid = msm_hdmi_bridge_mode_valid,
- .get_edid = msm_hdmi_bridge_get_edid,
- .detect = msm_hdmi_bridge_detect,
+ .pre_enable = msm_hdmi_bridge_pre_enable,
+ .post_disable = msm_hdmi_bridge_post_disable,
+ .mode_set = msm_hdmi_bridge_mode_set,
+ .mode_valid = msm_hdmi_bridge_mode_valid,
+ .get_edid = msm_hdmi_bridge_get_edid,
+ .detect = msm_hdmi_bridge_detect,
};
static void
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 29/39] drm/msm/hdmi: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (27 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 28/39] drm/msm/hdmi: fix indent Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 30/39] drm/omap/hdmi4: " Jani Nikula
` (10 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
index f28c61570533..4a5b5112227f 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
@@ -236,24 +236,33 @@ static void msm_hdmi_bridge_mode_set(struct drm_bridge *bridge,
msm_hdmi_audio_update(hdmi);
}
-static struct edid *msm_hdmi_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *msm_hdmi_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge);
struct hdmi *hdmi = hdmi_bridge->hdmi;
- struct edid *edid;
+ const struct drm_edid *drm_edid;
uint32_t hdmi_ctrl;
hdmi_ctrl = hdmi_read(hdmi, REG_HDMI_CTRL);
hdmi_write(hdmi, REG_HDMI_CTRL, hdmi_ctrl | HDMI_CTRL_ENABLE);
- edid = drm_get_edid(connector, hdmi->i2c);
+ drm_edid = drm_edid_read_ddc(connector, hdmi->i2c);
hdmi_write(hdmi, REG_HDMI_CTRL, hdmi_ctrl);
- hdmi->hdmi_mode = drm_detect_hdmi_monitor(edid);
+ if (drm_edid) {
+ /*
+ * FIXME: This should use connector->display_info.is_hdmi from a
+ * path that has read the EDID and called
+ * drm_edid_connector_update().
+ */
+ const struct edid *edid = drm_edid_raw(drm_edid);
- return edid;
+ hdmi->hdmi_mode = drm_detect_hdmi_monitor(edid);
+ }
+
+ return drm_edid;
}
static enum drm_mode_status msm_hdmi_bridge_mode_valid(struct drm_bridge *bridge,
@@ -294,7 +303,7 @@ static const struct drm_bridge_funcs msm_hdmi_bridge_funcs = {
.post_disable = msm_hdmi_bridge_post_disable,
.mode_set = msm_hdmi_bridge_mode_set,
.mode_valid = msm_hdmi_bridge_mode_valid,
- .get_edid = msm_hdmi_bridge_get_edid,
+ .edid_read = msm_hdmi_bridge_edid_read,
.detect = msm_hdmi_bridge_detect,
};
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 30/39] drm/omap/hdmi4: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (28 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 29/39] drm/msm/hdmi: switch to ->edid_read callback Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 31/39] drm/omap/hdmi5: " Jani Nikula
` (9 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/omapdrm/dss/hdmi4.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
index a26b77d99d52..9b8747d83ee8 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
@@ -436,11 +436,11 @@ static void hdmi4_bridge_hpd_notify(struct drm_bridge *bridge,
hdmi4_cec_set_phys_addr(&hdmi->core, CEC_PHYS_ADDR_INVALID);
}
-static struct edid *hdmi4_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *hdmi4_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct omap_hdmi *hdmi = drm_bridge_to_hdmi(bridge);
- struct edid *edid = NULL;
+ const struct drm_edid *drm_edid = NULL;
unsigned int cec_addr;
bool need_enable;
int r;
@@ -461,13 +461,21 @@ static struct edid *hdmi4_bridge_get_edid(struct drm_bridge *bridge,
if (r)
goto done;
- edid = drm_do_get_edid(connector, hdmi4_core_ddc_read, &hdmi->core);
+ drm_edid = drm_edid_read_custom(connector, hdmi4_core_ddc_read, &hdmi->core);
done:
hdmi_runtime_put(hdmi);
mutex_unlock(&hdmi->lock);
- if (edid && edid->extensions) {
+ if (drm_edid) {
+ /*
+ * FIXME: The CEC physical address should be set using
+ * hdmi4_cec_set_phys_addr(&hdmi->core,
+ * connector->display_info.source_physical_address) from a path
+ * that has read the EDID and called
+ * drm_edid_connector_update().
+ */
+ const struct edid *edid = drm_edid_raw(drm_edid);
unsigned int len = (edid->extensions + 1) * EDID_LENGTH;
cec_addr = cec_get_edid_phys_addr((u8 *)edid, len, NULL);
@@ -480,7 +488,7 @@ static struct edid *hdmi4_bridge_get_edid(struct drm_bridge *bridge,
if (need_enable)
hdmi4_core_disable(&hdmi->core);
- return edid;
+ return drm_edid;
}
static const struct drm_bridge_funcs hdmi4_bridge_funcs = {
@@ -492,7 +500,7 @@ static const struct drm_bridge_funcs hdmi4_bridge_funcs = {
.atomic_enable = hdmi4_bridge_enable,
.atomic_disable = hdmi4_bridge_disable,
.hpd_notify = hdmi4_bridge_hpd_notify,
- .get_edid = hdmi4_bridge_get_edid,
+ .edid_read = hdmi4_bridge_edid_read,
};
static void hdmi4_bridge_init(struct omap_hdmi *hdmi)
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 31/39] drm/omap/hdmi5: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (29 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 30/39] drm/omap/hdmi4: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 32/39] drm: xlnx: zynqmp_dpsub: " Jani Nikula
` (8 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/omapdrm/dss/hdmi5.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5.c b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
index e6611c683857..c7ae2235ae99 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi5.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
@@ -425,11 +425,11 @@ static void hdmi5_bridge_disable(struct drm_bridge *bridge,
mutex_unlock(&hdmi->lock);
}
-static struct edid *hdmi5_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *hdmi5_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct omap_hdmi *hdmi = drm_bridge_to_hdmi(bridge);
- struct edid *edid;
+ const struct drm_edid *drm_edid;
bool need_enable;
int idlemode;
int r;
@@ -452,7 +452,7 @@ static struct edid *hdmi5_bridge_get_edid(struct drm_bridge *bridge,
hdmi5_core_ddc_init(&hdmi->core);
- edid = drm_do_get_edid(connector, hdmi5_core_ddc_read, &hdmi->core);
+ drm_edid = drm_edid_read_custom(connector, hdmi5_core_ddc_read, &hdmi->core);
hdmi5_core_ddc_uninit(&hdmi->core);
@@ -464,7 +464,7 @@ static struct edid *hdmi5_bridge_get_edid(struct drm_bridge *bridge,
if (need_enable)
hdmi_core_disable(hdmi);
- return (struct edid *)edid;
+ return drm_edid;
}
static const struct drm_bridge_funcs hdmi5_bridge_funcs = {
@@ -475,7 +475,7 @@ static const struct drm_bridge_funcs hdmi5_bridge_funcs = {
.atomic_reset = drm_atomic_helper_bridge_reset,
.atomic_enable = hdmi5_bridge_enable,
.atomic_disable = hdmi5_bridge_disable,
- .get_edid = hdmi5_bridge_get_edid,
+ .edid_read = hdmi5_bridge_edid_read,
};
static void hdmi5_bridge_init(struct omap_hdmi *hdmi)
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 32/39] drm: xlnx: zynqmp_dpsub: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (30 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 31/39] drm/omap/hdmi5: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 33/39] drm: adv7511: " Jani Nikula
` (7 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/xlnx/zynqmp_dp.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dp.c b/drivers/gpu/drm/xlnx/zynqmp_dp.c
index a0606fab0e22..24213eaa38d0 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dp.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dp.c
@@ -1560,12 +1560,12 @@ static enum drm_connector_status zynqmp_dp_bridge_detect(struct drm_bridge *brid
return connector_status_disconnected;
}
-static struct edid *zynqmp_dp_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *zynqmp_dp_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct zynqmp_dp *dp = bridge_to_dp(bridge);
- return drm_get_edid(connector, &dp->aux.ddc);
+ return drm_edid_read_ddc(connector, &dp->aux.ddc);
}
static const struct drm_bridge_funcs zynqmp_dp_bridge_funcs = {
@@ -1579,7 +1579,7 @@ static const struct drm_bridge_funcs zynqmp_dp_bridge_funcs = {
.atomic_reset = drm_atomic_helper_bridge_reset,
.atomic_check = zynqmp_dp_bridge_atomic_check,
.detect = zynqmp_dp_bridge_detect,
- .get_edid = zynqmp_dp_bridge_get_edid,
+ .edid_read = zynqmp_dp_bridge_edid_read,
};
/* -----------------------------------------------------------------------------
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 33/39] drm: adv7511: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (31 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 32/39] drm: xlnx: zynqmp_dpsub: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 34/39] drm: bridge: dw_hdmi: " Jani Nikula
` (6 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 47 +++++++++++++-------
1 file changed, 30 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
index 8be235144f6d..1e40d451ce8c 100644
--- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
+++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
@@ -604,10 +604,10 @@ static int adv7511_get_edid_block(void *data, u8 *buf, unsigned int block,
* ADV75xx helpers
*/
-static struct edid *adv7511_get_edid(struct adv7511 *adv7511,
- struct drm_connector *connector)
+static const struct drm_edid *adv7511_edid_read(struct adv7511 *adv7511,
+ struct drm_connector *connector)
{
- struct edid *edid;
+ const struct drm_edid *drm_edid;
/* Reading the EDID only works if the device is powered */
if (!adv7511->powered) {
@@ -621,31 +621,44 @@ static struct edid *adv7511_get_edid(struct adv7511 *adv7511,
edid_i2c_addr);
}
- edid = drm_do_get_edid(connector, adv7511_get_edid_block, adv7511);
+ drm_edid = drm_edid_read_custom(connector, adv7511_get_edid_block, adv7511);
if (!adv7511->powered)
__adv7511_power_off(adv7511);
- adv7511_set_config_csc(adv7511, connector, adv7511->rgb,
- drm_detect_hdmi_monitor(edid));
+ if (drm_edid) {
+ /*
+ * FIXME: The CEC physical address should be set using
+ * cec_s_phys_addr(adap,
+ * connector->display_info.source_physical_address, false) from
+ * a path that has read the EDID and called
+ * drm_edid_connector_update().
+ */
+ const struct edid *edid = drm_edid_raw(drm_edid);
+
+ adv7511_set_config_csc(adv7511, connector, adv7511->rgb,
+ drm_detect_hdmi_monitor(edid));
- cec_s_phys_addr_from_edid(adv7511->cec_adap, edid);
+ cec_s_phys_addr_from_edid(adv7511->cec_adap, edid);
+ } else {
+ cec_s_phys_addr_from_edid(adv7511->cec_adap, NULL);
+ }
- return edid;
+ return drm_edid;
}
static int adv7511_get_modes(struct adv7511 *adv7511,
struct drm_connector *connector)
{
- struct edid *edid;
+ const struct drm_edid *drm_edid;
unsigned int count;
- edid = adv7511_get_edid(adv7511, connector);
+ drm_edid = adv7511_edid_read(adv7511, connector);
- drm_connector_update_edid_property(connector, edid);
- count = drm_add_edid_modes(connector, edid);
+ drm_edid_connector_update(connector, drm_edid);
+ count = drm_edid_connector_add_modes(connector);
- kfree(edid);
+ drm_edid_free(drm_edid);
return count;
}
@@ -953,12 +966,12 @@ static enum drm_connector_status adv7511_bridge_detect(struct drm_bridge *bridge
return adv7511_detect(adv, NULL);
}
-static struct edid *adv7511_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *adv7511_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct adv7511 *adv = bridge_to_adv7511(bridge);
- return adv7511_get_edid(adv, connector);
+ return adv7511_edid_read(adv, connector);
}
static void adv7511_bridge_hpd_notify(struct drm_bridge *bridge,
@@ -977,7 +990,7 @@ static const struct drm_bridge_funcs adv7511_bridge_funcs = {
.mode_valid = adv7511_bridge_mode_valid,
.attach = adv7511_bridge_attach,
.detect = adv7511_bridge_detect,
- .get_edid = adv7511_bridge_get_edid,
+ .edid_read = adv7511_bridge_edid_read,
.hpd_notify = adv7511_bridge_hpd_notify,
};
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 34/39] drm: bridge: dw_hdmi: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (32 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 33/39] drm: adv7511: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 35/39] drm: bridge: dw_hdmi: clear the EDID property and CEC address on failures Jani Nikula
` (5 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
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 ca74a20015b3..4a2e3f9c1dfd 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
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 35/39] drm: bridge: dw_hdmi: clear the EDID property and CEC address on failures
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (33 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 34/39] drm: bridge: dw_hdmi: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 36/39] drm/bridge: tc358767: update the EDID property Jani Nikula
` (4 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
If EDID read fails, clear the EDID property and CEC address.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
index 4a2e3f9c1dfd..0e59b30d5227 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
@@ -2505,8 +2505,6 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector)
int ret;
drm_edid = dw_hdmi_edid_read(hdmi, connector);
- if (!drm_edid)
- return 0;
drm_edid_connector_update(connector, drm_edid);
cec_notifier_set_phys_addr(hdmi->cec_notifier,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 36/39] drm/bridge: tc358767: update the EDID property
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (34 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 35/39] drm: bridge: dw_hdmi: clear the EDID property and CEC address on failures Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 37/39] drm/bridge: tc358767: switch to ->edid_read callback Jani Nikula
` (3 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
The EDID property should be updated between reading the EDID and adding
the modes.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/tc358767.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
index f10ba91dc252..37b1353cf2e3 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -1679,6 +1679,7 @@ static int tc_connector_get_modes(struct drm_connector *connector)
}
edid = tc_get_edid(&tc->bridge, connector);
+ drm_connector_update_edid_property(connector, edid);
num_modes = drm_add_edid_modes(connector, edid);
kfree(edid);
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 37/39] drm/bridge: tc358767: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (35 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 36/39] drm/bridge: tc358767: update the EDID property Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 38/39] drm/bridge: ti-sn65dsi86: " Jani Nikula
` (2 subsequent siblings)
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/tc358767.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
index 37b1353cf2e3..166f9a3e9622 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -1651,19 +1651,19 @@ static void tc_bridge_mode_set(struct drm_bridge *bridge,
drm_mode_copy(&tc->mode, mode);
}
-static struct edid *tc_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *tc_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct tc_data *tc = bridge_to_tc(bridge);
- return drm_get_edid(connector, &tc->aux.ddc);
+ return drm_edid_read_ddc(connector, &tc->aux.ddc);
}
static int tc_connector_get_modes(struct drm_connector *connector)
{
struct tc_data *tc = connector_to_tc(connector);
int num_modes;
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int ret;
ret = tc_get_display_props(tc);
@@ -1678,10 +1678,10 @@ static int tc_connector_get_modes(struct drm_connector *connector)
return num_modes;
}
- edid = tc_get_edid(&tc->bridge, connector);
- drm_connector_update_edid_property(connector, edid);
- num_modes = drm_add_edid_modes(connector, edid);
- kfree(edid);
+ drm_edid = tc_edid_read(&tc->bridge, connector);
+ drm_edid_connector_update(connector, drm_edid);
+ num_modes = drm_edid_connector_add_modes(connector);
+ drm_edid_free(drm_edid);
return num_modes;
}
@@ -1850,7 +1850,7 @@ static const struct drm_bridge_funcs tc_edp_bridge_funcs = {
.atomic_enable = tc_edp_bridge_atomic_enable,
.atomic_disable = tc_edp_bridge_atomic_disable,
.detect = tc_bridge_detect,
- .get_edid = tc_get_edid,
+ .edid_read = tc_edid_read,
.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,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 38/39] drm/bridge: ti-sn65dsi86: switch to ->edid_read callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (36 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 37/39] drm/bridge: tc358767: switch to ->edid_read callback Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-23 19:37 ` [PATCH v3 39/39] drm/bridge: remove ->get_edid callback Jani Nikula
2024-01-25 12:57 ` [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Neil Armstrong
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
Prefer using the struct drm_edid based callback and functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/bridge/ti-sn65dsi86.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
index 62cc3893dca5..61dc6f063fb4 100644
--- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c
+++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c
@@ -1207,19 +1207,19 @@ static enum drm_connector_status ti_sn_bridge_detect(struct drm_bridge *bridge)
: connector_status_disconnected;
}
-static struct edid *ti_sn_bridge_get_edid(struct drm_bridge *bridge,
- struct drm_connector *connector)
+static const struct drm_edid *ti_sn_bridge_edid_read(struct drm_bridge *bridge,
+ struct drm_connector *connector)
{
struct ti_sn65dsi86 *pdata = bridge_to_ti_sn65dsi86(bridge);
- return drm_get_edid(connector, &pdata->aux.ddc);
+ return drm_edid_read_ddc(connector, &pdata->aux.ddc);
}
static const struct drm_bridge_funcs ti_sn_bridge_funcs = {
.attach = ti_sn_bridge_attach,
.detach = ti_sn_bridge_detach,
.mode_valid = ti_sn_bridge_mode_valid,
- .get_edid = ti_sn_bridge_get_edid,
+ .edid_read = ti_sn_bridge_edid_read,
.detect = ti_sn_bridge_detect,
.atomic_pre_enable = ti_sn_bridge_atomic_pre_enable,
.atomic_enable = ti_sn_bridge_atomic_enable,
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* [PATCH v3 39/39] drm/bridge: remove ->get_edid callback
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (37 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 38/39] drm/bridge: ti-sn65dsi86: " Jani Nikula
@ 2024-01-23 19:37 ` Jani Nikula
2024-01-25 12:57 ` [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Neil Armstrong
39 siblings, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-23 19:37 UTC (permalink / raw)
To: dri-devel, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Cc: Jani Nikula
There are no more users of the ->get_edid callback left. They've all
been converted to ->edid_read. Remove the callback, and the fallback in
drm_bridge_edid_read().
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/drm_bridge.c | 19 -------------------
include/drm/drm_bridge.h | 30 ------------------------------
2 files changed, 49 deletions(-)
diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index a3065d4aa3d6..521a71c61b16 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -1216,9 +1216,6 @@ EXPORT_SYMBOL_GPL(drm_bridge_get_modes);
* DRM_BRIDGE_OP_EDID bridge ops flag, call &drm_bridge_funcs.edid_read to get
* the EDID and return it. Otherwise return NULL.
*
- * If &drm_bridge_funcs.edid_read is not set, fall back to using
- * &drm_bridge_funcs.get_edid and wrapping it in struct drm_edid.
- *
* RETURNS:
* The retrieved EDID on success, or NULL otherwise.
*/
@@ -1228,22 +1225,6 @@ const struct drm_edid *drm_bridge_edid_read(struct drm_bridge *bridge,
if (!(bridge->ops & DRM_BRIDGE_OP_EDID))
return NULL;
- /* Transitional: Fall back to ->get_edid. */
- if (!bridge->funcs->edid_read) {
- const struct drm_edid *drm_edid;
- struct edid *edid;
-
- edid = bridge->funcs->get_edid(bridge, connector);
- if (!edid)
- return NULL;
-
- drm_edid = drm_edid_alloc(edid, (edid->extensions + 1) * EDID_LENGTH);
-
- kfree(edid);
-
- return drm_edid;
- }
-
return bridge->funcs->edid_read(bridge, connector);
}
EXPORT_SYMBOL_GPL(drm_bridge_edid_read);
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index ee12f829aaf7..7293c02e17c5 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -588,36 +588,6 @@ struct drm_bridge_funcs {
const struct drm_edid *(*edid_read)(struct drm_bridge *bridge,
struct drm_connector *connector);
- /**
- * @get_edid:
- *
- * Read and parse the EDID data of the connected display.
- *
- * The @get_edid callback is the preferred way of reporting mode
- * information for a display connected to the bridge output. Bridges
- * that support reading EDID shall implement this callback and leave
- * the @get_modes callback unimplemented.
- *
- * The caller of this operation shall first verify the output
- * connection status and refrain from reading EDID from a disconnected
- * output.
- *
- * This callback is optional. Bridges that implement it shall set the
- * DRM_BRIDGE_OP_EDID flag in their &drm_bridge->ops.
- *
- * The connector parameter shall be used for the sole purpose of EDID
- * retrieval and parsing, and shall not be stored internally by bridge
- * drivers for future usage.
- *
- * RETURNS:
- *
- * An edid structure newly allocated with kmalloc() (or similar) on
- * success, or NULL otherwise. The caller is responsible for freeing
- * the returned edid structure with kfree().
- */
- struct edid *(*get_edid)(struct drm_bridge *bridge,
- struct drm_connector *connector);
-
/**
* @hpd_notify:
*
--
2.39.2
^ permalink raw reply related [flat|nested] 44+ messages in thread
* Re: [PATCH v3 01/39] drm/bridge: add ->edid_read hook and drm_bridge_edid_read()
2024-01-23 19:37 ` [PATCH v3 01/39] drm/bridge: add ->edid_read hook and drm_bridge_edid_read() Jani Nikula
@ 2024-01-25 10:33 ` Neil Armstrong
0 siblings, 0 replies; 44+ messages in thread
From: Neil Armstrong @ 2024-01-25 10:33 UTC (permalink / raw)
To: Jani Nikula, dri-devel, Andrzej Hajda, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
On 23/01/2024 20:37, Jani Nikula wrote:
> Add new struct drm_edid based ->edid_read hook and
> drm_bridge_edid_read() function to call the hook.
>
> v2: Include drm/drm_edid.h
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/drm_bridge.c | 46 +++++++++++++++++++++++++++++++++++-
> include/drm/drm_bridge.h | 33 ++++++++++++++++++++++++++
> 2 files changed, 78 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
> index cee3188adf3d..4f6f8c662d3f 100644
> --- a/drivers/gpu/drm/drm_bridge.c
> +++ b/drivers/gpu/drm/drm_bridge.c
> @@ -27,8 +27,9 @@
> #include <linux/mutex.h>
>
> #include <drm/drm_atomic_state_helper.h>
> -#include <drm/drm_debugfs.h>
> #include <drm/drm_bridge.h>
> +#include <drm/drm_debugfs.h>
> +#include <drm/drm_edid.h>
> #include <drm/drm_encoder.h>
> #include <drm/drm_file.h>
> #include <drm/drm_of.h>
> @@ -1206,6 +1207,47 @@ int drm_bridge_get_modes(struct drm_bridge *bridge,
> }
> EXPORT_SYMBOL_GPL(drm_bridge_get_modes);
>
> +/**
> + * drm_bridge_edid_read - read the EDID data of the connected display
> + * @bridge: bridge control structure
> + * @connector: the connector to read EDID for
> + *
> + * If the bridge supports output EDID retrieval, as reported by the
> + * DRM_BRIDGE_OP_EDID bridge ops flag, call &drm_bridge_funcs.edid_read to get
> + * the EDID and return it. Otherwise return NULL.
> + *
> + * If &drm_bridge_funcs.edid_read is not set, fall back to using
> + * drm_bridge_get_edid() and wrapping it in struct drm_edid.
> + *
> + * RETURNS:
> + * The retrieved EDID on success, or NULL otherwise.
> + */
> +const struct drm_edid *drm_bridge_edid_read(struct drm_bridge *bridge,
> + struct drm_connector *connector)
> +{
> + if (!(bridge->ops & DRM_BRIDGE_OP_EDID))
> + return NULL;
> +
> + /* Transitional: Fall back to ->get_edid. */
> + if (!bridge->funcs->edid_read) {
> + const struct drm_edid *drm_edid;
> + struct edid *edid;
> +
> + edid = drm_bridge_get_edid(bridge, connector);
> + if (!edid)
> + return NULL;
> +
> + drm_edid = drm_edid_alloc(edid, (edid->extensions + 1) * EDID_LENGTH);
> +
> + kfree(edid);
> +
> + return drm_edid;
> + }
> +
> + return bridge->funcs->edid_read(bridge, connector);
> +}
> +EXPORT_SYMBOL_GPL(drm_bridge_edid_read);
> +
> /**
> * drm_bridge_get_edid - get the EDID data of the connected display
> * @bridge: bridge control structure
> @@ -1215,6 +1257,8 @@ EXPORT_SYMBOL_GPL(drm_bridge_get_modes);
> * DRM_BRIDGE_OP_EDID bridge ops flag, call &drm_bridge_funcs.get_edid to
> * get the EDID and return it. Otherwise return NULL.
> *
> + * Deprecated. Prefer using drm_bridge_edid_read().
> + *
> * RETURNS:
> * The retrieved EDID on success, or NULL otherwise.
> */
> diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
> index e39da5807ba7..b7aed3ead705 100644
> --- a/include/drm/drm_bridge.h
> +++ b/include/drm/drm_bridge.h
> @@ -557,6 +557,37 @@ struct drm_bridge_funcs {
> int (*get_modes)(struct drm_bridge *bridge,
> struct drm_connector *connector);
>
> + /**
> + * @edid_read:
> + *
> + * Read the EDID data of the connected display.
> + *
> + * The @edid_read callback is the preferred way of reporting mode
> + * information for a display connected to the bridge output. Bridges
> + * that support reading EDID shall implement this callback and leave
> + * the @get_modes callback unimplemented.
> + *
> + * The caller of this operation shall first verify the output
> + * connection status and refrain from reading EDID from a disconnected
> + * output.
> + *
> + * This callback is optional. Bridges that implement it shall set the
> + * DRM_BRIDGE_OP_EDID flag in their &drm_bridge->ops.
> + *
> + * The connector parameter shall be used for the sole purpose of EDID
> + * retrieval, and shall not be stored internally by bridge drivers for
> + * future usage.
> + *
> + * RETURNS:
> + *
> + * An edid structure newly allocated with drm_edid_alloc() or returned
> + * from drm_edid_read() family of functions on success, or NULL
> + * otherwise. The caller is responsible for freeing the returned edid
> + * structure with drm_edid_free().
> + */
> + const struct drm_edid *(*edid_read)(struct drm_bridge *bridge,
> + struct drm_connector *connector);
> +
> /**
> * @get_edid:
> *
> @@ -888,6 +919,8 @@ drm_atomic_helper_bridge_propagate_bus_fmt(struct drm_bridge *bridge,
> enum drm_connector_status drm_bridge_detect(struct drm_bridge *bridge);
> int drm_bridge_get_modes(struct drm_bridge *bridge,
> struct drm_connector *connector);
> +const struct drm_edid *drm_bridge_edid_read(struct drm_bridge *bridge,
> + struct drm_connector *connector);
> struct edid *drm_bridge_get_edid(struct drm_bridge *bridge,
> struct drm_connector *connector);
> void drm_bridge_hpd_enable(struct drm_bridge *bridge,
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH v3 00/39] drm/bridge: switch to struct drm_edid
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
` (38 preceding siblings ...)
2024-01-23 19:37 ` [PATCH v3 39/39] drm/bridge: remove ->get_edid callback Jani Nikula
@ 2024-01-25 12:57 ` Neil Armstrong
2024-01-25 13:01 ` Jani Nikula
2024-02-09 9:48 ` Jani Nikula
39 siblings, 2 replies; 44+ messages in thread
From: Neil Armstrong @ 2024-01-25 12:57 UTC (permalink / raw)
To: Jani Nikula, dri-devel, Andrzej Hajda, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
On 23/01/2024 20:37, Jani Nikula wrote:
> v3 of [1] with a couple of patches fixed.
>
> BR,
> Jani.
>
> [1] https://patchwork.freedesktop.org/series/128149/
>
>
> Jani Nikula (39):
> drm/bridge: add ->edid_read hook and drm_bridge_edid_read()
> drm/bridge: switch to drm_bridge_read_edid()
> drm/bridge: chrontel-ch7033: switch to drm_bridge_read_edid()
> drm/bridge: lt8912b: use drm_bridge_read_edid()
> drm/bridge: lt8912b: clear the EDID property on failures
> drm/bridge: lt8912b: use ->edid_read callback
> drm/bridge: lt9611uxc: use drm_bridge_read_edid()
> drm: bridge: simple-bridge: use drm_bridge_edid_read()
> drm: bridge: simple-bridge: clear the EDID property on failures
> drm/bridge: tfp410: use drm_bridge_edid_read()
> drm/bridge: tfp410: clear the EDID property on failures
> drm/meson: switch to drm_bridge_edid_read()
> drm/bridge: remove drm_bridge_get_edid() in favour of
> drm_bridge_edid_read()
> drm/bridge: anx7625: switch to ->edid_read callback
> drm/bridge: cdns-mhdp8546: switch to ->edid_read callback
> drm/bridge: cdns-mhdp8546: clear the EDID property on failures
> drm/bridge: display-connector: switch to ->edid_read callback
> drm/bridge: it6505: switch to ->edid_read callback
> drm: bridge: it66121: switch to ->edid_read callback
> drm/bridge: lt9611: switch to ->edid_read callback
> drm/bridge: lt9611uxc: switch to ->edid_read callback
> drm/bridge: megachips: switch to ->edid_read callback
> drm/bridge: nxp-ptn3460: switch to ->edid_read callback
> drm/bridge: sii902x: use display info is_hdmi
> drm/bridge: sii902x: switch to ->edid_read callback
> drm/mediatek/dp: switch to ->edid_read callback
> drm/mediatek/hdmi: switch to ->edid_read callback
> drm/msm/hdmi: fix indent
> drm/msm/hdmi: switch to ->edid_read callback
> drm/omap/hdmi4: switch to ->edid_read callback
> drm/omap/hdmi5: switch to ->edid_read callback
> drm: xlnx: zynqmp_dpsub: switch to ->edid_read callback
> drm: adv7511: switch to ->edid_read callback
> drm: bridge: dw_hdmi: switch to ->edid_read callback
> drm: bridge: dw_hdmi: clear the EDID property and CEC address on
> failures
> drm/bridge: tc358767: update the EDID property
> drm/bridge: tc358767: switch to ->edid_read callback
> drm/bridge: ti-sn65dsi86: switch to ->edid_read callback
> drm/bridge: remove ->get_edid callback
>
> drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 47 ++++++++++++-------
> drivers/gpu/drm/bridge/analogix/anx7625.c | 30 ++++--------
> .../drm/bridge/cadence/cdns-mhdp8546-core.c | 28 ++++++-----
> drivers/gpu/drm/bridge/chrontel-ch7033.c | 12 ++---
> drivers/gpu/drm/bridge/display-connector.c | 8 ++--
> drivers/gpu/drm/bridge/ite-it6505.c | 17 +++----
> drivers/gpu/drm/bridge/ite-it66121.c | 16 +++----
> drivers/gpu/drm/bridge/lontium-lt8912b.c | 20 ++++----
> drivers/gpu/drm/bridge/lontium-lt9611.c | 8 ++--
> drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 18 +++----
> .../bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 18 +++----
> drivers/gpu/drm/bridge/nxp-ptn3460.c | 22 +++++----
> drivers/gpu/drm/bridge/sii902x.c | 38 +++++++--------
> drivers/gpu/drm/bridge/simple-bridge.c | 17 +++----
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 43 ++++++++++-------
> drivers/gpu/drm/bridge/tc358767.c | 17 +++----
> drivers/gpu/drm/bridge/ti-sn65dsi86.c | 8 ++--
> drivers/gpu/drm/bridge/ti-tfp410.c | 18 +++----
> drivers/gpu/drm/drm_bridge.c | 17 +++----
> drivers/gpu/drm/drm_bridge_connector.c | 16 +++----
> drivers/gpu/drm/mediatek/mtk_dp.c | 31 +++++++-----
> drivers/gpu/drm/mediatek/mtk_hdmi.c | 26 ++++++----
> drivers/gpu/drm/meson/meson_encoder_hdmi.c | 20 ++++++--
> drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 33 ++++++++-----
> drivers/gpu/drm/omapdrm/dss/hdmi4.c | 22 ++++++---
> drivers/gpu/drm/omapdrm/dss/hdmi5.c | 12 ++---
> drivers/gpu/drm/xlnx/zynqmp_dp.c | 8 ++--
> include/drm/drm_bridge.h | 25 +++++-----
> 28 files changed, 328 insertions(+), 267 deletions(-)
>
Thanks, but now some patches subjects are wrong:
s/drm_bridge_read_edid/drm_bridge_edid_read/s
With that fixed please add:
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Thanks,
Neil
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH v3 00/39] drm/bridge: switch to struct drm_edid
2024-01-25 12:57 ` [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Neil Armstrong
@ 2024-01-25 13:01 ` Jani Nikula
2024-02-09 9:48 ` Jani Nikula
1 sibling, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-01-25 13:01 UTC (permalink / raw)
To: neil.armstrong, dri-devel, Andrzej Hajda, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
On Thu, 25 Jan 2024, Neil Armstrong <neil.armstrong@linaro.org> wrote:
> Thanks, but now some patches subjects are wrong:
> s/drm_bridge_read_edid/drm_bridge_edid_read/s
Oh, dang it, that was mentioned before, but I forgot. My bad.
> With that fixed please add:
> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Entire series? Much appreciated, thanks!
BR,
Jani.
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 44+ messages in thread
* Re: [PATCH v3 00/39] drm/bridge: switch to struct drm_edid
2024-01-25 12:57 ` [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Neil Armstrong
2024-01-25 13:01 ` Jani Nikula
@ 2024-02-09 9:48 ` Jani Nikula
1 sibling, 0 replies; 44+ messages in thread
From: Jani Nikula @ 2024-02-09 9:48 UTC (permalink / raw)
To: neil.armstrong, dri-devel, Andrzej Hajda, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
On Thu, 25 Jan 2024, Neil Armstrong <neil.armstrong@linaro.org> wrote:
> Thanks, but now some patches subjects are wrong:
> s/drm_bridge_read_edid/drm_bridge_edid_read/s
Fixed while applying.
> With that fixed please add:
> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Many thanks, pushed the lot to drm-misc-next.
BR,
Jani.
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 44+ messages in thread
end of thread, other threads:[~2024-02-09 9:48 UTC | newest]
Thread overview: 44+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-23 19:37 [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Jani Nikula
2024-01-23 19:37 ` [PATCH v3 01/39] drm/bridge: add ->edid_read hook and drm_bridge_edid_read() Jani Nikula
2024-01-25 10:33 ` Neil Armstrong
2024-01-23 19:37 ` [PATCH v3 02/39] drm/bridge: switch to drm_bridge_read_edid() Jani Nikula
2024-01-23 19:37 ` [PATCH v3 03/39] drm/bridge: chrontel-ch7033: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 04/39] drm/bridge: lt8912b: use drm_bridge_read_edid() Jani Nikula
2024-01-23 19:37 ` [PATCH v3 05/39] drm/bridge: lt8912b: clear the EDID property on failures Jani Nikula
2024-01-23 19:37 ` [PATCH v3 06/39] drm/bridge: lt8912b: use ->edid_read callback Jani Nikula
2024-01-23 19:37 ` [PATCH v3 07/39] drm/bridge: lt9611uxc: use drm_bridge_read_edid() Jani Nikula
2024-01-23 19:37 ` [PATCH v3 08/39] drm: bridge: simple-bridge: use drm_bridge_edid_read() Jani Nikula
2024-01-23 19:37 ` [PATCH v3 09/39] drm: bridge: simple-bridge: clear the EDID property on failures Jani Nikula
2024-01-23 19:37 ` [PATCH v3 10/39] drm/bridge: tfp410: use drm_bridge_edid_read() Jani Nikula
2024-01-23 19:37 ` [PATCH v3 11/39] drm/bridge: tfp410: clear the EDID property on failures Jani Nikula
2024-01-23 19:37 ` [PATCH v3 12/39] drm/meson: switch to drm_bridge_edid_read() Jani Nikula
2024-01-23 19:37 ` [PATCH v3 13/39] drm/bridge: remove drm_bridge_get_edid() in favour of drm_bridge_edid_read() Jani Nikula
2024-01-23 19:37 ` [PATCH v3 14/39] drm/bridge: anx7625: switch to ->edid_read callback Jani Nikula
2024-01-23 19:37 ` [PATCH v3 15/39] drm/bridge: cdns-mhdp8546: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 16/39] drm/bridge: cdns-mhdp8546: clear the EDID property on failures Jani Nikula
2024-01-23 19:37 ` [PATCH v3 17/39] drm/bridge: display-connector: switch to ->edid_read callback Jani Nikula
2024-01-23 19:37 ` [PATCH v3 18/39] drm/bridge: it6505: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 19/39] drm: bridge: it66121: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 20/39] drm/bridge: lt9611: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 21/39] drm/bridge: lt9611uxc: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 22/39] drm/bridge: megachips: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 23/39] drm/bridge: nxp-ptn3460: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 24/39] drm/bridge: sii902x: use display info is_hdmi Jani Nikula
2024-01-23 19:37 ` [PATCH v3 25/39] drm/bridge: sii902x: switch to ->edid_read callback Jani Nikula
2024-01-23 19:37 ` [PATCH v3 26/39] drm/mediatek/dp: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 27/39] drm/mediatek/hdmi: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 28/39] drm/msm/hdmi: fix indent Jani Nikula
2024-01-23 19:37 ` [PATCH v3 29/39] drm/msm/hdmi: switch to ->edid_read callback Jani Nikula
2024-01-23 19:37 ` [PATCH v3 30/39] drm/omap/hdmi4: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 31/39] drm/omap/hdmi5: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 32/39] drm: xlnx: zynqmp_dpsub: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 33/39] drm: adv7511: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 34/39] drm: bridge: dw_hdmi: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 35/39] drm: bridge: dw_hdmi: clear the EDID property and CEC address on failures Jani Nikula
2024-01-23 19:37 ` [PATCH v3 36/39] drm/bridge: tc358767: update the EDID property Jani Nikula
2024-01-23 19:37 ` [PATCH v3 37/39] drm/bridge: tc358767: switch to ->edid_read callback Jani Nikula
2024-01-23 19:37 ` [PATCH v3 38/39] drm/bridge: ti-sn65dsi86: " Jani Nikula
2024-01-23 19:37 ` [PATCH v3 39/39] drm/bridge: remove ->get_edid callback Jani Nikula
2024-01-25 12:57 ` [PATCH v3 00/39] drm/bridge: switch to struct drm_edid Neil Armstrong
2024-01-25 13:01 ` Jani Nikula
2024-02-09 9:48 ` 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 NNTP newsgroup(s).