Lines Matching refs:pxa_ohci

141 static int pxa27x_ohci_select_pmm(struct pxa27x_ohci *pxa_ohci, int mode)  in pxa27x_ohci_select_pmm()  argument
143 uint32_t uhcrhda = __raw_readl(pxa_ohci->mmio_base + UHCRHDA); in pxa27x_ohci_select_pmm()
144 uint32_t uhcrhdb = __raw_readl(pxa_ohci->mmio_base + UHCRHDB); in pxa27x_ohci_select_pmm()
168 __raw_writel(uhcrhda, pxa_ohci->mmio_base + UHCRHDA); in pxa27x_ohci_select_pmm()
169 __raw_writel(uhcrhdb, pxa_ohci->mmio_base + UHCRHDB); in pxa27x_ohci_select_pmm()
173 static int pxa27x_ohci_set_vbus_power(struct pxa27x_ohci *pxa_ohci, in pxa27x_ohci_set_vbus_power() argument
176 struct regulator *vbus = pxa_ohci->vbus[port]; in pxa27x_ohci_set_vbus_power()
182 if (enable && !pxa_ohci->vbus_enabled[port]) in pxa27x_ohci_set_vbus_power()
184 else if (!enable && pxa_ohci->vbus_enabled[port]) in pxa27x_ohci_set_vbus_power()
190 pxa_ohci->vbus_enabled[port] = enable; in pxa27x_ohci_set_vbus_power()
198 struct pxa27x_ohci *pxa_ohci = to_pxa27x_ohci(hcd); in pxa27x_ohci_hub_control() local
210 ret = pxa27x_ohci_set_vbus_power(pxa_ohci, wIndex - 1, in pxa27x_ohci_hub_control()
221 static inline void pxa27x_setup_hc(struct pxa27x_ohci *pxa_ohci, in pxa27x_setup_hc() argument
224 uint32_t uhchr = __raw_readl(pxa_ohci->mmio_base + UHCHR); in pxa27x_setup_hc()
225 uint32_t uhcrhda = __raw_readl(pxa_ohci->mmio_base + UHCRHDA); in pxa27x_setup_hc()
257 __raw_writel(uhchr, pxa_ohci->mmio_base + UHCHR); in pxa27x_setup_hc()
258 __raw_writel(uhcrhda, pxa_ohci->mmio_base + UHCRHDA); in pxa27x_setup_hc()
261 static inline void pxa27x_reset_hc(struct pxa27x_ohci *pxa_ohci) in pxa27x_reset_hc() argument
263 uint32_t uhchr = __raw_readl(pxa_ohci->mmio_base + UHCHR); in pxa27x_reset_hc()
265 __raw_writel(uhchr | UHCHR_FHR, pxa_ohci->mmio_base + UHCHR); in pxa27x_reset_hc()
267 __raw_writel(uhchr & ~UHCHR_FHR, pxa_ohci->mmio_base + UHCHR); in pxa27x_reset_hc()
276 static int pxa27x_start_hc(struct pxa27x_ohci *pxa_ohci, struct device *dev) in pxa27x_start_hc() argument
285 retval = clk_prepare_enable(pxa_ohci->clk); in pxa27x_start_hc()
289 pxa27x_reset_hc(pxa_ohci); in pxa27x_start_hc()
291 uhchr = __raw_readl(pxa_ohci->mmio_base + UHCHR) | UHCHR_FSBIR; in pxa27x_start_hc()
292 __raw_writel(uhchr, pxa_ohci->mmio_base + UHCHR); in pxa27x_start_hc()
294 while (__raw_readl(pxa_ohci->mmio_base + UHCHR) & UHCHR_FSBIR) in pxa27x_start_hc()
297 pxa27x_setup_hc(pxa_ohci, inf); in pxa27x_start_hc()
303 clk_disable_unprepare(pxa_ohci->clk); in pxa27x_start_hc()
310 uhchr = __raw_readl(pxa_ohci->mmio_base + UHCHR) & ~UHCHR_SSE; in pxa27x_start_hc()
311 __raw_writel(uhchr, pxa_ohci->mmio_base + UHCHR); in pxa27x_start_hc()
312 __raw_writel(UHCHIE_UPRIE | UHCHIE_RWIE, pxa_ohci->mmio_base + UHCHIE); in pxa27x_start_hc()
319 static void pxa27x_stop_hc(struct pxa27x_ohci *pxa_ohci, struct device *dev) in pxa27x_stop_hc() argument
333 pxa27x_reset_hc(pxa_ohci); in pxa27x_stop_hc()
336 uhccoms = __raw_readl(pxa_ohci->mmio_base + UHCCOMS) | 0x01; in pxa27x_stop_hc()
337 __raw_writel(uhccoms, pxa_ohci->mmio_base + UHCCOMS); in pxa27x_stop_hc()
340 clk_disable_unprepare(pxa_ohci->clk); in pxa27x_stop_hc()
425 struct pxa27x_ohci *pxa_ohci; in ohci_hcd_pxa27x_probe() local
464 pxa_ohci = to_pxa27x_ohci(hcd); in ohci_hcd_pxa27x_probe()
465 pxa_ohci->clk = usb_clk; in ohci_hcd_pxa27x_probe()
466 pxa_ohci->mmio_base = (void __iomem *)hcd->regs; in ohci_hcd_pxa27x_probe()
475 pxa_ohci->vbus[i] = devm_regulator_get(&pdev->dev, name); in ohci_hcd_pxa27x_probe()
478 retval = pxa27x_start_hc(pxa_ohci, &pdev->dev); in ohci_hcd_pxa27x_probe()
485 pxa27x_ohci_select_pmm(pxa_ohci, inf->port_mode); in ohci_hcd_pxa27x_probe()
500 pxa27x_stop_hc(pxa_ohci, &pdev->dev); in ohci_hcd_pxa27x_probe()
523 struct pxa27x_ohci *pxa_ohci = to_pxa27x_ohci(hcd); in ohci_hcd_pxa27x_remove() local
527 pxa27x_stop_hc(pxa_ohci, &pdev->dev); in ohci_hcd_pxa27x_remove()
530 pxa27x_ohci_set_vbus_power(pxa_ohci, i, false); in ohci_hcd_pxa27x_remove()
542 struct pxa27x_ohci *pxa_ohci = to_pxa27x_ohci(hcd); in ohci_hcd_pxa27x_drv_suspend() local
556 pxa27x_stop_hc(pxa_ohci, dev); in ohci_hcd_pxa27x_drv_suspend()
563 struct pxa27x_ohci *pxa_ohci = to_pxa27x_ohci(hcd); in ohci_hcd_pxa27x_drv_resume() local
572 status = pxa27x_start_hc(pxa_ohci, dev); in ohci_hcd_pxa27x_drv_resume()
577 pxa27x_ohci_select_pmm(pxa_ohci, inf->port_mode); in ohci_hcd_pxa27x_drv_resume()