ACPI: use PNPID:instance_no as bus_id of ACPI device
authorZhang Rui <rui.zhang@intel.com>
Fri, 8 Dec 2006 09:23:43 +0000 (17:23 +0800)
committerLen Brown <len.brown@intel.com>
Thu, 21 Dec 2006 08:05:51 +0000 (03:05 -0500)
commite49bd2dd5a503bb94fe2f2af45422b610940b75d
tree9ae6510a91f8b43197e32f08b328fa142e594b26
parentae8433324be16673c75951986dcf85f29c090557
ACPI: use PNPID:instance_no as bus_id of ACPI device

Previously we used the device name in the DSDT, but would
crash upon encountering a duplicate. Also, exposing the
DSDT device name to the user in a patch isn't a good idea,
because it is arbitrary.

After some discussion, we finally decided to use
"PNPID:instance_no" as the bus_id of ACPI devices.

Two attributes for each device are added at the same time,
the full pathname in ACPI namespace and hardware_id if it has.

NOTE: acpi_bus_id_list is used to keep the information of PNPID
and instance number of the given PNPID. Loop the
acpi_bus_id_list to find the instance_no of the same PNPID
when register a device. If failed, i.e. we don't have a
node with this PNPID, allocate one and link it to this list.

NOTE: Now I don't take the memory free work in charge.
If necessary, I can add a reference count in
struct acpi_device_bus_id, and check the reference and
when unregister a device, i.e. memory is freed when
the reference count of a given PNPID is 0.

Signed-off-by: Li Shaohua <shaohua.li@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/scan.c