Button implementation question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi !

I don't have much knowlegde about ACPI :-(

What I have is a device called "FuturePad PC" which has some four
keys at the bottom and one double key at the side. It also has a
button on the left side to switch it off, which works fine with
Linux' ACPI, acpid and /etc/acpi/events/powerbt

When I run Linux 2.6.16 (the Debian variety), and
press one of the keys, I get this error output:

ACPI Error (evregion-0303): No handler for Region [ASI2] (bebb42a4) [user_defined_region] [20060127]
ACPI Error (exfldio-0279): Region user_defined_region(81) has no handler [20060127]
ACPI Exception (dswexec-0458): AE_NOT_EXIST, While resolving operands for [AE_NOT_CONFIGURED] [20060127]
ACPI Error (psparse-0517): Method parse/execution failed [\_GPE._L2A] (Node bebaffe0), AE_NOT_EXIST
ACPI Exception (evgpe-0553): AE_NOT_EXIST, While evaluating method [_L2A] for GPE[ 0] [20060127]

Now I googled for "region 81" and "ASI2" and have some questions:


a) there is a driver for some "Atlas Wallmount Touchscreen" device from
Jaya Kumar which claims to implement something for region 81 (whatever that
is). I took the code from
http://marc.theaimsgroup.com/?l=linux-acpi&m=115391161115058&w=2,
compiled that and loaded it as a module. That worked so far. But it didn't
change anything, I still get those errors.

Is there any documented way on how to implement kernel support for
arbitrary ACPI buttons?



b) I used "iaml" to dissemble my dsdt. There I found a section like this:

    Scope (\_SB)
    {
        Device (ASIM)
        {
            Name (_HID, "ASIM0000")
            Name (_GPE, 0x00)
            Name (_UID, 0x00)
            OperationRegion (ASI2, 0x81, 0x00, 0x00010000)
            Field (ASI2, AnyAcc, Lock, Preserve)
            {
                BNE1,   8,
                BNE2,   8,
                BNE3,   8,
                BNE4,   8,
                BNEU,   8,
                BNED,   8,
                BNEL,   8,
                BNER,   8,
                BNEE,   8,
                BNES,   8,
                BNEC,   8,
                BNRB,   8,
                BNRC,   8,
                BNRD,   8,
                BNRE,   8,
                BNRF,   8,
                BNS1,   8,
                BNS2,   8,
                BNS3,   8,
                BNS4,   8,
                BNSU,   8,
                BNSD,   8,
                BNSL,   8,
                BNSR,   8,
                BNSE,   8,
                BNSS,   8,
                BNSC,   8,
                BSRB,   8,
                BSRC,   8,
                BSRD,   8,
                BSRE,   8,
                BSRF,   8,
                BNT1,   8,
                BNT2,   8,
                BNT3,   8,
                BNT4,   8,
                BNTU,   8,
                BNTD,   8,
                BNTL,   8,
                BNTR,   8,
                BNTE,   8,
                BNTS,   8,
                BNTC,   8,
                BRIT,   8,
                BTRC,   8,
                BTRD,   8,
            }

            Method (_STA, 0, NotSerialized)
            {
                Return (0x0F)
            }
        }
    }

Here I see both 'ASI2' and 0x81. In what relation is this code to any
possible kernel module that I could write?



c) one error messages referred to some "AE_NOT_EXIST, While evaluating
method [_L2A]" (hey, the "While" should be "while"!). Whatever an AE is.
Anyway, I found a method named _L2A in my dsdt.dsl:

        Method (_L2A, 0, NotSerialized)
        {
            Store (0x2A, DEBP)
            If (LEqual (\_SB.ASIM.BNS3, 0x00))
            {
                If (\_SB.PCI0.PM.EGS2)
                {
                    Store (0x00, \_SB.ASIM.BNSU)
                }
                Else
                {
                    Store (0x01, \_SB.ASIM.BNEU)
                    Store (0x01, \_SB.ASIM.BNSU)
                }
            }
            Else
            {
                If (LEqual (\_SB.PCI0.PM.EGS2, 0x00))
                {
                    BRTU ()
                    STBS ()
                }
            }
        }

Anything erraneous with that?


d) When I recompile my dsdt.dsl file, I get 3 errors and a bunch of
warnings (but not in the area of the above posted ASI2 stuff. Also,
the ACPI output in "dmesg" don't look erraneous to me. Shoud I still
seek help in this list to fix the DSDT?

ACPI: RSDP (v000 PTLTD                                 ) @ 0x000f7000
ACPI: RSDT (v001 PTLTD    RSDT   0x06040005  LTP 0x00000000) @ 0x0eff9583
ACPI: FADT (v001 TMETA  PDB.ALI  0x06040005 PTL  0x000f4240) @ 0x0effee77
ACPI: SSDT (v001 PTLTD  ACPIPST1 0x06040005  LTP 0x00000001) @ 0x0effeeeb
ACPI: DSDT (v001     TM PDBALI35 0x06040005 MSFT 0x0100000e) @ 0x00000000
ACPI: PM-Timer IO Port: 0x8008
...
ACPI: setting ELCR to 0200 (from 8ca0)
...
ACPI: Subsystem revision 20060127
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI Error (nsxfeval-0242): Handle is NULL and Pathname is relative [20060127]
ACPI: PCI Root Bridge [PCI0] (0000:00)
...
PCI quirk: region 8000-803f claimed by ali7101 ACPI
...
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 6 *7 10 11 12 15)
ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 6 7 10 11 12 15) *0, disabled.
ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 6 7 10 11 12 *15)
ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 7 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 7 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNK6] (IRQs 3 4 6 7 *10 11 12 15)
ACPI: PCI Interrupt Link [LNK7] (IRQs 3 4 7 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNK8] (IRQs 3 4 *5 7 15)
ACPI: PCI Interrupt Link [LNKU] (IRQs 3 4 7 10 *11)
ACPI: Power Resource [LRP0] (off)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: PnP ACPI: found 10 devices
PnPBIOS: Disabled by ACPI PNP
PCI: Using ACPI for IRQ routing
...
ACPI: PCI Interrupt Link [LNK1] enabled at IRQ 7
PCI: setting IRQ 7 as level-triggered
ACPI: PCI Interrupt 0000:00:0e.0[A] -> Link [LNK1] -> GSI 7 (level, low) -> IRQ 7
PCI: Setting latency timer of device 0000:00:0e.0 to 64
ACPI: PCI Interrupt 0000:00:0e.1[A] -> Link [LNK1] -> GSI 7 (level, low) -> IRQ 7
PCI: Setting latency timer of device 0000:00:0e.1 to 64
...
ACPI wakeup devices:

ACPI: (supports S0 S1 S3 S4 S5)
Freeing unused kernel memory: 144k freed
ACPI: Fan [LRA0] (off)
ACPI: CPU0 (power states: C1[C1] C2[C2])
ACPI: Processor [CPU0] (supports 8 throttling states)
ACPI: Thermal Zone [THRM] (60 C)
...
a bunch of lines like
ACPI: PCI Interrupt 0000:00:0e.1[A] -> Link [LNK1] -> GSI 7 (level, low) -> IRQ 7
for various built-in devices
...
ACPI: Battery Slot [BAT0] (battery present)
ACPI: Battery Slot [BAT1] (battery present)
ACPI: AC Adapter [AC] (on-line)
ACPI: Power Button (FF) [PWRF]
ACPI: Sleep Button (FF) [SLPF]
ACPI: Sleep Button (CM) [SLPB]


-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux