|
@@ -54,10 +54,13 @@
|
|
|
|
|
|
#define OMAP_TLL_CHANNEL_CONF(num) (0x040 + 0x004 * num)
|
|
|
#define OMAP_TLL_CHANNEL_CONF_FSLSMODE_SHIFT 24
|
|
|
+#define OMAP_TLL_CHANNEL_CONF_DRVVBUS (1 << 16)
|
|
|
+#define OMAP_TLL_CHANNEL_CONF_CHRGVBUS (1 << 15)
|
|
|
#define OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF (1 << 11)
|
|
|
#define OMAP_TLL_CHANNEL_CONF_ULPI_ULPIAUTOIDLE (1 << 10)
|
|
|
#define OMAP_TLL_CHANNEL_CONF_UTMIAUTOIDLE (1 << 9)
|
|
|
#define OMAP_TLL_CHANNEL_CONF_ULPIDDRMODE (1 << 8)
|
|
|
+#define OMAP_TLL_CHANNEL_CONF_MODE_TRANSPARENT_UTMI (2 << 1)
|
|
|
#define OMAP_TLL_CHANNEL_CONF_CHANMODE_FSLS (1 << 1)
|
|
|
#define OMAP_TLL_CHANNEL_CONF_CHANEN (1 << 0)
|
|
|
|
|
@@ -92,6 +95,7 @@
|
|
|
#define OMAP_USBTLL_REV1 0x00000015 /* OMAP3 */
|
|
|
#define OMAP_USBTLL_REV2 0x00000018 /* OMAP 3630 */
|
|
|
#define OMAP_USBTLL_REV3 0x00000004 /* OMAP4 */
|
|
|
+#define OMAP_USBTLL_REV4 0x00000006 /* OMAP5 */
|
|
|
|
|
|
#define is_ehci_tll_mode(x) (x == OMAP_EHCI_PORT_MODE_TLL)
|
|
|
|
|
@@ -245,6 +249,7 @@ static int usbtll_omap_probe(struct platform_device *pdev)
|
|
|
ver = usbtll_read(base, OMAP_USBTLL_REVISION);
|
|
|
switch (ver) {
|
|
|
case OMAP_USBTLL_REV1:
|
|
|
+ case OMAP_USBTLL_REV4:
|
|
|
tll->nch = OMAP_TLL_CHANNEL_COUNT;
|
|
|
break;
|
|
|
case OMAP_USBTLL_REV2:
|
|
@@ -310,6 +315,15 @@ static int usbtll_omap_probe(struct platform_device *pdev)
|
|
|
reg &= ~(OMAP_TLL_CHANNEL_CONF_UTMIAUTOIDLE
|
|
|
| OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF
|
|
|
| OMAP_TLL_CHANNEL_CONF_ULPIDDRMODE);
|
|
|
+ } else if (pdata->port_mode[i] ==
|
|
|
+ OMAP_EHCI_PORT_MODE_HSIC) {
|
|
|
+ /*
|
|
|
+ * HSIC Mode requires UTMI port configurations
|
|
|
+ */
|
|
|
+ reg |= OMAP_TLL_CHANNEL_CONF_DRVVBUS
|
|
|
+ | OMAP_TLL_CHANNEL_CONF_CHRGVBUS
|
|
|
+ | OMAP_TLL_CHANNEL_CONF_MODE_TRANSPARENT_UTMI
|
|
|
+ | OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF;
|
|
|
} else {
|
|
|
continue;
|
|
|
}
|