[PATCH 2/5] drm/i915: Add has_hdmi_monitor to intel_hdmi

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 14, 2013 at 04:15:07PM +0200, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrj?l? <ville.syrjala at linux.intel.com>
> 
> intel_hdmi.has_hdmi_sink is tied into the force audio property, so it
> doesn't seem like the correct way to detect HDMI monitors. Instead add
> a new has_hdmi_monitor member which simply tells whether a HDMI monitor
> was detected.
> 
> Not sure if this is the best way, or if we should just use has_hdmi_sink
> for the CEA-861 automatic color range property... At least the infoframe
> stuff already depends on has_hdmi_sink.
> 
> Signed-off-by: Ville Syrj?l? <ville.syrjala at linux.intel.com>

Imo it looks simpler if we just reuse the has_hdmi_sink bool. That already
controls infoframes and similar stuff, so if users would force dvi mode
this would automatically also disable all broadcast range magic (if that's
in the default value). Users could still override the broadcast stuff
explictly.

I guess it'd have been better if we have a a force-dvi master switch
outside of the audio property to control all things hdmi. But alas ...
-Daniel

> ---
>  drivers/gpu/drm/i915/intel_drv.h  |    1 +
>  drivers/gpu/drm/i915/intel_hdmi.c |    6 ++++--
>  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 4df47be..aed7478 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -344,6 +344,7 @@ struct intel_hdmi {
>  	int ddc_bus;
>  	uint32_t color_range;
>  	bool has_hdmi_sink;
> +	bool has_hdmi_monitor;
>  	bool has_audio;
>  	enum hdmi_force_audio force_audio;
>  	void (*write_infoframe)(struct drm_encoder *encoder,
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index f194d75..e663dec 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -815,6 +815,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
>  		 return status;
>  
>  	intel_hdmi->has_hdmi_sink = false;
> +	intel_hdmi->has_hdmi_monitor = false;
>  	intel_hdmi->has_audio = false;
>  	edid = drm_get_edid(connector,
>  			    intel_gmbus_get_adapter(dev_priv,
> @@ -823,9 +824,10 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
>  	if (edid) {
>  		if (edid->input & DRM_EDID_INPUT_DIGITAL) {
>  			status = connector_status_connected;
> +			intel_hdmi->has_hdmi_monitor =
> +				drm_detect_hdmi_monitor(edid);
>  			if (intel_hdmi->force_audio != HDMI_AUDIO_OFF_DVI)
> -				intel_hdmi->has_hdmi_sink =
> -						drm_detect_hdmi_monitor(edid);
> +				intel_hdmi->has_hdmi_sink = intel_hdmi->has_hdmi_monitor;
>  			intel_hdmi->has_audio = drm_detect_monitor_audio(edid);
>  		}
>  		kfree(edid);
> -- 
> 1.7.8.6
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux