summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/embedded6xx/linkstation.c
diff options
context:
space:
mode:
authorKyle Moffett2011-12-02 07:28:01 +0100
committerBenjamin Herrenschmidt2011-12-07 03:43:07 +0100
commite7a98675caf272a11dc1012c7a8c6c00cab09f5b (patch)
tree856c69993207021ffda5550d3e12d88de7381e15 /arch/powerpc/platforms/embedded6xx/linkstation.c
parentpowerpc/mpic: Assume a device-node was passed in mpic_alloc() (diff)
downloadkernel-qcow2-linux-e7a98675caf272a11dc1012c7a8c6c00cab09f5b.tar.gz
kernel-qcow2-linux-e7a98675caf272a11dc1012c7a8c6c00cab09f5b.tar.xz
kernel-qcow2-linux-e7a98675caf272a11dc1012c7a8c6c00cab09f5b.zip
powerpc/mpic: Save computed phys_addr for board-specific code
The MPIC code can already perform an automatic OF address translation step as part of mpic_alloc(), but several boards need to use that base address when they perform mpic_assign_isu(). The easiest solution is to save the computed physical address into the "struct mpic" for later use by the board code. Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/platforms/embedded6xx/linkstation.c')
-rw-r--r--arch/powerpc/platforms/embedded6xx/linkstation.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/arch/powerpc/platforms/embedded6xx/linkstation.c b/arch/powerpc/platforms/embedded6xx/linkstation.c
index 244f997de791..72b36850c5e3 100644
--- a/arch/powerpc/platforms/embedded6xx/linkstation.c
+++ b/arch/powerpc/platforms/embedded6xx/linkstation.c
@@ -82,28 +82,22 @@ static void __init linkstation_init_IRQ(void)
{
struct mpic *mpic;
struct device_node *dnp;
- const u32 *prop;
- int size;
- phys_addr_t paddr;
dnp = of_find_node_by_type(NULL, "open-pic");
if (dnp == NULL)
return;
- prop = of_get_property(dnp, "reg", &size);
- paddr = (phys_addr_t)of_translate_address(dnp, prop);
-
- mpic = mpic_alloc(dnp, paddr, MPIC_PRIMARY | MPIC_WANTS_RESET, 4, 32, " EPIC ");
+ mpic = mpic_alloc(dnp, 0, MPIC_PRIMARY | MPIC_WANTS_RESET, 4, 32, " EPIC ");
BUG_ON(mpic == NULL);
/* PCI IRQs */
- mpic_assign_isu(mpic, 0, paddr + 0x10200);
+ mpic_assign_isu(mpic, 0, mpic->paddr + 0x10200);
/* I2C */
- mpic_assign_isu(mpic, 1, paddr + 0x11000);
+ mpic_assign_isu(mpic, 1, mpic->paddr + 0x11000);
/* ttyS0, ttyS1 */
- mpic_assign_isu(mpic, 2, paddr + 0x11100);
+ mpic_assign_isu(mpic, 2, mpic->paddr + 0x11100);
mpic_init(mpic);
}