nouveau optimus HDMI audio support

Jethro Beekman dri-devel at jbeekman.nl
Mon Oct 7 02:30:33 CEST 2013



On 06-10-13 16:48, Dave Airlie wrote:
> On Mon, Oct 7, 2013 at 8:45 AM, Jethro Beekman <dri-devel at jbeekman.nl> wrote:
>> On 06-10-13 15:00, Dave Airlie wrote:
>>> On Mon, Oct 7, 2013 at 7:04 AM, Jethro Beekman <dri-devel at jbeekman.nl> wrote:
>>>> Even with Dave Airlie's recent patch set (
>>>> http://lists.freedesktop.org/archives/dri-devel/2013-August/042854.html ), I'm
>>>> still having trouble getting HDMI audio to work on my optimus laptop. I'm
>>>> running Linux 3.12.0-rc3 on a Lenovo ThinkPad T420s. When I set my BIOS graphics
>>>> option to 'Discrete', I get the following two devices in lspci:
>>>>
>>>> 01:00.0 VGA compatible controller: NVIDIA Corporation GF119 [Quadro NVS 4200M]
>>>> (rev a1)
>>>> 01:00.1 Audio device: NVIDIA Corporation HDMI Audio stub (rev a1)
>>>>
>>>> When I set the option to 'Optimus', the 01:00.1 device disappears completely.
>>>> This is dmesg when loading nouveau in the Optimus configuration:
>>>>
>>>> pci 0000:01:00.0: optimus capabilities: enabled, status dynamic power, hda bios
>>>> codec supported
>>>> VGA switcheroo: detected Optimus DSM method \_SB_.PCI0.PEG_.VID_ handle
>>>> [drm] hdmi device  not found 1 0 1
>>>>
>>>> I modified snd-hda-intel to report which devices it's probing, this is the only
>>>> one that shows up:
>>>>
>>>> hda-intel: azx_probe: 0000:00:1b.0
>>>>
>>>> Any ideas what's going on?
>>>
>>> Wierd, I wonder does it route the codecs via the other device, though
>>> I can't remember how to see what codecs are available.
>>
>> /proc/asound/card0/ lists only a single codec which is for analog i/o.
>>
>>> The other thing would be to try and hack on the hdmi stub using the
>>> code in my patches that does it after s/r but do it at startup.
>>
>> Could you be a little more specific? I tried moving nouveau_get_hdmi_dev() later
>> so we have drm->device setup and then adding the 'do magic' nv_mask() call
>> before that. That's either not working or something more needs to happen to make
>> it work.
> 
> yeah doing the do magic might not work though since Linux would have to rescan
> the PCI bus for the hdmi driver to detect it, I wonder can you poke
> registers from grub,
> or maybe geneate some sort of pci hotplug even so the other layers notice.

I added this, copied from the handler for /sys/bus/pci/rescan:

struct pci_bus *b = NULL;

while ((b = pci_find_next_bus(b)) != NULL)
	pci_rescan_bus(b);

No luck... Also tried adding a specific pci_scan_slot().

How did you find out about the magic register? Are we sure that it's supposed to
work on my device?

> 
> Dave.
> 


More information about the dri-devel mailing list