diff options
author | Jon Loeliger <jdl@freescale.com> | 2006-07-31 16:35:41 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-08-08 03:05:44 -0400 |
commit | 919fede6edab94cccb3ca8c1c0b32fa62c9369a5 (patch) | |
tree | 91820c190e4e8fbef6f2a57c0d1e6df014b1d50c /arch/powerpc/sysdev/fsl_soc.c | |
parent | afd05423e02bc7391a7489b686ba1e166b6e8349 (diff) |
[POWERPC] Rewrite the PPC 86xx IRQ handling to use Flat Device Tree
IRQ setup now comes from the Flat Device Tree and use the new generic
IRQ code. Fixed the fsl_soc.c IRQ OF interrupt node parsing.
Removed some unused MPC86xx macro definition.
Signed-off-by: Zhang Wei <wei.zhang@freescale.com>
Signed-off-by: Jon Loeliger <jdl@freescale.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/sysdev/fsl_soc.c')
-rw-r--r-- | arch/powerpc/sysdev/fsl_soc.c | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c index 07c47e8309e..4a6aa640ac1 100644 --- a/arch/powerpc/sysdev/fsl_soc.c +++ b/arch/powerpc/sysdev/fsl_soc.c | |||
@@ -85,11 +85,8 @@ static int __init gfar_mdio_of_init(void) | |||
85 | mdio_data.irq[k] = -1; | 85 | mdio_data.irq[k] = -1; |
86 | 86 | ||
87 | while ((child = of_get_next_child(np, child)) != NULL) { | 87 | while ((child = of_get_next_child(np, child)) != NULL) { |
88 | if (child->n_intrs) { | 88 | const u32 *id = get_property(child, "reg", NULL); |
89 | const u32 *id = | 89 | mdio_data.irq[*id] = irq_of_parse_and_map(child, 0); |
90 | get_property(child, "reg", NULL); | ||
91 | mdio_data.irq[*id] = child->intrs[0].line; | ||
92 | } | ||
93 | } | 90 | } |
94 | 91 | ||
95 | ret = | 92 | ret = |
@@ -131,6 +128,7 @@ static int __init gfar_of_init(void) | |||
131 | const char *model; | 128 | const char *model; |
132 | const void *mac_addr; | 129 | const void *mac_addr; |
133 | const phandle *ph; | 130 | const phandle *ph; |
131 | int n_res = 1; | ||
134 | 132 | ||
135 | memset(r, 0, sizeof(r)); | 133 | memset(r, 0, sizeof(r)); |
136 | memset(&gfar_data, 0, sizeof(gfar_data)); | 134 | memset(&gfar_data, 0, sizeof(gfar_data)); |
@@ -139,8 +137,7 @@ static int __init gfar_of_init(void) | |||
139 | if (ret) | 137 | if (ret) |
140 | goto err; | 138 | goto err; |
141 | 139 | ||
142 | r[1].start = np->intrs[0].line; | 140 | r[1].start = r[1].end = irq_of_parse_and_map(np, 0); |
143 | r[1].end = np->intrs[0].line; | ||
144 | r[1].flags = IORESOURCE_IRQ; | 141 | r[1].flags = IORESOURCE_IRQ; |
145 | 142 | ||
146 | model = get_property(np, "model", NULL); | 143 | model = get_property(np, "model", NULL); |
@@ -150,19 +147,19 @@ static int __init gfar_of_init(void) | |||
150 | r[1].name = gfar_tx_intr; | 147 | r[1].name = gfar_tx_intr; |
151 | 148 | ||
152 | r[2].name = gfar_rx_intr; | 149 | r[2].name = gfar_rx_intr; |
153 | r[2].start = np->intrs[1].line; | 150 | r[2].start = r[2].end = irq_of_parse_and_map(np, 1); |
154 | r[2].end = np->intrs[1].line; | ||
155 | r[2].flags = IORESOURCE_IRQ; | 151 | r[2].flags = IORESOURCE_IRQ; |
156 | 152 | ||
157 | r[3].name = gfar_err_intr; | 153 | r[3].name = gfar_err_intr; |
158 | r[3].start = np->intrs[2].line; | 154 | r[3].start = r[3].end = irq_of_parse_and_map(np, 2); |
159 | r[3].end = np->intrs[2].line; | ||
160 | r[3].flags = IORESOURCE_IRQ; | 155 | r[3].flags = IORESOURCE_IRQ; |
156 | |||
157 | n_res += 2; | ||
161 | } | 158 | } |
162 | 159 | ||
163 | gfar_dev = | 160 | gfar_dev = |
164 | platform_device_register_simple("fsl-gianfar", i, &r[0], | 161 | platform_device_register_simple("fsl-gianfar", i, &r[0], |
165 | np->n_intrs + 1); | 162 | n_res + 1); |
166 | 163 | ||
167 | if (IS_ERR(gfar_dev)) { | 164 | if (IS_ERR(gfar_dev)) { |
168 | ret = PTR_ERR(gfar_dev); | 165 | ret = PTR_ERR(gfar_dev); |
@@ -251,8 +248,7 @@ static int __init fsl_i2c_of_init(void) | |||
251 | if (ret) | 248 | if (ret) |
252 | goto err; | 249 | goto err; |
253 | 250 | ||
254 | r[1].start = np->intrs[0].line; | 251 | r[1].start = r[1].end = irq_of_parse_and_map(np, 0); |
255 | r[1].end = np->intrs[0].line; | ||
256 | r[1].flags = IORESOURCE_IRQ; | 252 | r[1].flags = IORESOURCE_IRQ; |
257 | 253 | ||
258 | i2c_dev = platform_device_register_simple("fsl-i2c", i, r, 2); | 254 | i2c_dev = platform_device_register_simple("fsl-i2c", i, r, 2); |
@@ -388,8 +384,7 @@ static int __init fsl_usb_of_init(void) | |||
388 | if (ret) | 384 | if (ret) |
389 | goto err; | 385 | goto err; |
390 | 386 | ||
391 | r[1].start = np->intrs[0].line; | 387 | r[1].start = r[1].end = irq_of_parse_and_map(np, 0); |
392 | r[1].end = np->intrs[0].line; | ||
393 | r[1].flags = IORESOURCE_IRQ; | 388 | r[1].flags = IORESOURCE_IRQ; |
394 | 389 | ||
395 | usb_dev_mph = | 390 | usb_dev_mph = |
@@ -437,8 +432,7 @@ static int __init fsl_usb_of_init(void) | |||
437 | if (ret) | 432 | if (ret) |
438 | goto unreg_mph; | 433 | goto unreg_mph; |
439 | 434 | ||
440 | r[1].start = np->intrs[0].line; | 435 | r[1].start = r[1].end = irq_of_parse_and_map(np, 0); |
441 | r[1].end = np->intrs[0].line; | ||
442 | r[1].flags = IORESOURCE_IRQ; | 436 | r[1].flags = IORESOURCE_IRQ; |
443 | 437 | ||
444 | usb_dev_dr = | 438 | usb_dev_dr = |