Lines Matching refs:pxa_ohci
140 static int pxa27x_ohci_select_pmm(struct pxa27x_ohci *pxa_ohci, int mode) in pxa27x_ohci_select_pmm() argument
142 uint32_t uhcrhda = __raw_readl(pxa_ohci->mmio_base + UHCRHDA); in pxa27x_ohci_select_pmm()
143 uint32_t uhcrhdb = __raw_readl(pxa_ohci->mmio_base + UHCRHDB); in pxa27x_ohci_select_pmm()
167 __raw_writel(uhcrhda, pxa_ohci->mmio_base + UHCRHDA); in pxa27x_ohci_select_pmm()
168 __raw_writel(uhcrhdb, pxa_ohci->mmio_base + UHCRHDB); in pxa27x_ohci_select_pmm()
172 static int pxa27x_ohci_set_vbus_power(struct pxa27x_ohci *pxa_ohci, in pxa27x_ohci_set_vbus_power() argument
175 struct regulator *vbus = pxa_ohci->vbus[port]; in pxa27x_ohci_set_vbus_power()
181 if (enable && !pxa_ohci->vbus_enabled[port]) in pxa27x_ohci_set_vbus_power()
183 else if (!enable && pxa_ohci->vbus_enabled[port]) in pxa27x_ohci_set_vbus_power()
189 pxa_ohci->vbus_enabled[port] = enable; in pxa27x_ohci_set_vbus_power()
197 struct pxa27x_ohci *pxa_ohci = to_pxa27x_ohci(hcd); in pxa27x_ohci_hub_control() local
209 ret = pxa27x_ohci_set_vbus_power(pxa_ohci, wIndex - 1, in pxa27x_ohci_hub_control()
220 static inline void pxa27x_setup_hc(struct pxa27x_ohci *pxa_ohci, in pxa27x_setup_hc() argument
223 uint32_t uhchr = __raw_readl(pxa_ohci->mmio_base + UHCHR); in pxa27x_setup_hc()
224 uint32_t uhcrhda = __raw_readl(pxa_ohci->mmio_base + UHCRHDA); in pxa27x_setup_hc()
256 __raw_writel(uhchr, pxa_ohci->mmio_base + UHCHR); in pxa27x_setup_hc()
257 __raw_writel(uhcrhda, pxa_ohci->mmio_base + UHCRHDA); in pxa27x_setup_hc()
260 static inline void pxa27x_reset_hc(struct pxa27x_ohci *pxa_ohci) in pxa27x_reset_hc() argument
262 uint32_t uhchr = __raw_readl(pxa_ohci->mmio_base + UHCHR); in pxa27x_reset_hc()
264 __raw_writel(uhchr | UHCHR_FHR, pxa_ohci->mmio_base + UHCHR); in pxa27x_reset_hc()
266 __raw_writel(uhchr & ~UHCHR_FHR, pxa_ohci->mmio_base + UHCHR); in pxa27x_reset_hc()
275 static int pxa27x_start_hc(struct pxa27x_ohci *pxa_ohci, struct device *dev) in pxa27x_start_hc() argument
284 clk_prepare_enable(pxa_ohci->clk); in pxa27x_start_hc()
286 pxa27x_reset_hc(pxa_ohci); in pxa27x_start_hc()
288 uhchr = __raw_readl(pxa_ohci->mmio_base + UHCHR) | UHCHR_FSBIR; in pxa27x_start_hc()
289 __raw_writel(uhchr, pxa_ohci->mmio_base + UHCHR); in pxa27x_start_hc()
291 while (__raw_readl(pxa_ohci->mmio_base + UHCHR) & UHCHR_FSBIR) in pxa27x_start_hc()
294 pxa27x_setup_hc(pxa_ohci, inf); in pxa27x_start_hc()
305 uhchr = __raw_readl(pxa_ohci->mmio_base + UHCHR) & ~UHCHR_SSE; in pxa27x_start_hc()
306 __raw_writel(uhchr, pxa_ohci->mmio_base + UHCHR); in pxa27x_start_hc()
307 __raw_writel(UHCHIE_UPRIE | UHCHIE_RWIE, pxa_ohci->mmio_base + UHCHIE); in pxa27x_start_hc()
314 static void pxa27x_stop_hc(struct pxa27x_ohci *pxa_ohci, struct device *dev) in pxa27x_stop_hc() argument
328 pxa27x_reset_hc(pxa_ohci); in pxa27x_stop_hc()
331 uhccoms = __raw_readl(pxa_ohci->mmio_base + UHCCOMS) | 0x01; in pxa27x_stop_hc()
332 __raw_writel(uhccoms, pxa_ohci->mmio_base + UHCCOMS); in pxa27x_stop_hc()
335 clk_disable_unprepare(pxa_ohci->clk); in pxa27x_stop_hc()
420 struct pxa27x_ohci *pxa_ohci; in usb_hcd_pxa27x_probe() local
459 pxa_ohci = to_pxa27x_ohci(hcd); in usb_hcd_pxa27x_probe()
460 pxa_ohci->clk = usb_clk; in usb_hcd_pxa27x_probe()
461 pxa_ohci->mmio_base = (void __iomem *)hcd->regs; in usb_hcd_pxa27x_probe()
470 pxa_ohci->vbus[i] = devm_regulator_get(&pdev->dev, name); in usb_hcd_pxa27x_probe()
473 retval = pxa27x_start_hc(pxa_ohci, &pdev->dev); in usb_hcd_pxa27x_probe()
480 pxa27x_ohci_select_pmm(pxa_ohci, inf->port_mode); in usb_hcd_pxa27x_probe()
495 pxa27x_stop_hc(pxa_ohci, &pdev->dev); in usb_hcd_pxa27x_probe()
517 struct pxa27x_ohci *pxa_ohci = to_pxa27x_ohci(hcd); in usb_hcd_pxa27x_remove() local
521 pxa27x_stop_hc(pxa_ohci, &pdev->dev); in usb_hcd_pxa27x_remove()
524 pxa27x_ohci_set_vbus_power(pxa_ohci, i, false); in usb_hcd_pxa27x_remove()
553 struct pxa27x_ohci *pxa_ohci = to_pxa27x_ohci(hcd); in ohci_hcd_pxa27x_drv_suspend() local
567 pxa27x_stop_hc(pxa_ohci, dev); in ohci_hcd_pxa27x_drv_suspend()
574 struct pxa27x_ohci *pxa_ohci = to_pxa27x_ohci(hcd); in ohci_hcd_pxa27x_drv_resume() local
583 status = pxa27x_start_hc(pxa_ohci, dev); in ohci_hcd_pxa27x_drv_resume()
588 pxa27x_ohci_select_pmm(pxa_ohci, inf->port_mode); in ohci_hcd_pxa27x_drv_resume()