The TLL module on OMAP5 has 3 channels.
HSIC mode requires the TLL channel to be in Transparent UTMI mode.

Signed-off-by: Roger Quadros <rog...@ti.com>
---
 drivers/mfd/omap-usb-tll.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/drivers/mfd/omap-usb-tll.c b/drivers/mfd/omap-usb-tll.c
index 031f4fd..c5ac8c2 100644
--- a/drivers/mfd/omap-usb-tll.c
+++ b/drivers/mfd/omap-usb-tll.c
@@ -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:
@@ -313,6 +318,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;
                        }
-- 
1.7.4.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to