diff options
author | Paul Mackerras <paulus@samba.org> | 2005-10-26 02:47:42 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-10-26 02:47:42 -0400 |
commit | f9bd170a87948a9e077149b70fb192c563770fdf (patch) | |
tree | c759b57b67ab41a859e19f7dcee571504b368202 /arch/ppc/platforms | |
parent | 25635c71e44111a6bd48f342e144e2fc02d0a314 (diff) |
powerpc: Merge i8259.c into arch/powerpc/sysdev
This changes the parameters for i8259_init so that it takes two
parameters: a physical address for generating an interrupt
acknowledge cycle, and an interrupt number offset. i8259_init
now sets the irq_desc[] for its interrupts; all the callers
were doing this, and that code is gone now. This also defines
a CONFIG_PPC_I8259 symbol to select i8259.o for inclusion, and
makes the platforms that need it select that symbol.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/ppc/platforms')
-rw-r--r-- | arch/ppc/platforms/85xx/mpc85xx_cds_common.c | 5 | ||||
-rw-r--r-- | arch/ppc/platforms/chrp_setup.c | 4 | ||||
-rw-r--r-- | arch/ppc/platforms/lopec.c | 6 | ||||
-rw-r--r-- | arch/ppc/platforms/mvme5100.c | 6 | ||||
-rw-r--r-- | arch/ppc/platforms/pplus.c | 5 | ||||
-rw-r--r-- | arch/ppc/platforms/prep_setup.c | 8 | ||||
-rw-r--r-- | arch/ppc/platforms/radstone_ppc7d.c | 6 | ||||
-rw-r--r-- | arch/ppc/platforms/sandpoint.c | 10 |
8 files changed, 10 insertions, 40 deletions
diff --git a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c index 9f9039498ae5..eda659916f24 100644 --- a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c +++ b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c | |||
@@ -173,10 +173,7 @@ mpc85xx_cds_init_IRQ(void) | |||
173 | #ifdef CONFIG_PCI | 173 | #ifdef CONFIG_PCI |
174 | openpic_hookup_cascade(PIRQ0A, "82c59 cascade", i8259_irq); | 174 | openpic_hookup_cascade(PIRQ0A, "82c59 cascade", i8259_irq); |
175 | 175 | ||
176 | for (i = 0; i < NUM_8259_INTERRUPTS; i++) | 176 | i8259_init(0, 0); |
177 | irq_desc[i].handler = &i8259_pic; | ||
178 | |||
179 | i8259_init(0); | ||
180 | #endif | 177 | #endif |
181 | 178 | ||
182 | #ifdef CONFIG_CPM2 | 179 | #ifdef CONFIG_CPM2 |
diff --git a/arch/ppc/platforms/chrp_setup.c b/arch/ppc/platforms/chrp_setup.c index 56c53bb3dfd4..dad81ffd4013 100644 --- a/arch/ppc/platforms/chrp_setup.c +++ b/arch/ppc/platforms/chrp_setup.c | |||
@@ -436,9 +436,7 @@ void __init chrp_init_IRQ(void) | |||
436 | i8259_irq); | 436 | i8259_irq); |
437 | 437 | ||
438 | } | 438 | } |
439 | for (i = 0; i < NUM_8259_INTERRUPTS; i++) | 439 | i8259_init(chrp_int_ack, 0); |
440 | irq_desc[i].handler = &i8259_pic; | ||
441 | i8259_init(chrp_int_ack); | ||
442 | 440 | ||
443 | #if defined(CONFIG_VT) && defined(CONFIG_INPUT_ADBHID) && defined(XMON) | 441 | #if defined(CONFIG_VT) && defined(CONFIG_INPUT_ADBHID) && defined(XMON) |
444 | /* see if there is a keyboard in the device tree | 442 | /* see if there is a keyboard in the device tree |
diff --git a/arch/ppc/platforms/lopec.c b/arch/ppc/platforms/lopec.c index 800c56a07a97..06d247c23b82 100644 --- a/arch/ppc/platforms/lopec.c +++ b/arch/ppc/platforms/lopec.c | |||
@@ -267,15 +267,11 @@ lopec_init_IRQ(void) | |||
267 | openpic_hookup_cascade(NUM_8259_INTERRUPTS, "82c59 cascade", | 267 | openpic_hookup_cascade(NUM_8259_INTERRUPTS, "82c59 cascade", |
268 | &i8259_irq); | 268 | &i8259_irq); |
269 | 269 | ||
270 | /* Map i8259 interrupts */ | ||
271 | for(i = 0; i < NUM_8259_INTERRUPTS; i++) | ||
272 | irq_desc[i].handler = &i8259_pic; | ||
273 | |||
274 | /* | 270 | /* |
275 | * The EPIC allows for a read in the range of 0xFEF00000 -> | 271 | * The EPIC allows for a read in the range of 0xFEF00000 -> |
276 | * 0xFEFFFFFF to generate a PCI interrupt-acknowledge transaction. | 272 | * 0xFEFFFFFF to generate a PCI interrupt-acknowledge transaction. |
277 | */ | 273 | */ |
278 | i8259_init(0xfef00000); | 274 | i8259_init(0xfef00000, 0); |
279 | } | 275 | } |
280 | 276 | ||
281 | static int __init | 277 | static int __init |
diff --git a/arch/ppc/platforms/mvme5100.c b/arch/ppc/platforms/mvme5100.c index ce2ce88c8033..108eb182dddc 100644 --- a/arch/ppc/platforms/mvme5100.c +++ b/arch/ppc/platforms/mvme5100.c | |||
@@ -223,11 +223,7 @@ mvme5100_init_IRQ(void) | |||
223 | openpic_hookup_cascade(NUM_8259_INTERRUPTS, "82c59 cascade", | 223 | openpic_hookup_cascade(NUM_8259_INTERRUPTS, "82c59 cascade", |
224 | &i8259_irq); | 224 | &i8259_irq); |
225 | 225 | ||
226 | /* Map i8259 interrupts. */ | 226 | i8259_init(0, 0); |
227 | for (i = 0; i < NUM_8259_INTERRUPTS; i++) | ||
228 | irq_desc[i].handler = &i8259_pic; | ||
229 | |||
230 | i8259_init(0); | ||
231 | #else | 227 | #else |
232 | openpic_init(0); | 228 | openpic_init(0); |
233 | #endif | 229 | #endif |
diff --git a/arch/ppc/platforms/pplus.c b/arch/ppc/platforms/pplus.c index 59eb330b2090..22bd40cfb092 100644 --- a/arch/ppc/platforms/pplus.c +++ b/arch/ppc/platforms/pplus.c | |||
@@ -665,10 +665,7 @@ static void __init pplus_init_IRQ(void) | |||
665 | ppc_md.get_irq = openpic_get_irq; | 665 | ppc_md.get_irq = openpic_get_irq; |
666 | } | 666 | } |
667 | 667 | ||
668 | for (i = 0; i < NUM_8259_INTERRUPTS; i++) | 668 | i8259_init(0, 0); |
669 | irq_desc[i].handler = &i8259_pic; | ||
670 | |||
671 | i8259_init(0); | ||
672 | 669 | ||
673 | if (ppc_md.progress) | 670 | if (ppc_md.progress) |
674 | ppc_md.progress("init_irq: exit", 0); | 671 | ppc_md.progress("init_irq: exit", 0); |
diff --git a/arch/ppc/platforms/prep_setup.c b/arch/ppc/platforms/prep_setup.c index 9e5637e5f5a9..067d7d53b81e 100644 --- a/arch/ppc/platforms/prep_setup.c +++ b/arch/ppc/platforms/prep_setup.c | |||
@@ -954,11 +954,9 @@ prep_init_IRQ(void) | |||
954 | openpic_hookup_cascade(NUM_8259_INTERRUPTS, "82c59 cascade", | 954 | openpic_hookup_cascade(NUM_8259_INTERRUPTS, "82c59 cascade", |
955 | i8259_irq); | 955 | i8259_irq); |
956 | } | 956 | } |
957 | for ( i = 0 ; i < NUM_8259_INTERRUPTS ; i++ ) | ||
958 | irq_desc[i].handler = &i8259_pic; | ||
959 | 957 | ||
960 | if (have_residual_data) { | 958 | if (have_residual_data) { |
961 | i8259_init(residual_isapic_addr()); | 959 | i8259_init(residual_isapic_addr(), 0); |
962 | return; | 960 | return; |
963 | } | 961 | } |
964 | 962 | ||
@@ -969,11 +967,11 @@ prep_init_IRQ(void) | |||
969 | if (((pci_viddid & 0xffff) == PCI_VENDOR_ID_MOTOROLA) | 967 | if (((pci_viddid & 0xffff) == PCI_VENDOR_ID_MOTOROLA) |
970 | && ((pci_did == PCI_DEVICE_ID_MOTOROLA_RAVEN) | 968 | && ((pci_did == PCI_DEVICE_ID_MOTOROLA_RAVEN) |
971 | || (pci_did == PCI_DEVICE_ID_MOTOROLA_HAWK))) | 969 | || (pci_did == PCI_DEVICE_ID_MOTOROLA_HAWK))) |
972 | i8259_init(0); | 970 | i8259_init(0, 0); |
973 | else | 971 | else |
974 | /* PCI interrupt ack address given in section 6.1.8 of the | 972 | /* PCI interrupt ack address given in section 6.1.8 of the |
975 | * PReP specification. */ | 973 | * PReP specification. */ |
976 | i8259_init(MPC10X_MAPA_PCI_INTACK_ADDR); | 974 | i8259_init(MPC10X_MAPA_PCI_INTACK_ADDR, 0); |
977 | } | 975 | } |
978 | 976 | ||
979 | #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) | 977 | #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) |
diff --git a/arch/ppc/platforms/radstone_ppc7d.c b/arch/ppc/platforms/radstone_ppc7d.c index 5058568c13ec..6f97911c330d 100644 --- a/arch/ppc/platforms/radstone_ppc7d.c +++ b/arch/ppc/platforms/radstone_ppc7d.c | |||
@@ -514,13 +514,9 @@ static void __init ppc7d_init_irq(void) | |||
514 | int irq; | 514 | int irq; |
515 | 515 | ||
516 | pr_debug("%s\n", __FUNCTION__); | 516 | pr_debug("%s\n", __FUNCTION__); |
517 | i8259_init(0); | 517 | i8259_init(0, 0); |
518 | mv64360_init_irq(); | 518 | mv64360_init_irq(); |
519 | 519 | ||
520 | /* IRQ 0..15 are handled by the cascaded 8259's of the Ali1535 */ | ||
521 | for (irq = 0; irq < 16; irq++) { | ||
522 | irq_desc[irq].handler = &i8259_pic; | ||
523 | } | ||
524 | /* IRQs 5,6,9,10,11,14,15 are level sensitive */ | 520 | /* IRQs 5,6,9,10,11,14,15 are level sensitive */ |
525 | irq_desc[5].status |= IRQ_LEVEL; | 521 | irq_desc[5].status |= IRQ_LEVEL; |
526 | irq_desc[6].status |= IRQ_LEVEL; | 522 | irq_desc[6].status |= IRQ_LEVEL; |
diff --git a/arch/ppc/platforms/sandpoint.c b/arch/ppc/platforms/sandpoint.c index d4c9781989fb..9eeed3572309 100644 --- a/arch/ppc/platforms/sandpoint.c +++ b/arch/ppc/platforms/sandpoint.c | |||
@@ -494,18 +494,10 @@ sandpoint_init_IRQ(void) | |||
494 | i8259_irq); | 494 | i8259_irq); |
495 | 495 | ||
496 | /* | 496 | /* |
497 | * openpic_init() has set up irq_desc[16-31] to be openpic | ||
498 | * interrupts. We need to set irq_desc[0-15] to be i8259 | ||
499 | * interrupts. | ||
500 | */ | ||
501 | for(i=0; i < NUM_8259_INTERRUPTS; i++) | ||
502 | irq_desc[i].handler = &i8259_pic; | ||
503 | |||
504 | /* | ||
505 | * The EPIC allows for a read in the range of 0xFEF00000 -> | 497 | * The EPIC allows for a read in the range of 0xFEF00000 -> |
506 | * 0xFEFFFFFF to generate a PCI interrupt-acknowledge transaction. | 498 | * 0xFEFFFFFF to generate a PCI interrupt-acknowledge transaction. |
507 | */ | 499 | */ |
508 | i8259_init(0xfef00000); | 500 | i8259_init(0xfef00000, 0); |
509 | } | 501 | } |
510 | 502 | ||
511 | static unsigned long __init | 503 | static unsigned long __init |