diff options
Diffstat (limited to 'arch/powerpc/cpu/mpc8xxx/fdt.c')
-rw-r--r-- | arch/powerpc/cpu/mpc8xxx/fdt.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/arch/powerpc/cpu/mpc8xxx/fdt.c b/arch/powerpc/cpu/mpc8xxx/fdt.c index d07ae1b..bc1c30e 100644 --- a/arch/powerpc/cpu/mpc8xxx/fdt.c +++ b/arch/powerpc/cpu/mpc8xxx/fdt.c @@ -1,5 +1,5 @@ /* - * Copyright 2009-2011 Freescale Semiconductor, Inc. + * Copyright 2009-2012 Freescale Semiconductor, Inc. * * This file is derived from arch/powerpc/cpu/mpc85xx/cpu.c and * arch/powerpc/cpu/mpc86xx/cpu.c. Basically this file contains @@ -137,28 +137,34 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd) for (i = 1; i <= FSL_MAX_NUM_USB_CTRLS; i++) { int mode_idx = -1, phy_idx = -1; - sprintf(str, "%s%d", "usb", i); + snprintf(str, 5, "%s%d", "usb", i); if (hwconfig(str)) { - for (j = 0; j < sizeof(modes); j++) { + for (j = 0; j < ARRAY_SIZE(modes); j++) { if (hwconfig_subarg_cmp(str, "dr_mode", modes[j])) { mode_idx = j; break; } } - for (j = 0; j < sizeof(phys); j++) { + for (j = 0; j < ARRAY_SIZE(phys); j++) { if (hwconfig_subarg_cmp(str, "phy_type", phys[j])) { phy_idx = j; break; } } - if (mode_idx >= 0) + if (mode_idx >= 0) { usb_mode_off = fdt_fixup_usb_mode_phy_type(blob, modes[mode_idx], NULL, usb_mode_off); - if (phy_idx >= 0) + if (usb_mode_off < 0) + return; + } + if (phy_idx >= 0) { usb_phy_off = fdt_fixup_usb_mode_phy_type(blob, NULL, phys[phy_idx], usb_phy_off); + if (usb_phy_off < 0) + return; + } if (!strcmp(str, "usb1")) usb1_defined = 1; if (mode_idx < 0 && phy_idx < 0) |