[alsa-devel] Intel HDA / ca0132: Multichannel + S/PDIF support
Stefan Oltmanns
stefan-oltmanns at gmx.net
Tue Jan 6 02:06:36 CET 2015
Am 05.01.2015 um 09:05 schrieb Takashi Iwai:
> At Sun, 04 Jan 2015 22:26:44 +0100,
> Stefan Oltmanns wrote:
>>
>> Am 04.01.2015 um 21:33 schrieb Dylan Reid:
>>> On Sat, Jan 3, 2015 at 2:43 AM, Stefan Oltmanns <stefan-oltmanns at gmx.net> wrote:
>>>> Am 03.01.2015 um 02:30 schrieb Dylan Reid:
>>>>> On Tue, Dec 30, 2014 at 8:05 AM, Stefan Oltmanns
>>>>> <stefan-oltmanns at gmx.net> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I own a Gigabyte G1.Sniper M3 Z77 mainboard with ca0132 onboard audio.
>>>>>> Currently only stereo out and headphone out (at the back, always same
>>>>>> signal) work by default.
>>>>>> I was able to fix S/PDIF out by changing the headphone pin in function
>>>>>> ca0132_config to something below 0x0d, like:
>>>>>>
>>>>>> spec->out_pins[1] = 0x0a;
>>>>>>
>>>>>> No idea why this fixes S/PDIF, but no other effects noticed. No idea if
>>>>>> it´s going to break something on other devices. Original value is 0x10.
>>>>>>
>>>>>> In this function also 3 DACs are listed. The board has a total of 5
>>>>>> stereo outputs:
>>>>>>
>>>>>> -Frontpanel (HDA pin connector on mainboard)
>>>>>> 4x 3,5mm output at backpanel:
>>>>>> -Stereo out
>>>>>> -Headphone out
>>>>>> -Rear out
>>>>>> -Center/LFE out
>>>>>>
>>>>>> I tried to increase the number of channels and create additional outputs
>>>>>> and connected to the other DACs. The maximum I´m able to is to get
>>>>>> different signals out of stereo out and front headphone (not useful,
>>>>>> just some weird mixes) or same signal from all 3 outputs. Rear and c/lfe
>>>>>> out always no signal.
>>>>>>
>>>>>> During initialization snd_hda_parse_pin_def_config is called and two
>>>>>> outputs are found. I tried to override that and change spec->autocfg
>>>>>> after that function is called, no success.
>>>>>> Also no matter what I change there, a little later I get this kernel
>>>>>> messages:
>>>>>>
>>>>>> kernel: [ 2.642972] input: HDA Intel PCH Line Out as
>>>>>> /devices/pci0000:00/0000:00:1b.0/sound/card0/input8
>>>>>> kernel: [ 2.643142] input: HDA Intel PCH Front Headphone as
>>>>>> /devices/pci0000:00/0000:00:1b.0/sound/card0/input7
>>>>>> kernel: [ 2.644932] input: HDA Intel PCH Line as
>>>>>> /devices/pci0000:00/0000:00:1b.0/sound/card0/input6
>>>>>> kernel: [ 2.645050] input: HDA Intel PCH Mic as
>>>>>> /devices/pci0000:00/0000:00:1b.0/sound/card0/input5
>>>>>>
>>>>>> I could not find the code where this messages are generated, where is that?
>>>>>>
>>>>>> Any ideas what I could/should try to get multichannel support working?
>>>>>> Is there any kind of documentation on the ca0132 that could be helpful?
>>>>>
>>>>> A lot of these capabilities need to be exposed by the DSP on the
>>>>> ca0132. What firmware are you loading on it?
>>>>
>>>> I tried the one included and none, makes no difference for that problem.
>>>> Also the firmware gets loaded after all the input/output configuration,
>>>> you´re sure the firmware is needed for multichannel support? Is it
>>>> possible/legal to extract it from the windows driver somehow?
>>>>
>>>
>>> I'm not sure you need the DSP to do this. You could try the widows
>>> firmware, but I don't think the driver will know how to communicate
>>> with it.
>>> Sorry I don't have anything more encouraging.
>>>
>>
>> The firmware seems to be directly included in the driver (file is called
>> ctHda.sys), as I can find the byte sequence MXFL many times in it (this
>> is how the ctefx.bin file starts). Unfortunately it does not even to be
>> in one part (there are strings in between). Is there any information
>> available of the file format of the firmware, like header structure, so
>> I can find out length of it?
>>
>> Still the question remains, the input/outputs seem to be generated
>> before the firmware is loaded, how is that done? How does the driver
>> know that there are this 4 I/Os and that they are named like that?
>> That´s not from the patch_ca1032.c. I cannot find any code for that.
>
> It's parsed from the pin-default config values set by the hardware.
> In the case of onboard audio, usually this is set by BIOS.
> Stand-alone boards should set it by themselves, too.
>
> The SPDIF I/O itself has worked even without the DSP (but some volume
> controls didn't), IIRC, at least on a Recon3D board I've tested in the
> past.
>
> Reassigning the pin is the right fix for your board. The correct way
> would be to add a fixup entry depending on the PCI or codec SSID.
>
>
> thanks,
>
> Takashi
>
I was able to extract the firmware from the windows driver, it is loaded
without any problem "ca0132 DOWNLOAD OK :-) DSP IS RUNNING"
Unfortunately after that no analog output at all, digital out is still
working.
I tried the inputs, while device 0,0 gives me digital silence, device
0,2 (mic 2) is only analog silence (there is some very silent random
background noise), so there is an ADC working (tried both inputs-> no
success).
There is still no difference at all in the I/Os found. Where/how are
this fix-up entries done? Is there an good example for a similar device?
Thanks
Stefan
More information about the Alsa-devel
mailing list