diff options
author | ramneek mehresh <ramneek.mehresh@freescale.com> | 2014-08-22 10:56:05 +0530 |
---|---|---|
committer | York Sun <yorksun@freescale.com> | 2014-09-24 13:05:51 -0700 |
commit | e628c8f75de952031f7b9fb9ae465a2a99d4c7f8 (patch) | |
tree | ac1c7e67f77170615da11d32d5b4268044d7575f | |
parent | 363fb32aca268701a0918d67099fb344194f1746 (diff) | |
download | u-boot-imx-e628c8f75de952031f7b9fb9ae465a2a99d4c7f8.zip u-boot-imx-e628c8f75de952031f7b9fb9ae465a2a99d4c7f8.tar.gz u-boot-imx-e628c8f75de952031f7b9fb9ae465a2a99d4c7f8.tar.bz2 |
powerpc/8xxx: Fix in USB device-tree fixup
Fix following issues in USB device-tree fixup:
- returns when either dr_mode or phy_type not defined.
This was terminating fix-up when only either property
was defined in hwconfig string
- updates dr_mode_type or dr_phy_type with junk value when
their index is -1. Now these are updated only when their
respective index is pointing to relevant types
in modes[] and phys[] array
- dr_mode_type and dr_phy_type were not NULL for
each controller
Signed-off-by: Ramneek Mehresh <ramneek.mehresh@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
-rw-r--r-- | arch/powerpc/cpu/mpc8xxx/fdt.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/arch/powerpc/cpu/mpc8xxx/fdt.c b/arch/powerpc/cpu/mpc8xxx/fdt.c index 9273745..4cec5e1 100644 --- a/arch/powerpc/cpu/mpc8xxx/fdt.c +++ b/arch/powerpc/cpu/mpc8xxx/fdt.c @@ -1,5 +1,5 @@ /* - * Copyright 2009-2012 Freescale Semiconductor, Inc. + * Copyright 2009-2014 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 @@ -123,14 +123,14 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd) { const char *modes[] = { "host", "peripheral", "otg" }; const char *phys[] = { "ulpi", "utmi" }; - const char *dr_mode_type = NULL; - const char *dr_phy_type = NULL; int usb_mode_off = -1; int usb_phy_off = -1; char str[5]; int i, j; for (i = 1; i <= CONFIG_USB_MAX_CONTROLLER_COUNT; i++) { + const char *dr_mode_type = NULL; + const char *dr_phy_type = NULL; int mode_idx = -1, phy_idx = -1; snprintf(str, 5, "%s%d", "usb", i); if (hwconfig(str)) { @@ -150,18 +150,16 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd) } } - if (mode_idx < 0 || phy_idx < 0) { - puts("ERROR: wrong usb mode/phy defined!!\n"); - return; - } - - dr_mode_type = modes[mode_idx]; - dr_phy_type = phys[phy_idx]; - if (mode_idx < 0 && phy_idx < 0) { printf("WARNING: invalid phy or mode\n"); return; } + + if (mode_idx > -1) + dr_mode_type = modes[mode_idx]; + + if (phy_idx > -1) + dr_phy_type = phys[phy_idx]; } usb_mode_off = fdt_fixup_usb_mode_phy_type(blob, |