I've got sound to work with the Ubuntu 6.10 2.6.17-10-generic kernel by
doing the following:

1) Copying my "fixed" dsdt.aml to /etc/initramfs-tools/DSDT.aml
2) Running mkinitramfs as below:

sudo mkinitramfs -o /boot/initrd.img-2.6.17-10-generic-fixed-dsdt

3) Rebooting and instruct grub to use the above initrd rather than the
stock 2.6.17-10-generic initrd.

So my modified dsdt.dsl works on it's own. As Matthew G. noted in a
above comment I don't I don't have any ACPI errors in my dmesg, so I
reexamined my dsdt.dsl and found what I believe to be the problem. Below
is the DSDT routine that checks the OS version:

        Method (_INI, 0, NotSerialized)
        {
            If (DTSE)
            {
                TRAP (0x47)
            }

            Store (0x07D0, OSYS)
            If (CondRefOf (_OSI, Local0))
            {
                If (_OSI ("Linux"))
                {
                    Store (0x03E8, OSYS)
                }
                Else
                {
                    Store (0x07D1, OSYS)
                    If (_OSI ("Windows 2001 SP2"))
                    {
                        Store (0x07D2, OSYS)
                    }

                    If (_OSI ("Windows 2001.1"))
                    {
                        Store (0x07D3, OSYS)
                    }

                    If (_OSI ("Windows 2001.1 SP1"))
                    {
                        Store (0x07D4, OSYS)
                    }

                    If (_OSI ("Windows 2006"))
                    {
                        Store (0x07D6, OSYS)
                    }

                    If (LAnd (MPEN, LEqual (OSYS, 0x07D1)))
                    {
                        TRAP (0x3D)
                    }
                }
            }
        }


Note that if _OSI returns true for "Linux" the routine doesn't check to see 
what other ACPI interfaces are supported by the operating system. Checking 
elsewhere for the usage of OSYS in the dsdt.dsl reveals that much AML code is 
not executed when OSYS=0x03E8 (Linux).

In my "fixed" dsdt.dsl the above routine is reduced to setting OSYS to
the corresponding "Windows 2006" value. Here it is:

        Method (_INI, 0, NotSerialized)
        {
            If (DTSE)
            {
                TRAP (0x47)
            }

            Store (0x07D6, OSYS)
        }

A patch for enhancing the "acpi_osi=" kernel parameter to fix this
problem was presented here http://marc.theaimsgroup.com/?l=linux-
acpi&m=115563247228643&w=2 . It was rejected here,
http://marc.theaimsgroup.com/?l=linux-acpi&m=115925608232609&w=2 .

-- 
ACPI sound problem
https://launchpad.net/bugs/75434

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to