Nouveau Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Nouveau] [PATCH 00/12] drm: reduce drm_detect_monitor_audio/drm_detect_hdmi_monitor/edid_blob_ptr usage
@ 2023-03-30 15:39 Jani Nikula
  2023-03-30 15:39 ` [Nouveau] [PATCH 02/12] drm/nouveau: convert to using is_hdmi and has_audio from display info Jani Nikula
  0 siblings, 1 reply; 2+ messages in thread
From: Jani Nikula @ 2023-03-30 15:39 UTC (permalink / raw)
  To: dri-devel
  Cc: Heiko Stübner, jani.nikula, nouveau, intel-gfx, Xinhui,
	Seung-Woo Kim, Russell King, amd-gfx, Sandy Huang, Inki Dae,
	Kyungmin Park, Ben Skeggs, Alex Deucher, Alain Volmat,
	Christian König, Pan

THIS IS UNTESTED for anything other than i915.

Use previously parsed EDID where possible for display audio/hdmi
detection. This in turn reduces edid_blob_ptr usage in a number of
places. Further reduce edid_blob_ptr usage, and document that it should
not be used by drivers directly.

BR,
Jani.


Cc: Alain Volmat <alain.volmat@foss.st.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Heiko Stübner <heiko@sntech.de>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Karol Herbst <kherbst@redhat.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: nouveau@lists.freedesktop.org
Cc: Pan, Xinhui <Xinhui.Pan@amd.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Sandy Huang <hjc@rock-chips.com>
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>


Jani Nikula (12):
  drm/edid: parse display info has_audio similar to is_hdmi
  drm/nouveau: convert to using is_hdmi and has_audio from display info
  drm/radeon: convert to using is_hdmi and has_audio from display info
  drm/radeon: remove radeon_connector_edid() and stop using
    edid_blob_ptr
  drm/amdgpu: remove amdgpu_connector_edid() and stop using
    edid_blob_ptr
  drm/i915/debugfs: stop using edid_blob_ptr
  drm/exynos: fix is_hdmi usage
  drm/i2c/tda998x: convert to using has_audio from display_info
  drm/sti/sti_hdmi: convert to using is_hdmi from display info
  drm/rockchip: cdn-dp: call drm_connector_update_edid_property()
    unconditionally
  drm/rockchip: convert to using has_audio from display_info
  drm/connector: update edid_blob_ptr documentation

 .../gpu/drm/amd/amdgpu/amdgpu_connectors.c    | 15 -----------
 .../gpu/drm/amd/amdgpu/amdgpu_connectors.h    |  1 -
 drivers/gpu/drm/amd/amdgpu/dce_v10_0.c        |  4 +--
 drivers/gpu/drm/amd/amdgpu/dce_v11_0.c        |  4 +--
 drivers/gpu/drm/amd/amdgpu/dce_v6_0.c         |  4 +--
 drivers/gpu/drm/amd/amdgpu/dce_v8_0.c         |  4 +--
 drivers/gpu/drm/drm_edid.c                    |  6 +++++
 drivers/gpu/drm/exynos/exynos_hdmi.c          |  3 ++-
 drivers/gpu/drm/i2c/tda998x_drv.c             |  2 +-
 .../drm/i915/display/intel_display_debugfs.c  | 10 +++----
 drivers/gpu/drm/nouveau/dispnv50/disp.c       |  8 +++---
 drivers/gpu/drm/nouveau/dispnv50/head.c       |  8 +-----
 drivers/gpu/drm/nouveau/nouveau_connector.c   |  2 +-
 drivers/gpu/drm/radeon/atombios_encoders.c    | 10 +++----
 drivers/gpu/drm/radeon/evergreen_hdmi.c       |  5 ++--
 drivers/gpu/drm/radeon/radeon_audio.c         | 11 ++++----
 drivers/gpu/drm/radeon/radeon_connectors.c    | 27 +++++--------------
 drivers/gpu/drm/radeon/radeon_display.c       |  2 +-
 drivers/gpu/drm/radeon/radeon_encoders.c      |  4 +--
 drivers/gpu/drm/radeon/radeon_mode.h          |  2 --
 drivers/gpu/drm/rockchip/cdn-dp-core.c        |  7 +++--
 drivers/gpu/drm/rockchip/inno_hdmi.c          |  3 ++-
 drivers/gpu/drm/sti/sti_hdmi.c                | 11 ++++----
 drivers/gpu/drm/sti/sti_hdmi.h                |  2 --
 include/drm/drm_connector.h                   | 14 +++++++++-
 25 files changed, 73 insertions(+), 96 deletions(-)

-- 
2.39.2


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

* [Nouveau] [PATCH 02/12] drm/nouveau: convert to using is_hdmi and has_audio from display info
  2023-03-30 15:39 [Nouveau] [PATCH 00/12] drm: reduce drm_detect_monitor_audio/drm_detect_hdmi_monitor/edid_blob_ptr usage Jani Nikula
@ 2023-03-30 15:39 ` Jani Nikula
  0 siblings, 0 replies; 2+ messages in thread
From: Jani Nikula @ 2023-03-30 15:39 UTC (permalink / raw)
  To: dri-devel; +Cc: jani.nikula, nouveau, intel-gfx, Ben Skeggs

