2010-02-01 11:22:32

by Andrej Gelenberg

[permalink] [raw]
Subject: Re: [Acpi4asus-user] ACPI device for ASUS EEEPC 1101HA not added

Hi,

you need to whitelist your eee pc for OSI(Linux) in drivers/acpi/blacklist.c
like this:

+ /*
+ * On newer Eeepc, the interface used by eeepc-laptop (ASUS010)
+ * is disabled without _OSI(Linux)
+ */
+ {
+ .callback = dmi_enable_osi_linux,
+ .ident = "Asus Eeepc-1101HA",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."),
+ DMI_MATCH(DMI_PRODUCT_NAME, "1101HA"),
+ },
+ },

Regards,
Andrej

Daniel Mack writes:

> On my new 1101HA Eeepc, the special function keys do not work. This is
> because the asus-laptop driver fails to match the ACPI device named
> "ASUS010". However, acpidump tells me a device with that name does
> actually exist - the (simplified) disassembly of the DSDT is below.
>
> It looks like the gigantic parser state machine fails to add that
> device for whatever reason. Any ideas how to fix that?
>
>
> Thanks,
> Daniel
>
>
> /*
> * Intel ACPI Component Architecture
> * AML Disassembler version 20090521
> */
> DefinitionBlock ("out/DSDT-0x3f660430-0.aml", "DSDT", 2, "A1359", "A1359000", 0x00000000)
> {
>
> [...]
>
> Scope (_SB)
> {
>
> [...]
>
> Device (PCI0)
> {
> Name (_HID, EisaId ("PNP0A08"))
> Name (_ADR, Zero)
>
> [...]
>
> Device (SBRG)
> {
>
> [...]
>
> Scope (\_SB)
> {
> Name (ATKP, Zero)
> Device (ATKD)
> {
> Name (_HID, "ASUS010")
> Name (_UID, 0x01010100)
>
> [...]
>
>
> The full version of the dump is here:
>
> http://caiaq.de/download/tmp/DSDT-0x3f660430-0.dsl
>
>
> ------------------------------------------------------------------------------
> The Planet: dedicated and managed hosting, cloud storage, colocation
> Stay online with enterprise data centers and the best network in the business
> Choose flexible plans and management services without long-term contracts
> Personal 24x7 support from experience hosting pros just a phone call away.
> http://p.sf.net/sfu/theplanet-com
> _______________________________________________
> Acpi4asus-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/acpi4asus-user


2010-02-01 12:52:02

by Daniel Mack

[permalink] [raw]
Subject: Re: [Acpi4asus-user] ACPI device for ASUS EEEPC 1101HA not added

On Mon, Feb 01, 2010 at 12:06:40PM +0100, [email protected] wrote:
> you need to whitelist your eee pc for OSI(Linux) in drivers/acpi/blacklist.c
> like this:
>
> + /*
> + * On newer Eeepc, the interface used by eeepc-laptop (ASUS010)
> + * is disabled without _OSI(Linux)
> + */
> + {
> + .callback = dmi_enable_osi_linux,
> + .ident = "Asus Eeepc-1101HA",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."),
> + DMI_MATCH(DMI_PRODUCT_NAME, "1101HA"),
> + },
> + },

Great, thanks. That worked. Is that already queued anywhere or do you
want me to send a proper patch?

Daniel


> Daniel Mack writes:
>
> >On my new 1101HA Eeepc, the special function keys do not work. This is
> >because the asus-laptop driver fails to match the ACPI device named
> >"ASUS010". However, acpidump tells me a device with that name does
> >actually exist - the (simplified) disassembly of the DSDT is below.
> >
> >It looks like the gigantic parser state machine fails to add that
> >device for whatever reason. Any ideas how to fix that?
> >
> >
> >Thanks,
> >Daniel
> >

2010-02-02 06:02:36

by Len Brown

[permalink] [raw]
Subject: Re: [Acpi4asus-user] ACPI device for ASUS EEEPC 1101HA not added

On Mon, 1 Feb 2010, [email protected] wrote:

> Hi,
>
> you need to whitelist your eee pc for OSI(Linux) in drivers/acpi/blacklist.c
> like this:
>
> + /*
> + * On newer Eeepc, the interface used by eeepc-laptop (ASUS010)
> + * is disabled without _OSI(Linux)
> + */
> + {
> + .callback = dmi_enable_osi_linux,
> + .ident = "Asus Eeepc-1101HA",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."),
> + DMI_MATCH(DMI_PRODUCT_NAME, "1101HA"),
> + },
> + },

Not necessarily the right fix. We have gone to a lot of trouble
to discourage BIOS vendors from depending on the ill-defined OSI(Linux),
so I hesitate to invoke it -- even for a workaround.

The problem at hand is that ASUS010 is not enabled for an OS
that claims compatibility with Win7 (MSOS() == MSW7) below.

Scope (\_SB)
{
Name (ATKP, Zero)
Device (ATKD)
{
Name (_HID, "ASUS010")
Name (_UID, 0x01010100)
Method (_STA, 0, NotSerialized)
{
If (LEqual (MSOS (), MSW7))
{
Return (Zero)
}
Else
{
Return (0x0F)
}

Return (Zero)
Return (0x0F)
}

(heh, see any indication of lack of quality in this code?:-)

MSOS() does this:

Scope (\)
{
Name (OSLX, 0x10)
Name (OSMS, 0x20)
Name (MS98, 0x21)
Name (MSME, 0x22)
Name (MS2K, 0x23)
Name (MSXP, 0x24)
Name (MSVT, 0x25)
Name (MSW7, 0x26)
Name (OSFG, Ones)
Method (MSOS, 0, NotSerialized)
{
If (LNotEqual (OSFG, Ones))
{
Return (OSFG)
}

Store (Zero, OSFG)
If (CondRefOf (_OSI, Local0))
{
If (_OSI ("Windows 2001"))
{
Store (MSXP, OSFG)
}

If (_OSI ("Windows 2001 SP1"))
{
Store (MSXP, OSFG)
}

If (_OSI ("Windows 2001 SP2"))
{
Store (MSXP, OSFG)
}

If (_OSI ("Windows 2006"))
{
Store (MSVT, OSFG)
}

If (_OSI ("Windows 2009"))
{
Store (MSW7, OSFG)
}

If (_OSI ("Linux"))
{
Store (OSLX, OSFG)
}

Return (OSFG)
}
Else


So I expect if you apply no patch, but boot with 'acpi_osi="!Windows 2009"'
then that would also work properly, as OSFG above will be set
to "MSVT" instead of "OSLX".

Looking through the DSDT, there are no references to OSLX or MSVT,
or MSXP, for that matter. However, there is an additional reference
to MSV7 in the temperature reading part of thermal zone TZ00,
that looks like some sort of OS-specific initialization, perhaps
a workaround. So also check that /proc/acpi/thermal_zone/*/temperature
still work before and after.

thanks,
-Len Brown, Intel Open Source Technology Center

2010-02-02 07:22:52

by Corentin Chary

[permalink] [raw]
Subject: Re: [Acpi4asus-user] ACPI device for ASUS EEEPC 1101HA not added

On Tue, Feb 2, 2010 at 7:02 AM, Len Brown <[email protected]> wrote:> On Mon, 1 Feb 2010, [email protected] wrote:>>> Hi,>>>> you need to whitelist your eee pc for OSI(Linux) in drivers/acpi/blacklist.c>> like this:>>>> + ? ? ? ?/*>> + ? ? ? ?* On newer Eeepc, the interface used by eeepc-laptop (ASUS010)>> + ? ? ? ?* is disabled without _OSI(Linux)>> + ? ? ? ?*/>> + ? ? ? {>> + ? ? ? .callback = dmi_enable_osi_linux,>> + ? ? ? .ident = "Asus Eeepc-1101HA",>> + ? ? ? .matches = {>> + ? ? ? ? ? ? ? ? ? ?DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."),>> + ? ? ? ? ? ? ? ? ? ?DMI_MATCH(DMI_PRODUCT_NAME, "1101HA"),>> + ? ? ? ? ? ? ? },>> + ? ? ? },>> Not necessarily the right fix. ?We have gone to a lot of trouble> to discourage BIOS vendors from depending on the ill-defined OSI(Linux),> so I hesitate to invoke it -- even for a workaround.>> The problem at hand is that ASUS010 is not enabled for an OS> that claims compatibility with Win7 (MSOS() == MSW7) below.>> ? ? ? ? ? ? ? ?Scope (\_SB)> ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ?Name (ATKP, Zero)> ? ? ? ? ? ? ? ? ? ?Device (ATKD)> ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ?Name (_HID, "ASUS010")> ? ? ? ? ? ? ? ? ? ? ? ?Name (_UID, 0x01010100)> ? ? ? ? ? ? ? ? ? ? ? ?Method (_STA, 0, NotSerialized)> ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ?If (LEqual (MSOS (), MSW7))> ? ? ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Return (Zero)> ? ? ? ? ? ? ? ? ? ? ? ? ? ?}> ? ? ? ? ? ? ? ? ? ? ? ? ? ?Else> ? ? ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Return (0x0F)> ? ? ? ? ? ? ? ? ? ? ? ? ? ?}>> ? ? ? ? ? ? ? ? ? ? ? ? ? ?Return (Zero)> ? ? ? ? ? ? ? ? ? ? ? ? ? ?Return (0x0F)> ? ? ? ? ? ? ? ? ? ? ? ?}>> (heh, see any indication of lack of quality in this code?:-)>> MSOS() does this:>> ? ? ? ? ? ? ? ? ? ?Scope (\)> ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ?Name (OSLX, 0x10)> ? ? ? ? ? ? ? ? ? ? ? ?Name (OSMS, 0x20)> ? ? ? ? ? ? ? ? ? ? ? ?Name (MS98, 0x21)> ? ? ? ? ? ? ? ? ? ? ? ?Name (MSME, 0x22)> ? ? ? ? ? ? ? ? ? ? ? ?Name (MS2K, 0x23)> ? ? ? ? ? ? ? ? ? ? ? ?Name (MSXP, 0x24)> ? ? ? ? ? ? ? ? ? ? ? ?Name (MSVT, 0x25)> ? ? ? ? ? ? ? ? ? ? ? ?Name (MSW7, 0x26)> ? ? ? ? ? ? ? ? ? ? ? ?Name (OSFG, Ones)> ? ? ? ? ? ? ? ? ? ? ? ?Method (MSOS, 0, NotSerialized)> ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ?If (LNotEqual (OSFG, Ones))> ? ? ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Return (OSFG)> ? ? ? ? ? ? ? ? ? ? ? ? ? ?}>> ? ? ? ? ? ? ? ? ? ? ? ? ? ?Store (Zero, OSFG)> ? ? ? ? ? ? ? ? ? ? ? ? ? ?If (CondRefOf (_OSI, Local0))> ? ? ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?If (_OSI ("Windows 2001"))> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Store (MSXP, OSFG)> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?If (_OSI ("Windows 2001 SP1"))> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Store (MSXP, OSFG)> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?If (_OSI ("Windows 2001 SP2"))> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Store (MSXP, OSFG)> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?If (_OSI ("Windows 2006"))> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Store (MSVT, OSFG)> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?If (_OSI ("Windows 2009"))> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Store (MSW7, OSFG)> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?If (_OSI ("Linux"))> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Store (OSLX, OSFG)> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Return (OSFG)> ? ? ? ? ? ? ? ? ? ? ? ? ? ?}> ? ? ? ? ? ? ? ? ? ? ? ? ? ?Else>>> So I expect if you apply no patch, but boot with 'acpi_osi="!Windows 2009"'> then that would also work properly, as OSFG above will be set> to "MSVT" instead of "OSLX".>> Looking through the DSDT, there are no references to OSLX or MSVT,> or MSXP, for that matter. ?However, there is an additional reference> to MSV7 in the temperature reading part of thermal zone TZ00,> that looks like some sort of OS-specific initialization, perhaps> a workaround. ?So also check that /proc/acpi/thermal_zone/*/temperature> still work before and after.>> thanks,> -Len Brown, Intel Open Source Technology Center>
This kind of things is present on all newer eeepc.I tried to contact asus about that, without real success and it islikely that the xandros distribributionshipped with some eeepc include an acpi blacklisiting patch.
The thing is that on win7 ASUS010 is disabled, but an equivalent wmiinterface is enable, and it couldbe possible to write a driver for it. Now, someone need to write it,or send me a free 1005HA so I can do it :).
If nothing is done for 2.6.34, we may need to envisage some blacklisting :/.Thanks-- Corentin Charyhttp://xf.iksaif.net????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?

2010-02-02 15:12:49

by Matthew Garrett

[permalink] [raw]
Subject: Re: [Acpi4asus-user] ACPI device for ASUS EEEPC 1101HA not added

The correct solution is to implement an asus-wmi driver. The interface
looks pretty much identical to the existing one, it's just indirected
throguh WMI.

--
Matthew Garrett | [email protected]