Lines Matching full:udc
47 #define UDCCR 0x0000 /* UDC Control Register */
48 #define UDC_RES1 0x0004 /* UDC Undocumented - Reserved1 */
49 #define UDC_RES2 0x0008 /* UDC Undocumented - Reserved2 */
50 #define UDC_RES3 0x000C /* UDC Undocumented - Reserved3 */
51 #define UDCCS0 0x0010 /* UDC Endpoint 0 Control/Status Register */
52 #define UDCCS1 0x0014 /* UDC Endpoint 1 (IN) Control/Status Register */
53 #define UDCCS2 0x0018 /* UDC Endpoint 2 (OUT) Control/Status Register */
54 #define UDCCS3 0x001C /* UDC Endpoint 3 (IN) Control/Status Register */
55 #define UDCCS4 0x0020 /* UDC Endpoint 4 (OUT) Control/Status Register */
56 #define UDCCS5 0x0024 /* UDC Endpoint 5 (Interrupt) Control/Status Register */
57 #define UDCCS6 0x0028 /* UDC Endpoint 6 (IN) Control/Status Register */
58 #define UDCCS7 0x002C /* UDC Endpoint 7 (OUT) Control/Status Register */
59 #define UDCCS8 0x0030 /* UDC Endpoint 8 (IN) Control/Status Register */
60 #define UDCCS9 0x0034 /* UDC Endpoint 9 (OUT) Control/Status Register */
61 #define UDCCS10 0x0038 /* UDC Endpoint 10 (Interrupt) Control/Status Register */
62 #define UDCCS11 0x003C /* UDC Endpoint 11 (IN) Control/Status Register */
63 #define UDCCS12 0x0040 /* UDC Endpoint 12 (OUT) Control/Status Register */
64 #define UDCCS13 0x0044 /* UDC Endpoint 13 (IN) Control/Status Register */
65 #define UDCCS14 0x0048 /* UDC Endpoint 14 (OUT) Control/Status Register */
66 #define UDCCS15 0x004C /* UDC Endpoint 15 (Interrupt) Control/Status Register */
67 #define UFNRH 0x0060 /* UDC Frame Number Register High */
68 #define UFNRL 0x0064 /* UDC Frame Number Register Low */
69 #define UBCR2 0x0068 /* UDC Byte Count Reg 2 */
70 #define UBCR4 0x006c /* UDC Byte Count Reg 4 */
71 #define UBCR7 0x0070 /* UDC Byte Count Reg 7 */
72 #define UBCR9 0x0074 /* UDC Byte Count Reg 9 */
73 #define UBCR12 0x0078 /* UDC Byte Count Reg 12 */
74 #define UBCR14 0x007c /* UDC Byte Count Reg 14 */
75 #define UDDR0 0x0080 /* UDC Endpoint 0 Data Register */
76 #define UDDR1 0x0100 /* UDC Endpoint 1 Data Register */
77 #define UDDR2 0x0180 /* UDC Endpoint 2 Data Register */
78 #define UDDR3 0x0200 /* UDC Endpoint 3 Data Register */
79 #define UDDR4 0x0400 /* UDC Endpoint 4 Data Register */
80 #define UDDR5 0x00A0 /* UDC Endpoint 5 Data Register */
81 #define UDDR6 0x0600 /* UDC Endpoint 6 Data Register */
82 #define UDDR7 0x0680 /* UDC Endpoint 7 Data Register */
83 #define UDDR8 0x0700 /* UDC Endpoint 8 Data Register */
84 #define UDDR9 0x0900 /* UDC Endpoint 9 Data Register */
85 #define UDDR10 0x00C0 /* UDC Endpoint 10 Data Register */
86 #define UDDR11 0x0B00 /* UDC Endpoint 11 Data Register */
87 #define UDDR12 0x0B80 /* UDC Endpoint 12 Data Register */
88 #define UDDR13 0x0C00 /* UDC Endpoint 13 Data Register */
89 #define UDDR14 0x0E00 /* UDC Endpoint 14 Data Register */
90 #define UDDR15 0x00E0 /* UDC Endpoint 15 Data Register */
92 #define UICR0 0x0050 /* UDC Interrupt Control Register 0 */
93 #define UICR1 0x0054 /* UDC Interrupt Control Register 1 */
95 #define USIR0 0x0058 /* UDC Status Interrupt Register 0 */
96 #define USIR1 0x005C /* UDC Status Interrupt Register 1 */
98 #define UDCCR_UDE (1 << 0) /* UDC enable */
99 #define UDCCR_UDA (1 << 1) /* UDC active */
195 * This driver handles the USB Device Controller (UDC) in Intel's PXA 25x
196 * series processors. The UDC for the IXP 4xx series is very similar.
205 * This UDC hardware wants to implement a bit too much USB protocol, so
210 * Note that the UDC hardware supports DMA (except on IXP) but that's
1010 * done from software on the PXA UDC, and the hardware in pxa25x_ep_set_halt()
1127 struct pxa25x_udc *udc; in pxa25x_udc_wakeup() local
1129 udc = container_of(_gadget, struct pxa25x_udc, gadget); in pxa25x_udc_wakeup()
1132 if ((udc_ep0_get_UDCCS(udc) & UDCCS0_DRWF) == 0) in pxa25x_udc_wakeup()
1134 udc_set_mask_UDCCR(udc, UDCCR_RSM); in pxa25x_udc_wakeup()
1142 /* We disable the UDC -- and its 48 MHz clock -- whenever it's not
1145 static int pullup(struct pxa25x_udc *udc) in pullup() argument
1147 int is_active = udc->vbus && udc->pullup && !udc->suspended; in pullup()
1150 if (!udc->active) { in pullup()
1151 udc->active = 1; in pullup()
1153 clk_enable(udc->clk); in pullup()
1154 udc_enable(udc); in pullup()
1157 if (udc->active) { in pullup()
1158 if (udc->gadget.speed != USB_SPEED_UNKNOWN) { in pullup()
1159 DMSG("disconnect %s\n", udc->driver in pullup()
1160 ? udc->driver->driver.name in pullup()
1162 stop_activity(udc, udc->driver); in pullup()
1164 udc_disable(udc); in pullup()
1166 clk_disable(udc->clk); in pullup()
1167 udc->active = 0; in pullup()
1177 struct pxa25x_udc *udc; in pxa25x_udc_vbus_session() local
1179 udc = container_of(_gadget, struct pxa25x_udc, gadget); in pxa25x_udc_vbus_session()
1180 udc->vbus = is_active; in pxa25x_udc_vbus_session()
1182 pullup(udc); in pxa25x_udc_vbus_session()
1189 struct pxa25x_udc *udc; in pxa25x_udc_pullup() local
1191 udc = container_of(_gadget, struct pxa25x_udc, gadget); in pxa25x_udc_pullup()
1194 if (!gpio_is_valid(udc->mach->gpio_pullup) && !udc->mach->udc_command) in pxa25x_udc_pullup()
1197 udc->pullup = (is_active != 0); in pxa25x_udc_pullup()
1198 pullup(udc); in pxa25x_udc_pullup()
1208 struct pxa25x_udc *udc; in pxa25x_udc_vbus_draw() local
1210 udc = container_of(_gadget, struct pxa25x_udc, gadget); in pxa25x_udc_vbus_draw()
1212 if (!IS_ERR_OR_NULL(udc->transceiver)) in pxa25x_udc_vbus_draw()
1213 return usb_phy_set_power(udc->transceiver, mA); in pxa25x_udc_vbus_draw()
1405 /* until it's enabled, this UDC should be completely invisible
1412 /* try to clear these bits before we enable the udc */ in udc_enable()
1421 * - enable UDC in udc_enable()
1676 /* udc hardware is broken by design: in handle_ep0()
1721 * where udc seems to clear FST wrongly, and in handle_ep0()
2439 struct pxa25x_udc *udc = platform_get_drvdata(dev); in pxa25x_udc_suspend() local
2442 if (!gpio_is_valid(udc->mach->gpio_pullup) && !udc->mach->udc_command) in pxa25x_udc_suspend()
2444 udc->suspended = 1; in pxa25x_udc_suspend()
2447 pullup(udc); in pxa25x_udc_suspend()
2455 struct pxa25x_udc *udc = platform_get_drvdata(dev); in pxa25x_udc_resume() local
2458 udc->suspended = 0; in pxa25x_udc_resume()
2460 pullup(udc); in pxa25x_udc_resume()
2480 .name = "pxa25x-udc",
2489 MODULE_ALIAS("platform:pxa25x-udc");