Request for fixing atombios_get_encoder_mode
alexdeucher at gmail.com
Wed Dec 7 08:56:52 PST 2011
2011/12/7 Rafał Miłecki <zajec5 at gmail.com>:
> W dniu 7 grudnia 2011 15:53 użytkownik Alex Deucher
> <alexdeucher at gmail.com> napisał:
>> 2011/12/7 Rafał Miłecki <zajec5 at gmail.com>:
>>> W dniu 7 grudnia 2011 14:53 użytkownik Alex Deucher
>>> <alexdeucher at gmail.com> napisał:
>>>> 2011/12/7 Rafał Miłecki <zajec5 at gmail.com>:
>>>>> In theory function atombios_get_encoder_mode should report
>>>>> ATOM_ENCODER_MODE_HDMI when TV supports audio. Current we report
>>>>> ATOM_ENCODER_MODE_DVI if card is DCE4.
>>>>> Is there any reason for it? Can we just drop that DCE4 condition? This
>>>>> fixme seems to be here since ever.
>>>> It causes display corruption unless the hdmi packet engine is set up properly.
>>> Even with radeon.audio=0?
>> No, as in that case, DVI is returned. On DCE3.0 and newer chips there
>> is no explicit hdmi engine enable bit. You just select HDMI mode
>> rather than DVI mode in the digital encoder setup. So if you select
>> HDMI in the encoder setup and you have not configured the hdmi engine
>> correctly you will git display corruption or a blank screen. Which is
>> why I had to disable audio by default. Since audio is off by default,
>> the DCE4 conditional in the hdmi case could be removed.
> OK, it makes sense, thanks.
> Btw I believe there *is* HDMI enabling bit on DCE3+, we probably just
> don't need to poke it manually :)
> It is bit 0x1000 in registers
> 0x7000, 0x7c00, 0x10800, 0x11400, 0x12000, 0x12c00
> All my HDMI frames are ignored without that bit set.
As I mentioned above, that register (DIG_CNTL) is programmed by
DIGxEncoderControl table based on the encoder mode selected (DP, LVDS,
DVI, HDMI). Bits 14:12 select the DIG_MODE of the encoder. 0 = DP, 1
= LVDS, 2 = DVI, 3 = HDMI.
More information about the dri-devel