Lines Matching refs:fusb300

39 static void fusb300_enable_bit(struct fusb300 *fusb300, u32 offset,  in fusb300_enable_bit()  argument
42 u32 reg = ioread32(fusb300->reg + offset); in fusb300_enable_bit()
45 iowrite32(reg, fusb300->reg + offset); in fusb300_enable_bit()
48 static void fusb300_disable_bit(struct fusb300 *fusb300, u32 offset, in fusb300_disable_bit() argument
51 u32 reg = ioread32(fusb300->reg + offset); in fusb300_disable_bit()
54 iowrite32(reg, fusb300->reg + offset); in fusb300_disable_bit()
75 static void fusb300_set_fifo_entry(struct fusb300 *fusb300, in fusb300_set_fifo_entry() argument
78 u32 val = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); in fusb300_set_fifo_entry()
82 iowrite32(val, fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); in fusb300_set_fifo_entry()
85 static void fusb300_set_start_entry(struct fusb300 *fusb300, in fusb300_set_start_entry() argument
88 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); in fusb300_set_start_entry()
89 u32 start_entry = fusb300->fifo_entry_num * FUSB300_FIFO_ENTRY_NUM; in fusb300_set_start_entry()
93 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); in fusb300_set_start_entry()
94 if (fusb300->fifo_entry_num == FUSB300_MAX_FIFO_ENTRY) { in fusb300_set_start_entry()
95 fusb300->fifo_entry_num = 0; in fusb300_set_start_entry()
96 fusb300->addrofs = 0; in fusb300_set_start_entry()
99 fusb300->fifo_entry_num++; in fusb300_set_start_entry()
103 static void fusb300_set_epaddrofs(struct fusb300 *fusb300, in fusb300_set_epaddrofs() argument
106 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET2(info.epnum)); in fusb300_set_epaddrofs()
109 reg |= FUSB300_EPSET2_ADDROFS(fusb300->addrofs); in fusb300_set_epaddrofs()
110 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET2(info.epnum)); in fusb300_set_epaddrofs()
111 fusb300->addrofs += (info.maxpacket + 7) / 8 * FUSB300_FIFO_ENTRY_NUM; in fusb300_set_epaddrofs()
114 static void ep_fifo_setting(struct fusb300 *fusb300, in ep_fifo_setting() argument
117 fusb300_set_fifo_entry(fusb300, info.epnum); in ep_fifo_setting()
118 fusb300_set_start_entry(fusb300, info.epnum); in ep_fifo_setting()
119 fusb300_set_epaddrofs(fusb300, info); in ep_fifo_setting()
122 static void fusb300_set_eptype(struct fusb300 *fusb300, in fusb300_set_eptype() argument
125 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); in fusb300_set_eptype()
129 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); in fusb300_set_eptype()
132 static void fusb300_set_epdir(struct fusb300 *fusb300, in fusb300_set_epdir() argument
139 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); in fusb300_set_epdir()
142 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); in fusb300_set_epdir()
145 static void fusb300_set_ep_active(struct fusb300 *fusb300, in fusb300_set_ep_active() argument
148 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); in fusb300_set_ep_active()
151 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); in fusb300_set_ep_active()
154 static void fusb300_set_epmps(struct fusb300 *fusb300, in fusb300_set_epmps() argument
157 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET2(info.epnum)); in fusb300_set_epmps()
161 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET2(info.epnum)); in fusb300_set_epmps()
164 static void fusb300_set_interval(struct fusb300 *fusb300, in fusb300_set_interval() argument
167 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); in fusb300_set_interval()
171 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); in fusb300_set_interval()
174 static void fusb300_set_bwnum(struct fusb300 *fusb300, in fusb300_set_bwnum() argument
177 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); in fusb300_set_bwnum()
181 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); in fusb300_set_bwnum()
184 static void set_ep_reg(struct fusb300 *fusb300, in set_ep_reg() argument
187 fusb300_set_eptype(fusb300, info); in set_ep_reg()
188 fusb300_set_epdir(fusb300, info); in set_ep_reg()
189 fusb300_set_epmps(fusb300, info); in set_ep_reg()
192 fusb300_set_interval(fusb300, info); in set_ep_reg()
195 fusb300_set_bwnum(fusb300, info); in set_ep_reg()
197 fusb300_set_ep_active(fusb300, info.epnum); in set_ep_reg()
203 struct fusb300 *fusb300 = ep->fusb300; in config_ep() local
224 ep_fifo_setting(fusb300, info); in config_ep()
226 set_ep_reg(fusb300, info); in config_ep()
230 fusb300->ep[info.epnum] = ep; in config_ep()
242 if (ep->fusb300->reenum) { in fusb300_enable()
243 ep->fusb300->fifo_entry_num = 0; in fusb300_enable()
244 ep->fusb300->addrofs = 0; in fusb300_enable()
245 ep->fusb300->reenum = 0; in fusb300_enable()
263 spin_lock_irqsave(&ep->fusb300->lock, flags); in fusb300_disable()
265 spin_unlock_irqrestore(&ep->fusb300->lock, flags); in fusb300_disable()
294 struct fusb300 *fusb300 = ep->fusb300; in enable_fifo_int() local
297 fusb300_enable_bit(fusb300, FUSB300_OFFSET_IGER0, in enable_fifo_int()
309 struct fusb300 *fusb300 = ep->fusb300; in disable_fifo_int() local
312 fusb300_disable_bit(fusb300, FUSB300_OFFSET_IGER0, in disable_fifo_int()
322 static void fusb300_set_cxlen(struct fusb300 *fusb300, u32 length) in fusb300_set_cxlen() argument
326 reg = ioread32(fusb300->reg + FUSB300_OFFSET_CSR); in fusb300_set_cxlen()
329 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_CSR); in fusb300_set_cxlen()
339 struct fusb300 *fusb300 = ep->fusb300; in fusb300_wrcxf() local
345 fusb300_set_cxlen(fusb300, SS_CTL_MAX_PACKET_SIZE); in fusb300_wrcxf()
349 iowrite32(data, fusb300->reg + FUSB300_OFFSET_CXPORT); in fusb300_wrcxf()
354 fusb300_set_cxlen(fusb300, length); in fusb300_wrcxf()
359 iowrite32(data, fusb300->reg + FUSB300_OFFSET_CXPORT); in fusb300_wrcxf()
366 iowrite32(data, fusb300->reg + FUSB300_OFFSET_CXPORT); in fusb300_wrcxf()
371 iowrite32(data, fusb300->reg + FUSB300_OFFSET_CXPORT); in fusb300_wrcxf()
376 iowrite32(data, fusb300->reg + FUSB300_OFFSET_CXPORT); in fusb300_wrcxf()
385 static void fusb300_set_epnstall(struct fusb300 *fusb300, u8 ep) in fusb300_set_epnstall() argument
387 fusb300_enable_bit(fusb300, FUSB300_OFFSET_EPSET0(ep), in fusb300_set_epnstall()
391 static void fusb300_clear_epnstall(struct fusb300 *fusb300, u8 ep) in fusb300_clear_epnstall() argument
393 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET0(ep)); in fusb300_clear_epnstall()
398 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET0(ep)); in fusb300_clear_epnstall()
404 if (ep->fusb300->ep0_dir) { /* if IN */ in ep0_queue()
417 fusb300_enable_bit(ep->fusb300, FUSB300_OFFSET_IGER1, in ep0_queue()
433 if (ep->fusb300->gadget.speed == USB_SPEED_UNKNOWN) in fusb300_queue()
436 spin_lock_irqsave(&ep->fusb300->lock, flags); in fusb300_queue()
451 spin_unlock_irqrestore(&ep->fusb300->lock, flags); in fusb300_queue()
465 spin_lock_irqsave(&ep->fusb300->lock, flags); in fusb300_dequeue()
468 spin_unlock_irqrestore(&ep->fusb300->lock, flags); in fusb300_dequeue()
476 struct fusb300 *fusb300; in fusb300_set_halt_and_wedge() local
482 fusb300 = ep->fusb300; in fusb300_set_halt_and_wedge()
484 spin_lock_irqsave(&ep->fusb300->lock, flags); in fusb300_set_halt_and_wedge()
492 fusb300_set_epnstall(fusb300, ep->epnum); in fusb300_set_halt_and_wedge()
497 fusb300_clear_epnstall(fusb300, ep->epnum); in fusb300_set_halt_and_wedge()
503 spin_unlock_irqrestore(&ep->fusb300->lock, flags); in fusb300_set_halt_and_wedge()
537 static void fusb300_clear_int(struct fusb300 *fusb300, u32 offset, in fusb300_clear_int() argument
540 iowrite32(value, fusb300->reg + offset); in fusb300_clear_int()
547 static void fusb300_set_cxstall(struct fusb300 *fusb300) in fusb300_set_cxstall() argument
549 fusb300_enable_bit(fusb300, FUSB300_OFFSET_CSR, in fusb300_set_cxstall()
553 static void fusb300_set_cxdone(struct fusb300 *fusb300) in fusb300_set_cxdone() argument
555 fusb300_enable_bit(fusb300, FUSB300_OFFSET_CSR, in fusb300_set_cxdone()
560 static void fusb300_rdcxf(struct fusb300 *fusb300, in fusb300_rdcxf() argument
570 data = ioread32(fusb300->reg + FUSB300_OFFSET_CXPORT); in fusb300_rdcxf()
581 data = ioread32(fusb300->reg + FUSB300_OFFSET_CXPORT); in fusb300_rdcxf()
586 data = ioread32(fusb300->reg + FUSB300_OFFSET_CXPORT); in fusb300_rdcxf()
592 data = ioread32(fusb300->reg + FUSB300_OFFSET_CXPORT); in fusb300_rdcxf()
610 struct fusb300 *fusb300 = ep->fusb300; in fusb300_rdfifo() local
619 data = ioread32(fusb300->reg + in fusb300_rdfifo()
630 data = ioread32(fusb300->reg + in fusb300_rdfifo()
635 data = ioread32(fusb300->reg + in fusb300_rdfifo()
641 data = ioread32(fusb300->reg + in fusb300_rdfifo()
652 reg = ioread32(fusb300->reg + FUSB300_OFFSET_IGR1); in fusb300_rdfifo()
660 static u8 fusb300_get_epnstall(struct fusb300 *fusb300, u8 ep) in fusb300_get_epnstall() argument
663 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET0(ep)); in fusb300_get_epnstall()
670 static u8 fusb300_get_cxstall(struct fusb300 *fusb300) in fusb300_get_cxstall() argument
673 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_CSR); in fusb300_get_cxstall()
680 static void request_error(struct fusb300 *fusb300) in request_error() argument
682 fusb300_set_cxstall(fusb300); in request_error()
686 static void get_status(struct fusb300 *fusb300, struct usb_ctrlrequest *ctrl) in get_status() argument
687 __releases(fusb300->lock) in get_status()
688 __acquires(fusb300->lock) in get_status()
704 if (fusb300_get_epnstall(fusb300, ep)) in get_status()
707 if (fusb300_get_cxstall(fusb300)) in get_status()
713 request_error(fusb300); in get_status()
717 fusb300->ep0_data = cpu_to_le16(status); in get_status()
718 fusb300->ep0_req->buf = &fusb300->ep0_data; in get_status()
719 fusb300->ep0_req->length = 2; in get_status()
721 spin_unlock(&fusb300->lock); in get_status()
722 fusb300_queue(fusb300->gadget.ep0, fusb300->ep0_req, GFP_KERNEL); in get_status()
723 spin_lock(&fusb300->lock); in get_status()
726 static void set_feature(struct fusb300 *fusb300, struct usb_ctrlrequest *ctrl) in set_feature() argument
732 fusb300_set_cxdone(fusb300); in set_feature()
735 fusb300_set_cxdone(fusb300); in set_feature()
742 fusb300_set_epnstall(fusb300, ep); in set_feature()
744 fusb300_set_cxstall(fusb300); in set_feature()
745 fusb300_set_cxdone(fusb300); in set_feature()
749 request_error(fusb300); in set_feature()
754 static void fusb300_clear_seqnum(struct fusb300 *fusb300, u8 ep) in fusb300_clear_seqnum() argument
756 fusb300_enable_bit(fusb300, FUSB300_OFFSET_EPSET0(ep), in fusb300_clear_seqnum()
760 static void clear_feature(struct fusb300 *fusb300, struct usb_ctrlrequest *ctrl) in clear_feature() argument
763 fusb300->ep[ctrl->wIndex & USB_ENDPOINT_NUMBER_MASK]; in clear_feature()
767 fusb300_set_cxdone(fusb300); in clear_feature()
770 fusb300_set_cxdone(fusb300); in clear_feature()
775 fusb300_set_cxdone(fusb300); in clear_feature()
780 fusb300_clear_seqnum(fusb300, ep->epnum); in clear_feature()
781 fusb300_clear_epnstall(fusb300, ep->epnum); in clear_feature()
786 fusb300_set_cxdone(fusb300); in clear_feature()
789 request_error(fusb300); in clear_feature()
794 static void fusb300_set_dev_addr(struct fusb300 *fusb300, u16 addr) in fusb300_set_dev_addr() argument
796 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_DAR); in fusb300_set_dev_addr()
801 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_DAR); in fusb300_set_dev_addr()
804 static void set_address(struct fusb300 *fusb300, struct usb_ctrlrequest *ctrl) in set_address() argument
807 request_error(fusb300); in set_address()
809 fusb300_set_dev_addr(fusb300, ctrl->wValue); in set_address()
810 fusb300_set_cxdone(fusb300); in set_address()
823 static int setup_packet(struct fusb300 *fusb300, struct usb_ctrlrequest *ctrl) in setup_packet() argument
829 fusb300_rdcxf(fusb300, p, 8); in setup_packet()
830 fusb300->ep0_dir = ctrl->bRequestType & USB_DIR_IN; in setup_packet()
831 fusb300->ep0_length = ctrl->wLength; in setup_packet()
837 get_status(fusb300, ctrl); in setup_packet()
840 clear_feature(fusb300, ctrl); in setup_packet()
843 set_feature(fusb300, ctrl); in setup_packet()
846 set_address(fusb300, ctrl); in setup_packet()
849 fusb300_enable_bit(fusb300, FUSB300_OFFSET_DAR, in setup_packet()
853 fusb300_clear_seqnum(fusb300, i); in setup_packet()
854 fusb300->reenum = 1; in setup_packet()
873 if (ep->fusb300->gadget.speed == USB_SPEED_UNKNOWN) in done()
878 spin_unlock(&ep->fusb300->lock); in done()
880 spin_lock(&ep->fusb300->lock); in done()
887 fusb300_set_cxdone(ep->fusb300); in done()
898 reg = ioread32(ep->fusb300->reg + in fusb300_fill_idma_prdtbl()
903 iowrite32(d, ep->fusb300->reg + FUSB300_OFFSET_EPPRD_W1(ep->epnum)); in fusb300_fill_idma_prdtbl()
907 iowrite32(value, ep->fusb300->reg + FUSB300_OFFSET_EPPRD_W0(ep->epnum)); in fusb300_fill_idma_prdtbl()
909 iowrite32(0x0, ep->fusb300->reg + FUSB300_OFFSET_EPPRD_W2(ep->epnum)); in fusb300_fill_idma_prdtbl()
911 fusb300_enable_bit(ep->fusb300, FUSB300_OFFSET_EPPRDRDY, in fusb300_fill_idma_prdtbl()
920 reg = ioread32(ep->fusb300->reg + FUSB300_OFFSET_IGR1); in fusb300_wait_idma_finished()
927 reg = ioread32(ep->fusb300->reg + FUSB300_OFFSET_IGR0); in fusb300_wait_idma_finished()
931 fusb300_clear_int(ep->fusb300, FUSB300_OFFSET_IGR0, in fusb300_wait_idma_finished()
936 reg = ioread32(ep->fusb300->reg + FUSB300_OFFSET_IGER0); in fusb300_wait_idma_finished()
938 iowrite32(reg, ep->fusb300->reg + FUSB300_OFFSET_IGER0); in fusb300_wait_idma_finished()
946 ret = usb_gadget_map_request(&ep->fusb300->gadget, in fusb300_set_idma()
951 fusb300_enable_bit(ep->fusb300, FUSB300_OFFSET_IGER0, in fusb300_set_idma()
958 usb_gadget_unmap_request(&ep->fusb300->gadget, in fusb300_set_idma()
974 struct fusb300 *fusb300 = ep->fusb300; in out_ep_fifo_handler() local
977 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPFFR(ep->epnum)); in out_ep_fifo_handler()
987 static void check_device_mode(struct fusb300 *fusb300) in check_device_mode() argument
989 u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_GCR); in check_device_mode()
993 fusb300->gadget.speed = USB_SPEED_SUPER; in check_device_mode()
996 fusb300->gadget.speed = USB_SPEED_HIGH; in check_device_mode()
999 fusb300->gadget.speed = USB_SPEED_FULL; in check_device_mode()
1002 fusb300->gadget.speed = USB_SPEED_UNKNOWN; in check_device_mode()
1009 static void fusb300_ep0out(struct fusb300 *fusb300) in fusb300_ep0out() argument
1011 struct fusb300_ep *ep = fusb300->ep[0]; in fusb300_ep0out()
1020 fusb300_rdcxf(ep->fusb300, req->req.buf, in fusb300_ep0out()
1023 reg = ioread32(fusb300->reg + FUSB300_OFFSET_IGER1); in fusb300_ep0out()
1025 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_IGER1); in fusb300_ep0out()
1030 static void fusb300_ep0in(struct fusb300 *fusb300) in fusb300_ep0in() argument
1033 struct fusb300_ep *ep = fusb300->ep[0]; in fusb300_ep0in()
1035 if ((!list_empty(&ep->queue)) && (fusb300->ep0_dir)) { in fusb300_ep0in()
1043 fusb300_set_cxdone(fusb300); in fusb300_ep0in()
1064 struct fusb300 *fusb300 = _fusb300; in fusb300_irq() local
1065 u32 int_grp1 = ioread32(fusb300->reg + FUSB300_OFFSET_IGR1); in fusb300_irq()
1066 u32 int_grp1_en = ioread32(fusb300->reg + FUSB300_OFFSET_IGER1); in fusb300_irq()
1067 u32 int_grp0 = ioread32(fusb300->reg + FUSB300_OFFSET_IGR0); in fusb300_irq()
1068 u32 int_grp0_en = ioread32(fusb300->reg + FUSB300_OFFSET_IGER0); in fusb300_irq()
1074 spin_lock(&fusb300->lock); in fusb300_irq()
1080 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1087 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1094 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1101 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1107 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1113 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1118 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1123 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1128 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1133 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1138 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1144 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1150 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1156 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1159 fusb300_enable_bit(fusb300, FUSB300_OFFSET_SSCR1, in fusb300_irq()
1164 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1170 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1176 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1182 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1188 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1194 fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, in fusb300_irq()
1196 check_device_mode(fusb300); in fusb300_irq()
1200 fusb300_set_cxstall(fusb300); in fusb300_irq()
1206 if (setup_packet(fusb300, &ctrl)) { in fusb300_irq()
1207 spin_unlock(&fusb300->lock); in fusb300_irq()
1208 if (fusb300->driver->setup(&fusb300->gadget, &ctrl) < 0) in fusb300_irq()
1209 fusb300_set_cxstall(fusb300); in fusb300_irq()
1210 spin_lock(&fusb300->lock); in fusb300_irq()
1220 fusb300_ep0out(fusb300); in fusb300_irq()
1225 fusb300_ep0in(fusb300); in fusb300_irq()
1243 reg = ioread32(fusb300->reg + in fusb300_irq()
1247 in_ep_fifo_handler(fusb300->ep[i]); in fusb300_irq()
1249 out_ep_fifo_handler(fusb300->ep[i]); in fusb300_irq()
1254 spin_unlock(&fusb300->lock); in fusb300_irq()
1259 static void fusb300_set_u2_timeout(struct fusb300 *fusb300, in fusb300_set_u2_timeout() argument
1264 reg = ioread32(fusb300->reg + FUSB300_OFFSET_TT); in fusb300_set_u2_timeout()
1268 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_TT); in fusb300_set_u2_timeout()
1271 static void fusb300_set_u1_timeout(struct fusb300 *fusb300, in fusb300_set_u1_timeout() argument
1276 reg = ioread32(fusb300->reg + FUSB300_OFFSET_TT); in fusb300_set_u1_timeout()
1280 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_TT); in fusb300_set_u1_timeout()
1283 static void init_controller(struct fusb300 *fusb300) in init_controller() argument
1291 reg = ioread32(fusb300->reg + FUSB300_OFFSET_AHBCR); in init_controller()
1294 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_AHBCR); in init_controller()
1298 reg = ioread32(fusb300->reg + FUSB300_OFFSET_HSCR); in init_controller()
1301 iowrite32(reg, fusb300->reg + FUSB300_OFFSET_HSCR); in init_controller()
1304 fusb300_set_u2_timeout(fusb300, 0xff); in init_controller()
1305 fusb300_set_u1_timeout(fusb300, 0xff); in init_controller()
1308 iowrite32(0xcfffff9f, fusb300->reg + FUSB300_OFFSET_IGER1); in init_controller()
1314 struct fusb300 *fusb300 = to_fusb300(g); in fusb300_udc_start() local
1318 fusb300->driver = driver; in fusb300_udc_start()
1325 struct fusb300 *fusb300 = to_fusb300(g); in fusb300_udc_stop() local
1327 init_controller(fusb300); in fusb300_udc_stop()
1328 fusb300->driver = NULL; in fusb300_udc_stop()
1347 struct fusb300 *fusb300 = platform_get_drvdata(pdev); in fusb300_remove() local
1349 usb_del_gadget_udc(&fusb300->gadget); in fusb300_remove()
1350 iounmap(fusb300->reg); in fusb300_remove()
1351 free_irq(platform_get_irq(pdev, 0), fusb300); in fusb300_remove()
1353 fusb300_free_request(&fusb300->ep[0]->ep, fusb300->ep0_req); in fusb300_remove()
1354 kfree(fusb300); in fusb300_remove()
1363 struct fusb300 *fusb300 = NULL; in fusb300_probe() local
1399 fusb300 = kzalloc(sizeof(struct fusb300), GFP_KERNEL); in fusb300_probe()
1400 if (fusb300 == NULL) { in fusb300_probe()
1411 fusb300->ep[i] = _ep[i]; in fusb300_probe()
1414 spin_lock_init(&fusb300->lock); in fusb300_probe()
1416 platform_set_drvdata(pdev, fusb300); in fusb300_probe()
1418 fusb300->gadget.ops = &fusb300_gadget_ops; in fusb300_probe()
1420 fusb300->gadget.max_speed = USB_SPEED_HIGH; in fusb300_probe()
1421 fusb300->gadget.name = udc_name; in fusb300_probe()
1422 fusb300->reg = reg; in fusb300_probe()
1425 udc_name, fusb300); in fusb300_probe()
1432 IRQF_SHARED, udc_name, fusb300); in fusb300_probe()
1438 INIT_LIST_HEAD(&fusb300->gadget.ep_list); in fusb300_probe()
1441 struct fusb300_ep *ep = fusb300->ep[i]; in fusb300_probe()
1444 INIT_LIST_HEAD(&fusb300->ep[i]->ep.ep_list); in fusb300_probe()
1445 list_add_tail(&fusb300->ep[i]->ep.ep_list, in fusb300_probe()
1446 &fusb300->gadget.ep_list); in fusb300_probe()
1448 ep->fusb300 = fusb300; in fusb300_probe()
1465 usb_ep_set_maxpacket_limit(&fusb300->ep[0]->ep, HS_CTL_MAX_PACKET_SIZE); in fusb300_probe()
1466 fusb300->ep[0]->epnum = 0; in fusb300_probe()
1467 fusb300->gadget.ep0 = &fusb300->ep[0]->ep; in fusb300_probe()
1468 INIT_LIST_HEAD(&fusb300->gadget.ep0->ep_list); in fusb300_probe()
1470 fusb300->ep0_req = fusb300_alloc_request(&fusb300->ep[0]->ep, in fusb300_probe()
1472 if (fusb300->ep0_req == NULL) { in fusb300_probe()
1477 init_controller(fusb300); in fusb300_probe()
1478 ret = usb_add_gadget_udc(&pdev->dev, &fusb300->gadget); in fusb300_probe()
1487 fusb300_free_request(&fusb300->ep[0]->ep, fusb300->ep0_req); in fusb300_probe()
1490 free_irq(ires->start, fusb300); in fusb300_probe()
1493 if (fusb300) { in fusb300_probe()
1494 if (fusb300->ep0_req) in fusb300_probe()
1495 fusb300_free_request(&fusb300->ep[0]->ep, in fusb300_probe()
1496 fusb300->ep0_req); in fusb300_probe()
1497 kfree(fusb300); in fusb300_probe()