Skip to content

Commit

Permalink
usb: host: ehci-vf: Implement board_usb_phy_mode weak function
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
SanchayanMaity authored and Marek Vasut committed Jan 16, 2016
1 parent 6089f75 commit 08c11cb
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions drivers/usb/host/ehci-vf.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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);
Expand Down

0 comments on commit 08c11cb

Please sign in to comment.