]> git.karo-electronics.de Git - karo-tx-uboot.git/commitdiff
usb: host: ehci-vf: Implement board_usb_phy_mode weak function
authorSanchayan Maity <maitysanchayan@gmail.com>
Mon, 26 Oct 2015 12:58:50 +0000 (18:28 +0530)
committerMarek Vasut <marex@denx.de>
Sat, 16 Jan 2016 06:06:55 +0000 (07:06 +0100)
Add board_usb_phy_mode weak function on similar lines to ehci-mx6.
However since Vybrid USB does not have a true OTG, make this weak
functon just return 0. The function is supposed to be implemented
by the individual boards using a GPIO for providing the OTG pin
functionality.

Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
drivers/usb/host/ehci-vf.c

index 351e0fbb50b9b3a54b3fdcc91e2a1e29c91ecede..335e303c2aa3fc08a82a8f47ac4bcf0c61cca1bf 100644 (file)
@@ -121,6 +121,11 @@ static void usb_oc_config(int index)
        setbits_le32(ctrl, UCTRL_OVER_CUR_DIS);
 }
 
+int __weak board_usb_phy_mode(int port)
+{
+       return 0;
+}
+
 int __weak board_ehci_hcd_init(int port)
 {
        return 0;
@@ -130,6 +135,7 @@ int ehci_hcd_init(int index, enum usb_init_type init,
                struct ehci_hccr **hccr, struct ehci_hcor **hcor)
 {
        struct usb_ehci *ehci;
+       enum usb_init_type type;
 
        if (index >= ARRAY_SIZE(nc_reg_bases))
                return -EINVAL;
@@ -148,6 +154,10 @@ int ehci_hcd_init(int index, enum usb_init_type init,
        *hcor = (struct ehci_hcor *)((uint32_t)*hccr +
                        HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
 
+       type = board_usb_phy_mode(index);
+       if (type != init)
+               return -ENODEV;
+
        if (init == USB_INIT_DEVICE) {
                setbits_le32(&ehci->usbmode, CM_DEVICE);
                writel((PORT_PTS_UTMI | PORT_PTS_PTW), &ehci->portsc);