Introduce start_hnp callback function for HCD to receive notification from EHCI core that HNP enabled port is suspended. HCD may initiate HNP or notify the same to OTG via otg_start_hnp(). This patch is inspired by "USB: Hook start_hnp into ohci struct" (e8b24450). Signed-off-by: Pavankumar Kondeti <pkondeti@xxxxxxxxxxxxxx> --- drivers/usb/host/ehci-hub.c | 11 +++++++++++ drivers/usb/host/ehci.h | 2 ++ 2 files changed, 13 insertions(+), 0 deletions(-) diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index 796ea0c..65bf104 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c @@ -1018,6 +1018,17 @@ static int ehci_hub_control ( || (temp & PORT_RESET) != 0) goto error; +#ifdef CONFIG_USB_OTG + if (hcd->self.otg_port == (wIndex + 1) && + hcd->self.b_hnp_enable && + ehci->start_hnp) { + ehci_writel(ehci, temp | PORT_SUSPEND, + status_reg); + set_bit(wIndex, &ehci->suspended_ports); + ehci->start_hnp(ehci); + break; + } +#endif /* After above check the port must be connected. * Set appropriate bit thus could put phy into low power * mode if we have hostpc feature diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h index fd1c53d..a4989f2 100644 --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h @@ -122,6 +122,8 @@ struct ehci_hcd { /* one per controller */ ktime_t last_periodic_enable; u32 command; + void (*start_hnp)(struct ehci_hcd *ehci); + /* SILICON QUIRKS */ unsigned no_selective_suspend:1; unsigned has_fsl_port_bug:1; /* FreeScale */ -- 1.7.1 -- Sent by a consultant of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum. -- 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