diff options
33 files changed, 100 insertions, 108 deletions
diff --git a/arch/sparc/include/asm/device.h b/arch/sparc/include/asm/device.h index d4c452147412..f9740d065fe7 100644 --- a/arch/sparc/include/asm/device.h +++ b/arch/sparc/include/asm/device.h | |||
@@ -6,6 +6,8 @@ | |||
6 | #ifndef _ASM_SPARC_DEVICE_H | 6 | #ifndef _ASM_SPARC_DEVICE_H |
7 | #define _ASM_SPARC_DEVICE_H | 7 | #define _ASM_SPARC_DEVICE_H |
8 | 8 | ||
9 | #include <asm/openprom.h> | ||
10 | |||
9 | struct device_node; | 11 | struct device_node; |
10 | struct of_device; | 12 | struct of_device; |
11 | 13 | ||
@@ -18,6 +20,9 @@ struct dev_archdata { | |||
18 | }; | 20 | }; |
19 | 21 | ||
20 | struct pdev_archdata { | 22 | struct pdev_archdata { |
23 | struct resource resource[PROMREG_MAX]; | ||
24 | unsigned int irqs[PROMINTR_MAX]; | ||
25 | int num_irqs; | ||
21 | }; | 26 | }; |
22 | 27 | ||
23 | #endif /* _ASM_SPARC_DEVICE_H */ | 28 | #endif /* _ASM_SPARC_DEVICE_H */ |
diff --git a/arch/sparc/include/asm/floppy_64.h b/arch/sparc/include/asm/floppy_64.h index 8fac3ab22f36..4f5bde638f72 100644 --- a/arch/sparc/include/asm/floppy_64.h +++ b/arch/sparc/include/asm/floppy_64.h | |||
@@ -567,7 +567,7 @@ static unsigned long __init sun_floppy_init(void) | |||
567 | } | 567 | } |
568 | if (op) { | 568 | if (op) { |
569 | floppy_op = op; | 569 | floppy_op = op; |
570 | FLOPPY_IRQ = op->irqs[0]; | 570 | FLOPPY_IRQ = op->archdata.irqs[0]; |
571 | } else { | 571 | } else { |
572 | struct device_node *ebus_dp; | 572 | struct device_node *ebus_dp; |
573 | void __iomem *auxio_reg; | 573 | void __iomem *auxio_reg; |
@@ -593,7 +593,7 @@ static unsigned long __init sun_floppy_init(void) | |||
593 | if (state_prop && !strncmp(state_prop, "disabled", 8)) | 593 | if (state_prop && !strncmp(state_prop, "disabled", 8)) |
594 | return 0; | 594 | return 0; |
595 | 595 | ||
596 | FLOPPY_IRQ = op->irqs[0]; | 596 | FLOPPY_IRQ = op->archdata.irqs[0]; |
597 | 597 | ||
598 | /* Make sure the high density bit is set, some systems | 598 | /* Make sure the high density bit is set, some systems |
599 | * (most notably Ultra5/Ultra10) come up with it clear. | 599 | * (most notably Ultra5/Ultra10) come up with it clear. |
diff --git a/arch/sparc/include/asm/of_device.h b/arch/sparc/include/asm/of_device.h index f320246a0586..6d1844a547b4 100644 --- a/arch/sparc/include/asm/of_device.h +++ b/arch/sparc/include/asm/of_device.h | |||
@@ -15,15 +15,10 @@ | |||
15 | struct of_device | 15 | struct of_device |
16 | { | 16 | { |
17 | struct device dev; | 17 | struct device dev; |
18 | struct resource resource[PROMREG_MAX]; | 18 | u32 num_resources; |
19 | unsigned int irqs[PROMINTR_MAX]; | 19 | struct resource *resource; |
20 | int num_irqs; | ||
21 | 20 | ||
22 | void *sysdata; | 21 | struct pdev_archdata archdata; |
23 | |||
24 | int slot; | ||
25 | int portid; | ||
26 | int clock_freq; | ||
27 | }; | 22 | }; |
28 | 23 | ||
29 | extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name); | 24 | extern void __iomem *of_ioremap(struct resource *res, unsigned long offset, unsigned long size, char *name); |
diff --git a/arch/sparc/include/asm/parport.h b/arch/sparc/include/asm/parport.h index c333b8d0949b..0c34a8792fc7 100644 --- a/arch/sparc/include/asm/parport.h +++ b/arch/sparc/include/asm/parport.h | |||
@@ -116,7 +116,7 @@ static int __devinit ecpp_probe(struct of_device *op, const struct of_device_id | |||
116 | parent = op->dev.of_node->parent; | 116 | parent = op->dev.of_node->parent; |
117 | if (!strcmp(parent->name, "dma")) { | 117 | if (!strcmp(parent->name, "dma")) { |
118 | p = parport_pc_probe_port(base, base + 0x400, | 118 | p = parport_pc_probe_port(base, base + 0x400, |
119 | op->irqs[0], PARPORT_DMA_NOFIFO, | 119 | op->archdata.irqs[0], PARPORT_DMA_NOFIFO, |
120 | op->dev.parent->parent, 0); | 120 | op->dev.parent->parent, 0); |
121 | if (!p) | 121 | if (!p) |
122 | return -ENOMEM; | 122 | return -ENOMEM; |
@@ -166,7 +166,7 @@ static int __devinit ecpp_probe(struct of_device *op, const struct of_device_id | |||
166 | 0, PTR_LPT_REG_DIR); | 166 | 0, PTR_LPT_REG_DIR); |
167 | 167 | ||
168 | p = parport_pc_probe_port(base, base + 0x400, | 168 | p = parport_pc_probe_port(base, base + 0x400, |
169 | op->irqs[0], | 169 | op->archdata.irqs[0], |
170 | slot, | 170 | slot, |
171 | op->dev.parent, | 171 | op->dev.parent, |
172 | 0); | 172 | 0); |
diff --git a/arch/sparc/kernel/of_device_32.c b/arch/sparc/kernel/of_device_32.c index 47e63f1e719c..331de91ad2bc 100644 --- a/arch/sparc/kernel/of_device_32.c +++ b/arch/sparc/kernel/of_device_32.c | |||
@@ -267,6 +267,8 @@ static void __init build_device_resources(struct of_device *op, | |||
267 | /* Conver to num-entries. */ | 267 | /* Conver to num-entries. */ |
268 | num_reg /= na + ns; | 268 | num_reg /= na + ns; |
269 | 269 | ||
270 | op->resource = op->archdata.resource; | ||
271 | op->num_resources = num_reg; | ||
270 | for (index = 0; index < num_reg; index++) { | 272 | for (index = 0; index < num_reg; index++) { |
271 | struct resource *r = &op->resource[index]; | 273 | struct resource *r = &op->resource[index]; |
272 | u32 addr[OF_MAX_ADDR_CELLS]; | 274 | u32 addr[OF_MAX_ADDR_CELLS]; |
@@ -349,27 +351,21 @@ static struct of_device * __init scan_one_device(struct device_node *dp, | |||
349 | 351 | ||
350 | op->dev.of_node = dp; | 352 | op->dev.of_node = dp; |
351 | 353 | ||
352 | op->clock_freq = of_getintprop_default(dp, "clock-frequency", | ||
353 | (25*1000*1000)); | ||
354 | op->portid = of_getintprop_default(dp, "upa-portid", -1); | ||
355 | if (op->portid == -1) | ||
356 | op->portid = of_getintprop_default(dp, "portid", -1); | ||
357 | |||
358 | intr = of_get_property(dp, "intr", &len); | 354 | intr = of_get_property(dp, "intr", &len); |
359 | if (intr) { | 355 | if (intr) { |
360 | op->num_irqs = len / sizeof(struct linux_prom_irqs); | 356 | op->archdata.num_irqs = len / sizeof(struct linux_prom_irqs); |
361 | for (i = 0; i < op->num_irqs; i++) | 357 | for (i = 0; i < op->archdata.num_irqs; i++) |
362 | op->irqs[i] = intr[i].pri; | 358 | op->archdata.irqs[i] = intr[i].pri; |
363 | } else { | 359 | } else { |
364 | const unsigned int *irq = | 360 | const unsigned int *irq = |
365 | of_get_property(dp, "interrupts", &len); | 361 | of_get_property(dp, "interrupts", &len); |
366 | 362 | ||
367 | if (irq) { | 363 | if (irq) { |
368 | op->num_irqs = len / sizeof(unsigned int); | 364 | op->archdata.num_irqs = len / sizeof(unsigned int); |
369 | for (i = 0; i < op->num_irqs; i++) | 365 | for (i = 0; i < op->archdata.num_irqs; i++) |
370 | op->irqs[i] = irq[i]; | 366 | op->archdata.irqs[i] = irq[i]; |
371 | } else { | 367 | } else { |
372 | op->num_irqs = 0; | 368 | op->archdata.num_irqs = 0; |
373 | } | 369 | } |
374 | } | 370 | } |
375 | if (sparc_cpu_model == sun4d) { | 371 | if (sparc_cpu_model == sun4d) { |
@@ -411,8 +407,8 @@ static struct of_device * __init scan_one_device(struct device_node *dp, | |||
411 | goto build_resources; | 407 | goto build_resources; |
412 | } | 408 | } |
413 | 409 | ||
414 | for (i = 0; i < op->num_irqs; i++) { | 410 | for (i = 0; i < op->archdata.num_irqs; i++) { |
415 | int this_irq = op->irqs[i]; | 411 | int this_irq = op->archdata.irqs[i]; |
416 | int sbusl = pil_to_sbus[this_irq]; | 412 | int sbusl = pil_to_sbus[this_irq]; |
417 | 413 | ||
418 | if (sbusl) | 414 | if (sbusl) |
@@ -420,7 +416,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp, | |||
420 | (sbusl << 2) + | 416 | (sbusl << 2) + |
421 | slot); | 417 | slot); |
422 | 418 | ||
423 | op->irqs[i] = this_irq; | 419 | op->archdata.irqs[i] = this_irq; |
424 | } | 420 | } |
425 | } | 421 | } |
426 | 422 | ||
diff --git a/arch/sparc/kernel/of_device_64.c b/arch/sparc/kernel/of_device_64.c index 1dae8079f728..5e8cbb942d3d 100644 --- a/arch/sparc/kernel/of_device_64.c +++ b/arch/sparc/kernel/of_device_64.c | |||
@@ -344,6 +344,8 @@ static void __init build_device_resources(struct of_device *op, | |||
344 | num_reg = PROMREG_MAX; | 344 | num_reg = PROMREG_MAX; |
345 | } | 345 | } |
346 | 346 | ||
347 | op->resource = op->archdata.resource; | ||
348 | op->num_resources = num_reg; | ||
347 | for (index = 0; index < num_reg; index++) { | 349 | for (index = 0; index < num_reg; index++) { |
348 | struct resource *r = &op->resource[index]; | 350 | struct resource *r = &op->resource[index]; |
349 | u32 addr[OF_MAX_ADDR_CELLS]; | 351 | u32 addr[OF_MAX_ADDR_CELLS]; |
@@ -644,31 +646,25 @@ static struct of_device * __init scan_one_device(struct device_node *dp, | |||
644 | 646 | ||
645 | op->dev.of_node = dp; | 647 | op->dev.of_node = dp; |
646 | 648 | ||
647 | op->clock_freq = of_getintprop_default(dp, "clock-frequency", | ||
648 | (25*1000*1000)); | ||
649 | op->portid = of_getintprop_default(dp, "upa-portid", -1); | ||
650 | if (op->portid == -1) | ||
651 | op->portid = of_getintprop_default(dp, "portid", -1); | ||
652 | |||
653 | irq = of_get_property(dp, "interrupts", &len); | 649 | irq = of_get_property(dp, "interrupts", &len); |
654 | if (irq) { | 650 | if (irq) { |
655 | op->num_irqs = len / 4; | 651 | op->archdata.num_irqs = len / 4; |
656 | 652 | ||
657 | /* Prevent overrunning the op->irqs[] array. */ | 653 | /* Prevent overrunning the op->irqs[] array. */ |
658 | if (op->num_irqs > PROMINTR_MAX) { | 654 | if (op->archdata.num_irqs > PROMINTR_MAX) { |
659 | printk(KERN_WARNING "%s: Too many irqs (%d), " | 655 | printk(KERN_WARNING "%s: Too many irqs (%d), " |
660 | "limiting to %d.\n", | 656 | "limiting to %d.\n", |
661 | dp->full_name, op->num_irqs, PROMINTR_MAX); | 657 | dp->full_name, op->archdata.num_irqs, PROMINTR_MAX); |
662 | op->num_irqs = PROMINTR_MAX; | 658 | op->archdata.num_irqs = PROMINTR_MAX; |
663 | } | 659 | } |
664 | memcpy(op->irqs, irq, op->num_irqs * 4); | 660 | memcpy(op->archdata.irqs, irq, op->archdata.num_irqs * 4); |
665 | } else { | 661 | } else { |
666 | op->num_irqs = 0; | 662 | op->archdata.num_irqs = 0; |
667 | } | 663 | } |
668 | 664 | ||
669 | build_device_resources(op, parent); | 665 | build_device_resources(op, parent); |
670 | for (i = 0; i < op->num_irqs; i++) | 666 | for (i = 0; i < op->archdata.num_irqs; i++) |
671 | op->irqs[i] = build_one_device_irq(op, parent, op->irqs[i]); | 667 | op->archdata.irqs[i] = build_one_device_irq(op, parent, op->archdata.irqs[i]); |
672 | 668 | ||
673 | op->dev.parent = parent; | 669 | op->dev.parent = parent; |
674 | op->dev.bus = &of_platform_bus_type; | 670 | op->dev.bus = &of_platform_bus_type; |
diff --git a/arch/sparc/kernel/of_device_common.c b/arch/sparc/kernel/of_device_common.c index 10c6c36a6e75..016c947d4cae 100644 --- a/arch/sparc/kernel/of_device_common.c +++ b/arch/sparc/kernel/of_device_common.c | |||
@@ -35,10 +35,10 @@ unsigned int irq_of_parse_and_map(struct device_node *node, int index) | |||
35 | { | 35 | { |
36 | struct of_device *op = of_find_device_by_node(node); | 36 | struct of_device *op = of_find_device_by_node(node); |
37 | 37 | ||
38 | if (!op || index >= op->num_irqs) | 38 | if (!op || index >= op->archdata.num_irqs) |
39 | return 0; | 39 | return 0; |
40 | 40 | ||
41 | return op->irqs[index]; | 41 | return op->archdata.irqs[index]; |
42 | } | 42 | } |
43 | EXPORT_SYMBOL(irq_of_parse_and_map); | 43 | EXPORT_SYMBOL(irq_of_parse_and_map); |
44 | 44 | ||
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c index 8a8363adb8bd..1523290db0a1 100644 --- a/arch/sparc/kernel/pci.c +++ b/arch/sparc/kernel/pci.c | |||
@@ -340,7 +340,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, | |||
340 | dev->hdr_type = PCI_HEADER_TYPE_NORMAL; | 340 | dev->hdr_type = PCI_HEADER_TYPE_NORMAL; |
341 | dev->rom_base_reg = PCI_ROM_ADDRESS; | 341 | dev->rom_base_reg = PCI_ROM_ADDRESS; |
342 | 342 | ||
343 | dev->irq = sd->op->irqs[0]; | 343 | dev->irq = sd->op->archdata.irqs[0]; |
344 | if (dev->irq == 0xffffffff) | 344 | if (dev->irq == 0xffffffff) |
345 | dev->irq = PCI_IRQ_NONE; | 345 | dev->irq = PCI_IRQ_NONE; |
346 | } | 346 | } |
diff --git a/arch/sparc/kernel/pci_psycho.c b/arch/sparc/kernel/pci_psycho.c index 558a70512824..93011e6e7ddc 100644 --- a/arch/sparc/kernel/pci_psycho.c +++ b/arch/sparc/kernel/pci_psycho.c | |||
@@ -302,23 +302,23 @@ static void psycho_register_error_handlers(struct pci_pbm_info *pbm) | |||
302 | * 5: POWER MANAGEMENT | 302 | * 5: POWER MANAGEMENT |
303 | */ | 303 | */ |
304 | 304 | ||
305 | if (op->num_irqs < 6) | 305 | if (op->archdata.num_irqs < 6) |
306 | return; | 306 | return; |
307 | 307 | ||
308 | /* We really mean to ignore the return result here. Two | 308 | /* We really mean to ignore the return result here. Two |
309 | * PCI controller share the same interrupt numbers and | 309 | * PCI controller share the same interrupt numbers and |
310 | * drive the same front-end hardware. | 310 | * drive the same front-end hardware. |
311 | */ | 311 | */ |
312 | err = request_irq(op->irqs[1], psycho_ue_intr, IRQF_SHARED, | 312 | err = request_irq(op->archdata.irqs[1], psycho_ue_intr, IRQF_SHARED, |
313 | "PSYCHO_UE", pbm); | 313 | "PSYCHO_UE", pbm); |
314 | err = request_irq(op->irqs[2], psycho_ce_intr, IRQF_SHARED, | 314 | err = request_irq(op->archdata.irqs[2], psycho_ce_intr, IRQF_SHARED, |
315 | "PSYCHO_CE", pbm); | 315 | "PSYCHO_CE", pbm); |
316 | 316 | ||
317 | /* This one, however, ought not to fail. We can just warn | 317 | /* This one, however, ought not to fail. We can just warn |
318 | * about it since the system can still operate properly even | 318 | * about it since the system can still operate properly even |
319 | * if this fails. | 319 | * if this fails. |
320 | */ | 320 | */ |
321 | err = request_irq(op->irqs[0], psycho_pcierr_intr, IRQF_SHARED, | 321 | err = request_irq(op->archdata.irqs[0], psycho_pcierr_intr, IRQF_SHARED, |
322 | "PSYCHO_PCIERR", pbm); | 322 | "PSYCHO_PCIERR", pbm); |
323 | if (err) | 323 | if (err) |
324 | printk(KERN_WARNING "%s: Could not register PCIERR, " | 324 | printk(KERN_WARNING "%s: Could not register PCIERR, " |
diff --git a/arch/sparc/kernel/pci_sabre.c b/arch/sparc/kernel/pci_sabre.c index 6dad8e3b7506..99c6dba7d4fd 100644 --- a/arch/sparc/kernel/pci_sabre.c +++ b/arch/sparc/kernel/pci_sabre.c | |||
@@ -329,7 +329,7 @@ static void sabre_register_error_handlers(struct pci_pbm_info *pbm) | |||
329 | * 2: CE ERR | 329 | * 2: CE ERR |
330 | * 3: POWER FAIL | 330 | * 3: POWER FAIL |
331 | */ | 331 | */ |
332 | if (op->num_irqs < 4) | 332 | if (op->archdata.num_irqs < 4) |
333 | return; | 333 | return; |
334 | 334 | ||
335 | /* We clear the error bits in the appropriate AFSR before | 335 | /* We clear the error bits in the appropriate AFSR before |
@@ -341,7 +341,7 @@ static void sabre_register_error_handlers(struct pci_pbm_info *pbm) | |||
341 | SABRE_UEAFSR_SDTE | SABRE_UEAFSR_PDTE), | 341 | SABRE_UEAFSR_SDTE | SABRE_UEAFSR_PDTE), |
342 | base + SABRE_UE_AFSR); | 342 | base + SABRE_UE_AFSR); |
343 | 343 | ||
344 | err = request_irq(op->irqs[1], sabre_ue_intr, 0, "SABRE_UE", pbm); | 344 | err = request_irq(op->archdata.irqs[1], sabre_ue_intr, 0, "SABRE_UE", pbm); |
345 | if (err) | 345 | if (err) |
346 | printk(KERN_WARNING "%s: Couldn't register UE, err=%d.\n", | 346 | printk(KERN_WARNING "%s: Couldn't register UE, err=%d.\n", |
347 | pbm->name, err); | 347 | pbm->name, err); |
@@ -351,11 +351,11 @@ static void sabre_register_error_handlers(struct pci_pbm_info *pbm) | |||
351 | base + SABRE_CE_AFSR); | 351 | base + SABRE_CE_AFSR); |
352 | 352 | ||
353 | 353 | ||
354 | err = request_irq(op->irqs[2], sabre_ce_intr, 0, "SABRE_CE", pbm); | 354 | err = request_irq(op->archdata.irqs[2], sabre_ce_intr, 0, "SABRE_CE", pbm); |
355 | if (err) | 355 | if (err) |
356 | printk(KERN_WARNING "%s: Couldn't register CE, err=%d.\n", | 356 | printk(KERN_WARNING "%s: Couldn't register CE, err=%d.\n", |
357 | pbm->name, err); | 357 | pbm->name, err); |
358 | err = request_irq(op->irqs[0], psycho_pcierr_intr, 0, | 358 | err = request_irq(op->archdata.irqs[0], psycho_pcierr_intr, 0, |
359 | "SABRE_PCIERR", pbm); | 359 | "SABRE_PCIERR", pbm); |
360 | if (err) | 360 | if (err) |
361 | printk(KERN_WARNING "%s: Couldn't register PCIERR, err=%d.\n", | 361 | printk(KERN_WARNING "%s: Couldn't register PCIERR, err=%d.\n", |
diff --git a/arch/sparc/kernel/pci_schizo.c b/arch/sparc/kernel/pci_schizo.c index 97a1ae2e1c02..9041dae7aaca 100644 --- a/arch/sparc/kernel/pci_schizo.c +++ b/arch/sparc/kernel/pci_schizo.c | |||
@@ -857,14 +857,14 @@ static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm) | |||
857 | */ | 857 | */ |
858 | 858 | ||
859 | if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO)) { | 859 | if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO)) { |
860 | err = request_irq(op->irqs[1], schizo_ue_intr, 0, | 860 | err = request_irq(op->archdata.irqs[1], schizo_ue_intr, 0, |
861 | "TOMATILLO_UE", pbm); | 861 | "TOMATILLO_UE", pbm); |
862 | if (err) | 862 | if (err) |
863 | printk(KERN_WARNING "%s: Could not register UE, " | 863 | printk(KERN_WARNING "%s: Could not register UE, " |
864 | "err=%d\n", pbm->name, err); | 864 | "err=%d\n", pbm->name, err); |
865 | } | 865 | } |
866 | if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO)) { | 866 | if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO)) { |
867 | err = request_irq(op->irqs[2], schizo_ce_intr, 0, | 867 | err = request_irq(op->archdata.irqs[2], schizo_ce_intr, 0, |
868 | "TOMATILLO_CE", pbm); | 868 | "TOMATILLO_CE", pbm); |
869 | if (err) | 869 | if (err) |
870 | printk(KERN_WARNING "%s: Could not register CE, " | 870 | printk(KERN_WARNING "%s: Could not register CE, " |
@@ -872,10 +872,10 @@ static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm) | |||
872 | } | 872 | } |
873 | err = 0; | 873 | err = 0; |
874 | if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO)) { | 874 | if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO)) { |
875 | err = request_irq(op->irqs[0], schizo_pcierr_intr, 0, | 875 | err = request_irq(op->archdata.irqs[0], schizo_pcierr_intr, 0, |
876 | "TOMATILLO_PCIERR", pbm); | 876 | "TOMATILLO_PCIERR", pbm); |
877 | } else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO)) { | 877 | } else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO)) { |
878 | err = request_irq(op->irqs[0], schizo_pcierr_intr, 0, | 878 | err = request_irq(op->archdata.irqs[0], schizo_pcierr_intr, 0, |
879 | "TOMATILLO_PCIERR", pbm); | 879 | "TOMATILLO_PCIERR", pbm); |
880 | } | 880 | } |
881 | if (err) | 881 | if (err) |
@@ -883,7 +883,7 @@ static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm) | |||
883 | "err=%d\n", pbm->name, err); | 883 | "err=%d\n", pbm->name, err); |
884 | 884 | ||
885 | if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO)) { | 885 | if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO)) { |
886 | err = request_irq(op->irqs[3], schizo_safarierr_intr, 0, | 886 | err = request_irq(op->archdata.irqs[3], schizo_safarierr_intr, 0, |
887 | "TOMATILLO_SERR", pbm); | 887 | "TOMATILLO_SERR", pbm); |
888 | if (err) | 888 | if (err) |
889 | printk(KERN_WARNING "%s: Could not register SERR, " | 889 | printk(KERN_WARNING "%s: Could not register SERR, " |
@@ -952,14 +952,14 @@ static void schizo_register_error_handlers(struct pci_pbm_info *pbm) | |||
952 | */ | 952 | */ |
953 | 953 | ||
954 | if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO)) { | 954 | if (pbm_routes_this_ino(pbm, SCHIZO_UE_INO)) { |
955 | err = request_irq(op->irqs[1], schizo_ue_intr, 0, | 955 | err = request_irq(op->archdata.irqs[1], schizo_ue_intr, 0, |
956 | "SCHIZO_UE", pbm); | 956 | "SCHIZO_UE", pbm); |
957 | if (err) | 957 | if (err) |
958 | printk(KERN_WARNING "%s: Could not register UE, " | 958 | printk(KERN_WARNING "%s: Could not register UE, " |
959 | "err=%d\n", pbm->name, err); | 959 | "err=%d\n", pbm->name, err); |
960 | } | 960 | } |
961 | if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO)) { | 961 | if (pbm_routes_this_ino(pbm, SCHIZO_CE_INO)) { |
962 | err = request_irq(op->irqs[2], schizo_ce_intr, 0, | 962 | err = request_irq(op->archdata.irqs[2], schizo_ce_intr, 0, |
963 | "SCHIZO_CE", pbm); | 963 | "SCHIZO_CE", pbm); |
964 | if (err) | 964 | if (err) |
965 | printk(KERN_WARNING "%s: Could not register CE, " | 965 | printk(KERN_WARNING "%s: Could not register CE, " |
@@ -967,10 +967,10 @@ static void schizo_register_error_handlers(struct pci_pbm_info *pbm) | |||
967 | } | 967 | } |
968 | err = 0; | 968 | err = 0; |
969 | if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO)) { | 969 | if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_A_INO)) { |
970 | err = request_irq(op->irqs[0], schizo_pcierr_intr, 0, | 970 | err = request_irq(op->archdata.irqs[0], schizo_pcierr_intr, 0, |
971 | "SCHIZO_PCIERR", pbm); | 971 | "SCHIZO_PCIERR", pbm); |
972 | } else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO)) { | 972 | } else if (pbm_routes_this_ino(pbm, SCHIZO_PCIERR_B_INO)) { |
973 | err = request_irq(op->irqs[0], schizo_pcierr_intr, 0, | 973 | err = request_irq(op->archdata.irqs[0], schizo_pcierr_intr, 0, |
974 | "SCHIZO_PCIERR", pbm); | 974 | "SCHIZO_PCIERR", pbm); |
975 | } | 975 | } |
976 | if (err) | 976 | if (err) |
@@ -978,7 +978,7 @@ static void schizo_register_error_handlers(struct pci_pbm_info *pbm) | |||
978 | "err=%d\n", pbm->name, err); | 978 | "err=%d\n", pbm->name, err); |
979 | 979 | ||
980 | if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO)) { | 980 | if (pbm_routes_this_ino(pbm, SCHIZO_SERR_INO)) { |
981 | err = request_irq(op->irqs[3], schizo_safarierr_intr, 0, | 981 | err = request_irq(op->archdata.irqs[3], schizo_safarierr_intr, 0, |
982 | "SCHIZO_SERR", pbm); | 982 | "SCHIZO_SERR", pbm); |
983 | if (err) | 983 | if (err) |
984 | printk(KERN_WARNING "%s: Could not register SERR, " | 984 | printk(KERN_WARNING "%s: Could not register SERR, " |
diff --git a/arch/sparc/kernel/power.c b/arch/sparc/kernel/power.c index 168d4cb63f5b..1cfee577f6b5 100644 --- a/arch/sparc/kernel/power.c +++ b/arch/sparc/kernel/power.c | |||
@@ -36,7 +36,7 @@ static int __devinit has_button_interrupt(unsigned int irq, struct device_node * | |||
36 | static int __devinit power_probe(struct of_device *op, const struct of_device_id *match) | 36 | static int __devinit power_probe(struct of_device *op, const struct of_device_id *match) |
37 | { | 37 | { |
38 | struct resource *res = &op->resource[0]; | 38 | struct resource *res = &op->resource[0]; |
39 | unsigned int irq= op->irqs[0]; | 39 | unsigned int irq = op->archdata.irqs[0]; |
40 | 40 | ||
41 | power_reg = of_ioremap(res, 0, 0x4, "power"); | 41 | power_reg = of_ioremap(res, 0, 0x4, "power"); |
42 | 42 | ||
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c index da8f176c051e..38df87b198d5 100644 --- a/drivers/atm/fore200e.c +++ b/drivers/atm/fore200e.c | |||
@@ -2657,7 +2657,7 @@ static int __devinit fore200e_sba_probe(struct of_device *op, | |||
2657 | 2657 | ||
2658 | fore200e->bus = bus; | 2658 | fore200e->bus = bus; |
2659 | fore200e->bus_dev = op; | 2659 | fore200e->bus_dev = op; |
2660 | fore200e->irq = op->irqs[0]; | 2660 | fore200e->irq = op->archdata.irqs[0]; |
2661 | fore200e->phys_base = op->resource[0].start; | 2661 | fore200e->phys_base = op->resource[0].start; |
2662 | 2662 | ||
2663 | sprintf(fore200e->name, "%s-%d", bus->model_name, index); | 2663 | sprintf(fore200e->name, "%s-%d", bus->model_name, index); |
diff --git a/drivers/input/serio/i8042-sparcio.h b/drivers/input/serio/i8042-sparcio.h index 04e32f2d1241..c7d50ff43fca 100644 --- a/drivers/input/serio/i8042-sparcio.h +++ b/drivers/input/serio/i8042-sparcio.h | |||
@@ -58,9 +58,9 @@ static int __devinit sparc_i8042_probe(struct of_device *op, const struct of_dev | |||
58 | if (!strcmp(dp->name, OBP_PS2KBD_NAME1) || | 58 | if (!strcmp(dp->name, OBP_PS2KBD_NAME1) || |
59 | !strcmp(dp->name, OBP_PS2KBD_NAME2)) { | 59 | !strcmp(dp->name, OBP_PS2KBD_NAME2)) { |
60 | struct of_device *kbd = of_find_device_by_node(dp); | 60 | struct of_device *kbd = of_find_device_by_node(dp); |
61 | unsigned int irq = kbd->irqs[0]; | 61 | unsigned int irq = kbd->archdata.irqs[0]; |
62 | if (irq == 0xffffffff) | 62 | if (irq == 0xffffffff) |
63 | irq = op->irqs[0]; | 63 | irq = op->archdata.irqs[0]; |
64 | i8042_kbd_irq = irq; | 64 | i8042_kbd_irq = irq; |
65 | kbd_iobase = of_ioremap(&kbd->resource[0], | 65 | kbd_iobase = of_ioremap(&kbd->resource[0], |
66 | 0, 8, "kbd"); | 66 | 0, 8, "kbd"); |
@@ -68,9 +68,9 @@ static int __devinit sparc_i8042_probe(struct of_device *op, const struct of_dev | |||
68 | } else if (!strcmp(dp->name, OBP_PS2MS_NAME1) || | 68 | } else if (!strcmp(dp->name, OBP_PS2MS_NAME1) || |
69 | !strcmp(dp->name, OBP_PS2MS_NAME2)) { | 69 | !strcmp(dp->name, OBP_PS2MS_NAME2)) { |
70 | struct of_device *ms = of_find_device_by_node(dp); | 70 | struct of_device *ms = of_find_device_by_node(dp); |
71 | unsigned int irq = ms->irqs[0]; | 71 | unsigned int irq = ms->archdata.irqs[0]; |
72 | if (irq == 0xffffffff) | 72 | if (irq == 0xffffffff) |
73 | irq = op->irqs[0]; | 73 | irq = op->archdata.irqs[0]; |
74 | i8042_aux_irq = irq; | 74 | i8042_aux_irq = irq; |
75 | } | 75 | } |
76 | 76 | ||
diff --git a/drivers/net/myri_sbus.c b/drivers/net/myri_sbus.c index 1a57c3da1f49..370d3c17f24c 100644 --- a/drivers/net/myri_sbus.c +++ b/drivers/net/myri_sbus.c | |||
@@ -1079,7 +1079,7 @@ static int __devinit myri_sbus_probe(struct of_device *op, const struct of_devic | |||
1079 | 1079 | ||
1080 | mp->dev = dev; | 1080 | mp->dev = dev; |
1081 | dev->watchdog_timeo = 5*HZ; | 1081 | dev->watchdog_timeo = 5*HZ; |
1082 | dev->irq = op->irqs[0]; | 1082 | dev->irq = op->archdata.irqs[0]; |
1083 | dev->netdev_ops = &myri_ops; | 1083 | dev->netdev_ops = &myri_ops; |
1084 | 1084 | ||
1085 | /* Register interrupt handler now. */ | 1085 | /* Register interrupt handler now. */ |
diff --git a/drivers/net/niu.c b/drivers/net/niu.c index 63e8e3893bd6..5dd50b6ae776 100644 --- a/drivers/net/niu.c +++ b/drivers/net/niu.c | |||
@@ -9119,12 +9119,12 @@ static int __devinit niu_n2_irq_init(struct niu *np, u8 *ldg_num_map) | |||
9119 | if (!int_prop) | 9119 | if (!int_prop) |
9120 | return -ENODEV; | 9120 | return -ENODEV; |
9121 | 9121 | ||
9122 | for (i = 0; i < op->num_irqs; i++) { | 9122 | for (i = 0; i < op->archdata.num_irqs; i++) { |
9123 | ldg_num_map[i] = int_prop[i]; | 9123 | ldg_num_map[i] = int_prop[i]; |
9124 | np->ldg[i].irq = op->irqs[i]; | 9124 | np->ldg[i].irq = op->archdata.irqs[i]; |
9125 | } | 9125 | } |
9126 | 9126 | ||
9127 | np->num_ldg = op->num_irqs; | 9127 | np->num_ldg = op->archdata.num_irqs; |
9128 | 9128 | ||
9129 | return 0; | 9129 | return 0; |
9130 | #else | 9130 | #else |
diff --git a/drivers/net/sunbmac.c b/drivers/net/sunbmac.c index 367e96f317d4..0b10d24de051 100644 --- a/drivers/net/sunbmac.c +++ b/drivers/net/sunbmac.c | |||
@@ -1201,7 +1201,7 @@ static int __devinit bigmac_ether_init(struct of_device *op, | |||
1201 | dev->watchdog_timeo = 5*HZ; | 1201 | dev->watchdog_timeo = 5*HZ; |
1202 | 1202 | ||
1203 | /* Finish net device registration. */ | 1203 | /* Finish net device registration. */ |
1204 | dev->irq = bp->bigmac_op->irqs[0]; | 1204 | dev->irq = bp->bigmac_op->archdata.irqs[0]; |
1205 | dev->dma = 0; | 1205 | dev->dma = 0; |
1206 | 1206 | ||
1207 | if (register_netdev(dev)) { | 1207 | if (register_netdev(dev)) { |
diff --git a/drivers/net/sunhme.c b/drivers/net/sunhme.c index 3d9650b8d38f..0a63ebef86a0 100644 --- a/drivers/net/sunhme.c +++ b/drivers/net/sunhme.c | |||
@@ -2561,7 +2561,7 @@ static int __init quattro_sbus_register_irqs(void) | |||
2561 | if (skip) | 2561 | if (skip) |
2562 | continue; | 2562 | continue; |
2563 | 2563 | ||
2564 | err = request_irq(op->irqs[0], | 2564 | err = request_irq(op->archdata.irqs[0], |
2565 | quattro_sbus_interrupt, | 2565 | quattro_sbus_interrupt, |
2566 | IRQF_SHARED, "Quattro", | 2566 | IRQF_SHARED, "Quattro", |
2567 | qp); | 2567 | qp); |
@@ -2590,7 +2590,7 @@ static void quattro_sbus_free_irqs(void) | |||
2590 | if (skip) | 2590 | if (skip) |
2591 | continue; | 2591 | continue; |
2592 | 2592 | ||
2593 | free_irq(op->irqs[0], qp); | 2593 | free_irq(op->archdata.irqs[0], qp); |
2594 | } | 2594 | } |
2595 | } | 2595 | } |
2596 | #endif /* CONFIG_SBUS */ | 2596 | #endif /* CONFIG_SBUS */ |
@@ -2790,7 +2790,7 @@ static int __devinit happy_meal_sbus_probe_one(struct of_device *op, int is_qfe) | |||
2790 | /* Happy Meal can do it all... */ | 2790 | /* Happy Meal can do it all... */ |
2791 | dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; | 2791 | dev->features |= NETIF_F_SG | NETIF_F_HW_CSUM; |
2792 | 2792 | ||
2793 | dev->irq = op->irqs[0]; | 2793 | dev->irq = op->archdata.irqs[0]; |
2794 | 2794 | ||
2795 | #if defined(CONFIG_SBUS) && defined(CONFIG_PCI) | 2795 | #if defined(CONFIG_SBUS) && defined(CONFIG_PCI) |
2796 | /* Hook up SBUS register/descriptor accessors. */ | 2796 | /* Hook up SBUS register/descriptor accessors. */ |
diff --git a/drivers/net/sunlance.c b/drivers/net/sunlance.c index 7d9c33dd9d1a..c6bfdad6c0c8 100644 --- a/drivers/net/sunlance.c +++ b/drivers/net/sunlance.c | |||
@@ -1474,7 +1474,7 @@ no_link_test: | |||
1474 | dev->ethtool_ops = &sparc_lance_ethtool_ops; | 1474 | dev->ethtool_ops = &sparc_lance_ethtool_ops; |
1475 | dev->netdev_ops = &sparc_lance_ops; | 1475 | dev->netdev_ops = &sparc_lance_ops; |
1476 | 1476 | ||
1477 | dev->irq = op->irqs[0]; | 1477 | dev->irq = op->archdata.irqs[0]; |
1478 | 1478 | ||
1479 | /* We cannot sleep if the chip is busy during a | 1479 | /* We cannot sleep if the chip is busy during a |
1480 | * multicast list update event, because such events | 1480 | * multicast list update event, because such events |
diff --git a/drivers/net/sunqe.c b/drivers/net/sunqe.c index 72b579c8d812..446517487084 100644 --- a/drivers/net/sunqe.c +++ b/drivers/net/sunqe.c | |||
@@ -803,7 +803,7 @@ static struct sunqec * __devinit get_qec(struct of_device *child) | |||
803 | 803 | ||
804 | qec_init_once(qecp, op); | 804 | qec_init_once(qecp, op); |
805 | 805 | ||
806 | if (request_irq(op->irqs[0], qec_interrupt, | 806 | if (request_irq(op->archdata.irqs[0], qec_interrupt, |
807 | IRQF_SHARED, "qec", (void *) qecp)) { | 807 | IRQF_SHARED, "qec", (void *) qecp)) { |
808 | printk(KERN_ERR "qec: Can't register irq.\n"); | 808 | printk(KERN_ERR "qec: Can't register irq.\n"); |
809 | goto fail; | 809 | goto fail; |
@@ -901,7 +901,7 @@ static int __devinit qec_ether_init(struct of_device *op) | |||
901 | SET_NETDEV_DEV(dev, &op->dev); | 901 | SET_NETDEV_DEV(dev, &op->dev); |
902 | 902 | ||
903 | dev->watchdog_timeo = 5*HZ; | 903 | dev->watchdog_timeo = 5*HZ; |
904 | dev->irq = op->irqs[0]; | 904 | dev->irq = op->archdata.irqs[0]; |
905 | dev->dma = 0; | 905 | dev->dma = 0; |
906 | dev->ethtool_ops = &qe_ethtool_ops; | 906 | dev->ethtool_ops = &qe_ethtool_ops; |
907 | dev->netdev_ops = &qec_ops; | 907 | dev->netdev_ops = &qec_ops; |
@@ -999,7 +999,7 @@ static void __exit qec_exit(void) | |||
999 | struct sunqec *next = root_qec_dev->next_module; | 999 | struct sunqec *next = root_qec_dev->next_module; |
1000 | struct of_device *op = root_qec_dev->op; | 1000 | struct of_device *op = root_qec_dev->op; |
1001 | 1001 | ||
1002 | free_irq(op->irqs[0], (void *) root_qec_dev); | 1002 | free_irq(op->archdata.irqs[0], (void *) root_qec_dev); |
1003 | of_iounmap(&op->resource[0], root_qec_dev->gregs, | 1003 | of_iounmap(&op->resource[0], root_qec_dev->gregs, |
1004 | GLOB_REG_SIZE); | 1004 | GLOB_REG_SIZE); |
1005 | kfree(root_qec_dev); | 1005 | kfree(root_qec_dev); |
diff --git a/drivers/parport/parport_sunbpp.c b/drivers/parport/parport_sunbpp.c index 9a5b4b894161..3cdfe96e8999 100644 --- a/drivers/parport/parport_sunbpp.c +++ b/drivers/parport/parport_sunbpp.c | |||
@@ -295,7 +295,7 @@ static int __devinit bpp_probe(struct of_device *op, const struct of_device_id * | |||
295 | void __iomem *base; | 295 | void __iomem *base; |
296 | struct parport *p; | 296 | struct parport *p; |
297 | 297 | ||
298 | irq = op->irqs[0]; | 298 | irq = op->archdata.irqs[0]; |
299 | base = of_ioremap(&op->resource[0], 0, | 299 | base = of_ioremap(&op->resource[0], 0, |
300 | resource_size(&op->resource[0]), | 300 | resource_size(&op->resource[0]), |
301 | "sunbpp"); | 301 | "sunbpp"); |
diff --git a/drivers/sbus/char/bbc_i2c.c b/drivers/sbus/char/bbc_i2c.c index 8bfdd63a1fcb..40d7a1fc69af 100644 --- a/drivers/sbus/char/bbc_i2c.c +++ b/drivers/sbus/char/bbc_i2c.c | |||
@@ -317,7 +317,7 @@ static struct bbc_i2c_bus * __init attach_one_i2c(struct of_device *op, int inde | |||
317 | 317 | ||
318 | bp->waiting = 0; | 318 | bp->waiting = 0; |
319 | init_waitqueue_head(&bp->wq); | 319 | init_waitqueue_head(&bp->wq); |
320 | if (request_irq(op->irqs[0], bbc_i2c_interrupt, | 320 | if (request_irq(op->archdata.irqs[0], bbc_i2c_interrupt, |
321 | IRQF_SHARED, "bbc_i2c", bp)) | 321 | IRQF_SHARED, "bbc_i2c", bp)) |
322 | goto fail; | 322 | goto fail; |
323 | 323 | ||
@@ -373,7 +373,7 @@ static int __devinit bbc_i2c_probe(struct of_device *op, | |||
373 | 373 | ||
374 | err = bbc_envctrl_init(bp); | 374 | err = bbc_envctrl_init(bp); |
375 | if (err) { | 375 | if (err) { |
376 | free_irq(op->irqs[0], bp); | 376 | free_irq(op->archdata.irqs[0], bp); |
377 | if (bp->i2c_bussel_reg) | 377 | if (bp->i2c_bussel_reg) |
378 | of_iounmap(&op->resource[0], bp->i2c_bussel_reg, 1); | 378 | of_iounmap(&op->resource[0], bp->i2c_bussel_reg, 1); |
379 | if (bp->i2c_control_regs) | 379 | if (bp->i2c_control_regs) |
@@ -392,7 +392,7 @@ static int __devexit bbc_i2c_remove(struct of_device *op) | |||
392 | 392 | ||
393 | bbc_envctrl_cleanup(bp); | 393 | bbc_envctrl_cleanup(bp); |
394 | 394 | ||
395 | free_irq(op->irqs[0], bp); | 395 | free_irq(op->archdata.irqs[0], bp); |
396 | 396 | ||
397 | if (bp->i2c_bussel_reg) | 397 | if (bp->i2c_bussel_reg) |
398 | of_iounmap(&op->resource[0], bp->i2c_bussel_reg, 1); | 398 | of_iounmap(&op->resource[0], bp->i2c_bussel_reg, 1); |
diff --git a/drivers/sbus/char/uctrl.c b/drivers/sbus/char/uctrl.c index 5f253665a1da..b8b40e9eca79 100644 --- a/drivers/sbus/char/uctrl.c +++ b/drivers/sbus/char/uctrl.c | |||
@@ -367,7 +367,7 @@ static int __devinit uctrl_probe(struct of_device *op, | |||
367 | goto out_free; | 367 | goto out_free; |
368 | } | 368 | } |
369 | 369 | ||
370 | p->irq = op->irqs[0]; | 370 | p->irq = op->archdata.irqs[0]; |
371 | err = request_irq(p->irq, uctrl_interrupt, 0, "uctrl", p); | 371 | err = request_irq(p->irq, uctrl_interrupt, 0, "uctrl", p); |
372 | if (err) { | 372 | if (err) { |
373 | printk(KERN_ERR "uctrl: Unable to register irq.\n"); | 373 | printk(KERN_ERR "uctrl: Unable to register irq.\n"); |
diff --git a/drivers/scsi/qlogicpti.c b/drivers/scsi/qlogicpti.c index ca5c15c779cf..3f5b5411e6bc 100644 --- a/drivers/scsi/qlogicpti.c +++ b/drivers/scsi/qlogicpti.c | |||
@@ -729,7 +729,7 @@ static int __devinit qpti_register_irq(struct qlogicpti *qpti) | |||
729 | { | 729 | { |
730 | struct of_device *op = qpti->op; | 730 | struct of_device *op = qpti->op; |
731 | 731 | ||
732 | qpti->qhost->irq = qpti->irq = op->irqs[0]; | 732 | qpti->qhost->irq = qpti->irq = op->archdata.irqs[0]; |
733 | 733 | ||
734 | /* We used to try various overly-clever things to | 734 | /* We used to try various overly-clever things to |
735 | * reduce the interrupt processing overhead on | 735 | * reduce the interrupt processing overhead on |
@@ -1302,7 +1302,7 @@ static int __devinit qpti_sbus_probe(struct of_device *op, const struct of_devic | |||
1302 | /* Sometimes Antares cards come up not completely | 1302 | /* Sometimes Antares cards come up not completely |
1303 | * setup, and we get a report of a zero IRQ. | 1303 | * setup, and we get a report of a zero IRQ. |
1304 | */ | 1304 | */ |
1305 | if (op->irqs[0] == 0) | 1305 | if (op->archdata.irqs[0] == 0) |
1306 | return -ENODEV; | 1306 | return -ENODEV; |
1307 | 1307 | ||
1308 | host = scsi_host_alloc(tpnt, sizeof(struct qlogicpti)); | 1308 | host = scsi_host_alloc(tpnt, sizeof(struct qlogicpti)); |
diff --git a/drivers/scsi/sun_esp.c b/drivers/scsi/sun_esp.c index 386dd9d602b6..ddc221acd14c 100644 --- a/drivers/scsi/sun_esp.c +++ b/drivers/scsi/sun_esp.c | |||
@@ -116,7 +116,7 @@ static int __devinit esp_sbus_register_irq(struct esp *esp) | |||
116 | struct Scsi_Host *host = esp->host; | 116 | struct Scsi_Host *host = esp->host; |
117 | struct of_device *op = esp->dev; | 117 | struct of_device *op = esp->dev; |
118 | 118 | ||
119 | host->irq = op->irqs[0]; | 119 | host->irq = op->archdata.irqs[0]; |
120 | return request_irq(host->irq, scsi_esp_intr, IRQF_SHARED, "ESP", esp); | 120 | return request_irq(host->irq, scsi_esp_intr, IRQF_SHARED, "ESP", esp); |
121 | } | 121 | } |
122 | 122 | ||
diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c index 890f91742962..36e244867dd8 100644 --- a/drivers/serial/sunhv.c +++ b/drivers/serial/sunhv.c | |||
@@ -525,7 +525,7 @@ static int __devinit hv_probe(struct of_device *op, const struct of_device_id *m | |||
525 | unsigned long minor; | 525 | unsigned long minor; |
526 | int err; | 526 | int err; |
527 | 527 | ||
528 | if (op->irqs[0] == 0xffffffff) | 528 | if (op->archdata.irqs[0] == 0xffffffff) |
529 | return -ENODEV; | 529 | return -ENODEV; |
530 | 530 | ||
531 | port = kzalloc(sizeof(struct uart_port), GFP_KERNEL); | 531 | port = kzalloc(sizeof(struct uart_port), GFP_KERNEL); |
@@ -557,7 +557,7 @@ static int __devinit hv_probe(struct of_device *op, const struct of_device_id *m | |||
557 | 557 | ||
558 | port->membase = (unsigned char __iomem *) __pa(port); | 558 | port->membase = (unsigned char __iomem *) __pa(port); |
559 | 559 | ||
560 | port->irq = op->irqs[0]; | 560 | port->irq = op->archdata.irqs[0]; |
561 | 561 | ||
562 | port->dev = &op->dev; | 562 | port->dev = &op->dev; |
563 | 563 | ||
diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c index 5e81bc6b48b0..0a7dd6841ff8 100644 --- a/drivers/serial/sunsab.c +++ b/drivers/serial/sunsab.c | |||
@@ -969,7 +969,7 @@ static int __devinit sunsab_init_one(struct uart_sunsab_port *up, | |||
969 | return -ENOMEM; | 969 | return -ENOMEM; |
970 | up->regs = (union sab82532_async_regs __iomem *) up->port.membase; | 970 | up->regs = (union sab82532_async_regs __iomem *) up->port.membase; |
971 | 971 | ||
972 | up->port.irq = op->irqs[0]; | 972 | up->port.irq = op->archdata.irqs[0]; |
973 | 973 | ||
974 | up->port.fifosize = SAB82532_XMIT_FIFO_SIZE; | 974 | up->port.fifosize = SAB82532_XMIT_FIFO_SIZE; |
975 | up->port.iotype = UPIO_MEM; | 975 | up->port.iotype = UPIO_MEM; |
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c index 234459c2f012..56d891acf29e 100644 --- a/drivers/serial/sunsu.c +++ b/drivers/serial/sunsu.c | |||
@@ -1443,7 +1443,7 @@ static int __devinit su_probe(struct of_device *op, const struct of_device_id *m | |||
1443 | return -ENOMEM; | 1443 | return -ENOMEM; |
1444 | } | 1444 | } |
1445 | 1445 | ||
1446 | up->port.irq = op->irqs[0]; | 1446 | up->port.irq = op->archdata.irqs[0]; |
1447 | 1447 | ||
1448 | up->port.dev = &op->dev; | 1448 | up->port.dev = &op->dev; |
1449 | 1449 | ||
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c index f9a24f4ebb34..fcbe20d48039 100644 --- a/drivers/serial/sunzilog.c +++ b/drivers/serial/sunzilog.c | |||
@@ -1426,7 +1426,7 @@ static int __devinit zs_probe(struct of_device *op, const struct of_device_id *m | |||
1426 | rp = sunzilog_chip_regs[inst]; | 1426 | rp = sunzilog_chip_regs[inst]; |
1427 | 1427 | ||
1428 | if (zilog_irq == -1) | 1428 | if (zilog_irq == -1) |
1429 | zilog_irq = op->irqs[0]; | 1429 | zilog_irq = op->archdata.irqs[0]; |
1430 | 1430 | ||
1431 | up = &sunzilog_port_table[inst * 2]; | 1431 | up = &sunzilog_port_table[inst * 2]; |
1432 | 1432 | ||
@@ -1434,7 +1434,7 @@ static int __devinit zs_probe(struct of_device *op, const struct of_device_id *m | |||
1434 | up[0].port.mapbase = op->resource[0].start + 0x00; | 1434 | up[0].port.mapbase = op->resource[0].start + 0x00; |
1435 | up[0].port.membase = (void __iomem *) &rp->channelA; | 1435 | up[0].port.membase = (void __iomem *) &rp->channelA; |
1436 | up[0].port.iotype = UPIO_MEM; | 1436 | up[0].port.iotype = UPIO_MEM; |
1437 | up[0].port.irq = op->irqs[0]; | 1437 | up[0].port.irq = op->archdata.irqs[0]; |
1438 | up[0].port.uartclk = ZS_CLOCK; | 1438 | up[0].port.uartclk = ZS_CLOCK; |
1439 | up[0].port.fifosize = 1; | 1439 | up[0].port.fifosize = 1; |
1440 | up[0].port.ops = &sunzilog_pops; | 1440 | up[0].port.ops = &sunzilog_pops; |
@@ -1451,7 +1451,7 @@ static int __devinit zs_probe(struct of_device *op, const struct of_device_id *m | |||
1451 | up[1].port.mapbase = op->resource[0].start + 0x04; | 1451 | up[1].port.mapbase = op->resource[0].start + 0x04; |
1452 | up[1].port.membase = (void __iomem *) &rp->channelB; | 1452 | up[1].port.membase = (void __iomem *) &rp->channelB; |
1453 | up[1].port.iotype = UPIO_MEM; | 1453 | up[1].port.iotype = UPIO_MEM; |
1454 | up[1].port.irq = op->irqs[0]; | 1454 | up[1].port.irq = op->archdata.irqs[0]; |
1455 | up[1].port.uartclk = ZS_CLOCK; | 1455 | up[1].port.uartclk = ZS_CLOCK; |
1456 | up[1].port.fifosize = 1; | 1456 | up[1].port.fifosize = 1; |
1457 | up[1].port.ops = &sunzilog_pops; | 1457 | up[1].port.ops = &sunzilog_pops; |
@@ -1492,12 +1492,12 @@ static int __devinit zs_probe(struct of_device *op, const struct of_device_id *m | |||
1492 | "is a %s\n", | 1492 | "is a %s\n", |
1493 | dev_name(&op->dev), | 1493 | dev_name(&op->dev), |
1494 | (unsigned long long) up[0].port.mapbase, | 1494 | (unsigned long long) up[0].port.mapbase, |
1495 | op->irqs[0], sunzilog_type(&up[0].port)); | 1495 | op->archdata.irqs[0], sunzilog_type(&up[0].port)); |
1496 | printk(KERN_INFO "%s: Mouse at MMIO 0x%llx (irq = %d) " | 1496 | printk(KERN_INFO "%s: Mouse at MMIO 0x%llx (irq = %d) " |
1497 | "is a %s\n", | 1497 | "is a %s\n", |
1498 | dev_name(&op->dev), | 1498 | dev_name(&op->dev), |
1499 | (unsigned long long) up[1].port.mapbase, | 1499 | (unsigned long long) up[1].port.mapbase, |
1500 | op->irqs[0], sunzilog_type(&up[1].port)); | 1500 | op->archdata.irqs[0], sunzilog_type(&up[1].port)); |
1501 | kbm_inst++; | 1501 | kbm_inst++; |
1502 | } | 1502 | } |
1503 | 1503 | ||
diff --git a/drivers/watchdog/cpwd.c b/drivers/watchdog/cpwd.c index d62b9ce8f773..8c03fd71693e 100644 --- a/drivers/watchdog/cpwd.c +++ b/drivers/watchdog/cpwd.c | |||
@@ -545,7 +545,7 @@ static int __devinit cpwd_probe(struct of_device *op, | |||
545 | goto out; | 545 | goto out; |
546 | } | 546 | } |
547 | 547 | ||
548 | p->irq = op->irqs[0]; | 548 | p->irq = op->archdata.irqs[0]; |
549 | 549 | ||
550 | spin_lock_init(&p->lock); | 550 | spin_lock_init(&p->lock); |
551 | 551 | ||
diff --git a/sound/sparc/amd7930.c b/sound/sparc/amd7930.c index 71221fd20944..43c63d441087 100644 --- a/sound/sparc/amd7930.c +++ b/sound/sparc/amd7930.c | |||
@@ -1010,7 +1010,7 @@ static int __devinit amd7930_sbus_probe(struct of_device *op, const struct of_de | |||
1010 | struct snd_amd7930 *amd; | 1010 | struct snd_amd7930 *amd; |
1011 | int err, irq; | 1011 | int err, irq; |
1012 | 1012 | ||
1013 | irq = op->irqs[0]; | 1013 | irq = op->archdata.irqs[0]; |
1014 | 1014 | ||
1015 | if (dev_num >= SNDRV_CARDS) | 1015 | if (dev_num >= SNDRV_CARDS) |
1016 | return -ENODEV; | 1016 | return -ENODEV; |
diff --git a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c index fb4c6f2f29e5..f7f05c246303 100644 --- a/sound/sparc/cs4231.c +++ b/sound/sparc/cs4231.c | |||
@@ -1832,14 +1832,14 @@ static int __devinit snd_cs4231_sbus_create(struct snd_card *card, | |||
1832 | chip->c_dma.request = sbus_dma_request; | 1832 | chip->c_dma.request = sbus_dma_request; |
1833 | chip->c_dma.address = sbus_dma_addr; | 1833 | chip->c_dma.address = sbus_dma_addr; |
1834 | 1834 | ||
1835 | if (request_irq(op->irqs[0], snd_cs4231_sbus_interrupt, | 1835 | if (request_irq(op->archdata.irqs[0], snd_cs4231_sbus_interrupt, |
1836 | IRQF_SHARED, "cs4231", chip)) { | 1836 | IRQF_SHARED, "cs4231", chip)) { |
1837 | snd_printdd("cs4231-%d: Unable to grab SBUS IRQ %d\n", | 1837 | snd_printdd("cs4231-%d: Unable to grab SBUS IRQ %d\n", |
1838 | dev, op->irqs[0]); | 1838 | dev, op->archdata.irqs[0]); |
1839 | snd_cs4231_sbus_free(chip); | 1839 | snd_cs4231_sbus_free(chip); |
1840 | return -EBUSY; | 1840 | return -EBUSY; |
1841 | } | 1841 | } |
1842 | chip->irq[0] = op->irqs[0]; | 1842 | chip->irq[0] = op->archdata.irqs[0]; |
1843 | 1843 | ||
1844 | if (snd_cs4231_probe(chip) < 0) { | 1844 | if (snd_cs4231_probe(chip) < 0) { |
1845 | snd_cs4231_sbus_free(chip); | 1845 | snd_cs4231_sbus_free(chip); |
@@ -1870,7 +1870,7 @@ static int __devinit cs4231_sbus_probe(struct of_device *op, const struct of_dev | |||
1870 | card->shortname, | 1870 | card->shortname, |
1871 | rp->flags & 0xffL, | 1871 | rp->flags & 0xffL, |
1872 | (unsigned long long)rp->start, | 1872 | (unsigned long long)rp->start, |
1873 | op->irqs[0]); | 1873 | op->archdata.irqs[0]); |
1874 | 1874 | ||
1875 | err = snd_cs4231_sbus_create(card, op, dev); | 1875 | err = snd_cs4231_sbus_create(card, op, dev); |
1876 | if (err < 0) { | 1876 | if (err < 0) { |
@@ -1979,12 +1979,12 @@ static int __devinit snd_cs4231_ebus_create(struct snd_card *card, | |||
1979 | chip->c_dma.ebus_info.flags = EBUS_DMA_FLAG_USE_EBDMA_HANDLER; | 1979 | chip->c_dma.ebus_info.flags = EBUS_DMA_FLAG_USE_EBDMA_HANDLER; |
1980 | chip->c_dma.ebus_info.callback = snd_cs4231_ebus_capture_callback; | 1980 | chip->c_dma.ebus_info.callback = snd_cs4231_ebus_capture_callback; |
1981 | chip->c_dma.ebus_info.client_cookie = chip; | 1981 | chip->c_dma.ebus_info.client_cookie = chip; |
1982 | chip->c_dma.ebus_info.irq = op->irqs[0]; | 1982 | chip->c_dma.ebus_info.irq = op->archdata.irqs[0]; |
1983 | strcpy(chip->p_dma.ebus_info.name, "cs4231(play)"); | 1983 | strcpy(chip->p_dma.ebus_info.name, "cs4231(play)"); |
1984 | chip->p_dma.ebus_info.flags = EBUS_DMA_FLAG_USE_EBDMA_HANDLER; | 1984 | chip->p_dma.ebus_info.flags = EBUS_DMA_FLAG_USE_EBDMA_HANDLER; |
1985 | chip->p_dma.ebus_info.callback = snd_cs4231_ebus_play_callback; | 1985 | chip->p_dma.ebus_info.callback = snd_cs4231_ebus_play_callback; |
1986 | chip->p_dma.ebus_info.client_cookie = chip; | 1986 | chip->p_dma.ebus_info.client_cookie = chip; |
1987 | chip->p_dma.ebus_info.irq = op->irqs[1]; | 1987 | chip->p_dma.ebus_info.irq = op->archdata.irqs[1]; |
1988 | 1988 | ||
1989 | chip->p_dma.prepare = _ebus_dma_prepare; | 1989 | chip->p_dma.prepare = _ebus_dma_prepare; |
1990 | chip->p_dma.enable = _ebus_dma_enable; | 1990 | chip->p_dma.enable = _ebus_dma_enable; |
@@ -2060,7 +2060,7 @@ static int __devinit cs4231_ebus_probe(struct of_device *op, const struct of_dev | |||
2060 | sprintf(card->longname, "%s at 0x%llx, irq %d", | 2060 | sprintf(card->longname, "%s at 0x%llx, irq %d", |
2061 | card->shortname, | 2061 | card->shortname, |
2062 | op->resource[0].start, | 2062 | op->resource[0].start, |
2063 | op->irqs[0]); | 2063 | op->archdata.irqs[0]); |
2064 | 2064 | ||
2065 | err = snd_cs4231_ebus_create(card, op, dev); | 2065 | err = snd_cs4231_ebus_create(card, op, dev); |
2066 | if (err < 0) { | 2066 | if (err < 0) { |
diff --git a/sound/sparc/dbri.c b/sound/sparc/dbri.c index 1557bf132e73..491ce71c84b6 100644 --- a/sound/sparc/dbri.c +++ b/sound/sparc/dbri.c | |||
@@ -2608,7 +2608,7 @@ static int __devinit dbri_probe(struct of_device *op, const struct of_device_id | |||
2608 | return -ENOENT; | 2608 | return -ENOENT; |
2609 | } | 2609 | } |
2610 | 2610 | ||
2611 | irq = op->irqs[0]; | 2611 | irq = op->archdata.irqs[0]; |
2612 | if (irq <= 0) { | 2612 | if (irq <= 0) { |
2613 | printk(KERN_ERR "DBRI-%d: No IRQ.\n", dev); | 2613 | printk(KERN_ERR "DBRI-%d: No IRQ.\n", dev); |
2614 | return -ENODEV; | 2614 | return -ENODEV; |