Changes for v3: - Using struct ehci_hcd * instead of struct usb_hcd * for ehci_port_power 's the 1st parameter - Call ehci_port_power at every places which port power needs to be changed. - Call platform defined hcd->driver->port_power at ehci_port_power if it is defined - Clear PORT_RWC bits before toggle PORT_POWER at ehci_port_power - the platform code chipidea/host.c doesn't need to call ehci_port_power, it only defines platform port control behaviour. Hi Alan & Michael, At the 1st patch, it defines ehci_port_power for ehci uses, it toggles port power bits as well as call platform callback hcd->driver->port_power if it is defined. At the 2nd patch, the chipidea platform code defines hcd->driver->port_power callback, it toggles regulator during the current design, and only single port is supported now. These two patches are tested at two imx6 platforms. Michael Grzeschik (2): usb: ehci: add ehci_port_power interface usb: chipidea: host: add portpower override drivers/usb/chipidea/host.c | 67 +++++++++++++++++++++++++++++-------------- drivers/usb/host/ehci-hcd.c | 9 +++++- drivers/usb/host/ehci-hub.c | 45 ++++++++++++++++++++--------- drivers/usb/host/ehci.h | 2 ++ include/linux/usb/hcd.h | 3 ++ 5 files changed, 91 insertions(+), 35 deletions(-) -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html