static int s5p_ehci_configurate(struct usb_hcd *hcd) { /* DMA burst Enable */ writel(readl(INSNREG00(hcd->regs)) | ENA_DMA_INCR, INSNREG00(hcd->regs)); return 0; }
static int s5p_ehci_configurate(struct usb_hcd *hcd) { int delay_count = 0; /* This is for waiting phy before ehci configuration */ do { if (readl(hcd->regs)) break; udelay(1); ++delay_count; } while (delay_count < 200); if (delay_count) dev_info(hcd->self.controller, "phy delay count = %d\n", delay_count); /* DMA burst Enable, set utmi suspend_on_n */ #ifdef CONFIG_USB_OHCI_S5P #ifdef CONFIG_CDMA_MODEM_MDM6600 writel(readl(INSNREG00(hcd->regs)) | ENA_DMA_INCR | OHCI_SUSP_LGCY, #else writel(readl(INSNREG00(hcd->regs)) | ENA_DMA_INCR, #endif #else writel(readl(INSNREG00(hcd->regs)) | ENA_DMA_INCR, #endif INSNREG00(hcd->regs)); return 0; }
static void s5p_ehci_phy_init(struct platform_device *pdev) { struct s5p_ehci_platdata *pdata = pdev->dev.platform_data; struct s5p_ehci_hcd *s5p_ehci = platform_get_drvdata(pdev); struct usb_hcd *hcd = s5p_ehci->hcd; u32 delay_count = 0; if (pdata && pdata->phy_init) { pdata->phy_init(pdev, S5P_USB_PHY_HOST); while (!readl(hcd->regs) && delay_count < 200) { delay_count++; udelay(1); } if (delay_count) dev_info(&pdev->dev, "waiting time = %d\n", delay_count); s5p_ehci_configurate(hcd); dev_dbg(&pdev->dev, "%s : 0x%x\n", __func__, readl(INSNREG00(hcd->regs))); } }