[alsa-devel] ALSA Multichannel through HDMI

Anssi Hannula anssi.hannula at iki.fi
Fri Nov 26 03:16:45 CET 2010


On 26.11.2010 04:02, John Ettedgui wrote:
> On Thu, Nov 25, 2010 at 5:08 PM, John Ettedgui <john.ettedgui at gmail.com> wrote:
>> On Thu, Nov 25, 2010 at 4:59 PM, Anssi Hannula <anssi.hannula at iki.fi> wrote:
>>> On 26.11.2010 02:53, John Ettedgui wrote:
>>>> On Thu, Nov 25, 2010 at 3:34 PM, John Ettedgui <john.ettedgui at gmail.com> wrote:
>>>>> On Thu, Nov 25, 2010 at 3:15 PM, Anssi Hannula <anssi.hannula at iki.fi> wrote:
>>>>>> On 26.11.2010 01:11, John Ettedgui wrote:
>>>>>>> On Thu, Nov 25, 2010 at 2:58 PM, Anssi Hannula <anssi.hannula at iki.fi> wrote:
>>>>>>>> On 26.11.2010 00:42, John Ettedgui wrote:
>>>>>>>>> On Thu, Nov 25, 2010 at 11:19 AM, Anssi Hannula <anssi.hannula at iki.fi> wrote:
>>>>>>>>>> On 25.11.2010 14:21, John Ettedgui wrote:
>>>>>>>>>>> On Thu, Nov 25, 2010 at 3:40 AM, Anssi Hannula <anssi.hannula at iki.fi> wrote:
>>>>>>>>>>>> On 25.11.2010 13:09, John Ettedgui wrote:
>>>>>>>>>>>>> On Thu, Nov 25, 2010 at 2:49 AM, Anssi Hannula <anssi.hannula at iki.fi> wrote:
>>>>>>>>>>>>>> On 25.11.2010 06:12, John Ettedgui wrote:
>>>>>>>>>>>>>>> I'm actually trying to get a 5.1 setup working without passthrough, if
>>>>>>>>>>>>>>> I use mplayer with passthrough my receiver behaves just fine, but I am
>>>>>>>>>>>>>>> trying to send the 6 channels from the computer.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I was actually told that the current ALSA driver for radeon's hdmi
>>>>>>>>>>>>>>> does not support more than 2 channels, and that would explain why I'm
>>>>>>>>>>>>>>> getting this behavior. Is that true though?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Yes.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> However, strangely your log output seems to show the intel's hdmi parser
>>>>>>>>>>>>>> being used instead:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ALSA sound/pci/hda/patch_intelhdmi.c:842: hdmi_setup_stream: NID=0x2,
>>>>>>>>>>>>>>> stream=0x1, new-format=0x11
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Were you just trying some patch at the time?
>>>>>>>>>>>>>
>>>>>>>>>>>>> yes Wu gave me a patch to try against the kernel, I'm guessing this is
>>>>>>>>>>>>> the reason you see something unexpected.
>>>>>>>>>>>>
>>>>>>>>>>>> Did 6 channels work with that patch? (possibly with a wrong channel order)
>>>>>>>>>>> Not any better as far as I remember.
>>>>>>>>>>
>>>>>>>>>> OK. Did 2 channel audio continue to work with it?
>>>>>>>>>>
>>>>>>>>>> If you are not sure, here's the patch doing the same thing against
>>>>>>>>>> current alsa driver:
>>>>>>>>>> http://stuff.onse.fi/0001-ALSA-hda-Use-generic-HDMI-code-for-ATI-HDMI-codecs.patch
>>>>>>>>>>
>>>>>>>>>> Confirming that would help (it would allow to switch the ATI chip to use
>>>>>>>>>> the generic parser instead of the ATI-specific one), though not with the
>>>>>>>>>> multichannel issue (see below).
>>>>>>>>>>
>>>>>>>>>> [...]
>>>>>>>>>>
>>>>>>>>>>>>> Since I just moved to jack/rca cables I'm in no hurry anymore, but is
>>>>>>>>>>>>> there any reason why the driver cannot work with more than 2 channels?
>>>>>>>>>>>>
>>>>>>>>>>>> I don't really know (it is simply not implemented).
>>>>>>>>>>> Alright.
>>>>>>>>>>>>
>>>>>>>>>>>>> Anything I could do to help with that?
>>>>>>>>>>>>
>>>>>>>>>>>> Possibly. But see above, so that we won't try the same things you
>>>>>>>>>>>> already tried :)
>>>>>>>>>>>>
>>>>>>>>>>> Sure :)
>>>>>>>>>>
>>>>>>>>>> Looking again at the the alsa info output you provided, I don't think I
>>>>>>>>>> have any great ideas. It looks like the chip simply reports that it
>>>>>>>>>> supports a maximum of 2 channels.
>>>>>>>>>>
>>>>>>>>>> One option could be hardcoding "chans = 8;" in generic_hdmi_build_pcms()
>>>>>>>>>> in sound/pci/hda/patch_hdmi.c (assuming you have the above patch and 2
>>>>>>>>>> channel audio works with it). However, I find it rather unlikely that it
>>>>>>>>>> would make any difference.
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Anssi Hannula
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Anssi,
>>>>>>>>> the patch fails on my kernel, I cannot find the hda_codec_preset
>>>>>>>>> manually in there either.
>>>>>>>>> Did you want me to try that against a 2.6.37 rc instead of a 2.6.36?
>>>>>>>>
>>>>>>>> For 2.6.36 I think you can just use your earlier patch.
>>>>>>>>
>>>>>>>> Note that on that kernel generic_hdmi_build_pcms() is
>>>>>>>> intel_hdmi_build_pcms() in patch_intelhdmi.c.
>>>>>>>>
>>>>>>> ok
>>>>>>>> BTW, I've just been informed by another ATI user that his card was
>>>>>>>> actually stereo-only, while he thought earlier it was multichannel
>>>>>>>> capable. So, are you sure your card is a multichannel one?
>>>>>>>> (if not, it would explain why the card says it is not)
>>>>>>>>
>>>>>>>> --
>>>>>>>> Anssi Hannula
>>>>>>>>
>>>>>>> Yes, it works fine in Window  so I believe the hardware part is good.
>>>>>>
>>>>>> And you are sure it is multichannel PCM, and not e.g. multichannel DTS
>>>>>> or multichannel AC-3 with on-the-fly compression, which are possible
>>>>>> with stereo hdmi as well?
>>>>>>
>>>>>> Just making sure :)
>>>>>>
>>>>>> --
>>>>>> Anssi Hannula
>>>>>>
>>>>>
>>>>> Well, I have not super tested it, but the reason I believe it is is
>>>>> simple, when I use passthrough my receiver says Dolby digital or
>>>>> something like that, but in Windows just going around or playing games
>>>>> it says Multichannel.
>>>
>>> Sounds ok then.
>>>
>>>>> I'll get the patch applied in a few minutes, I was running out of
>>>>> memory and my system was getting really slow... :)
>>>>>
>>>>
>>>> I am not sure if I did it right but now I don't even get hdmi sound
>>>> working anymore.
>>>> It is not listed in aplay-l, and dmesg gives me this:
>>>> [drm:radeon_dvi_detect] *ERROR* HDMI Type A-1: probed a monitor but
>>>> no|invalid EDID
>>>>
>>>> I've attached the patch I used, since I could not used the previous
>>>> one I had to hack it, maybe I broke something?
>>>> (I have not set channels to 8 yet, just changed the parser)
>>>
>>> The patch looks ok. The above error message is weird, as it comes from
>>> the display driver which should not be affected by the patch at all.
>>>
>>> I'll look at the code later (tomorrow maybe). Until then I'd advise you
>>> to retry without the patch and with the patch again, just to make sure
>>> this is not some unrelated issue...
>>> Also, post the whole dmesg when it works (2 channel, without patch), and
>>> when it doesn't (with patch).
>>>
>>> --
>>> Anssi Hannula
>>>
>> Following your message I restarted my computer and that error was
>> gone, yet there is still nothing display in aplay -l / aplay -L about
>> hdmi anymore.
>> I'll go back to my non patched kernel and see what it does.
>>
> With the non-patched kernel I get back my hdmi in aplay -l, so it
> looks like the patch messed up something.

Indeed.

> I really think that when I tried it before it did not do that, but it
> was so long ago that I could be wrong...

Well, the driver has changed since then, it could be more strict now :)

> Anyway here are the 2 dmesgs (not sure if they'll help though).

Indeed, there doesn't seem to be any difference. Maybe try with
CONFIG_SND_DEBUG_VERBOSE?

-- 
Anssi Hannula


More information about the Alsa-devel mailing list