diff options
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/legacy_serial.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/arch/powerpc/kernel/legacy_serial.c b/arch/powerpc/kernel/legacy_serial.c index 7e98e778b52f..359ab89748e0 100644 --- a/arch/powerpc/kernel/legacy_serial.c +++ b/arch/powerpc/kernel/legacy_serial.c | |||
@@ -112,7 +112,7 @@ static int __init add_legacy_port(struct device_node *np, int want_index, | |||
112 | static int __init add_legacy_soc_port(struct device_node *np, | 112 | static int __init add_legacy_soc_port(struct device_node *np, |
113 | struct device_node *soc_dev) | 113 | struct device_node *soc_dev) |
114 | { | 114 | { |
115 | phys_addr_t addr; | 115 | u64 addr; |
116 | u32 *addrp; | 116 | u32 *addrp; |
117 | upf_t flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_SHARE_IRQ; | 117 | upf_t flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_SHARE_IRQ; |
118 | 118 | ||
@@ -143,7 +143,7 @@ static int __init add_legacy_isa_port(struct device_node *np, | |||
143 | u32 *reg; | 143 | u32 *reg; |
144 | char *typep; | 144 | char *typep; |
145 | int index = -1; | 145 | int index = -1; |
146 | phys_addr_t taddr; | 146 | u64 taddr; |
147 | 147 | ||
148 | DBG(" -> add_legacy_isa_port(%s)\n", np->full_name); | 148 | DBG(" -> add_legacy_isa_port(%s)\n", np->full_name); |
149 | 149 | ||
@@ -165,10 +165,13 @@ static int __init add_legacy_isa_port(struct device_node *np, | |||
165 | if (typep && *typep == 'S') | 165 | if (typep && *typep == 'S') |
166 | index = simple_strtol(typep+1, NULL, 0) - 1; | 166 | index = simple_strtol(typep+1, NULL, 0) - 1; |
167 | 167 | ||
168 | /* Translate ISA address */ | 168 | /* Translate ISA address. If it fails, we still register the port |
169 | * with no translated address so that it can be picked up as an IO | ||
170 | * port later by the serial driver | ||
171 | */ | ||
169 | taddr = of_translate_address(np, reg); | 172 | taddr = of_translate_address(np, reg); |
170 | if (taddr == OF_BAD_ADDR) | 173 | if (taddr == OF_BAD_ADDR) |
171 | return -1; | 174 | taddr = 0; |
172 | 175 | ||
173 | /* Add port, irq will be dealt with later */ | 176 | /* Add port, irq will be dealt with later */ |
174 | return add_legacy_port(np, index, UPIO_PORT, reg[1], taddr, | 177 | return add_legacy_port(np, index, UPIO_PORT, reg[1], taddr, |
@@ -180,7 +183,7 @@ static int __init add_legacy_isa_port(struct device_node *np, | |||
180 | static int __init add_legacy_pci_port(struct device_node *np, | 183 | static int __init add_legacy_pci_port(struct device_node *np, |
181 | struct device_node *pci_dev) | 184 | struct device_node *pci_dev) |
182 | { | 185 | { |
183 | phys_addr_t addr, base; | 186 | u64 addr, base; |
184 | u32 *addrp; | 187 | u32 *addrp; |
185 | unsigned int flags; | 188 | unsigned int flags; |
186 | int iotype, index = -1, lindex = 0; | 189 | int iotype, index = -1, lindex = 0; |