fusb300 36 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_enable_bit(struct fusb300 *fusb300, u32 offset, fusb300 39 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + offset); fusb300 42 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + offset); fusb300 45 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_disable_bit(struct fusb300 *fusb300, u32 offset, fusb300 48 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + offset); fusb300 51 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + offset); fusb300 72 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_fifo_entry(struct fusb300 *fusb300, fusb300 75 drivers/usb/gadget/udc/fusb300_udc.c u32 val = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); fusb300 79 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(val, fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); fusb300 82 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_start_entry(struct fusb300 *fusb300, fusb300 85 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); fusb300 86 drivers/usb/gadget/udc/fusb300_udc.c u32 start_entry = fusb300->fifo_entry_num * FUSB300_FIFO_ENTRY_NUM; fusb300 90 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); fusb300 91 drivers/usb/gadget/udc/fusb300_udc.c if (fusb300->fifo_entry_num == FUSB300_MAX_FIFO_ENTRY) { fusb300 92 drivers/usb/gadget/udc/fusb300_udc.c fusb300->fifo_entry_num = 0; fusb300 93 drivers/usb/gadget/udc/fusb300_udc.c fusb300->addrofs = 0; fusb300 96 drivers/usb/gadget/udc/fusb300_udc.c fusb300->fifo_entry_num++; fusb300 100 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_epaddrofs(struct fusb300 *fusb300, fusb300 103 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET2(info.epnum)); fusb300 106 drivers/usb/gadget/udc/fusb300_udc.c reg |= FUSB300_EPSET2_ADDROFS(fusb300->addrofs); fusb300 107 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET2(info.epnum)); fusb300 108 drivers/usb/gadget/udc/fusb300_udc.c fusb300->addrofs += (info.maxpacket + 7) / 8 * FUSB300_FIFO_ENTRY_NUM; fusb300 111 drivers/usb/gadget/udc/fusb300_udc.c static void ep_fifo_setting(struct fusb300 *fusb300, fusb300 114 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_fifo_entry(fusb300, info.epnum); fusb300 115 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_start_entry(fusb300, info.epnum); fusb300 116 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_epaddrofs(fusb300, info); fusb300 119 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_eptype(struct fusb300 *fusb300, fusb300 122 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); fusb300 126 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); fusb300 129 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_epdir(struct fusb300 *fusb300, fusb300 136 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); fusb300 139 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); fusb300 142 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_ep_active(struct fusb300 *fusb300, fusb300 145 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); fusb300 148 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(ep)); fusb300 151 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_epmps(struct fusb300 *fusb300, fusb300 154 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET2(info.epnum)); fusb300 158 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET2(info.epnum)); fusb300 161 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_interval(struct fusb300 *fusb300, fusb300 164 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); fusb300 168 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); fusb300 171 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_bwnum(struct fusb300 *fusb300, fusb300 174 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); fusb300 178 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET1(info.epnum)); fusb300 181 drivers/usb/gadget/udc/fusb300_udc.c static void set_ep_reg(struct fusb300 *fusb300, fusb300 184 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_eptype(fusb300, info); fusb300 185 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_epdir(fusb300, info); fusb300 186 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_epmps(fusb300, info); fusb300 189 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_interval(fusb300, info); fusb300 192 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_bwnum(fusb300, info); fusb300 194 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_ep_active(fusb300, info.epnum); fusb300 200 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = ep->fusb300; fusb300 221 drivers/usb/gadget/udc/fusb300_udc.c ep_fifo_setting(fusb300, info); fusb300 223 drivers/usb/gadget/udc/fusb300_udc.c set_ep_reg(fusb300, info); fusb300 227 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep[info.epnum] = ep; fusb300 239 drivers/usb/gadget/udc/fusb300_udc.c if (ep->fusb300->reenum) { fusb300 240 drivers/usb/gadget/udc/fusb300_udc.c ep->fusb300->fifo_entry_num = 0; fusb300 241 drivers/usb/gadget/udc/fusb300_udc.c ep->fusb300->addrofs = 0; fusb300 242 drivers/usb/gadget/udc/fusb300_udc.c ep->fusb300->reenum = 0; fusb300 260 drivers/usb/gadget/udc/fusb300_udc.c spin_lock_irqsave(&ep->fusb300->lock, flags); fusb300 262 drivers/usb/gadget/udc/fusb300_udc.c spin_unlock_irqrestore(&ep->fusb300->lock, flags); fusb300 291 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = ep->fusb300; fusb300 294 drivers/usb/gadget/udc/fusb300_udc.c fusb300_enable_bit(fusb300, FUSB300_OFFSET_IGER0, fusb300 306 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = ep->fusb300; fusb300 309 drivers/usb/gadget/udc/fusb300_udc.c fusb300_disable_bit(fusb300, FUSB300_OFFSET_IGER0, fusb300 319 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_cxlen(struct fusb300 *fusb300, u32 length) fusb300 323 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(fusb300->reg + FUSB300_OFFSET_CSR); fusb300 326 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_CSR); fusb300 336 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = ep->fusb300; fusb300 342 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxlen(fusb300, SS_CTL_MAX_PACKET_SIZE); fusb300 346 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(data, fusb300->reg + FUSB300_OFFSET_CXPORT); fusb300 351 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxlen(fusb300, length); fusb300 356 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(data, fusb300->reg + FUSB300_OFFSET_CXPORT); fusb300 363 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(data, fusb300->reg + FUSB300_OFFSET_CXPORT); fusb300 368 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(data, fusb300->reg + FUSB300_OFFSET_CXPORT); fusb300 373 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(data, fusb300->reg + FUSB300_OFFSET_CXPORT); fusb300 382 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_epnstall(struct fusb300 *fusb300, u8 ep) fusb300 384 drivers/usb/gadget/udc/fusb300_udc.c fusb300_enable_bit(fusb300, FUSB300_OFFSET_EPSET0(ep), fusb300 388 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_clear_epnstall(struct fusb300 *fusb300, u8 ep) fusb300 390 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET0(ep)); fusb300 395 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_EPSET0(ep)); fusb300 401 drivers/usb/gadget/udc/fusb300_udc.c if (ep->fusb300->ep0_dir) { /* if IN */ fusb300 414 drivers/usb/gadget/udc/fusb300_udc.c fusb300_enable_bit(ep->fusb300, FUSB300_OFFSET_IGER1, fusb300 430 drivers/usb/gadget/udc/fusb300_udc.c if (ep->fusb300->gadget.speed == USB_SPEED_UNKNOWN) fusb300 433 drivers/usb/gadget/udc/fusb300_udc.c spin_lock_irqsave(&ep->fusb300->lock, flags); fusb300 448 drivers/usb/gadget/udc/fusb300_udc.c spin_unlock_irqrestore(&ep->fusb300->lock, flags); fusb300 462 drivers/usb/gadget/udc/fusb300_udc.c spin_lock_irqsave(&ep->fusb300->lock, flags); fusb300 465 drivers/usb/gadget/udc/fusb300_udc.c spin_unlock_irqrestore(&ep->fusb300->lock, flags); fusb300 473 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300; fusb300 479 drivers/usb/gadget/udc/fusb300_udc.c fusb300 = ep->fusb300; fusb300 481 drivers/usb/gadget/udc/fusb300_udc.c spin_lock_irqsave(&ep->fusb300->lock, flags); fusb300 489 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_epnstall(fusb300, ep->epnum); fusb300 494 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_epnstall(fusb300, ep->epnum); fusb300 500 drivers/usb/gadget/udc/fusb300_udc.c spin_unlock_irqrestore(&ep->fusb300->lock, flags); fusb300 534 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_clear_int(struct fusb300 *fusb300, u32 offset, fusb300 537 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(value, fusb300->reg + offset); fusb300 544 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_cxstall(struct fusb300 *fusb300) fusb300 546 drivers/usb/gadget/udc/fusb300_udc.c fusb300_enable_bit(fusb300, FUSB300_OFFSET_CSR, fusb300 550 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_cxdone(struct fusb300 *fusb300) fusb300 552 drivers/usb/gadget/udc/fusb300_udc.c fusb300_enable_bit(fusb300, FUSB300_OFFSET_CSR, fusb300 557 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_rdcxf(struct fusb300 *fusb300, fusb300 567 drivers/usb/gadget/udc/fusb300_udc.c data = ioread32(fusb300->reg + FUSB300_OFFSET_CXPORT); fusb300 578 drivers/usb/gadget/udc/fusb300_udc.c data = ioread32(fusb300->reg + FUSB300_OFFSET_CXPORT); fusb300 583 drivers/usb/gadget/udc/fusb300_udc.c data = ioread32(fusb300->reg + FUSB300_OFFSET_CXPORT); fusb300 589 drivers/usb/gadget/udc/fusb300_udc.c data = ioread32(fusb300->reg + FUSB300_OFFSET_CXPORT); fusb300 607 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = ep->fusb300; fusb300 616 drivers/usb/gadget/udc/fusb300_udc.c data = ioread32(fusb300->reg + fusb300 627 drivers/usb/gadget/udc/fusb300_udc.c data = ioread32(fusb300->reg + fusb300 632 drivers/usb/gadget/udc/fusb300_udc.c data = ioread32(fusb300->reg + fusb300 638 drivers/usb/gadget/udc/fusb300_udc.c data = ioread32(fusb300->reg + fusb300 649 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(fusb300->reg + FUSB300_OFFSET_IGR1); fusb300 657 drivers/usb/gadget/udc/fusb300_udc.c static u8 fusb300_get_epnstall(struct fusb300 *fusb300, u8 ep) fusb300 660 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPSET0(ep)); fusb300 667 drivers/usb/gadget/udc/fusb300_udc.c static u8 fusb300_get_cxstall(struct fusb300 *fusb300) fusb300 670 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_CSR); fusb300 677 drivers/usb/gadget/udc/fusb300_udc.c static void request_error(struct fusb300 *fusb300) fusb300 679 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxstall(fusb300); fusb300 683 drivers/usb/gadget/udc/fusb300_udc.c static void get_status(struct fusb300 *fusb300, struct usb_ctrlrequest *ctrl) fusb300 684 drivers/usb/gadget/udc/fusb300_udc.c __releases(fusb300->lock) fusb300 685 drivers/usb/gadget/udc/fusb300_udc.c __acquires(fusb300->lock) fusb300 701 drivers/usb/gadget/udc/fusb300_udc.c if (fusb300_get_epnstall(fusb300, ep)) fusb300 704 drivers/usb/gadget/udc/fusb300_udc.c if (fusb300_get_cxstall(fusb300)) fusb300 710 drivers/usb/gadget/udc/fusb300_udc.c request_error(fusb300); fusb300 714 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep0_data = cpu_to_le16(status); fusb300 715 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep0_req->buf = &fusb300->ep0_data; fusb300 716 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep0_req->length = 2; fusb300 718 drivers/usb/gadget/udc/fusb300_udc.c spin_unlock(&fusb300->lock); fusb300 719 drivers/usb/gadget/udc/fusb300_udc.c fusb300_queue(fusb300->gadget.ep0, fusb300->ep0_req, GFP_KERNEL); fusb300 720 drivers/usb/gadget/udc/fusb300_udc.c spin_lock(&fusb300->lock); fusb300 723 drivers/usb/gadget/udc/fusb300_udc.c static void set_feature(struct fusb300 *fusb300, struct usb_ctrlrequest *ctrl) fusb300 729 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxdone(fusb300); fusb300 732 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxdone(fusb300); fusb300 739 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_epnstall(fusb300, ep); fusb300 741 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxstall(fusb300); fusb300 742 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxdone(fusb300); fusb300 746 drivers/usb/gadget/udc/fusb300_udc.c request_error(fusb300); fusb300 751 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_clear_seqnum(struct fusb300 *fusb300, u8 ep) fusb300 753 drivers/usb/gadget/udc/fusb300_udc.c fusb300_enable_bit(fusb300, FUSB300_OFFSET_EPSET0(ep), fusb300 757 drivers/usb/gadget/udc/fusb300_udc.c static void clear_feature(struct fusb300 *fusb300, struct usb_ctrlrequest *ctrl) fusb300 760 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep[ctrl->wIndex & USB_ENDPOINT_NUMBER_MASK]; fusb300 764 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxdone(fusb300); fusb300 767 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxdone(fusb300); fusb300 772 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxdone(fusb300); fusb300 777 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_seqnum(fusb300, ep->epnum); fusb300 778 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_epnstall(fusb300, ep->epnum); fusb300 783 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxdone(fusb300); fusb300 786 drivers/usb/gadget/udc/fusb300_udc.c request_error(fusb300); fusb300 791 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_dev_addr(struct fusb300 *fusb300, u16 addr) fusb300 793 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_DAR); fusb300 798 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_DAR); fusb300 801 drivers/usb/gadget/udc/fusb300_udc.c static void set_address(struct fusb300 *fusb300, struct usb_ctrlrequest *ctrl) fusb300 804 drivers/usb/gadget/udc/fusb300_udc.c request_error(fusb300); fusb300 806 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_dev_addr(fusb300, ctrl->wValue); fusb300 807 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxdone(fusb300); fusb300 820 drivers/usb/gadget/udc/fusb300_udc.c static int setup_packet(struct fusb300 *fusb300, struct usb_ctrlrequest *ctrl) fusb300 826 drivers/usb/gadget/udc/fusb300_udc.c fusb300_rdcxf(fusb300, p, 8); fusb300 827 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep0_dir = ctrl->bRequestType & USB_DIR_IN; fusb300 828 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep0_length = ctrl->wLength; fusb300 834 drivers/usb/gadget/udc/fusb300_udc.c get_status(fusb300, ctrl); fusb300 837 drivers/usb/gadget/udc/fusb300_udc.c clear_feature(fusb300, ctrl); fusb300 840 drivers/usb/gadget/udc/fusb300_udc.c set_feature(fusb300, ctrl); fusb300 843 drivers/usb/gadget/udc/fusb300_udc.c set_address(fusb300, ctrl); fusb300 846 drivers/usb/gadget/udc/fusb300_udc.c fusb300_enable_bit(fusb300, FUSB300_OFFSET_DAR, fusb300 850 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_seqnum(fusb300, i); fusb300 851 drivers/usb/gadget/udc/fusb300_udc.c fusb300->reenum = 1; fusb300 870 drivers/usb/gadget/udc/fusb300_udc.c if (ep->fusb300->gadget.speed == USB_SPEED_UNKNOWN) fusb300 875 drivers/usb/gadget/udc/fusb300_udc.c spin_unlock(&ep->fusb300->lock); fusb300 877 drivers/usb/gadget/udc/fusb300_udc.c spin_lock(&ep->fusb300->lock); fusb300 884 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxdone(ep->fusb300); fusb300 895 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(ep->fusb300->reg + fusb300 900 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(d, ep->fusb300->reg + FUSB300_OFFSET_EPPRD_W1(ep->epnum)); fusb300 904 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(value, ep->fusb300->reg + FUSB300_OFFSET_EPPRD_W0(ep->epnum)); fusb300 906 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(0x0, ep->fusb300->reg + FUSB300_OFFSET_EPPRD_W2(ep->epnum)); fusb300 908 drivers/usb/gadget/udc/fusb300_udc.c fusb300_enable_bit(ep->fusb300, FUSB300_OFFSET_EPPRDRDY, fusb300 917 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(ep->fusb300->reg + FUSB300_OFFSET_IGR1); fusb300 924 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(ep->fusb300->reg + FUSB300_OFFSET_IGR0); fusb300 928 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(ep->fusb300, FUSB300_OFFSET_IGR0, fusb300 933 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(ep->fusb300->reg + FUSB300_OFFSET_IGER0); fusb300 935 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, ep->fusb300->reg + FUSB300_OFFSET_IGER0); fusb300 943 drivers/usb/gadget/udc/fusb300_udc.c ret = usb_gadget_map_request(&ep->fusb300->gadget, fusb300 948 drivers/usb/gadget/udc/fusb300_udc.c fusb300_enable_bit(ep->fusb300, FUSB300_OFFSET_IGER0, fusb300 955 drivers/usb/gadget/udc/fusb300_udc.c usb_gadget_unmap_request(&ep->fusb300->gadget, fusb300 971 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = ep->fusb300; fusb300 974 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_EPFFR(ep->epnum)); fusb300 984 drivers/usb/gadget/udc/fusb300_udc.c static void check_device_mode(struct fusb300 *fusb300) fusb300 986 drivers/usb/gadget/udc/fusb300_udc.c u32 reg = ioread32(fusb300->reg + FUSB300_OFFSET_GCR); fusb300 990 drivers/usb/gadget/udc/fusb300_udc.c fusb300->gadget.speed = USB_SPEED_SUPER; fusb300 993 drivers/usb/gadget/udc/fusb300_udc.c fusb300->gadget.speed = USB_SPEED_HIGH; fusb300 996 drivers/usb/gadget/udc/fusb300_udc.c fusb300->gadget.speed = USB_SPEED_FULL; fusb300 999 drivers/usb/gadget/udc/fusb300_udc.c fusb300->gadget.speed = USB_SPEED_UNKNOWN; fusb300 1006 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_ep0out(struct fusb300 *fusb300) fusb300 1008 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300_ep *ep = fusb300->ep[0]; fusb300 1017 drivers/usb/gadget/udc/fusb300_udc.c fusb300_rdcxf(ep->fusb300, req->req.buf, fusb300 1020 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(fusb300->reg + FUSB300_OFFSET_IGER1); fusb300 1022 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_IGER1); fusb300 1027 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_ep0in(struct fusb300 *fusb300) fusb300 1030 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300_ep *ep = fusb300->ep[0]; fusb300 1032 drivers/usb/gadget/udc/fusb300_udc.c if ((!list_empty(&ep->queue)) && (fusb300->ep0_dir)) { fusb300 1040 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxdone(fusb300); fusb300 1061 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = _fusb300; fusb300 1062 drivers/usb/gadget/udc/fusb300_udc.c u32 int_grp1 = ioread32(fusb300->reg + FUSB300_OFFSET_IGR1); fusb300 1063 drivers/usb/gadget/udc/fusb300_udc.c u32 int_grp1_en = ioread32(fusb300->reg + FUSB300_OFFSET_IGER1); fusb300 1064 drivers/usb/gadget/udc/fusb300_udc.c u32 int_grp0 = ioread32(fusb300->reg + FUSB300_OFFSET_IGR0); fusb300 1065 drivers/usb/gadget/udc/fusb300_udc.c u32 int_grp0_en = ioread32(fusb300->reg + FUSB300_OFFSET_IGER0); fusb300 1071 drivers/usb/gadget/udc/fusb300_udc.c spin_lock(&fusb300->lock); fusb300 1077 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1084 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1091 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1098 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1104 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1110 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1115 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1120 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1125 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1130 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1135 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1141 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1147 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1153 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1156 drivers/usb/gadget/udc/fusb300_udc.c fusb300_enable_bit(fusb300, FUSB300_OFFSET_SSCR1, fusb300 1161 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1167 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1173 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1179 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1185 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1191 drivers/usb/gadget/udc/fusb300_udc.c fusb300_clear_int(fusb300, FUSB300_OFFSET_IGR1, fusb300 1193 drivers/usb/gadget/udc/fusb300_udc.c check_device_mode(fusb300); fusb300 1197 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxstall(fusb300); fusb300 1203 drivers/usb/gadget/udc/fusb300_udc.c if (setup_packet(fusb300, &ctrl)) { fusb300 1204 drivers/usb/gadget/udc/fusb300_udc.c spin_unlock(&fusb300->lock); fusb300 1205 drivers/usb/gadget/udc/fusb300_udc.c if (fusb300->driver->setup(&fusb300->gadget, &ctrl) < 0) fusb300 1206 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_cxstall(fusb300); fusb300 1207 drivers/usb/gadget/udc/fusb300_udc.c spin_lock(&fusb300->lock); fusb300 1217 drivers/usb/gadget/udc/fusb300_udc.c fusb300_ep0out(fusb300); fusb300 1222 drivers/usb/gadget/udc/fusb300_udc.c fusb300_ep0in(fusb300); fusb300 1240 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(fusb300->reg + fusb300 1244 drivers/usb/gadget/udc/fusb300_udc.c in_ep_fifo_handler(fusb300->ep[i]); fusb300 1246 drivers/usb/gadget/udc/fusb300_udc.c out_ep_fifo_handler(fusb300->ep[i]); fusb300 1251 drivers/usb/gadget/udc/fusb300_udc.c spin_unlock(&fusb300->lock); fusb300 1256 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_u2_timeout(struct fusb300 *fusb300, fusb300 1261 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(fusb300->reg + FUSB300_OFFSET_TT); fusb300 1265 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_TT); fusb300 1268 drivers/usb/gadget/udc/fusb300_udc.c static void fusb300_set_u1_timeout(struct fusb300 *fusb300, fusb300 1273 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(fusb300->reg + FUSB300_OFFSET_TT); fusb300 1277 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_TT); fusb300 1280 drivers/usb/gadget/udc/fusb300_udc.c static void init_controller(struct fusb300 *fusb300) fusb300 1288 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(fusb300->reg + FUSB300_OFFSET_AHBCR); fusb300 1291 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_AHBCR); fusb300 1295 drivers/usb/gadget/udc/fusb300_udc.c reg = ioread32(fusb300->reg + FUSB300_OFFSET_HSCR); fusb300 1298 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(reg, fusb300->reg + FUSB300_OFFSET_HSCR); fusb300 1301 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_u2_timeout(fusb300, 0xff); fusb300 1302 drivers/usb/gadget/udc/fusb300_udc.c fusb300_set_u1_timeout(fusb300, 0xff); fusb300 1305 drivers/usb/gadget/udc/fusb300_udc.c iowrite32(0xcfffff9f, fusb300->reg + FUSB300_OFFSET_IGER1); fusb300 1311 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = to_fusb300(g); fusb300 1315 drivers/usb/gadget/udc/fusb300_udc.c fusb300->driver = driver; fusb300 1322 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = to_fusb300(g); fusb300 1324 drivers/usb/gadget/udc/fusb300_udc.c init_controller(fusb300); fusb300 1325 drivers/usb/gadget/udc/fusb300_udc.c fusb300->driver = NULL; fusb300 1344 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = platform_get_drvdata(pdev); fusb300 1347 drivers/usb/gadget/udc/fusb300_udc.c usb_del_gadget_udc(&fusb300->gadget); fusb300 1348 drivers/usb/gadget/udc/fusb300_udc.c iounmap(fusb300->reg); fusb300 1349 drivers/usb/gadget/udc/fusb300_udc.c free_irq(platform_get_irq(pdev, 0), fusb300); fusb300 1351 drivers/usb/gadget/udc/fusb300_udc.c fusb300_free_request(&fusb300->ep[0]->ep, fusb300->ep0_req); fusb300 1353 drivers/usb/gadget/udc/fusb300_udc.c kfree(fusb300->ep[i]); fusb300 1354 drivers/usb/gadget/udc/fusb300_udc.c kfree(fusb300); fusb300 1363 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300 *fusb300 = NULL; fusb300 1399 drivers/usb/gadget/udc/fusb300_udc.c fusb300 = kzalloc(sizeof(struct fusb300), GFP_KERNEL); fusb300 1400 drivers/usb/gadget/udc/fusb300_udc.c if (fusb300 == NULL) { fusb300 1411 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep[i] = _ep[i]; fusb300 1414 drivers/usb/gadget/udc/fusb300_udc.c spin_lock_init(&fusb300->lock); fusb300 1416 drivers/usb/gadget/udc/fusb300_udc.c platform_set_drvdata(pdev, fusb300); fusb300 1418 drivers/usb/gadget/udc/fusb300_udc.c fusb300->gadget.ops = &fusb300_gadget_ops; fusb300 1420 drivers/usb/gadget/udc/fusb300_udc.c fusb300->gadget.max_speed = USB_SPEED_HIGH; fusb300 1421 drivers/usb/gadget/udc/fusb300_udc.c fusb300->gadget.name = udc_name; fusb300 1422 drivers/usb/gadget/udc/fusb300_udc.c fusb300->reg = reg; fusb300 1425 drivers/usb/gadget/udc/fusb300_udc.c udc_name, fusb300); fusb300 1432 drivers/usb/gadget/udc/fusb300_udc.c IRQF_SHARED, udc_name, fusb300); fusb300 1438 drivers/usb/gadget/udc/fusb300_udc.c INIT_LIST_HEAD(&fusb300->gadget.ep_list); fusb300 1441 drivers/usb/gadget/udc/fusb300_udc.c struct fusb300_ep *ep = fusb300->ep[i]; fusb300 1444 drivers/usb/gadget/udc/fusb300_udc.c INIT_LIST_HEAD(&fusb300->ep[i]->ep.ep_list); fusb300 1445 drivers/usb/gadget/udc/fusb300_udc.c list_add_tail(&fusb300->ep[i]->ep.ep_list, fusb300 1446 drivers/usb/gadget/udc/fusb300_udc.c &fusb300->gadget.ep_list); fusb300 1448 drivers/usb/gadget/udc/fusb300_udc.c ep->fusb300 = fusb300; fusb300 1465 drivers/usb/gadget/udc/fusb300_udc.c usb_ep_set_maxpacket_limit(&fusb300->ep[0]->ep, HS_CTL_MAX_PACKET_SIZE); fusb300 1466 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep[0]->epnum = 0; fusb300 1467 drivers/usb/gadget/udc/fusb300_udc.c fusb300->gadget.ep0 = &fusb300->ep[0]->ep; fusb300 1468 drivers/usb/gadget/udc/fusb300_udc.c INIT_LIST_HEAD(&fusb300->gadget.ep0->ep_list); fusb300 1470 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep0_req = fusb300_alloc_request(&fusb300->ep[0]->ep, fusb300 1472 drivers/usb/gadget/udc/fusb300_udc.c if (fusb300->ep0_req == NULL) { fusb300 1477 drivers/usb/gadget/udc/fusb300_udc.c init_controller(fusb300); fusb300 1478 drivers/usb/gadget/udc/fusb300_udc.c ret = usb_add_gadget_udc(&pdev->dev, &fusb300->gadget); fusb300 1487 drivers/usb/gadget/udc/fusb300_udc.c fusb300_free_request(&fusb300->ep[0]->ep, fusb300->ep0_req); fusb300 1490 drivers/usb/gadget/udc/fusb300_udc.c free_irq(ires->start, fusb300); fusb300 1493 drivers/usb/gadget/udc/fusb300_udc.c if (fusb300) { fusb300 1494 drivers/usb/gadget/udc/fusb300_udc.c if (fusb300->ep0_req) fusb300 1495 drivers/usb/gadget/udc/fusb300_udc.c fusb300_free_request(&fusb300->ep[0]->ep, fusb300 1496 drivers/usb/gadget/udc/fusb300_udc.c fusb300->ep0_req); fusb300 1498 drivers/usb/gadget/udc/fusb300_udc.c kfree(fusb300->ep[i]); fusb300 1499 drivers/usb/gadget/udc/fusb300_udc.c kfree(fusb300); fusb300 641 drivers/usb/gadget/udc/fusb300_udc.h struct fusb300 *fusb300; fusb300 673 drivers/usb/gadget/udc/fusb300_udc.h #define to_fusb300(g) (container_of((g), struct fusb300, gadget))