[PATCH 2/5] host1x: hdmi: Detect whether display is connected with HDMI or DVI
Mikko Perttunen
mperttunen at nvidia.com
Wed Aug 28 05:34:53 PDT 2013
On 08/28/2013 03:07 PM, Thierry Reding wrote:
> * PGP Signed by an unknown key
>
> On Wed, Aug 28, 2013 at 01:40:56PM +0300, Mikko Perttunen wrote:
>> Use EDID data to determine whether the display supports HDMI or just DVI.
>> This used to be hardcoded to be HDMI, which broke support for DVI displays
>> that couldn't understand the interspersed audio/other data.
>>
>> If the EDID data isn't available, default to DVI, which should be a safer
>> choice.
>>
>> Signed-off-by: Mikko Perttunen <mperttunen at nvidia.com>
>> ---
>> drivers/gpu/host1x/drm/hdmi.c | 8 ++++++++
>> 1 file changed, 8 insertions(+)
>>
>> diff --git a/drivers/gpu/host1x/drm/hdmi.c b/drivers/gpu/host1x/drm/hdmi.c
>> index d81fac8..140339b 100644
>> --- a/drivers/gpu/host1x/drm/hdmi.c
>> +++ b/drivers/gpu/host1x/drm/hdmi.c
>> @@ -702,6 +702,14 @@ static int tegra_output_hdmi_enable(struct tegra_output *output)
>> unsigned long value;
>> int retries = 1000;
>> int err;
>> + struct drm_property_blob *edid_blob = output->connector.edid_blob_ptr;
>> +
>> + if (edid_blob && edid_blob->data &&
>> + drm_detect_hdmi_monitor((struct edid *)edid_blob->data)) {
>> + hdmi->dvi = false;
>> + } else {
>> + hdmi->dvi = true;
>> + }
>>
>> pclk = mode->clock * 1000;
>> h_sync_width = mode->hsync_end - mode->hsync_start;
>
> Odd, now that I see that code I remember that there was a similar patch
> a few months back, but it was never applied for some reason:
>
> http://lists.freedesktop.org/archives/dri-devel/2013-January/033509.html
>
> That was already reviewed by me and Jon Mayo, so I'll go ahead and apply
> that one instead.
>
> Thierry
>
> * Unknown Key
> * 0x7F3EB3A1
>
That patch seems to cause a warning for me:
drivers/gpu/host1x/drm/hdmi.c: In function ‘tegra_output_hdmi_enable’:
drivers/gpu/host1x/drm/hdmi.c:706:2: warning: passing argument 1 of
‘drm_detect_hdmi_monitor’ discards ‘const’ qualifier from pointer target
type [enabled by default]
include/drm/drm_crtc.h:1037:13: note: expected ‘struct edid *’ but
argument is of type ‘const struct edid *’
Looks much nicer though.
More information about the dri-devel
mailing list