static void ehci_msm_start_hnp(struct ehci_hcd *ehci)
{
	struct usb_hcd *hcd = ehci_to_hcd(ehci);
	struct msmusb_hcd *mhcd = hcd_to_mhcd(hcd);

	/* OTG driver handles HNP */
	otg_start_hnp(mhcd->xceiv);
}
void start_hnp(struct ehci_hcd *ehci)
{
	unsigned long	flags;
	otg_start_hnp(ehci->transceiver);

	local_irq_save(flags);
	ehci->transceiver->state = OTG_STATE_A_SUSPEND;
	local_irq_restore(flags);
}
示例#3
0
static void start_hnp(struct ohci_hcd *ohci)
{
	const unsigned	port = ohci_to_hcd(ohci)->self.otg_port - 1;
	unsigned long	flags;

	otg_start_hnp(ohci->transceiver);

	local_irq_save(flags);
	ohci->transceiver->state = OTG_STATE_A_SUSPEND;
	writel (RH_PS_PSS, &ohci->regs->roothub.portstatus [port]);
	OTG_CTRL_REG &= ~OTG_A_BUSREQ;
	local_irq_restore(flags);
}
示例#4
0
static void ehci_xusbps_start_hnp(struct ehci_hcd *ehci)
{
	const unsigned	port = ehci_to_hcd(ehci)->self.otg_port - 1;
	unsigned long	flags;
	u32 portsc;

	local_irq_save(flags);
	portsc = ehci_readl(ehci, &ehci->regs->port_status[port]);
	portsc |= PORT_SUSPEND;
	ehci_writel(ehci, portsc, &ehci->regs->port_status[port]);
	local_irq_restore(flags);

	otg_start_hnp(ehci->transceiver);
}
示例#5
0
static void ehci_zynq_start_hnp(struct ehci_hcd *ehci)
{
	const unsigned	port = ehci_to_hcd(ehci)->self.otg_port - 1;
	struct usb_hcd *hcd = ehci_to_hcd(ehci);
	unsigned long	flags;
	u32 portsc;

	local_irq_save(flags);
	portsc = ehci_readl(ehci, &ehci->regs->port_status[port]);
	portsc |= PORT_SUSPEND;
	ehci_writel(ehci, portsc, &ehci->regs->port_status[port]);
	local_irq_restore(flags);

	otg_start_hnp(hcd->usb_phy->otg);
}
示例#6
0
static int omap2430_musb_vbus_reset(struct musb *musb)
{
	int ret = -1;

	dev_info(musb->controller, "%s count=%d\n", __func__,
					musb->vbus_reset_count);
	if (musb->vbus_reset_count < 0)
		goto err;
	if (musb->vbus_reset_count < 5) {
		if (musb->xceiv->start_hnp) {
			ret = otg_start_hnp(musb->xceiv);
			musb->vbus_reset_count++;
		}
	}
err:
	return ret;
}
示例#7
0
文件: ohci-omap.c 项目: 7799/linux
static void start_hnp(struct ohci_hcd *ohci)
{
	struct usb_hcd *hcd = ohci_to_hcd(ohci);
	const unsigned	port = hcd->self.otg_port - 1;
	unsigned long	flags;
	u32 l;

	otg_start_hnp(hcd->phy->otg);

	local_irq_save(flags);
	hcd->phy->state = OTG_STATE_A_SUSPEND;
	writel (RH_PS_PSS, &ohci->regs->roothub.portstatus [port]);
	l = omap_readl(OTG_CTRL);
	l &= ~OTG_A_BUSREQ;
	omap_writel(l, OTG_CTRL);
	local_irq_restore(flags);
}