Prefer the parsed results for is_hdmi and has_audio in display info over
calling drm_detect_hdmi_monitor() and drm_detect_monitor_audio(),
respectively.

Conveniently, this also removes the need to use edid_blob_ptr.

Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Karol Herbst <kherbst@redhat.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: nouveau@lists.freedesktop.org
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/nouveau/dispnv50/disp.c     | 8 ++++----
 drivers/gpu/drm/nouveau/dispnv50/head.c     | 8 +-------
 drivers/gpu/drm/nouveau/nouveau_connector.c | 2 +-
 3 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index ed9d374147b8..6c41e0316043 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -713,7 +713,7 @@ nv50_audio_enable(struct drm_encoder *encoder, struct nouveau_crtc *nv_crtc,
 	struct nouveau_encoder *nv_encoder = nouveau_encoder(encoder);
 	struct nvif_outp *outp = &nv_encoder->outp;
 
-	if (!nv50_audio_supported(encoder) || !drm_detect_monitor_audio(nv_connector->edid))
+	if (!nv50_audio_supported(encoder) || !nv_connector->base.display_info.has_audio)
 		return;
 
 	mutex_lock(&drm->audio.lock);
@@ -1555,13 +1555,13 @@ nv50_sor_atomic_enable(struct drm_encoder *encoder, struct drm_atomic_state *sta
 
 	if ((disp->disp->object.oclass == GT214_DISP ||
 	     disp->disp->object.oclass >= GF110_DISP) &&
-	    drm_detect_monitor_audio(nv_connector->edid))
+	    nv_connector->base.display_info.has_audio)
 		hda = true;
 
 	switch (nv_encoder->dcb->type) {
 	case DCB_OUTPUT_TMDS:
 		if (disp->disp->object.oclass == NV50_DISP ||
-		    !drm_detect_hdmi_monitor(nv_connector->edid))
+		    !nv_connector->base.display_info.is_hdmi)
 			nvif_outp_acquire_tmds(outp, nv_crtc->index, false, 0, 0, 0, false);
 		else
 			nv50_hdmi_enable(encoder, nv_crtc, nv_connector, state, mode, hda);
@@ -1576,7 +1576,7 @@ nv50_sor_atomic_enable(struct drm_encoder *encoder, struct drm_atomic_state *sta
 			 */
 			if (mode->clock >= 165000 &&
 			    nv_encoder->dcb->duallink_possible &&
-			    !drm_detect_hdmi_monitor(nv_connector->edid))
+			    !nv_connector->base.display_info.is_hdmi)
 				proto = NV507D_SOR_SET_CONTROL_PROTOCOL_DUAL_TMDS;
 		} else {
 			proto = NV507D_SOR_SET_CONTROL_PROTOCOL_SINGLE_TMDS_B;
diff --git a/drivers/gpu/drm/nouveau/dispnv50/head.c b/drivers/gpu/drm/nouveau/dispnv50/head.c
index 5f490fbf1877..628db44af891 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/head.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/head.c
@@ -126,14 +126,8 @@ nv50_head_atomic_check_view(struct nv50_head_atom *armh,
 	struct drm_display_mode *omode = &asyh->state.adjusted_mode;
 	struct drm_display_mode *umode = &asyh->state.mode;
 	int mode = asyc->scaler.mode;
-	struct edid *edid;
 	int umode_vdisplay, omode_hdisplay, omode_vdisplay;
 
-	if (connector->edid_blob_ptr)
-		edid = (struct edid *)connector->edid_blob_ptr->data;
-	else
-		edid = NULL;
-
 	if (!asyc->scaler.full) {
 		if (mode == DRM_MODE_SCALE_NONE)
 			omode = umode;
@@ -161,7 +155,7 @@ nv50_head_atomic_check_view(struct nv50_head_atom *armh,
 	 */
 	if ((asyc->scaler.underscan.mode == UNDERSCAN_ON ||
 	    (asyc->scaler.underscan.mode == UNDERSCAN_AUTO &&
-	     drm_detect_hdmi_monitor(edid)))) {
+	     connector->display_info.is_hdmi))) {
 		u32 bX = asyc->scaler.underscan.hborder;
 		u32 bY = asyc->scaler.underscan.vborder;
 		u32 r = (asyh->view.oH << 19) / asyh->view.oW;
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 086b66b60d91..3143d2083c6d 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -1012,7 +1012,7 @@ get_tmds_link_bandwidth(struct drm_connector *connector)
 	unsigned duallink_scale =
 		nouveau_duallink && nv_encoder->dcb->duallink_possible ? 2 : 1;
 
-	if (drm_detect_hdmi_monitor(nv_connector->edid)) {
+	if (nv_connector->base.display_info.is_hdmi) {
 		info = &nv_connector->base.display_info;
 		duallink_scale = 1;
 	}
-- 
2.39.2


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

end of thread, other threads:[~2023-03-30 15:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-30 15:39 [Nouveau] [PATCH 00/12] drm: reduce drm_detect_monitor_audio/drm_detect_hdmi_monitor/edid_blob_ptr usage Jani Nikula
2023-03-30 15:39 ` [Nouveau] [PATCH 02/12] drm/nouveau: convert to using is_hdmi and has_audio from display info Jani Nikula

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox