public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [RFC] filling in ACPI files in sysfs
@ 2004-04-08  8:14 Paul Ionescu
       [not found] ` <20040408081455.52935.qmail-BuYeCebq3BaA/QwVtaZbd3CJp6faPEW9@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Paul Ionescu @ 2004-04-08  8:14 UTC (permalink / raw)
  To: alex.williamson-VXdhtT5mjnY; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=us-ascii, Size: 1424 bytes --]

Hi Alex,

I attached a file containing what I have in
/sys/firmware/acpi with your second patch.
I also tried the docking station with:
echo 1  >
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/DOCK/_DCK

and 

echo 0 >
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/DOCK/_DCK

with this commands I semi turned on/off the doking
station. I say ´semi´ because is not fully on/off.
When I turn it on (echo 1 > _DCK), the docking station
fan starts, and the LED indicating the usage of
docking station turns on, but I don´t see the new
devices from the docking station (2 new usb, 2 new
cardbus, 1 new ide, 1 new pci etc). I suspect this is
not your patch fault, but the way ACPI handles this
event. It should add the new description tables of
ACPI devices on the fly not only at boot time. When it
boots without docking station ACPI has no way to know
what will be in my docking station, so it has to add
new devices after inserting and activating the
docking.
Now, when I turn it off (with echo 0 > _DCK), the fan
stops, but the ACTIVE led is still on, and the
electromechanical eject was not activated.

Is this the way I was supposed to test docking ?

I´ll get back with more testing feedback.
If you want me to do specific tests, just let me know,
I´ll be happy to help.







__________________________________
Do you Yahoo!?
Yahoo! Small Business $15K Web Design Giveaway 
http://promotions.yahoo.com/design_giveaway/

[-- Attachment #2: acpi --]
[-- Type: application/octet-stream, Size: 12264 bytes --]

/sys/firmware/acpi/namespace/ACPI/
/sys/firmware/acpi/namespace/ACPI/THM0
/sys/firmware/acpi/namespace/ACPI/_SB
/sys/firmware/acpi/namespace/ACPI/_SB/SWAP
/sys/firmware/acpi/namespace/ACPI/_SB/SWAP/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/SWAP/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/NEST
/sys/firmware/acpi/namespace/ACPI/_SB/NEST/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/NEST/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/NEST/_EJ0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AC97
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AC97/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB2
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB2/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB1
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB1/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/URTH
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/URTH/UNST
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/URTH/UNST/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/URTH/UNST/_EJD
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/URTH/UNST/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/URTH/UPDK
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/URTH/UPDK/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/URTH/UPDK/_EJD
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/URTH/UPDK/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/URTH/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/USB0/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/SCND
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/SCND/MSTR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/SCND/MSTR/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/SCND/MSTR/_EJ0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/SCND/MSTR/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/SCND/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/PRIM
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/PRIM/MSTR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/PRIM/MSTR/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/PRIM/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/IDE0/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/DOCK
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/DOCK/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/DOCK/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/DOCK/_PRT
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/DOCK/_EJ0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/DOCK/_DCK
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/DOCK/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/CBS1
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/CBS1/_SUN
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/CBS1/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/CBS0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/CBS0/_SUN
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/CBS0/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/_PRT
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/PCI1/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/DVI0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/DVI0/_DSS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/DVI0/_DGS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/DVI0/_DCS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/DVI0/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/TV0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/TV0/_DSS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/TV0/_DGS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/TV0/_DCS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/TV0/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/CRT0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/CRT0/_DSS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/CRT0/_DGS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/CRT0/_DCS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/CRT0/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/LCD0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/LCD0/_DSS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/LCD0/_DGS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/LCD0/_DCS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/LCD0/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/_DOD
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/_DOS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/VID/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/_PRT
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/AGP/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/HKEY
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/HKEY/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/HKEY/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/AC
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/AC/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/AC/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/AC/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/BAT1
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/BAT1/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/BAT1/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/BAT1/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/BAT1/_EJ0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/BAT0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/BAT0/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/BAT0/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/BAT0/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/PUBS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/PUBS/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/EC/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FIR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FIR/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FIR/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FIR/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FIR/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FIR/_CID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/ECP
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/ECP/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/ECP/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/ECP/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/ECP/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/LPT
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/LPT/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/LPT/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/LPT/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/LPT/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/UART
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/UART/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/UART/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/UART/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/UART/_EJD
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/UART/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FDC
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FDC/FDD0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FDC/FDD0/_EJD
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FDC/FDD0/_EJ0
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FDC/FDD0/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FDC/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FDC/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FDC/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FDC/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/MOU
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/MOU/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/MOU/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/MOU/_CID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/KBD
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/KBD/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/KBD/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/RTC
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/RTC/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/RTC/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FPU
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FPU/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/FPU/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/SPKR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/SPKR/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/SPKR/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/DMAC
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/DMAC/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/DMAC/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/TIMR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/TIMR/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/TIMR/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/PIC
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/PIC/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/PIC/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/SIO
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/SIO/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/SIO/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/SIO/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/LPC/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/_PRT
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/_BBN
/sys/firmware/acpi/namespace/ACPI/_SB/PCI0/_ADR
/sys/firmware/acpi/namespace/ACPI/_SB/SLPB
/sys/firmware/acpi/namespace/ACPI/_SB/SLPB/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/LID
/sys/firmware/acpi/namespace/ACPI/_SB/LID/_LID
/sys/firmware/acpi/namespace/ACPI/_SB/LID/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/MEM
/sys/firmware/acpi/namespace/ACPI/_SB/MEM/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/MEM/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKH
/sys/firmware/acpi/namespace/ACPI/_SB/LNKH/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKH/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/LNKH/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKH/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKH/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKG
/sys/firmware/acpi/namespace/ACPI/_SB/LNKG/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKG/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/LNKG/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKG/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKG/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKF
/sys/firmware/acpi/namespace/ACPI/_SB/LNKF/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKF/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/LNKF/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKF/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKF/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKE
/sys/firmware/acpi/namespace/ACPI/_SB/LNKE/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKE/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/LNKE/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKE/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKE/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKD
/sys/firmware/acpi/namespace/ACPI/_SB/LNKD/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKD/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/LNKD/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKD/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKD/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKC
/sys/firmware/acpi/namespace/ACPI/_SB/LNKC/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKC/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/LNKC/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKC/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKC/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKB
/sys/firmware/acpi/namespace/ACPI/_SB/LNKB/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKB/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/LNKB/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKB/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKB/_CRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKA
/sys/firmware/acpi/namespace/ACPI/_SB/LNKA/_UID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKA/_STA
/sys/firmware/acpi/namespace/ACPI/_SB/LNKA/_PRS
/sys/firmware/acpi/namespace/ACPI/_SB/LNKA/_HID
/sys/firmware/acpi/namespace/ACPI/_SB/LNKA/_CRS
/sys/firmware/acpi/namespace/ACPI/CPU
/sys/firmware/acpi/namespace/ACPI/PWRF

^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [RFC] filling in ACPI files in sysfs
@ 2004-04-07 21:36 Paul Ionescu
       [not found] ` <1081373781.23176.30.camel-LjAuIDrFwz0@public.gmane.org>
  0 siblings, 1 reply; 13+ messages in thread
From: Paul Ionescu @ 2004-04-07 21:36 UTC (permalink / raw)
  To: acpi, alex.williamson-VXdhtT5mjnY

Hi Alex,

I patch-ed a 2.6.5 kernel, and boot-ed an IBM T30 Thinkpad Laptop.
It looks nice at first sight, and now I want _Qxx methods in /EC to play
with :)

What I found strange is the following behaviour:
If I boot with my second battery inserted, I have the corresponding
entries for BAT1 in /proc/acpi/battery and /sys/.../EC/BAT1
If I boot without my second battery inserted, and I insert it later on,
I don't have the corresponding BAT1 directory for it in /proc/acpi and
/sys/.../EC/.
And this is true for other acpi devices too.
I think that the problem is that it does not (yet) update the list of
active devices in real time, but uses the list with devices detected at
boot time.

Anyway, this is a good start, and I am waiting for more patches to test.

Thanks,
Paul


>   Seems like it's about time the ACPI sysfs namespace started >doing
>more than looking pretty.  Here's a stab at adding in some basic
>functionality.  I'd like to get some feedback before I start filling in
>the more complicated features.  This has been lightly tested on a
>sampling of HP ia64 boxes.  Does this seem like a reasonable start? 
>Comments and reports from other platforms welcome.  Thanks,




-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click

^ permalink raw reply	[flat|nested] 13+ messages in thread
* [RFC] filling in ACPI files in sysfs
@ 2004-04-06 15:56 Alex Williamson
  0 siblings, 0 replies; 13+ messages in thread
From: Alex Williamson @ 2004-04-06 15:56 UTC (permalink / raw)
  To: linux-kernel, acpi-devel


   Seems like it's about time the ACPI sysfs namespace started doing
more than looking pretty.  Here's a stab at adding in some basic
functionality.  I'd like to get some feedback before I start filling in
the more complicated features.  This has been lightly tested on a
sampling of HP ia64 boxes.  Does this seem like a reasonable start? 
Comments and reports from other platforms welcome.  Thanks,

	Alex

-- 
Alex Williamson                             HP Linux & Open Source Lab

===== drivers/acpi/scan.c 1.22 vs edited =====
--- 1.22/drivers/acpi/scan.c	Tue Feb  3 22:29:19 2004
+++ edited/drivers/acpi/scan.c	Tue Apr  6 09:15:29 2004
@@ -7,6 +7,7 @@
 
 #include <acpi/acpi_drivers.h>
 #include <acpi/acinterp.h>	/* for acpi_ex_eisa_id_to_string() */
+#include <acpi/actypes.h>
 
 
 #define _COMPONENT		ACPI_BUS_COMPONENT
@@ -22,9 +23,184 @@
 #define ACPI_BUS_DRIVER_NAME		"ACPI Bus Driver"
 #define ACPI_BUS_DEVICE_NAME		"System Bus"
 
+#define METHOD_NAME__DDN		"_DDN"
+#define METHOD_NAME__SUN		"_SUN"
+#define METHOD_NAME__STR		"_STR"
+
 static LIST_HEAD(acpi_device_list);
 static spinlock_t acpi_device_lock = SPIN_LOCK_UNLOCKED;
 
+struct acpi_handle_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct acpi_device *, char *, char *);
+	ssize_t (*store)(struct acpi_device *, char *, const char *, size_t);
+};
+
+#define EISA_ID_TYPE (1<<0)
+#define UNICODE_TYPE (1<<1)
+
+static ssize_t
+parse_integer(char *buf, u32 value, unsigned int flags) {
+	if (flags & EISA_ID_TYPE) {
+		acpi_ex_eisa_id_to_string(value, buf);
+		buf[8] = '\n';
+		return 9;
+	}
+	return sprintf(buf, "%08x\n", value);
+}
+
+static ssize_t
+parse_string(char *buf, u32 length, char *pointer, unsigned int flags) {
+	snprintf(buf, length, "%s", pointer);
+	buf[length] = '\n';
+	return length + 1;
+}
+
+static ssize_t
+parse_buffer(char *buf, u32 length, u8 *pointer, unsigned int flags) {
+	ssize_t offset = 0;
+
+	if (flags & UNICODE_TYPE) {
+		for (; length > 0 ; length -= 2) {
+			sprintf(buf + offset, "%c", *pointer);
+			offset++;
+			pointer += 2;
+		}
+	} else {
+		for (; length > 0 ; length--) {
+			sprintf(buf + offset, "%02x", *pointer);
+			offset += 2;
+			pointer++;
+		}
+	}
+	sprintf(buf + offset++, "\n");
+	return offset;
+}
+
+static ssize_t parse_package(char *, union acpi_object *, unsigned int);
+
+static ssize_t
+parse_element(
+	char			*buf,
+	union acpi_object	*element,
+	unsigned int		flags)
+{
+
+	switch (element->type) {
+		case ACPI_TYPE_INTEGER:
+			return parse_integer(buf, element->integer.value, flags);
+		case ACPI_TYPE_STRING:
+			return parse_string(buf, element->string.length,
+			                    element->string.pointer, flags);
+		case ACPI_TYPE_BUFFER:
+			return parse_buffer(buf, element->buffer.length,
+			                   element->buffer.pointer, flags);
+		case ACPI_TYPE_PACKAGE:
+			return parse_package(buf, element, flags);
+		default:
+			return sprintf(buf, "Unknown Type: %d\n", element->type);
+	}
+}
+
+static ssize_t
+parse_package(char *buf, union acpi_object *element, unsigned int flags) {
+	int count = element->package.count;
+	ssize_t tmp, retval = 0;
+
+	element = element->package.elements;
+
+	for (; count > 0 ; count--, element++) {
+		tmp = parse_element(buf, element, flags);
+		buf += tmp;
+		retval += tmp;
+	}
+	return retval;
+}
+
+static ssize_t
+acpi_device_read_file (
+	struct acpi_device	*device,
+	char			*method,
+	char			*buf)
+{
+	acpi_status status;
+	union acpi_object *element;
+	struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
+	ssize_t retval = 0;
+	unsigned int flags = 0;
+
+	status = acpi_evaluate_object(device->handle, method, NULL, &buffer);
+	if (ACPI_FAILURE(status))
+		return -ENODEV;
+	
+	if (!strcmp(method, METHOD_NAME__HID)
+	    || !strcmp(method, METHOD_NAME__CID))
+		flags |= EISA_ID_TYPE;
+
+	if (!strcmp(method, METHOD_NAME__STR))
+		flags |= UNICODE_TYPE;
+
+	element = (union acpi_object *) buffer.pointer;
+	retval = parse_element(buf, element, flags);
+	acpi_os_free(element);
+	return retval;
+}
+
+#define acpi_handle_attr(method, show_func, store_func) \
+static struct acpi_handle_attribute acpi_handle_attr##method = { \
+	.attr = {.name = METHOD_NAME_##method, .mode = S_IFREG | S_IRUGO}, \
+	.show = show_func, \
+	.store = store_func, \
+};
+
+acpi_handle_attr(_ADR, acpi_device_read_file, NULL)
+acpi_handle_attr(_BBN, acpi_device_read_file, NULL)
+acpi_handle_attr(_CID, acpi_device_read_file, NULL)
+acpi_handle_attr(_DDN, acpi_device_read_file, NULL)
+acpi_handle_attr(_HID, acpi_device_read_file, NULL)
+acpi_handle_attr(_SEG, acpi_device_read_file, NULL)
+acpi_handle_attr(_STA, acpi_device_read_file, NULL)
+acpi_handle_attr(_STR, acpi_device_read_file, NULL)
+acpi_handle_attr(_SUN, acpi_device_read_file, NULL)
+acpi_handle_attr(_UID, acpi_device_read_file, NULL)
+
+typedef void acpi_device_sysfs_files(struct kobject *,
+                                     const struct attribute *);
+
+static void
+setup_sys_fs_files (
+	struct acpi_device *dev,
+	acpi_device_sysfs_files *func)
+{
+	acpi_handle tmp = NULL;
+
+	if (ACPI_SUCCESS(acpi_get_handle(dev->handle, METHOD_NAME__ADR, &tmp)))
+		(*(func))(&dev->kobj, &acpi_handle_attr_ADR.attr);
+	if (ACPI_SUCCESS(acpi_get_handle(dev->handle, METHOD_NAME__BBN, &tmp)))
+		(*(func))(&dev->kobj, &acpi_handle_attr_BBN.attr);
+	if (ACPI_SUCCESS(acpi_get_handle(dev->handle, METHOD_NAME__CID, &tmp)))
+		(*(func))(&dev->kobj, &acpi_handle_attr_CID.attr);
+	if (ACPI_SUCCESS(acpi_get_handle(dev->handle, METHOD_NAME__DDN, &tmp)))
+		(*(func))(&dev->kobj, &acpi_handle_attr_DDN.attr);
+	if (ACPI_SUCCESS(acpi_get_handle(dev->handle, METHOD_NAME__HID, &tmp)))
+		(*(func))(&dev->kobj, &acpi_handle_attr_HID.attr);
+	if (ACPI_SUCCESS(acpi_get_handle(dev->handle, METHOD_NAME__SEG, &tmp)))
+		(*(func))(&dev->kobj, &acpi_handle_attr_SEG.attr);
+	if (ACPI_SUCCESS(acpi_get_handle(dev->handle, METHOD_NAME__STA, &tmp)))
+		(*(func))(&dev->kobj, &acpi_handle_attr_STA.attr);
+	if (ACPI_SUCCESS(acpi_get_handle(dev->handle, METHOD_NAME__STR, &tmp)))
+		(*(func))(&dev->kobj, &acpi_handle_attr_STR.attr);
+	if (ACPI_SUCCESS(acpi_get_handle(dev->handle, METHOD_NAME__SUN, &tmp)))
+		(*(func))(&dev->kobj, &acpi_handle_attr_SUN.attr);
+	if (ACPI_SUCCESS(acpi_get_handle(dev->handle, METHOD_NAME__UID, &tmp)))
+		(*(func))(&dev->kobj, &acpi_handle_attr_UID.attr);
+}
+
+#define create_sysfs_files(dev) \
+	setup_sys_fs_files(dev, (acpi_device_sysfs_files *)&sysfs_create_file)
+#define remove_sysfs_files(dev) \
+	setup_sys_fs_files(dev, &sysfs_remove_file)
+
 static void acpi_device_release(struct kobject * kobj)
 {
 	struct acpi_device * dev = container_of(kobj,struct acpi_device,kobj);
@@ -33,7 +209,32 @@
 	kfree(dev);
 }
 
