Lines Matching +full:usb +full:- +full:otg +full:- +full:vbus

1 // SPDX-License-Identifier: GPL-2.0+
3 * Faraday USB 2.0 EHCI Controller
6 * Dante Su <dantesu@faraday-tech.com>
11 #include <usb.h>
12 #include <usb/fusbh200.h>
13 #include <usb/fotg210.h>
22 struct fusbh200_regs usb; member
23 struct fotg210_regs otg; member
28 return !readl(&regs->usb.easstr); in ehci_is_fotg2xx()
41 ret = (void __iomem *)((ulong)ctrl->hcor - 0x10); in faraday_ehci_get_port_speed()
43 spd = OTGCSR_SPD(readl(&regs->otg.otgcsr)); in faraday_ehci_get_port_speed()
45 spd = BMCSR_SPD(readl(&regs->usb.bmcsr)); in faraday_ehci_get_port_speed()
58 printf("ehci-faraday: invalid device speed\n"); in faraday_ehci_get_port_speed()
75 return (uint32_t *)((uint8_t *)ctrl->hcor + 0x20); in faraday_ehci_get_portsc_register()
97 return -1; in ehci_hcd_init()
100 hccr = (struct ehci_hccr *)&regs->usb.hccr; in ehci_hcd_init()
101 hcor = (struct ehci_hcor *)&regs->usb.hcor; in ehci_hcd_init()
104 /* A-device bus reset */ in ehci_hcd_init()
105 /* ... Power off A-device */ in ehci_hcd_init()
106 setbits_le32(&regs->otg.otgcsr, OTGCSR_A_BUSDROP); in ehci_hcd_init()
107 /* ... Drop vbus and bus traffic */ in ehci_hcd_init()
108 clrbits_le32(&regs->otg.otgcsr, OTGCSR_A_BUSREQ); in ehci_hcd_init()
110 /* ... Power on A-device */ in ehci_hcd_init()
111 clrbits_le32(&regs->otg.otgcsr, OTGCSR_A_BUSDROP); in ehci_hcd_init()
112 /* ... Drive vbus and bus traffic */ in ehci_hcd_init()
113 setbits_le32(&regs->otg.otgcsr, OTGCSR_A_BUSREQ); in ehci_hcd_init()
115 /* Disable OTG & DEV interrupts, triggered at level-high */ in ehci_hcd_init()
116 writel(IMR_IRQLH | IMR_OTG | IMR_DEV, &regs->otg.imr); in ehci_hcd_init()
118 writel(ISR_HOST | ISR_OTG | ISR_DEV, &regs->otg.isr); in ehci_hcd_init()
120 /* Interrupt=level-high */ in ehci_hcd_init()
121 setbits_le32(&regs->usb.bmcsr, BMCSR_IRQLH); in ehci_hcd_init()
122 /* VBUS on */ in ehci_hcd_init()
123 clrbits_le32(&regs->usb.bmcsr, BMCSR_VBUS_OFF); in ehci_hcd_init()
125 writel(0x00, &regs->usb.bmier); in ehci_hcd_init()
126 writel(0x1f, &regs->usb.bmisr); in ehci_hcd_init()