diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-iop32x/Kconfig | 9 | ||||
-rw-r--r-- | arch/arm/mach-iop32x/iq31244.c | 22 | ||||
-rw-r--r-- | arch/arm/mach-iop32x/iq80321.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-iop32x/irq.c | 54 | ||||
-rw-r--r-- | arch/arm/mach-iop33x/iq80331.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-iop33x/iq80332.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-iop33x/irq.c | 95 | ||||
-rw-r--r-- | arch/arm/mach-iop33x/uart.c | 37 | ||||
-rw-r--r-- | arch/arm/oprofile/op_model_xscale.c | 6 | ||||
-rw-r--r-- | arch/arm/plat-iop/i2c.c | 8 | ||||
-rw-r--r-- | arch/arm/plat-iop/time.c | 4 |
11 files changed, 127 insertions, 146 deletions
diff --git a/arch/arm/mach-iop32x/Kconfig b/arch/arm/mach-iop32x/Kconfig index ff8a77a8866e..d7abfaa525c3 100644 --- a/arch/arm/mach-iop32x/Kconfig +++ b/arch/arm/mach-iop32x/Kconfig | |||
@@ -8,13 +8,14 @@ config ARCH_IQ80321 | |||
8 | bool "Enable support for IQ80321" | 8 | bool "Enable support for IQ80321" |
9 | help | 9 | help |
10 | Say Y here if you want to run your kernel on the Intel IQ80321 | 10 | Say Y here if you want to run your kernel on the Intel IQ80321 |
11 | evaluation kit for the IOP321 chipset. | 11 | evaluation kit for the IOP321 processor. |
12 | 12 | ||
13 | config ARCH_IQ31244 | 13 | config ARCH_IQ31244 |
14 | bool "Enable support for IQ31244" | 14 | bool "Enable support for EP80219/IQ31244" |
15 | help | 15 | help |
16 | Say Y here if you want to run your kernel on the Intel IQ31244 | 16 | Say Y here if you want to run your kernel on the Intel EP80219 |
17 | evaluation kit for the IOP321 chipset. | 17 | evaluation kit for the Intel 80219 processor (a IOP321 variant) |
18 | or the IQ31244 evaluation kit for the IOP321 processor. | ||
18 | 19 | ||
19 | endmenu | 20 | endmenu |
20 | 21 | ||
diff --git a/arch/arm/mach-iop32x/iq31244.c b/arch/arm/mach-iop32x/iq31244.c index 88b77d32b0ac..be4aedfa0de6 100644 --- a/arch/arm/mach-iop32x/iq31244.c +++ b/arch/arm/mach-iop32x/iq31244.c | |||
@@ -98,16 +98,16 @@ ep80219_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
98 | 98 | ||
99 | if (slot == 0) { | 99 | if (slot == 0) { |
100 | /* CFlash */ | 100 | /* CFlash */ |
101 | irq = IRQ_IOP321_XINT1; | 101 | irq = IRQ_IOP32X_XINT1; |
102 | } else if (slot == 1) { | 102 | } else if (slot == 1) { |
103 | /* 82551 Pro 100 */ | 103 | /* 82551 Pro 100 */ |
104 | irq = IRQ_IOP321_XINT0; | 104 | irq = IRQ_IOP32X_XINT0; |
105 | } else if (slot == 2) { | 105 | } else if (slot == 2) { |
106 | /* PCI-X Slot */ | 106 | /* PCI-X Slot */ |
107 | irq = IRQ_IOP321_XINT3; | 107 | irq = IRQ_IOP32X_XINT3; |
108 | } else if (slot == 3) { | 108 | } else if (slot == 3) { |
109 | /* SATA */ | 109 | /* SATA */ |
110 | irq = IRQ_IOP321_XINT2; | 110 | irq = IRQ_IOP32X_XINT2; |
111 | } else { | 111 | } else { |
112 | printk(KERN_ERR "ep80219_pci_map_irq() called for unknown " | 112 | printk(KERN_ERR "ep80219_pci_map_irq() called for unknown " |
113 | "device PCI:%d:%d:%d\n", dev->bus->number, | 113 | "device PCI:%d:%d:%d\n", dev->bus->number, |
@@ -134,18 +134,18 @@ iq31244_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
134 | 134 | ||
135 | if (slot == 0) { | 135 | if (slot == 0) { |
136 | /* CFlash */ | 136 | /* CFlash */ |
137 | irq = IRQ_IOP321_XINT1; | 137 | irq = IRQ_IOP32X_XINT1; |
138 | } else if (slot == 1) { | 138 | } else if (slot == 1) { |
139 | /* SATA */ | 139 | /* SATA */ |
140 | irq = IRQ_IOP321_XINT2; | 140 | irq = IRQ_IOP32X_XINT2; |
141 | } else if (slot == 2) { | 141 | } else if (slot == 2) { |
142 | /* PCI-X Slot */ | 142 | /* PCI-X Slot */ |
143 | irq = IRQ_IOP321_XINT3; | 143 | irq = IRQ_IOP32X_XINT3; |
144 | } else if (slot == 3) { | 144 | } else if (slot == 3) { |
145 | /* 82546 GigE */ | 145 | /* 82546 GigE */ |
146 | irq = IRQ_IOP321_XINT0; | 146 | irq = IRQ_IOP32X_XINT0; |
147 | } else { | 147 | } else { |
148 | printk(KERN_ERR "iq31244_pci_map_irq() called for unknown " | 148 | printk(KERN_ERR "iq31244_pci_map_irq called for unknown " |
149 | "device PCI:%d:%d:%d\n", dev->bus->number, | 149 | "device PCI:%d:%d:%d\n", dev->bus->number, |
150 | PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn)); | 150 | PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn)); |
151 | irq = -1; | 151 | irq = -1; |
@@ -206,7 +206,7 @@ static struct plat_serial8250_port iq31244_serial_port[] = { | |||
206 | { | 206 | { |
207 | .mapbase = IQ31244_UART, | 207 | .mapbase = IQ31244_UART, |
208 | .membase = (char *)IQ31244_UART, | 208 | .membase = (char *)IQ31244_UART, |
209 | .irq = IRQ_IOP321_XINT1, | 209 | .irq = IRQ_IOP32X_XINT1, |
210 | .flags = UPF_SKIP_TEST, | 210 | .flags = UPF_SKIP_TEST, |
211 | .iotype = UPIO_MEM, | 211 | .iotype = UPIO_MEM, |
212 | .regshift = 0, | 212 | .regshift = 0, |
@@ -287,7 +287,7 @@ MACHINE_START(IQ31244, "Intel IQ31244") | |||
287 | .io_pg_offst = ((IQ31244_UART) >> 18) & 0xfffc, | 287 | .io_pg_offst = ((IQ31244_UART) >> 18) & 0xfffc, |
288 | .boot_params = 0xa0000100, | 288 | .boot_params = 0xa0000100, |
289 | .map_io = iq31244_map_io, | 289 | .map_io = iq31244_map_io, |
290 | .init_irq = iop321_init_irq, | 290 | .init_irq = iop32x_init_irq, |
291 | .timer = &iq31244_timer, | 291 | .timer = &iq31244_timer, |
292 | .init_machine = iq31244_init_machine, | 292 | .init_machine = iq31244_init_machine, |
293 | MACHINE_END | 293 | MACHINE_END |
diff --git a/arch/arm/mach-iop32x/iq80321.c b/arch/arm/mach-iop32x/iq80321.c index 3c9b86271759..1f37b5501888 100644 --- a/arch/arm/mach-iop32x/iq80321.c +++ b/arch/arm/mach-iop32x/iq80321.c | |||
@@ -78,19 +78,19 @@ iq80321_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
78 | 78 | ||
79 | if ((slot == 2 || slot == 6) && pin == 1) { | 79 | if ((slot == 2 || slot == 6) && pin == 1) { |
80 | /* PCI-X Slot INTA */ | 80 | /* PCI-X Slot INTA */ |
81 | irq = IRQ_IOP321_XINT2; | 81 | irq = IRQ_IOP32X_XINT2; |
82 | } else if ((slot == 2 || slot == 6) && pin == 2) { | 82 | } else if ((slot == 2 || slot == 6) && pin == 2) { |
83 | /* PCI-X Slot INTA */ | 83 | /* PCI-X Slot INTA */ |
84 | irq = IRQ_IOP321_XINT3; | 84 | irq = IRQ_IOP32X_XINT3; |
85 | } else if ((slot == 2 || slot == 6) && pin == 3) { | 85 | } else if ((slot == 2 || slot == 6) && pin == 3) { |
86 | /* PCI-X Slot INTA */ | 86 | /* PCI-X Slot INTA */ |
87 | irq = IRQ_IOP321_XINT0; | 87 | irq = IRQ_IOP32X_XINT0; |
88 | } else if ((slot == 2 || slot == 6) && pin == 4) { | 88 | } else if ((slot == 2 || slot == 6) && pin == 4) { |
89 | /* PCI-X Slot INTA */ | 89 | /* PCI-X Slot INTA */ |
90 | irq = IRQ_IOP321_XINT1; | 90 | irq = IRQ_IOP32X_XINT1; |
91 | } else if (slot == 4 || slot == 8) { | 91 | } else if (slot == 4 || slot == 8) { |
92 | /* Gig-E */ | 92 | /* Gig-E */ |
93 | irq = IRQ_IOP321_XINT0; | 93 | irq = IRQ_IOP32X_XINT0; |
94 | } else { | 94 | } else { |
95 | printk(KERN_ERR "iq80321_pci_map_irq() called for unknown " | 95 | printk(KERN_ERR "iq80321_pci_map_irq() called for unknown " |
96 | "device PCI:%d:%d:%d\n", dev->bus->number, | 96 | "device PCI:%d:%d:%d\n", dev->bus->number, |
@@ -148,7 +148,7 @@ static struct plat_serial8250_port iq80321_serial_port[] = { | |||
148 | { | 148 | { |
149 | .mapbase = IQ80321_UART, | 149 | .mapbase = IQ80321_UART, |
150 | .membase = (char *)IQ80321_UART, | 150 | .membase = (char *)IQ80321_UART, |
151 | .irq = IRQ_IOP321_XINT1, | 151 | .irq = IRQ_IOP32X_XINT1, |
152 | .flags = UPF_SKIP_TEST, | 152 | .flags = UPF_SKIP_TEST, |
153 | .iotype = UPIO_MEM, | 153 | .iotype = UPIO_MEM, |
154 | .regshift = 0, | 154 | .regshift = 0, |
@@ -187,7 +187,7 @@ MACHINE_START(IQ80321, "Intel IQ80321") | |||
187 | .io_pg_offst = ((IQ80321_UART) >> 18) & 0xfffc, | 187 | .io_pg_offst = ((IQ80321_UART) >> 18) & 0xfffc, |
188 | .boot_params = 0xa0000100, | 188 | .boot_params = 0xa0000100, |
189 | .map_io = iq80321_map_io, | 189 | .map_io = iq80321_map_io, |
190 | .init_irq = iop321_init_irq, | 190 | .init_irq = iop32x_init_irq, |
191 | .timer = &iq80321_timer, | 191 | .timer = &iq80321_timer, |
192 | .init_machine = iq80321_init_machine, | 192 | .init_machine = iq80321_init_machine, |
193 | MACHINE_END | 193 | MACHINE_END |
diff --git a/arch/arm/mach-iop32x/irq.c b/arch/arm/mach-iop32x/irq.c index ff049e02f5f7..21294be5a369 100644 --- a/arch/arm/mach-iop32x/irq.c +++ b/arch/arm/mach-iop32x/irq.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-iop32x/irq.c | 2 | * arch/arm/mach-iop32x/irq.c |
3 | * | 3 | * |
4 | * Generic IOP32X IRQ handling functionality | 4 | * Generic IOP32X IRQ handling functionality |
5 | * | 5 | * |
@@ -9,76 +9,66 @@ | |||
9 | * This program is free software; you can redistribute it and/or modify | 9 | * This program is free software; you can redistribute it and/or modify |
10 | * it under the terms of the GNU General Public License version 2 as | 10 | * it under the terms of the GNU General Public License version 2 as |
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | * | ||
13 | * Added IOP3XX chipset and IQ80321 board masking code. | ||
14 | * | ||
15 | */ | 12 | */ |
13 | |||
16 | #include <linux/init.h> | 14 | #include <linux/init.h> |
17 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
18 | #include <linux/list.h> | 16 | #include <linux/list.h> |
19 | |||
20 | #include <asm/mach/irq.h> | 17 | #include <asm/mach/irq.h> |
21 | #include <asm/irq.h> | 18 | #include <asm/irq.h> |
22 | #include <asm/hardware.h> | 19 | #include <asm/hardware.h> |
23 | |||
24 | #include <asm/mach-types.h> | 20 | #include <asm/mach-types.h> |
25 | 21 | ||
26 | static u32 iop321_mask /* = 0 */; | 22 | static u32 iop32x_mask; |
27 | 23 | ||
28 | static inline void intctl_write(u32 val) | 24 | static inline void intctl_write(u32 val) |
29 | { | 25 | { |
30 | iop3xx_cp6_enable(); | 26 | iop3xx_cp6_enable(); |
31 | asm volatile("mcr p6,0,%0,c0,c0,0"::"r" (val)); | 27 | asm volatile("mcr p6, 0, %0, c0, c0, 0" : : "r" (val)); |
32 | iop3xx_cp6_disable(); | 28 | iop3xx_cp6_disable(); |
33 | } | 29 | } |
34 | 30 | ||
35 | static inline void intstr_write(u32 val) | 31 | static inline void intstr_write(u32 val) |
36 | { | 32 | { |
37 | iop3xx_cp6_enable(); | 33 | iop3xx_cp6_enable(); |
38 | asm volatile("mcr p6,0,%0,c4,c0,0"::"r" (val)); | 34 | asm volatile("mcr p6, 0, %0, c4, c0, 0" : : "r" (val)); |
39 | iop3xx_cp6_disable(); | 35 | iop3xx_cp6_disable(); |
40 | } | 36 | } |
41 | 37 | ||
42 | static void | 38 | static void |
43 | iop321_irq_mask (unsigned int irq) | 39 | iop32x_irq_mask(unsigned int irq) |
44 | { | 40 | { |
45 | 41 | iop32x_mask &= ~(1 << irq); | |
46 | iop321_mask &= ~(1 << irq); | 42 | intctl_write(iop32x_mask); |
47 | |||
48 | intctl_write(iop321_mask); | ||
49 | } | 43 | } |
50 | 44 | ||
51 | static void | 45 | static void |
52 | iop321_irq_unmask (unsigned int irq) | 46 | iop32x_irq_unmask(unsigned int irq) |
53 | { | 47 | { |
54 | iop321_mask |= (1 << irq); | 48 | iop32x_mask |= 1 << irq; |
55 | 49 | intctl_write(iop32x_mask); | |
56 | intctl_write(iop321_mask); | ||
57 | } | 50 | } |
58 | 51 | ||
59 | struct irq_chip ext_chip = { | 52 | struct irq_chip ext_chip = { |
60 | .name = "IOP", | 53 | .name = "IOP32x", |
61 | .ack = iop321_irq_mask, | 54 | .ack = iop32x_irq_mask, |
62 | .mask = iop321_irq_mask, | 55 | .mask = iop32x_irq_mask, |
63 | .unmask = iop321_irq_unmask, | 56 | .unmask = iop32x_irq_unmask, |
64 | }; | 57 | }; |
65 | 58 | ||
66 | void __init iop321_init_irq(void) | 59 | void __init iop32x_init_irq(void) |
67 | { | 60 | { |
68 | unsigned int i; | 61 | int i; |
69 | 62 | ||
70 | intctl_write(0); // disable all interrupts | 63 | intctl_write(0); |
71 | intstr_write(0); // treat all as IRQ | 64 | intstr_write(0); |
72 | if(machine_is_iq80321() || | 65 | if (machine_is_iq80321() || |
73 | machine_is_iq31244()) // all interrupts are inputs to chip | 66 | machine_is_iq31244()) |
74 | *IOP3XX_PCIIRSR = 0x0f; | 67 | *IOP3XX_PCIIRSR = 0x0f; |
75 | 68 | ||
76 | for(i = 0; i < NR_IRQS; i++) | 69 | for (i = 0; i < NR_IRQS; i++) { |
77 | { | ||
78 | set_irq_chip(i, &ext_chip); | 70 | set_irq_chip(i, &ext_chip); |
79 | set_irq_handler(i, do_level_IRQ); | 71 | set_irq_handler(i, do_level_IRQ); |
80 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); | 72 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); |
81 | |||
82 | } | 73 | } |
83 | } | 74 | } |
84 | |||
diff --git a/arch/arm/mach-iop33x/iq80331.c b/arch/arm/mach-iop33x/iq80331.c index 6b8475da3df6..97a7b7488264 100644 --- a/arch/arm/mach-iop33x/iq80331.c +++ b/arch/arm/mach-iop33x/iq80331.c | |||
@@ -61,19 +61,19 @@ iq80331_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
61 | 61 | ||
62 | if (slot == 1 && pin == 1) { | 62 | if (slot == 1 && pin == 1) { |
63 | /* PCI-X Slot INTA */ | 63 | /* PCI-X Slot INTA */ |
64 | irq = IRQ_IOP331_XINT1; | 64 | irq = IRQ_IOP33X_XINT1; |
65 | } else if (slot == 1 && pin == 2) { | 65 | } else if (slot == 1 && pin == 2) { |
66 | /* PCI-X Slot INTB */ | 66 | /* PCI-X Slot INTB */ |
67 | irq = IRQ_IOP331_XINT2; | 67 | irq = IRQ_IOP33X_XINT2; |
68 | } else if (slot == 1 && pin == 3) { | 68 | } else if (slot == 1 && pin == 3) { |
69 | /* PCI-X Slot INTC */ | 69 | /* PCI-X Slot INTC */ |
70 | irq = IRQ_IOP331_XINT3; | 70 | irq = IRQ_IOP33X_XINT3; |
71 | } else if (slot == 1 && pin == 4) { | 71 | } else if (slot == 1 && pin == 4) { |
72 | /* PCI-X Slot INTD */ | 72 | /* PCI-X Slot INTD */ |
73 | irq = IRQ_IOP331_XINT0; | 73 | irq = IRQ_IOP33X_XINT0; |
74 | } else if (slot == 2) { | 74 | } else if (slot == 2) { |
75 | /* GigE */ | 75 | /* GigE */ |
76 | irq = IRQ_IOP331_XINT2; | 76 | irq = IRQ_IOP33X_XINT2; |
77 | } else { | 77 | } else { |
78 | printk(KERN_ERR "iq80331_pci_map_irq() called for unknown " | 78 | printk(KERN_ERR "iq80331_pci_map_irq() called for unknown " |
79 | "device PCI:%d:%d:%d\n", dev->bus->number, | 79 | "device PCI:%d:%d:%d\n", dev->bus->number, |
@@ -142,7 +142,7 @@ MACHINE_START(IQ80331, "Intel IQ80331") | |||
142 | .io_pg_offst = ((0xfffff000) >> 18) & 0xfffc, | 142 | .io_pg_offst = ((0xfffff000) >> 18) & 0xfffc, |
143 | .boot_params = 0x00000100, | 143 | .boot_params = 0x00000100, |
144 | .map_io = iop3xx_map_io, | 144 | .map_io = iop3xx_map_io, |
145 | .init_irq = iop331_init_irq, | 145 | .init_irq = iop33x_init_irq, |
146 | .timer = &iq80331_timer, | 146 | .timer = &iq80331_timer, |
147 | .init_machine = iq80331_init_machine, | 147 | .init_machine = iq80331_init_machine, |
148 | MACHINE_END | 148 | MACHINE_END |
diff --git a/arch/arm/mach-iop33x/iq80332.c b/arch/arm/mach-iop33x/iq80332.c index 150f3fd5de0b..9887bfc1c078 100644 --- a/arch/arm/mach-iop33x/iq80332.c +++ b/arch/arm/mach-iop33x/iq80332.c | |||
@@ -61,19 +61,19 @@ iq80332_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
61 | 61 | ||
62 | if (slot == 4 && pin == 1) { | 62 | if (slot == 4 && pin == 1) { |
63 | /* PCI-X Slot INTA */ | 63 | /* PCI-X Slot INTA */ |
64 | irq = IRQ_IOP331_XINT0; | 64 | irq = IRQ_IOP33X_XINT0; |
65 | } else if (slot == 4 && pin == 2) { | 65 | } else if (slot == 4 && pin == 2) { |
66 | /* PCI-X Slot INTB */ | 66 | /* PCI-X Slot INTB */ |
67 | irq = IRQ_IOP331_XINT1; | 67 | irq = IRQ_IOP33X_XINT1; |
68 | } else if (slot == 4 && pin == 3) { | 68 | } else if (slot == 4 && pin == 3) { |
69 | /* PCI-X Slot INTC */ | 69 | /* PCI-X Slot INTC */ |
70 | irq = IRQ_IOP331_XINT2; | 70 | irq = IRQ_IOP33X_XINT2; |
71 | } else if (slot == 4 && pin == 4) { | 71 | } else if (slot == 4 && pin == 4) { |
72 | /* PCI-X Slot INTD */ | 72 | /* PCI-X Slot INTD */ |
73 | irq = IRQ_IOP331_XINT3; | 73 | irq = IRQ_IOP33X_XINT3; |
74 | } else if (slot == 6) { | 74 | } else if (slot == 6) { |
75 | /* GigE */ | 75 | /* GigE */ |
76 | irq = IRQ_IOP331_XINT2; | 76 | irq = IRQ_IOP33X_XINT2; |
77 | } else { | 77 | } else { |
78 | printk(KERN_ERR "iq80332_pci_map_irq() called for unknown " | 78 | printk(KERN_ERR "iq80332_pci_map_irq() called for unknown " |
79 | "device PCI:%d:%d:%d\n", dev->bus->number, | 79 | "device PCI:%d:%d:%d\n", dev->bus->number, |
@@ -142,7 +142,7 @@ MACHINE_START(IQ80332, "Intel IQ80332") | |||
142 | .io_pg_offst = ((0xfffff000) >> 18) & 0xfffc, | 142 | .io_pg_offst = ((0xfffff000) >> 18) & 0xfffc, |
143 | .boot_params = 0x00000100, | 143 | .boot_params = 0x00000100, |
144 | .map_io = iop3xx_map_io, | 144 | .map_io = iop3xx_map_io, |
145 | .init_irq = iop331_init_irq, | 145 | .init_irq = iop33x_init_irq, |
146 | .timer = &iq80332_timer, | 146 | .timer = &iq80332_timer, |
147 | .init_machine = iq80332_init_machine, | 147 | .init_machine = iq80332_init_machine, |
148 | MACHINE_END | 148 | MACHINE_END |
diff --git a/arch/arm/mach-iop33x/irq.c b/arch/arm/mach-iop33x/irq.c index 3c720551ac12..63304b3d0d76 100644 --- a/arch/arm/mach-iop33x/irq.c +++ b/arch/arm/mach-iop33x/irq.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-iop33x/irq.c | 2 | * arch/arm/mach-iop33x/irq.c |
3 | * | 3 | * |
4 | * Generic IOP331 IRQ handling functionality | 4 | * Generic IOP331 IRQ handling functionality |
5 | * | 5 | * |
@@ -9,51 +9,44 @@ | |||
9 | * This program is free software; you can redistribute it and/or modify | 9 | * This program is free software; you can redistribute it and/or modify |
10 | * it under the terms of the GNU General Public License version 2 as | 10 | * it under the terms of the GNU General Public License version 2 as |
11 | * published by the Free Software Foundation. | 11 | * published by the Free Software Foundation. |
12 | * | ||
13 | * | ||
14 | */ | 12 | */ |
13 | |||
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
16 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
17 | #include <linux/list.h> | 16 | #include <linux/list.h> |
18 | |||
19 | #include <asm/mach/irq.h> | 17 | #include <asm/mach/irq.h> |
20 | #include <asm/irq.h> | 18 | #include <asm/irq.h> |
21 | #include <asm/hardware.h> | 19 | #include <asm/hardware.h> |
22 | |||
23 | #include <asm/mach-types.h> | 20 | #include <asm/mach-types.h> |
24 | 21 | ||
25 | static u32 iop331_mask0 = 0; | 22 | static u32 iop33x_mask0; |
26 | static u32 iop331_mask1 = 0; | 23 | static u32 iop33x_mask1; |
27 | 24 | ||
28 | static inline void intctl_write0(u32 val) | 25 | static inline void intctl0_write(u32 val) |
29 | { | 26 | { |
30 | // INTCTL0 | ||
31 | iop3xx_cp6_enable(); | 27 | iop3xx_cp6_enable(); |
32 | asm volatile("mcr p6,0,%0,c0,c0,0"::"r" (val)); | 28 | asm volatile("mcr p6, 0, %0, c0, c0, 0" : : "r" (val)); |
33 | iop3xx_cp6_disable(); | 29 | iop3xx_cp6_disable(); |
34 | } | 30 | } |
35 | 31 | ||
36 | static inline void intctl_write1(u32 val) | 32 | static inline void intctl1_write(u32 val) |
37 | { | 33 | { |
38 | // INTCTL1 | ||
39 | iop3xx_cp6_enable(); | 34 | iop3xx_cp6_enable(); |
40 | asm volatile("mcr p6,0,%0,c1,c0,0"::"r" (val)); | 35 | asm volatile("mcr p6, 0, %0, c1, c0, 0" : : "r" (val)); |
41 | iop3xx_cp6_disable(); | 36 | iop3xx_cp6_disable(); |
42 | } | 37 | } |
43 | 38 | ||
44 | static inline void intstr_write0(u32 val) | 39 | static inline void intstr0_write(u32 val) |
45 | { | 40 | { |
46 | // INTSTR0 | ||
47 | iop3xx_cp6_enable(); | 41 | iop3xx_cp6_enable(); |
48 | asm volatile("mcr p6,0,%0,c2,c0,0"::"r" (val)); | 42 | asm volatile("mcr p6, 0, %0, c2, c0, 0" : : "r" (val)); |
49 | iop3xx_cp6_disable(); | 43 | iop3xx_cp6_disable(); |
50 | } | 44 | } |
51 | 45 | ||
52 | static inline void intstr_write1(u32 val) | 46 | static inline void intstr1_write(u32 val) |
53 | { | 47 | { |
54 | // INTSTR1 | ||
55 | iop3xx_cp6_enable(); | 48 | iop3xx_cp6_enable(); |
56 | asm volatile("mcr p6,0,%0,c3,c0,0"::"r" (val)); | 49 | asm volatile("mcr p6, 0, %0, c3, c0, 0" : : "r" (val)); |
57 | iop3xx_cp6_disable(); | 50 | iop3xx_cp6_disable(); |
58 | } | 51 | } |
59 | 52 | ||
@@ -72,65 +65,63 @@ static inline void intsize_write(u32 val) | |||
72 | } | 65 | } |
73 | 66 | ||
74 | static void | 67 | static void |
75 | iop331_irq_mask1 (unsigned int irq) | 68 | iop33x_irq_mask1 (unsigned int irq) |
76 | { | 69 | { |
77 | iop331_mask0 &= ~(1 << irq); | 70 | iop33x_mask0 &= ~(1 << irq); |
78 | intctl_write0(iop331_mask0); | 71 | intctl0_write(iop33x_mask0); |
79 | } | 72 | } |
80 | 73 | ||
81 | static void | 74 | static void |
82 | iop331_irq_mask2 (unsigned int irq) | 75 | iop33x_irq_mask2 (unsigned int irq) |
83 | { | 76 | { |
84 | iop331_mask1 &= ~(1 << (irq - 32)); | 77 | iop33x_mask1 &= ~(1 << (irq - 32)); |
85 | intctl_write1(iop331_mask1); | 78 | intctl1_write(iop33x_mask1); |
86 | } | 79 | } |
87 | 80 | ||
88 | static void | 81 | static void |
89 | iop331_irq_unmask1(unsigned int irq) | 82 | iop33x_irq_unmask1(unsigned int irq) |
90 | { | 83 | { |
91 | iop331_mask0 |= (1 << irq); | 84 | iop33x_mask0 |= 1 << irq; |
92 | intctl_write0(iop331_mask0); | 85 | intctl0_write(iop33x_mask0); |
93 | } | 86 | } |
94 | 87 | ||
95 | static void | 88 | static void |
96 | iop331_irq_unmask2(unsigned int irq) | 89 | iop33x_irq_unmask2(unsigned int irq) |
97 | { | 90 | { |
98 | iop331_mask1 |= (1 << (irq - 32)); | 91 | iop33x_mask1 |= (1 << (irq - 32)); |
99 | intctl_write1(iop331_mask1); | 92 | intctl1_write(iop33x_mask1); |
100 | } | 93 | } |
101 | 94 | ||
102 | struct irq_chip iop331_irqchip1 = { | 95 | struct irq_chip iop33x_irqchip1 = { |
103 | .name = "IOP-1", | 96 | .name = "IOP33x-1", |
104 | .ack = iop331_irq_mask1, | 97 | .ack = iop33x_irq_mask1, |
105 | .mask = iop331_irq_mask1, | 98 | .mask = iop33x_irq_mask1, |
106 | .unmask = iop331_irq_unmask1, | 99 | .unmask = iop33x_irq_unmask1, |
107 | }; | 100 | }; |
108 | 101 | ||
109 | struct irq_chip iop331_irqchip2 = { | 102 | struct irq_chip iop33x_irqchip2 = { |
110 | .name = "IOP-2", | 103 | .name = "IOP33x-2", |
111 | .ack = iop331_irq_mask2, | 104 | .ack = iop33x_irq_mask2, |
112 | .mask = iop331_irq_mask2, | 105 | .mask = iop33x_irq_mask2, |
113 | .unmask = iop331_irq_unmask2, | 106 | .unmask = iop33x_irq_unmask2, |
114 | }; | 107 | }; |
115 | 108 | ||
116 | void __init iop331_init_irq(void) | 109 | void __init iop33x_init_irq(void) |
117 | { | 110 | { |
118 | unsigned int i; | 111 | int i; |
119 | 112 | ||
120 | intctl_write0(0); // disable all interrupts | 113 | intctl0_write(0); |
121 | intctl_write1(0); | 114 | intctl1_write(0); |
122 | intstr_write0(0); // treat all as IRQ | 115 | intstr0_write(0); |
123 | intstr_write1(0); | 116 | intstr1_write(0); |
124 | intbase_write(0); | 117 | intbase_write(0); |
125 | intsize_write(1); | 118 | intsize_write(1); |
126 | if(machine_is_iq80331()) // all interrupts are inputs to chip | 119 | if (machine_is_iq80331()) |
127 | *IOP3XX_PCIIRSR = 0x0f; | 120 | *IOP3XX_PCIIRSR = 0x0f; |
128 | 121 | ||
129 | for(i = 0; i < NR_IRQS; i++) | 122 | for (i = 0; i < NR_IRQS; i++) { |
130 | { | 123 | set_irq_chip(i, (i < 32) ? &iop33x_irqchip1 : &iop33x_irqchip2); |
131 | set_irq_chip(i, (i < 32) ? &iop331_irqchip1 : &iop331_irqchip2); | ||
132 | set_irq_handler(i, do_level_IRQ); | 124 | set_irq_handler(i, do_level_IRQ); |
133 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); | 125 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); |
134 | } | 126 | } |
135 | } | 127 | } |
136 | |||
diff --git a/arch/arm/mach-iop33x/uart.c b/arch/arm/mach-iop33x/uart.c index d221d4abaa87..ac297cd0276c 100644 --- a/arch/arm/mach-iop33x/uart.c +++ b/arch/arm/mach-iop33x/uart.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-iop33x/uart.c | 2 | * arch/arm/mach-iop33x/uart.c |
3 | * | 3 | * |
4 | * Author: Dave Jiang (dave.jiang@intel.com) | 4 | * Author: Dave Jiang (dave.jiang@intel.com) |
5 | * Copyright (C) 2004 Intel Corporation. | 5 | * Copyright (C) 2004 Intel Corporation. |
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/serial.h> | 17 | #include <linux/serial.h> |
18 | #include <linux/tty.h> | 18 | #include <linux/tty.h> |
19 | #include <linux/serial_8250.h> | 19 | #include <linux/serial_8250.h> |
20 | |||
21 | #include <asm/io.h> | 20 | #include <asm/io.h> |
22 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
23 | #include <asm/page.h> | 22 | #include <asm/page.h> |
@@ -30,14 +29,14 @@ | |||
30 | #include <asm/mach-types.h> | 29 | #include <asm/mach-types.h> |
31 | #include <asm/mach/arch.h> | 30 | #include <asm/mach/arch.h> |
32 | 31 | ||
33 | #define IOP331_UART_XTAL 33334000 | 32 | #define IOP33X_UART_XTAL 33334000 |
34 | 33 | ||
35 | static struct plat_serial8250_port iop33x_uart0_data[] = { | 34 | static struct plat_serial8250_port iop33x_uart0_data[] = { |
36 | { | 35 | { |
37 | .membase = (char *)IOP331_UART0_VIRT, | 36 | .membase = (char *)IOP33X_UART0_VIRT, |
38 | .mapbase = IOP331_UART0_PHYS, | 37 | .mapbase = IOP33X_UART0_PHYS, |
39 | .irq = IRQ_IOP331_UART0, | 38 | .irq = IRQ_IOP33X_UART0, |
40 | .uartclk = IOP331_UART_XTAL, | 39 | .uartclk = IOP33X_UART_XTAL, |
41 | .regshift = 2, | 40 | .regshift = 2, |
42 | .iotype = UPIO_MEM, | 41 | .iotype = UPIO_MEM, |
43 | .flags = UPF_SKIP_TEST, | 42 | .flags = UPF_SKIP_TEST, |
@@ -47,13 +46,13 @@ static struct plat_serial8250_port iop33x_uart0_data[] = { | |||
47 | 46 | ||
48 | static struct resource iop33x_uart0_resources[] = { | 47 | static struct resource iop33x_uart0_resources[] = { |
49 | [0] = { | 48 | [0] = { |
50 | .start = IOP331_UART0_PHYS, | 49 | .start = IOP33X_UART0_PHYS, |
51 | .end = IOP331_UART0_PHYS + 0x3f, | 50 | .end = IOP33X_UART0_PHYS + 0x3f, |
52 | .flags = IORESOURCE_MEM, | 51 | .flags = IORESOURCE_MEM, |
53 | }, | 52 | }, |
54 | [1] = { | 53 | [1] = { |
55 | .start = IRQ_IOP331_UART0, | 54 | .start = IRQ_IOP33X_UART0, |
56 | .end = IRQ_IOP331_UART0, | 55 | .end = IRQ_IOP33X_UART0, |
57 | .flags = IORESOURCE_IRQ, | 56 | .flags = IORESOURCE_IRQ, |
58 | }, | 57 | }, |
59 | }; | 58 | }; |
@@ -71,23 +70,23 @@ struct platform_device iop33x_uart0_device = { | |||
71 | 70 | ||
72 | static struct resource iop33x_uart1_resources[] = { | 71 | static struct resource iop33x_uart1_resources[] = { |
73 | [0] = { | 72 | [0] = { |
74 | .start = IOP331_UART1_PHYS, | 73 | .start = IOP33X_UART1_PHYS, |
75 | .end = IOP331_UART1_PHYS + 0x3f, | 74 | .end = IOP33X_UART1_PHYS + 0x3f, |
76 | .flags = IORESOURCE_MEM, | 75 | .flags = IORESOURCE_MEM, |
77 | }, | 76 | }, |
78 | [1] = { | 77 | [1] = { |
79 | .start = IRQ_IOP331_UART1, | 78 | .start = IRQ_IOP33X_UART1, |
80 | .end = IRQ_IOP331_UART1, | 79 | .end = IRQ_IOP33X_UART1, |
81 | .flags = IORESOURCE_IRQ, | 80 | .flags = IORESOURCE_IRQ, |
82 | }, | 81 | }, |
83 | }; | 82 | }; |
84 | 83 | ||
85 | static struct plat_serial8250_port iop33x_uart1_data[] = { | 84 | static struct plat_serial8250_port iop33x_uart1_data[] = { |
86 | { | 85 | { |
87 | .membase = (char *)IOP331_UART1_VIRT, | 86 | .membase = (char *)IOP33X_UART1_VIRT, |
88 | .mapbase = IOP331_UART1_PHYS, | 87 | .mapbase = IOP33X_UART1_PHYS, |
89 | .irq = IRQ_IOP331_UART1, | 88 | .irq = IRQ_IOP33X_UART1, |
90 | .uartclk = IOP331_UART_XTAL, | 89 | .uartclk = IOP33X_UART_XTAL, |
91 | .regshift = 2, | 90 | .regshift = 2, |
92 | .iotype = UPIO_MEM, | 91 | .iotype = UPIO_MEM, |
93 | .flags = UPF_SKIP_TEST, | 92 | .flags = UPF_SKIP_TEST, |
diff --git a/arch/arm/oprofile/op_model_xscale.c b/arch/arm/oprofile/op_model_xscale.c index 7e0cc5b15b15..6576143f2559 100644 --- a/arch/arm/oprofile/op_model_xscale.c +++ b/arch/arm/oprofile/op_model_xscale.c | |||
@@ -37,10 +37,10 @@ | |||
37 | #define XSCALE_PMU_IRQ IRQ_XS80200_PMU | 37 | #define XSCALE_PMU_IRQ IRQ_XS80200_PMU |
38 | #endif | 38 | #endif |
39 | #ifdef CONFIG_ARCH_IOP32X | 39 | #ifdef CONFIG_ARCH_IOP32X |
40 | #define XSCALE_PMU_IRQ IRQ_IOP321_CORE_PMU | 40 | #define XSCALE_PMU_IRQ IRQ_IOP32X_CORE_PMU |
41 | #endif | 41 | #endif |
42 | #ifdef CONFIG_ARCH_IOP33X | 42 | #ifdef CONFIG_ARCH_IOP33X |
43 | #define XSCALE_PMU_IRQ IRQ_IOP331_CORE_PMU | 43 | #define XSCALE_PMU_IRQ IRQ_IOP33X_CORE_PMU |
44 | #endif | 44 | #endif |
45 | #ifdef CONFIG_ARCH_PXA | 45 | #ifdef CONFIG_ARCH_PXA |
46 | #define XSCALE_PMU_IRQ IRQ_PMU | 46 | #define XSCALE_PMU_IRQ IRQ_PMU |
@@ -88,7 +88,7 @@ static struct pmu_counter results[MAX_COUNTERS]; | |||
88 | /* | 88 | /* |
89 | * There are two versions of the PMU in current XScale processors | 89 | * There are two versions of the PMU in current XScale processors |
90 | * with differing register layouts and number of performance counters. | 90 | * with differing register layouts and number of performance counters. |
91 | * e.g. IOP321 is xsc1 whilst IOP331 is xsc2. | 91 | * e.g. IOP32x is xsc1 whilst IOP33x is xsc2. |
92 | * We detect which register layout to use in xscale_detect_pmu() | 92 | * We detect which register layout to use in xscale_detect_pmu() |
93 | */ | 93 | */ |
94 | enum { PMU_XSC1, PMU_XSC2 }; | 94 | enum { PMU_XSC1, PMU_XSC2 }; |
diff --git a/arch/arm/plat-iop/i2c.c b/arch/arm/plat-iop/i2c.c index 7ae149c2e982..e99909bdba71 100644 --- a/arch/arm/plat-iop/i2c.c +++ b/arch/arm/plat-iop/i2c.c | |||
@@ -31,12 +31,12 @@ | |||
31 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
32 | 32 | ||
33 | #ifdef CONFIG_ARCH_IOP32X | 33 | #ifdef CONFIG_ARCH_IOP32X |
34 | #define IRQ_IOP3XX_I2C_0 IRQ_IOP321_I2C_0 | 34 | #define IRQ_IOP3XX_I2C_0 IRQ_IOP32X_I2C_0 |
35 | #define IRQ_IOP3XX_I2C_1 IRQ_IOP321_I2C_1 | 35 | #define IRQ_IOP3XX_I2C_1 IRQ_IOP32X_I2C_1 |
36 | #endif | 36 | #endif |
37 | #ifdef CONFIG_ARCH_IOP33X | 37 | #ifdef CONFIG_ARCH_IOP33X |
38 | #define IRQ_IOP3XX_I2C_0 IRQ_IOP331_I2C_0 | 38 | #define IRQ_IOP3XX_I2C_0 IRQ_IOP33X_I2C_0 |
39 | #define IRQ_IOP3XX_I2C_1 IRQ_IOP331_I2C_1 | 39 | #define IRQ_IOP3XX_I2C_1 IRQ_IOP33X_I2C_1 |
40 | #endif | 40 | #endif |
41 | 41 | ||
42 | static struct resource iop3xx_i2c0_resources[] = { | 42 | static struct resource iop3xx_i2c0_resources[] = { |
diff --git a/arch/arm/plat-iop/time.c b/arch/arm/plat-iop/time.c index bed20f3669f4..06282dffbdc6 100644 --- a/arch/arm/plat-iop/time.c +++ b/arch/arm/plat-iop/time.c | |||
@@ -26,10 +26,10 @@ | |||
26 | #include <asm/mach/time.h> | 26 | #include <asm/mach/time.h> |
27 | 27 | ||
28 | #ifdef CONFIG_ARCH_IOP32X | 28 | #ifdef CONFIG_ARCH_IOP32X |
29 | #define IRQ_IOP3XX_TIMER0 IRQ_IOP321_TIMER0 | 29 | #define IRQ_IOP3XX_TIMER0 IRQ_IOP32X_TIMER0 |
30 | #else | 30 | #else |
31 | #ifdef CONFIG_ARCH_IOP33X | 31 | #ifdef CONFIG_ARCH_IOP33X |
32 | #define IRQ_IOP3XX_TIMER0 IRQ_IOP331_TIMER0 | 32 | #define IRQ_IOP3XX_TIMER0 IRQ_IOP33X_TIMER0 |
33 | #endif | 33 | #endif |
34 | #endif | 34 | #endif |
35 | 35 | ||