mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-31 19:41:46 +00:00
drivers:usb: Add device-tree fixup to identify socs having dual phy
Identify soc(s) having dual phy so as to add "utmi_dual" as phy_mode for all these socs. This is required for supporting deel-sleep feature in linux for usb driver Signed-off-by: Ramneek Mehresh <ramneek.mehresh@freescale.com> Signed-off-by: Nikhil Badola <nikhil.badola@freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
This commit is contained in:
parent
98cb0efde8
commit
0c77106095
2 changed files with 38 additions and 1 deletions
|
@ -259,7 +259,7 @@ static int fdt_fixup_usb_erratum(void *blob, const char *prop_erratum,
|
||||||
void fdt_fixup_dr_usb(void *blob, bd_t *bd)
|
void fdt_fixup_dr_usb(void *blob, bd_t *bd)
|
||||||
{
|
{
|
||||||
static const char * const modes[] = { "host", "peripheral", "otg" };
|
static const char * const modes[] = { "host", "peripheral", "otg" };
|
||||||
static const char * const phys[] = { "ulpi", "utmi" };
|
static const char * const phys[] = { "ulpi", "utmi", "utmi_dual" };
|
||||||
int usb_erratum_a006261_off = -1;
|
int usb_erratum_a006261_off = -1;
|
||||||
int usb_erratum_a007075_off = -1;
|
int usb_erratum_a007075_off = -1;
|
||||||
int usb_erratum_a007792_off = -1;
|
int usb_erratum_a007792_off = -1;
|
||||||
|
@ -303,6 +303,9 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd)
|
||||||
dr_phy_type = phys[phy_idx];
|
dr_phy_type = phys[phy_idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (has_dual_phy())
|
||||||
|
dr_phy_type = phys[2];
|
||||||
|
|
||||||
usb_mode_off = fdt_fixup_usb_mode_phy_type(blob,
|
usb_mode_off = fdt_fixup_usb_mode_phy_type(blob,
|
||||||
dr_mode_type, NULL,
|
dr_mode_type, NULL,
|
||||||
usb_mode_off);
|
usb_mode_off);
|
||||||
|
@ -325,6 +328,7 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd)
|
||||||
if (usb_erratum_a006261_off < 0)
|
if (usb_erratum_a006261_off < 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (has_erratum_a007075()) {
|
if (has_erratum_a007075()) {
|
||||||
usb_erratum_a007075_off = fdt_fixup_usb_erratum
|
usb_erratum_a007075_off = fdt_fixup_usb_erratum
|
||||||
(blob,
|
(blob,
|
||||||
|
@ -333,6 +337,7 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd)
|
||||||
if (usb_erratum_a007075_off < 0)
|
if (usb_erratum_a007075_off < 0)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (has_erratum_a007792()) {
|
if (has_erratum_a007792()) {
|
||||||
usb_erratum_a007792_off = fdt_fixup_usb_erratum
|
usb_erratum_a007792_off = fdt_fixup_usb_erratum
|
||||||
(blob,
|
(blob,
|
||||||
|
|
|
@ -87,6 +87,33 @@ struct ccsr_usb_phy {
|
||||||
|
|
||||||
/* USB Erratum Checking code */
|
/* USB Erratum Checking code */
|
||||||
#ifdef CONFIG_PPC
|
#ifdef CONFIG_PPC
|
||||||
|
static inline bool has_dual_phy(void)
|
||||||
|
{
|
||||||
|
u32 svr = get_svr();
|
||||||
|
u32 soc = SVR_SOC_VER(svr);
|
||||||
|
|
||||||
|
switch (soc) {
|
||||||
|
case SVR_T1023:
|
||||||
|
case SVR_T1024:
|
||||||
|
case SVR_T1013:
|
||||||
|
case SVR_T1014:
|
||||||
|
return IS_SVR_REV(svr, 1, 0);
|
||||||
|
case SVR_T1040:
|
||||||
|
case SVR_T1042:
|
||||||
|
case SVR_T1020:
|
||||||
|
case SVR_T1022:
|
||||||
|
case SVR_T2080:
|
||||||
|
case SVR_T2081:
|
||||||
|
return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1);
|
||||||
|
case SVR_T4240:
|
||||||
|
case SVR_T4160:
|
||||||
|
case SVR_T4080:
|
||||||
|
return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool has_erratum_a006261(void)
|
static inline bool has_erratum_a006261(void)
|
||||||
{
|
{
|
||||||
u32 svr = get_svr();
|
u32 svr = get_svr();
|
||||||
|
@ -165,6 +192,11 @@ static inline bool has_erratum_a007792(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
static inline bool has_dual_phy(void)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool has_erratum_a006261(void)
|
static inline bool has_erratum_a006261(void)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue