summaryrefslogtreecommitdiff
path: root/arch/powerpc/platforms/embedded6xx/ls_uart.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/platforms/embedded6xx/ls_uart.c')
-rw-r--r--arch/powerpc/platforms/embedded6xx/ls_uart.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/arch/powerpc/platforms/embedded6xx/ls_uart.c b/arch/powerpc/platforms/embedded6xx/ls_uart.c
index 9d891bd5df5a..6c1dbf8ae718 100644
--- a/arch/powerpc/platforms/embedded6xx/ls_uart.c
+++ b/arch/powerpc/platforms/embedded6xx/ls_uart.c
@@ -14,8 +14,9 @@
#include <linux/delay.h>
#include <linux/serial_reg.h>
#include <linux/serial_8250.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
#include <asm/io.h>
-#include <asm/prom.h>
#include <asm/termbits.h>
#include "mpc10x.h"
@@ -114,20 +115,24 @@ static void __init ls_uart_init(void)
static int __init ls_uarts_init(void)
{
struct device_node *avr;
- phys_addr_t phys_addr;
- int len;
+ struct resource res;
+ int len, ret;
avr = of_find_node_by_path("/soc10x/serial@80004500");
if (!avr)
return -EINVAL;
avr_clock = *(u32*)of_get_property(avr, "clock-frequency", &len);
- phys_addr = ((u32*)of_get_property(avr, "reg", &len))[0];
-
- if (!avr_clock || !phys_addr)
+ if (!avr_clock)
return -EINVAL;
- avr_addr = ioremap(phys_addr, 32);
+ ret = of_address_to_resource(avr, 0, &res);
+ if (ret)
+ return ret;
+
+ of_node_put(avr);
+
+ avr_addr = ioremap(res.start, 32);
if (!avr_addr)
return -EFAULT;