PERFORCE change 43464 for review
Takanori Watanabe
takawata at axe-inc.co.jp
Tue Dec 9 23:25:50 PST 2003
In message <20031209222111.B44633 at root.org>, Nate Lawson wrote:
>It may hurt to switch a device on twice, depending on how state is kept in
>the AML. In the ACPI case, there are several things that need to happen,
>noted below.
>
> Device (LID)
> Device (SLPB)
> Device (PCI0)
> Device (LPC)
> Device (SIO)
> Device (PIC) // i8259
> Device (TIMR)
> Device (KBD) // atkbd0
> Device (MOU) // psm0
> Device (FDC) // Call _PS0, fdc0
> Device (FDD0)
> Device (UART) // Call _PS0
> Device (LPT) // lpt0
> Device (ECP)
> Device (FIR) // ir port
> Device (EC) // Call _PS0, embedded controller
> Device (BAT0)
> Device (BAT1)
> Device (AC)
> Device (HKEY)
> Device (AGP) // agp0
> Device (VID)
> Device (LCD0)
> Device (CRT0)
> Device (TV0)
> Device (PCI1)
> Device (CBS0) // cardbus0
> Device (CBS1) // cardbus1
> Device (DOCK)
> Device (IDE1)
> Device (PRIM)
> Device (MSTR)
> Device (CBS2) // cardbus2
> Device (CBS3)
>
>So I guess my question is what to do about things like the AGP card or the
>cardbus slots, especially the ones that are accessible through a dock. I
>know about all these via acpi. However, we don't want to duplicate
>calling power methods through both cardbus and acpi, for instance. This
>tree doesn't exactly map to the devinfo tree:
>
>nexus0
> npx0
> acpi0
> acpi_ec0
> acpi_timer0
> acpi_cpu0
> acpi_tz0
> acpi_lid0
> acpi_button0
> pcib0
> pci0
> hostb0
> pcib1
> pci1
> pcib2
> pci2
> cbb0
> cardbus0
> pccard0
> cbb1
> cardbus1
> pccard1
> fxp0
> miibus0
> inphy0
> isab0
> isa0
> pmtimer0
> sc0
> vga0
> orm0
> atapci0
> ata0
> ata1
> ichsmb0
> smbus0
> pcm0
> acpi_sysresource0
> atpic0
> attimer0
> atdma0
> npxisa0
> attimer1
> atkbdc0
> atkbd0
> psm0
> psmcpnp0
> fdc0
> fd0
> sio0
> ppc0
> ppbus0
> plip0
> lpt0
> ppi0
> sio1
> acpi_cmbat0
> acpi_cmbat1
> acpi_acad0
>
>Anyway, I'd love to hear how the ACPI AML and devinfo trees map to the
>fact that we need to call _PSx on all devices, eject uses _EJx, etc.
As far as I know, All PCI devices know ACPI handle, through the ACPI
namespace itself is maped into flat structure.
This is my 'devinfo -v' output, with the kernel from my perforce tree
(//depot/user/takawata/workplace/...) which implement pnpinfo functions.
nexus0
legacy0
npx0
acpi0
acpi_ec0 pnpinfo _HID=PNP0C09 _UID=0 at path=\_SB_.PCI0.LPC_.EC__
acpi_timer0 pnpinfo Unknown at magic=unknown
acpi_cpu0 pnpinfo _HID=UNKNOWN _UID=0 at path=\_PR_.CPU_
acpi_tz0 pnpinfo _HID=UNKNOWN _UID=0 at path=\_TZ_.THM0
unknown pnpinfo _HID=PNP0C0F _UID=1 at path=\_SB_.LNKA
unknown pnpinfo _HID=PNP0C0F _UID=2 at path=\_SB_.LNKB
unknown pnpinfo _HID=PNP0C0F _UID=3 at path=\_SB_.LNKC
unknown pnpinfo _HID=PNP0C0F _UID=4 at path=\_SB_.LNKD
unknown pnpinfo _HID=PNP0C0F _UID=5 at path=\_SB_.LNKE
unknown pnpinfo _HID=PNP0C0F _UID=6 at path=\_SB_.LNKF
unknown pnpinfo _HID=PNP0C0F _UID=7 at path=\_SB_.LNKG
unknown pnpinfo _HID=PNP0C0F _UID=8 at path=\_SB_.LNKH
unknown pnpinfo _HID=PNP0C01 _UID=0 at path=\_SB_.MEM_
acpi_lid0 pnpinfo _HID=PNP0C0D _UID=0 at path=\_SB_.LID_
acpi_button0 pnpinfo _HID=PNP0C0E _UID=0 at path=\_SB_.SLPB
pcib0 pnpinfo _HID=PNP0A03 _UID=0 at path=\_SB_.PCI0
pci0
agp0 pnpinfo vendor=0x8086 device=0x3340 subvendor=0x1014 subdevice=0x0529 class=0x060000 at slot=0 function=0
pcib1 pnpinfo vendor=0x8086 device=0x3341 subvendor=0x0000 subdevice=0x0000 class=0x060400 at slot=1 function=0
pci1
unknown pnpinfo vendor=0x1002 device=0x4c59 subvendor=0x1014 subdevice=0x052f class=0x030000 at slot=0 function=0
unknown pnpinfo vendor=0x8086 device=0x24c2 subvendor=0x1014 subdevice=0x052d class=0x0c0300 at slot=29 function=0
unknown pnpinfo vendor=0x8086 device=0x24c4 subvendor=0x1014 subdevice=0x052d class=0x0c0300 at slot=29 function=1
unknown pnpinfo vendor=0x8086 device=0x24c7 subvendor=0x1014 subdevice=0x052d class=0x0c0300 at slot=29 function=2
unknown pnpinfo vendor=0x8086 device=0x24cd subvendor=0x1014 subdevice=0x052e class=0x0c0320 at slot=29 function=7
pcib2 pnpinfo vendor=0x8086 device=0x2448 subvendor=0x0000 subdevice=0x0000 class=0x060400 at slot=30 function=0
pci2
unknown pnpinfo vendor=0x1180 device=0x0476 subvendor=0x1014 subdevice=0x0532 class=0x060700 at slot=0 function=0
unknown pnpinfo vendor=0x1180 device=0x0476 subvendor=0x1014 subdevice=0x0532 class=0x060700 at slot=0 function=1
unknown pnpinfo vendor=0x1180 device=0x0552 subvendor=0x1014 subdevice=0x0533 class=0x0c0010 at slot=0 function=2
em0 pnpinfo vendor=0x8086 device=0x101e subvendor=0x1014 subdevice=0x0549 class=0x020000 at slot=1 function=0
unknown pnpinfo vendor=0x168c device=0x0012 subvendor=0x17ab subdevice=0x8310 class=0x020000 at slot=2 function=0
isab0 pnpinfo vendor=0x8086 device=0x24cc subvendor=0x0000 subdevice=0x0000 class=0x060100 at slot=31 function=0
isa0
sc0
orm0
pmtimer0
vga0
atapci0 pnpinfo vendor=0x8086 device=0x24ca subvendor=0x1014 subdevice=0x052d class=0x01018a at slot=31 function=1
ata0
ata1
unknown pnpinfo vendor=0x8086 device=0x24c3 subvendor=0x1014 subdevice=0x052d class=0x0c0500 at slot=31 function=3
unknown pnpinfo vendor=0x8086 device=0x24c5 subvendor=0x1014 subdevice=0x0534 class=0x040100 at slot=31 function=5
unknown pnpinfo vendor=0x8086 device=0x24c6 subvendor=0x1014 subdevice=0x0525 class=0x070300 at slot=31 function=6
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.LPC_
acpi_sysresource0 pnpinfo _HID=PNP0C02 _UID=0 at path=\_SB_.PCI0.LPC_.SIO_
atpic0 pnpinfo _HID=PNP0000 _UID=0 at path=\_SB_.PCI0.LPC_.PIC_
attimer0 pnpinfo _HID=PNP0100 _UID=0 at path=\_SB_.PCI0.LPC_.TIMR
atdma0 pnpinfo _HID=PNP0200 _UID=0 at path=\_SB_.PCI0.LPC_.DMAC
unknown pnpinfo _HID=PNP0800 _UID=0 at path=\_SB_.PCI0.LPC_.SPKR
npxisa0 pnpinfo _HID=PNP0C04 _UID=0 at path=\_SB_.PCI0.LPC_.FPU_
attimer1 pnpinfo _HID=PNP0B00 _UID=0 at path=\_SB_.PCI0.LPC_.RTC_
atkbdc0 pnpinfo _HID=PNP0303 _UID=0 at path=\_SB_.PCI0.LPC_.KBD_
atkbd0
psm0
psmcpnp0 pnpinfo _HID=IBM3780 _UID=0 at path=\_SB_.PCI0.LPC_.MOU_
unknown pnpinfo _HID=PNP0700 _UID=0 at path=\_SB_.PCI0.LPC_.FDC_
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.LPC_.FDC_.FDD0
sio0 pnpinfo _HID=PNP0501 _UID=0 at path=\_SB_.PCI0.LPC_.UART
ppc0 pnpinfo _HID=PNP0400 _UID=0 at path=\_SB_.PCI0.LPC_.LPT_
ppbus0
plip0
lpt0
ppi0
unknown pnpinfo _HID=PNP0401 _UID=0 at path=\_SB_.PCI0.LPC_.ECP_
sio1 pnpinfo _HID=IBM0071 _UID=0 at path=\_SB_.PCI0.LPC_.FIR_
unknown pnpinfo _HID=PNP0C09 _UID=0 at path=\_SB_.PCI0.LPC_.EC__
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.LPC_.EC__.PUBS
acpi_cmbat0 pnpinfo _HID=PNP0C0A _UID=0 at path=\_SB_.PCI0.LPC_.EC__.BAT0
unknown pnpinfo _HID=PNP0C0A _UID=2 at path=\_SB_.PCI0.LPC_.EC__.BAT1
acpi_cmbat1 pnpinfo _HID=PNP0C0A _UID=1 at path=\_SB_.PCI0.LPC_.EC__.BAT2
acpi_acad0 pnpinfo _HID=ACPI0003 _UID=0 at path=\_SB_.PCI0.LPC_.EC__.AC__
unknown pnpinfo _HID=IBM0068 _UID=0 at path=\_SB_.PCI0.LPC_.EC__.HKEY
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.AGP_
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.AGP_.VID_
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.AGP_.VID_.LCD0
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.AGP_.VID_.CRT0
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.PCI1
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.PCI1.CBS0
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.PCI1.CBS1
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.PCI1.DOCK
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.PCI1.DOCK.IDE1
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.PCI1.DOCK.IDE1.PRIM
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.PCI1.DOCK.IDE1.PRIM.MSTR
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.PCI1.DOCK.CBS2
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.PCI1.DOCK.CBS3
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.IDE0
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.IDE0.PRIM
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.IDE0.PRIM.MSTR
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.IDE0.SCND
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.IDE0.SCND.MSTR
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.USB0
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.USB0.URTH
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.USB0.URTH.UNST
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.USB1
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.USB2
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.USB7
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.USB7.URTH
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.USB7.URTH.UPDK
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.USB7.URTH.UNST
unknown pnpinfo _HID=UNKNOWN _UID=0 at path=\_SB_.PCI0.AC9M
unknown pnpinfo _HID=IBM0079 _UID=0 at path=\_SB_.GDCK
unknown pnpinfo _HID=IBM006A _UID=0 at path=\_SB_.NEST
unknown pnpinfo _HID=IBM0069 _UID=0 at path=\_SB_.SWAP
Now, ACPI namespace object can hold OS-specified data with
AcpiAttachData(); So, we may attach device_t object to ACPI object and
PCI devices in ACPI namespace is only attaced to PCI, not under acpi.
like...
ACPI attach child with 1 depth
Found PCI bus on ACPI
PCI device found
Search ACPI handle->no
PCI device found
Search ACPI handle->yes
Attach device_t in namespace.
....
ISAB found..
attach acpi version of ISA bus.
attach ISA devices....
End.
ACPI attach child with all tree.
Attach all stray objects.
End
More information about the p4-projects
mailing list