linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] drm/i915/hdmi: enable resolution 3840x2160 for type 1 HDMI
@ 2019-10-16  9:57 Jian-Hong Pan
  2019-10-16 10:33 ` Ville Syrjälä
  0 siblings, 1 reply; 2+ messages in thread
From: Jian-Hong Pan @ 2019-10-16  9:57 UTC (permalink / raw)
  To: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, David Airlie,
	Daniel Vetter, Ville Syrjälä,
	Chris Wilson, Maarten Lankhorst, Ramalingam C, Uma Shankar
  Cc: intel-gfx, dri-devel, linux-kernel, linux, Jian-Hong Pan

Type 1 HDMI may be version 1.3 or upper, which supports higher max TMDS
clock for higher resolutions, like 3840x2160. This patch sets max TMDS
clock according to the chip, if the adapter is type 1 HDMI.

Buglink: https://bugs.freedesktop.org/show_bug.cgi?id=112018
Fixes: b1ba124d8e95 ("drm/i915: Respect DP++ adaptor TMDS clock limit")
Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
---
 drivers/gpu/drm/i915/display/intel_hdmi.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index e02f0faecf02..74e4426ffcad 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -2454,6 +2454,7 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector, bool has_edid)
 {
 	struct drm_i915_private *dev_priv = to_i915(connector->dev);
 	struct intel_hdmi *hdmi = intel_attached_hdmi(connector);
+	struct intel_encoder *encoder = &hdmi_to_dig_port(hdmi)->base;
 	enum port port = hdmi_to_dig_port(hdmi)->base.port;
 	struct i2c_adapter *adapter =
 		intel_gmbus_get_adapter(dev_priv, hdmi->ddc_bus);
@@ -2488,8 +2489,16 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector, bool has_edid)
 		return;
 
 	hdmi->dp_dual_mode.type = type;
-	hdmi->dp_dual_mode.max_tmds_clock =
-		drm_dp_dual_mode_max_tmds_clock(type, adapter);
+	/* Type 1 HDMI may be version 1.3 or upper, which supports higher max
+	 * TMDS clock for higher resolutions, like 3840x2160. So, set it
+	 * according to the chip, if the adapter is type 1 HDMI.
+	 */
+	if (type == DRM_DP_DUAL_MODE_TYPE1_HDMI)
+		hdmi->dp_dual_mode.max_tmds_clock =
+			intel_hdmi_source_max_tmds_clock(encoder);
+	else
+		hdmi->dp_dual_mode.max_tmds_clock =
+			drm_dp_dual_mode_max_tmds_clock(type, adapter);
 
 	DRM_DEBUG_KMS("DP dual mode adaptor (%s) detected (max TMDS clock: %d kHz)\n",
 		      drm_dp_get_dual_mode_type_name(type),
-- 
2.23.0


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

* Re: [PATCH] drm/i915/hdmi: enable resolution 3840x2160 for type 1 HDMI
  2019-10-16  9:57 [PATCH] drm/i915/hdmi: enable resolution 3840x2160 for type 1 HDMI Jian-Hong Pan
@ 2019-10-16 10:33 ` Ville Syrjälä
  0 siblings, 0 replies; 2+ messages in thread
From: Ville Syrjälä @ 2019-10-16 10:33 UTC (permalink / raw)
  To: Jian-Hong Pan
  Cc: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, David Airlie,
	Daniel Vetter, Chris Wilson, Maarten Lankhorst, Ramalingam C,
	Uma Shankar, intel-gfx, dri-devel, linux-kernel, linux

On Wed, Oct 16, 2019 at 05:57:58PM +0800, Jian-Hong Pan wrote:
> Type 1 HDMI may be version 1.3 or upper, which supports higher max TMDS
> clock for higher resolutions,

Spec says "Type 1 adaptors can support DVI or HDMI up to a 165MHz TMDS clock rate."

And I've definitely seen HDMI dongles that can't deal with
eg. 1080p 12bpc @225MHz. We don't want users with black screens
out of the box, so NAK.

If you want to "overclock" your hardware you can do so by setting up
the modeline manually.

> like 3840x2160. This patch sets max TMDS
> clock according to the chip, if the adapter is type 1 HDMI.
> 
> Buglink: https://bugs.freedesktop.org/show_bug.cgi?id=112018
> Fixes: b1ba124d8e95 ("drm/i915: Respect DP++ adaptor TMDS clock limit")
> Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
> ---
>  drivers/gpu/drm/i915/display/intel_hdmi.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index e02f0faecf02..74e4426ffcad 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -2454,6 +2454,7 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector, bool has_edid)
>  {
>  	struct drm_i915_private *dev_priv = to_i915(connector->dev);
>  	struct intel_hdmi *hdmi = intel_attached_hdmi(connector);
> +	struct intel_encoder *encoder = &hdmi_to_dig_port(hdmi)->base;
>  	enum port port = hdmi_to_dig_port(hdmi)->base.port;
>  	struct i2c_adapter *adapter =
>  		intel_gmbus_get_adapter(dev_priv, hdmi->ddc_bus);
> @@ -2488,8 +2489,16 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector, bool has_edid)
>  		return;
>  
>  	hdmi->dp_dual_mode.type = type;
> -	hdmi->dp_dual_mode.max_tmds_clock =
> -		drm_dp_dual_mode_max_tmds_clock(type, adapter);
> +	/* Type 1 HDMI may be version 1.3 or upper, which supports higher max
> +	 * TMDS clock for higher resolutions, like 3840x2160. So, set it
> +	 * according to the chip, if the adapter is type 1 HDMI.
> +	 */
> +	if (type == DRM_DP_DUAL_MODE_TYPE1_HDMI)
> +		hdmi->dp_dual_mode.max_tmds_clock =
> +			intel_hdmi_source_max_tmds_clock(encoder);
> +	else
> +		hdmi->dp_dual_mode.max_tmds_clock =
> +			drm_dp_dual_mode_max_tmds_clock(type, adapter);
>  
>  	DRM_DEBUG_KMS("DP dual mode adaptor (%s) detected (max TMDS clock: %d kHz)\n",
>  		      drm_dp_get_dual_mode_type_name(type),
> -- 
> 2.23.0

-- 
Ville Syrjälä
Intel

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

end of thread, other threads:[~2019-10-16 10:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-16  9:57 [PATCH] drm/i915/hdmi: enable resolution 3840x2160 for type 1 HDMI Jian-Hong Pan
2019-10-16 10:33 ` Ville Syrjälä

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).