All of lore.kernel.org
 help / color / mirror / Atom feed
* Button implementation question
@ 2006-08-17 14:23 Holger Schurig
  0 siblings, 0 replies; only message in thread
From: Holger Schurig @ 2006-08-17 14:23 UTC (permalink / raw)
  To: linux-acpi

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]



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-08-17 15:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-17 14:23 Button implementation question Holger Schurig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.