]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/pci/hotplug/pciehp.h
pciehp: cleanup slot list
[linux-2.6-omap-h63xx.git] / drivers / pci / hotplug / pciehp.h
index 6a2f427768ca9cf6b081797d5b8025a5e1501d51..d07ac45f12723a226dcd7b7f3c3dfbe3329a8260 100644 (file)
@@ -52,7 +52,6 @@ extern int pciehp_force;
 
 #define SLOT_NAME_SIZE 10
 struct slot {
-       struct slot *next;
        u8 bus;
        u8 device;
        u32 number;
@@ -99,6 +98,7 @@ struct controller {
        int slot_num_inc;               /* 1 or -1 */
        struct pci_dev *pci_dev;
        struct pci_bus *pci_bus;
+       struct list_head slot_list;
        struct event_info event_queue[MAX_EVENTS];
        struct slot *slot;
        struct hpc_ops *hpc_ops;
@@ -198,20 +198,15 @@ extern struct controller *pciehp_ctrl_list;
 
 static inline struct slot *pciehp_find_slot(struct controller *ctrl, u8 device)
 {
-       struct slot *p_slot, *tmp_slot = NULL;
-
-       p_slot = ctrl->slot;
+       struct slot *slot;
 
-       while (p_slot && (p_slot->device != device)) {
-               tmp_slot = p_slot;
-               p_slot = p_slot->next;
-       }
-       if (p_slot == NULL) {
-               err("ERROR: pciehp_find_slot device=0x%x\n", device);
-               p_slot = tmp_slot;
+       list_for_each_entry(slot, &ctrl->slot_list, slot_list) {
+               if (slot->device == device)
+                       return slot;
        }
 
-       return p_slot;
+       err("%s: slot (device=0x%x) not found\n", __FUNCTION__, device);
+       return NULL;
 }
 
 static inline int wait_for_ctrl_irq(struct controller *ctrl)