summaryrefslogtreecommitdiff
path: root/drivers/usb/common
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2016-09-30 21:58:44 -0400
committerTom Rini <trini@konsulko.com>2016-09-30 21:58:44 -0400
commitfe4ba689a0cb2bb2ceafb88556a57bd80814b648 (patch)
tree1012656ba1d3e9f8288d69de33c71417b2f22466 /drivers/usb/common
parentf413d1cae89143ad45b066b3d3bc602deafcb50a (diff)
parent4c043712e9910ef1d612aedbd8304a1f7348ef5f (diff)
Merge branch 'master' of git://git.denx.de/u-boot-usb
Signed-off-by: Tom Rini <trini@konsulko.com> Conflicts: include/configs/dra7xx_evm.h
Diffstat (limited to 'drivers/usb/common')
-rw-r--r--drivers/usb/common/fsl-dt-fixup.c47
-rw-r--r--drivers/usb/common/fsl-errata.c26
2 files changed, 50 insertions, 23 deletions
diff --git a/drivers/usb/common/fsl-dt-fixup.c b/drivers/usb/common/fsl-dt-fixup.c
index 9c48852ea0..63a24f74ad 100644
--- a/drivers/usb/common/fsl-dt-fixup.c
+++ b/drivers/usb/common/fsl-dt-fixup.c
@@ -86,8 +86,9 @@ static int fdt_fixup_usb_mode_phy_type(void *blob, const char *mode,
return node_offset;
}
-static int fdt_fixup_usb_erratum(void *blob, const char *prop_erratum,
- const char *controller_type, int start_offset)
+static int fsl_fdt_fixup_usb_erratum(void *blob, const char *prop_erratum,
+ const char *controller_type,
+ int start_offset)
{
int node_offset, err;
const char *node_type = NULL;
@@ -114,24 +115,24 @@ static int fdt_fixup_usb_erratum(void *blob, const char *prop_erratum,
return node_offset;
}
-static int fdt_fixup_erratum(int *usb_erratum_off, void *blob,
- const char *controller_type, char *str,
- bool (*has_erratum)(void))
+static int fsl_fdt_fixup_erratum(int *usb_erratum_off, void *blob,
+ const char *controller_type, char *str,
+ bool (*has_erratum)(void))
{
char buf[32] = {0};
snprintf(buf, sizeof(buf), "fsl,usb-erratum-%s", str);
if (!has_erratum())
return -EINVAL;
- *usb_erratum_off = fdt_fixup_usb_erratum(blob, buf, controller_type,
- *usb_erratum_off);
+ *usb_erratum_off = fsl_fdt_fixup_usb_erratum(blob, buf, controller_type,
+ *usb_erratum_off);
if (*usb_erratum_off < 0)
return -ENOSPC;
debug("Adding USB erratum %s\n", str);
return 0;
}
-void fdt_fixup_dr_usb(void *blob, bd_t *bd)
+void fsl_fdt_fixup_dr_usb(void *blob, bd_t *bd)
{
static const char * const modes[] = { "host", "peripheral", "otg" };
static const char * const phys[] = { "ulpi", "utmi", "utmi_dual" };
@@ -198,29 +199,29 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd)
if (usb_phy_off < 0)
return;
- ret = fdt_fixup_erratum(&usb_erratum_a006261_off, blob,
- CHIPIDEA_USB2, "a006261",
- has_erratum_a006261);
+ ret = fsl_fdt_fixup_erratum(&usb_erratum_a006261_off, blob,
+ CHIPIDEA_USB2, "a006261",
+ has_erratum_a006261);
if (ret == -ENOSPC)
return;
- ret = fdt_fixup_erratum(&usb_erratum_a007075_off, blob,
- CHIPIDEA_USB2, "a007075",
- has_erratum_a007075);
+ ret = fsl_fdt_fixup_erratum(&usb_erratum_a007075_off, blob,
+ CHIPIDEA_USB2, "a007075",
+ has_erratum_a007075);
if (ret == -ENOSPC)
return;
- ret = fdt_fixup_erratum(&usb_erratum_a007792_off, blob,
- CHIPIDEA_USB2, "a007792",
- has_erratum_a007792);
+ ret = fsl_fdt_fixup_erratum(&usb_erratum_a007792_off, blob,
+ CHIPIDEA_USB2, "a007792",
+ has_erratum_a007792);
if (ret == -ENOSPC)
return;
- ret = fdt_fixup_erratum(&usb_erratum_a005697_off, blob,
- CHIPIDEA_USB2, "a005697",
- has_erratum_a005697);
+ ret = fsl_fdt_fixup_erratum(&usb_erratum_a005697_off, blob,
+ CHIPIDEA_USB2, "a005697",
+ has_erratum_a005697);
if (ret == -ENOSPC)
return;
- ret = fdt_fixup_erratum(&usb_erratum_a008751_off, blob,
- SNPS_DWC3, "a008751",
- has_erratum_a008751);
+ ret = fsl_fdt_fixup_erratum(&usb_erratum_a008751_off, blob,
+ SNPS_DWC3, "a008751",
+ has_erratum_a008751);
if (ret == -ENOSPC)
return;
diff --git a/drivers/usb/common/fsl-errata.c b/drivers/usb/common/fsl-errata.c
index 972016ceb3..0dc3dd8117 100644
--- a/drivers/usb/common/fsl-errata.c
+++ b/drivers/usb/common/fsl-errata.c
@@ -185,4 +185,30 @@ bool has_erratum_a008751(void)
return false;
}
+bool has_erratum_a010151(void)
+{
+ u32 svr = get_svr();
+ u32 soc = SVR_SOC_VER(svr);
+
+ switch (soc) {
+#ifdef CONFIG_ARM64
+ case SVR_LS2080A:
+ case SVR_LS2085A:
+ case SVR_LS1046A:
+ case SVR_LS1012A:
+ return IS_SVR_REV(svr, 1, 0);
+ case SVR_LS1043A:
+ return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1);
+#endif
+#ifdef CONFIG_LS102XA
+ case SOC_VER_LS1020:
+ case SOC_VER_LS1021:
+ case SOC_VER_LS1022:
+ case SOC_VER_SLS1020:
+ return IS_SVR_REV(svr, 2, 0);
+#endif
+ }
+ return false;
+}
+
#endif