aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorBjorn Helgaas <bjorn.helgaas@hp.com>2009-06-18 16:47:02 -0400
committerLen Brown <len.brown@intel.com>2009-06-20 00:01:53 -0400
commitc1aec8341627dad5d63cc24aa6746dc077f5b706 (patch)
treef408c024c60a7d108e99f12a761b420a2bcc0c34 /drivers/acpi
parentcaf420c68afe01acd7c458ce40b85b3db5330ff5 (diff)
ACPI: pci_root: simplify list traversals
Using list_for_each_entry() makes traversing the root list easier. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Reviewed-by: Alex Chiang <achiang@hp.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/pci_root.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
index 7984e00540fa..4fb747205418 100644
--- a/drivers/acpi/pci_root.c
+++ b/drivers/acpi/pci_root.c
@@ -82,7 +82,7 @@ static DEFINE_MUTEX(osc_lock);
82int acpi_pci_register_driver(struct acpi_pci_driver *driver) 82int acpi_pci_register_driver(struct acpi_pci_driver *driver)
83{ 83{
84 int n = 0; 84 int n = 0;
85 struct list_head *entry; 85 struct acpi_pci_root *root;
86 86
87 struct acpi_pci_driver **pptr = &sub_driver; 87 struct acpi_pci_driver **pptr = &sub_driver;
88 while (*pptr) 88 while (*pptr)
@@ -92,9 +92,7 @@ int acpi_pci_register_driver(struct acpi_pci_driver *driver)
92 if (!driver->add) 92 if (!driver->add)
93 return 0; 93 return 0;
94 94
95 list_for_each(entry, &acpi_pci_roots) { 95 list_for_each_entry(root, &acpi_pci_roots, node) {
96 struct acpi_pci_root *root;
97 root = list_entry(entry, struct acpi_pci_root, node);
98 driver->add(root->device->handle); 96 driver->add(root->device->handle);
99 n++; 97 n++;
100 } 98 }
@@ -106,7 +104,7 @@ EXPORT_SYMBOL(acpi_pci_register_driver);
106 104
107void acpi_pci_unregister_driver(struct acpi_pci_driver *driver) 105void acpi_pci_unregister_driver(struct acpi_pci_driver *driver)
108{ 106{
109 struct list_head *entry; 107 struct acpi_pci_root *root;
110 108
111 struct acpi_pci_driver **pptr = &sub_driver; 109 struct acpi_pci_driver **pptr = &sub_driver;
112 while (*pptr) { 110 while (*pptr) {
@@ -120,23 +118,19 @@ void acpi_pci_unregister_driver(struct acpi_pci_driver *driver)
120 if (!driver->remove) 118 if (!driver->remove)
121 return; 119 return;
122 120
123 list_for_each(entry, &acpi_pci_roots) { 121 list_for_each_entry(root, &acpi_pci_roots, node)
124 struct acpi_pci_root *root;
125 root = list_entry(entry, struct acpi_pci_root, node);
126 driver->remove(root->device->handle); 122 driver->remove(root->device->handle);
127 }
128} 123}
129 124
130EXPORT_SYMBOL(acpi_pci_unregister_driver); 125EXPORT_SYMBOL(acpi_pci_unregister_driver);
131 126
132acpi_handle acpi_get_pci_rootbridge_handle(unsigned int seg, unsigned int bus) 127acpi_handle acpi_get_pci_rootbridge_handle(unsigned int seg, unsigned int bus)
133{ 128{
134 struct acpi_pci_root *tmp; 129 struct acpi_pci_root *root;
135 130
136 list_for_each_entry(tmp, &acpi_pci_roots, node) { 131 list_for_each_entry(root, &acpi_pci_roots, node)
137 if ((tmp->id.segment == (u16) seg) && (tmp->id.bus == (u16) bus)) 132 if ((root->id.segment == (u16) seg) && (root->id.bus == (u16) bus))
138 return tmp->device->handle; 133 return root->device->handle;
139 }
140 return NULL; 134 return NULL;
141} 135}
142 136
@@ -301,6 +295,7 @@ static acpi_status acpi_pci_osc_support(struct acpi_pci_root *root, u32 flags)
301static struct acpi_pci_root *acpi_pci_find_root(acpi_handle handle) 295static struct acpi_pci_root *acpi_pci_find_root(acpi_handle handle)
302{ 296{
303 struct acpi_pci_root *root; 297 struct acpi_pci_root *root;
298
304 list_for_each_entry(root, &acpi_pci_roots, node) { 299 list_for_each_entry(root, &acpi_pci_roots, node) {
305 if (root->device->handle == handle) 300 if (root->device->handle == handle)
306 return root; 301 return root;