diff options
Diffstat (limited to 'drivers/parisc/gsc.c')
| -rw-r--r-- | drivers/parisc/gsc.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/parisc/gsc.c b/drivers/parisc/gsc.c index af5e02526a18..16d40f95978d 100644 --- a/drivers/parisc/gsc.c +++ b/drivers/parisc/gsc.c | |||
| @@ -183,12 +183,20 @@ void gsc_asic_assign_irq(struct gsc_asic *asic, int local_irq, int *irqp) | |||
| 183 | *irqp = irq; | 183 | *irqp = irq; |
| 184 | } | 184 | } |
| 185 | 185 | ||
| 186 | static struct device *next_device(struct klist_iter *i) | ||
| 187 | { | ||
| 188 | struct klist_node * n = klist_next(i); | ||
| 189 | return n ? container_of(n, struct device, knode_parent) : NULL; | ||
| 190 | } | ||
| 191 | |||
| 186 | void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl, | 192 | void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl, |
| 187 | void (*choose_irq)(struct parisc_device *, void *)) | 193 | void (*choose_irq)(struct parisc_device *, void *)) |
| 188 | { | 194 | { |
| 189 | struct device *dev; | 195 | struct device *dev; |
| 196 | struct klist_iter i; | ||
| 190 | 197 | ||
| 191 | list_for_each_entry(dev, &parent->dev.children, node) { | 198 | klist_iter_init(&parent->dev.klist_children, &i); |
| 199 | while ((dev = next_device(&i))) { | ||
| 192 | struct parisc_device *padev = to_parisc_device(dev); | 200 | struct parisc_device *padev = to_parisc_device(dev); |
| 193 | 201 | ||
| 194 | /* work-around for 715/64 and others which have parent | 202 | /* work-around for 715/64 and others which have parent |
| @@ -197,6 +205,7 @@ void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl, | |||
| 197 | return gsc_fixup_irqs(padev, ctrl, choose_irq); | 205 | return gsc_fixup_irqs(padev, ctrl, choose_irq); |
| 198 | choose_irq(padev, ctrl); | 206 | choose_irq(padev, ctrl); |
| 199 | } | 207 | } |
| 208 | klist_iter_exit(&i); | ||
| 200 | } | 209 | } |
| 201 | 210 | ||
| 202 | int gsc_common_setup(struct parisc_device *parent, struct gsc_asic *gsc_asic) | 211 | int gsc_common_setup(struct parisc_device *parent, struct gsc_asic *gsc_asic) |
