Date: Wed, 10 Dec 2003 16:25:34 +0900 From: Takanori Watanabe <takawata@axe-inc.co.jp> To: Nate Lawson <nate@root.org> Cc: imp@bsdimp.com Subject: Re: PERFORCE change 43464 for review Message-ID: <200312100725.QAA21650@axe-inc.co.jp> In-Reply-To: Your message of "Tue, 09 Dec 2003 22:31:30 PST." <20031209222111.B44633@root.org>
index | next in thread | previous in thread | raw e-mail
In message <20031209222111.B44633@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
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200312100725.QAA21650>
