All of lore.kernel.org
 help / color / mirror / Atom feed
From: Holger Schurig <hs4233@mail.mn-solutions.de>
To: linux-acpi@vger.kernel.org
Subject: Button implementation question
Date: Thu, 17 Aug 2006 16:23:08 +0200	[thread overview]
Message-ID: <ec1u4c$342$1@sea.gmane.org> (raw)

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]



                 reply	other threads:[~2006-08-17 15:25 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='ec1u4c$342$1@sea.gmane.org' \
    --to=hs4233@mail.mn-solutions.de \
    --cc=linux-acpi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.