Skip to content

Commit

Permalink
[POWERPC] Fix error handling in detecting legacy serial ports
Browse files Browse the repository at this point in the history
Previously we weren't checking for failures in translating device
addresses from the firmware.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Benjamin Herrenschmidt authored and Paul Mackerras committed Jul 3, 2006
1 parent 980a651 commit 7c6efda
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion arch/powerpc/kernel/legacy_serial.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@ static int __init add_legacy_soc_port(struct device_node *np,
return -1;

addr = of_translate_address(soc_dev, addrp);
if (addr == OF_BAD_ADDR)
return -1;

/* Add port, irq will be dealt with later. We passed a translated
* IO port value. It will be fixed up later along with the irq
Expand All @@ -141,6 +143,8 @@ static int __init add_legacy_isa_port(struct device_node *np,
int index = -1;
phys_addr_t taddr;

DBG(" -> add_legacy_isa_port(%s)\n", np->full_name);

/* Get the ISA port number */
reg = (u32 *)get_property(np, "reg", NULL);
if (reg == NULL)
Expand All @@ -161,9 +165,12 @@ static int __init add_legacy_isa_port(struct device_node *np,

/* Translate ISA address */
taddr = of_translate_address(np, reg);
if (taddr == OF_BAD_ADDR)
return -1;

/* Add port, irq will be dealt with later */
return add_legacy_port(np, index, UPIO_PORT, reg[1], taddr, NO_IRQ, UPF_BOOT_AUTOCONF);
return add_legacy_port(np, index, UPIO_PORT, reg[1], taddr,
NO_IRQ, UPF_BOOT_AUTOCONF);

}

Expand All @@ -176,6 +183,8 @@ static int __init add_legacy_pci_port(struct device_node *np,
unsigned int flags;
int iotype, index = -1, lindex = 0;

DBG(" -> add_legacy_pci_port(%s)\n", np->full_name);

/* We only support ports that have a clock frequency properly
* encoded in the device-tree (that is have an fcode). Anything
* else can't be used that early and will be normally probed by
Expand All @@ -194,6 +203,8 @@ static int __init add_legacy_pci_port(struct device_node *np,
/* We only support BAR 0 for now */
iotype = (flags & IORESOURCE_MEM) ? UPIO_MEM : UPIO_PORT;
addr = of_translate_address(pci_dev, addrp);
if (addr == OF_BAD_ADDR)
return -1;

/* Set the IO base to the same as the translated address for MMIO,
* or to the domain local IO base for PIO (it will be fixed up later)
Expand Down

0 comments on commit 7c6efda

Please sign in to comment.