+#define to_acpi_device(n) container_of(n, struct acpi_device, kobj)
+#define to_handle_attr(n) container_of(n, struct acpi_handle_attribute, attr);
+
+static ssize_t acpi_device_attr_show(struct kobject *kobj,
+                struct attribute *attr, char *buf)
+{
+	struct acpi_device *device = to_acpi_device(kobj);
+	struct acpi_handle_attribute *attribute = to_handle_attr(attr);
+	return attribute->show ? attribute->show(device, attribute->attr.name, buf) : 0;
+}
+
+static ssize_t acpi_device_attr_store(struct kobject *kobj,
+                struct attribute *attr, const char *buf, size_t len)
+{
+	struct acpi_device *device = to_acpi_device(kobj);
+	struct acpi_handle_attribute *attribute = to_handle_attr(attr);
+	return attribute->store ? attribute->store(device, attribute->attr.name, buf, len) : 0;
+}
+
+static struct sysfs_ops acpi_device_sysfs_ops = {
+	.show = acpi_device_attr_show,
+	.store = acpi_device_attr_store,
+};
+
 static struct kobj_type ktype_acpi_ns = {
+	.sysfs_ops	= &acpi_device_sysfs_ops,
 	.release	= acpi_device_release,
 };
 
@@ -72,6 +273,7 @@
 	device->kobj.ktype = &ktype_acpi_ns;
 	device->kobj.kset = &acpi_namespace_kset;
 	kobject_add(&device->kobj);
+	create_sysfs_files(device);
 }
 
 static int
@@ -79,6 +281,7 @@
 	struct acpi_device	*device, 
 	int			type)
 {
+	remove_sysfs_files(device);
 	kobject_unregister(&device->kobj);
 	return 0;
 }
	

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2004-04-10 11:36 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-04-08  8:14 [RFC] filling in ACPI files in sysfs Paul Ionescu
     [not found] ` <20040408081455.52935.qmail-BuYeCebq3BaA/QwVtaZbd3CJp6faPEW9@public.gmane.org>
2004-04-08 14:36   ` Alex Williamson
  -- strict thread matches above, loose matches on Subject: below --
2004-04-07 21:36 Paul Ionescu
     [not found] ` <1081373781.23176.30.camel-LjAuIDrFwz0@public.gmane.org>
2004-04-07 22:13   ` Alex Williamson
     [not found]     ` <1081376023.2748.15.camel-Wmjt7DDUnIVxnVILBQAtiA@public.gmane.org>
2004-04-08  5:56       ` Paul Ionescu
2004-04-08 15:46       ` Paul Ionescu
     [not found]         ` <1081439217.23176.70.camel-LjAuIDrFwz0@public.gmane.org>
2004-04-08 16:41           ` Alex Williamson
2004-04-08 16:53       ` Paul Ionescu
2004-04-08 17:25       ` Matthew Wilcox
     [not found]         ` <20040408172548.GH18329-+pPCBgu9SkPzIGdyhVEDUDl5KyyQGfY2kSSpQ9I8OhVaa/9Udqfwiw@public.gmane.org>
2004-04-08 17:33           ` Alex Williamson
     [not found]             ` <1081536801.26073.120.camel@t40>
     [not found]               ` <1081537175.2694.11.camel@patsy.fc.hp.com>
     [not found]                 ` <1081537175.2694.11.camel-Wmjt7DDUnIVxnVILBQAtiA@public.gmane.org>
2004-04-10 10:03                   ` Paul Ionescu
     [not found]             ` <1081536489.23178.113.camel@t40>
     [not found]               ` <1081537087.2694.8.camel@patsy.fc.hp.com>
     [not found]                 ` <1081537087.2694.8.camel-Wmjt7DDUnIVxnVILBQAtiA@public.gmane.org>
2004-04-10 11:36                   ` Paul Ionescu
2004-04-06 15:56 Alex Williamson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox