mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-09 03:58:18 -04:00
powerpc/mpc8xxx: Fix USB device-tree fixup
Fix usb device-tree fixup: - wrong modification of dr_mode and phy_type when "usb1" is not mentioned inside hwconfig string; now allows hwconfig strings like: "usb2:dr_mode=host,phy_type=ulpi" - add warning message for using usb_dr_mode and usb_phy_type env variables (if either is used) Signed-off-by: Ramneek Mehresh <ramneek.mehresh@freescale.com> Signed-off-by: Andy Fleming <afleming@freescale.com>
This commit is contained in:
parent
4e0be34a85
commit
9c889ece32
@ -139,6 +139,8 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd)
|
|||||||
const char *phys[] = { "ulpi", "utmi" };
|
const char *phys[] = { "ulpi", "utmi" };
|
||||||
const char *mode = NULL;
|
const char *mode = NULL;
|
||||||
const char *phy_type = NULL;
|
const char *phy_type = NULL;
|
||||||
|
const char *dr_mode_type = NULL;
|
||||||
|
const char *dr_phy_type = NULL;
|
||||||
char usb1_defined = 0;
|
char usb1_defined = 0;
|
||||||
int usb_mode_off = -1;
|
int usb_mode_off = -1;
|
||||||
int usb_phy_off = -1;
|
int usb_phy_off = -1;
|
||||||
@ -156,6 +158,7 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0; j < ARRAY_SIZE(phys); j++) {
|
for (j = 0; j < ARRAY_SIZE(phys); j++) {
|
||||||
if (hwconfig_subarg_cmp(str, "phy_type",
|
if (hwconfig_subarg_cmp(str, "phy_type",
|
||||||
phys[j])) {
|
phys[j])) {
|
||||||
@ -163,31 +166,46 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mode_idx >= 0) {
|
|
||||||
usb_mode_off = fdt_fixup_usb_mode_phy_type(blob,
|
dr_mode_type = modes[mode_idx];
|
||||||
modes[mode_idx], NULL, usb_mode_off);
|
dr_phy_type = phys[phy_idx];
|
||||||
if (usb_mode_off < 0)
|
|
||||||
return;
|
/* use usb_dr_mode and usb_phy_type if
|
||||||
}
|
usb1_defined = 0; these variables are to
|
||||||
if (phy_idx >= 0) {
|
be deprecated */
|
||||||
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"))
|
if (!strcmp(str, "usb1"))
|
||||||
usb1_defined = 1;
|
usb1_defined = 1;
|
||||||
if (mode_idx < 0 && phy_idx < 0)
|
|
||||||
|
if (mode_idx < 0 && phy_idx < 0) {
|
||||||
printf("WARNING: invalid phy or mode\n");
|
printf("WARNING: invalid phy or mode\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
usb_mode_off = fdt_fixup_usb_mode_phy_type(blob,
|
||||||
|
dr_mode_type, NULL, usb_mode_off);
|
||||||
|
|
||||||
|
if (usb_mode_off < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
usb_phy_off = fdt_fixup_usb_mode_phy_type(blob,
|
||||||
|
NULL, dr_phy_type, usb_phy_off);
|
||||||
|
|
||||||
|
if (usb_phy_off < 0)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!usb1_defined) {
|
if (!usb1_defined) {
|
||||||
int usb_off = -1;
|
int usb_off = -1;
|
||||||
mode = getenv("usb_dr_mode");
|
mode = getenv("usb_dr_mode");
|
||||||
phy_type = getenv("usb_phy_type");
|
phy_type = getenv("usb_phy_type");
|
||||||
if (!mode && !phy_type)
|
if (mode || phy_type) {
|
||||||
return;
|
printf("WARNING: usb_dr_mode and usb_phy_type "
|
||||||
fdt_fixup_usb_mode_phy_type(blob, mode, phy_type, usb_off);
|
"are to be deprecated soon. Use "
|
||||||
|
"hwconfig to set these values instead!!\n");
|
||||||
|
fdt_fixup_usb_mode_phy_type(blob, mode,
|
||||||
|
phy_type, usb_off);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) */
|
#endif /* defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user