oxu 333 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu; oxu 481 drivers/usb/host/oxu210hp-hcd.c #define oxu_dbg(oxu, fmt, args...) \ oxu 482 drivers/usb/host/oxu210hp-hcd.c dev_dbg(oxu_to_hcd(oxu)->self.controller , fmt , ## args) oxu 483 drivers/usb/host/oxu210hp-hcd.c #define oxu_err(oxu, fmt, args...) \ oxu 484 drivers/usb/host/oxu210hp-hcd.c dev_err(oxu_to_hcd(oxu)->self.controller , fmt , ## args) oxu 485 drivers/usb/host/oxu210hp-hcd.c #define oxu_info(oxu, fmt, args...) \ oxu 486 drivers/usb/host/oxu210hp-hcd.c dev_info(oxu_to_hcd(oxu)->self.controller , fmt , ## args) oxu 492 drivers/usb/host/oxu210hp-hcd.c static inline struct usb_hcd *oxu_to_hcd(struct oxu_hcd *oxu) oxu 494 drivers/usb/host/oxu210hp-hcd.c return container_of((void *) oxu, struct usb_hcd, hcd_priv); oxu 512 drivers/usb/host/oxu210hp-hcd.c #define oxu_vdbg(oxu, fmt, args...) /* Nop */ oxu 631 drivers/usb/host/oxu210hp-hcd.c #define dbg_status(oxu, label, status) { \ oxu 634 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "%s\n", _buf); \ oxu 637 drivers/usb/host/oxu210hp-hcd.c #define dbg_cmd(oxu, label, command) { \ oxu 640 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "%s\n", _buf); \ oxu 643 drivers/usb/host/oxu210hp-hcd.c #define dbg_port(oxu, label, port, status) { \ oxu 646 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "%s\n", _buf); \ oxu 669 drivers/usb/host/oxu210hp-hcd.c static void ehci_work(struct oxu_hcd *oxu); oxu 689 drivers/usb/host/oxu210hp-hcd.c static inline void timer_action_done(struct oxu_hcd *oxu, oxu 692 drivers/usb/host/oxu210hp-hcd.c clear_bit(action, &oxu->actions); oxu 695 drivers/usb/host/oxu210hp-hcd.c static inline void timer_action(struct oxu_hcd *oxu, oxu 698 drivers/usb/host/oxu210hp-hcd.c if (!test_and_set_bit(action, &oxu->actions)) { oxu 723 drivers/usb/host/oxu210hp-hcd.c && t > oxu->watchdog.expires oxu 724 drivers/usb/host/oxu210hp-hcd.c && timer_pending(&oxu->watchdog)) oxu 726 drivers/usb/host/oxu210hp-hcd.c mod_timer(&oxu->watchdog, t); oxu 747 drivers/usb/host/oxu210hp-hcd.c static int handshake(struct oxu_hcd *oxu, void __iomem *ptr, oxu 766 drivers/usb/host/oxu210hp-hcd.c static int ehci_halt(struct oxu_hcd *oxu) oxu 768 drivers/usb/host/oxu210hp-hcd.c u32 temp = readl(&oxu->regs->status); oxu 771 drivers/usb/host/oxu210hp-hcd.c writel(0, &oxu->regs->intr_enable); oxu 776 drivers/usb/host/oxu210hp-hcd.c temp = readl(&oxu->regs->command); oxu 778 drivers/usb/host/oxu210hp-hcd.c writel(temp, &oxu->regs->command); oxu 779 drivers/usb/host/oxu210hp-hcd.c return handshake(oxu, &oxu->regs->status, oxu 784 drivers/usb/host/oxu210hp-hcd.c static void tdi_reset(struct oxu_hcd *oxu) oxu 789 drivers/usb/host/oxu210hp-hcd.c reg_ptr = (u32 __iomem *)(((u8 __iomem *)oxu->regs) + 0x68); oxu 796 drivers/usb/host/oxu210hp-hcd.c static int ehci_reset(struct oxu_hcd *oxu) oxu 799 drivers/usb/host/oxu210hp-hcd.c u32 command = readl(&oxu->regs->command); oxu 802 drivers/usb/host/oxu210hp-hcd.c dbg_cmd(oxu, "reset", command); oxu 803 drivers/usb/host/oxu210hp-hcd.c writel(command, &oxu->regs->command); oxu 804 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->state = HC_STATE_HALT; oxu 805 drivers/usb/host/oxu210hp-hcd.c oxu->next_statechange = jiffies; oxu 806 drivers/usb/host/oxu210hp-hcd.c retval = handshake(oxu, &oxu->regs->command, oxu 812 drivers/usb/host/oxu210hp-hcd.c tdi_reset(oxu); oxu 818 drivers/usb/host/oxu210hp-hcd.c static void ehci_quiesce(struct oxu_hcd *oxu) oxu 823 drivers/usb/host/oxu210hp-hcd.c BUG_ON(!HC_IS_RUNNING(oxu_to_hcd(oxu)->state)); oxu 827 drivers/usb/host/oxu210hp-hcd.c temp = readl(&oxu->regs->command) << 10; oxu 829 drivers/usb/host/oxu210hp-hcd.c if (handshake(oxu, &oxu->regs->status, STS_ASS | STS_PSS, oxu 831 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->state = HC_STATE_HALT; oxu 836 drivers/usb/host/oxu210hp-hcd.c temp = readl(&oxu->regs->command); oxu 838 drivers/usb/host/oxu210hp-hcd.c writel(temp, &oxu->regs->command); oxu 841 drivers/usb/host/oxu210hp-hcd.c if (handshake(oxu, &oxu->regs->status, STS_ASS | STS_PSS, oxu 843 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->state = HC_STATE_HALT; oxu 848 drivers/usb/host/oxu210hp-hcd.c static int check_reset_complete(struct oxu_hcd *oxu, int index, oxu 852 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[index] = 0; oxu 858 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "Failed to enable port %d on root hub TT\n", oxu 862 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "port %d high speed\n", index + 1); oxu 867 drivers/usb/host/oxu210hp-hcd.c static void ehci_hub_descriptor(struct oxu_hcd *oxu, oxu 870 drivers/usb/host/oxu210hp-hcd.c int ports = HCS_N_PORTS(oxu->hcs_params); oxu 886 drivers/usb/host/oxu210hp-hcd.c if (HCS_PPC(oxu->hcs_params)) oxu 908 drivers/usb/host/oxu210hp-hcd.c static int oxu_buf_alloc(struct oxu_hcd *oxu, struct ehci_qtd *qtd, int len) oxu 916 drivers/usb/host/oxu210hp-hcd.c oxu_err(oxu, "buffer too big (%d)\n", len); oxu 920 drivers/usb/host/oxu210hp-hcd.c spin_lock(&oxu->mem_lock); oxu 931 drivers/usb/host/oxu210hp-hcd.c i += max(a_blocks, (int)oxu->db_used[i])) { oxu 935 drivers/usb/host/oxu210hp-hcd.c if (oxu->db_used[i + j]) oxu 942 drivers/usb/host/oxu210hp-hcd.c qtd->buffer = (void *) &oxu->mem->db_pool[i]; oxu 946 drivers/usb/host/oxu210hp-hcd.c oxu->db_used[i] = a_blocks; oxu 948 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->mem_lock); oxu 955 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->mem_lock); oxu 960 drivers/usb/host/oxu210hp-hcd.c static void oxu_buf_free(struct oxu_hcd *oxu, struct ehci_qtd *qtd) oxu 964 drivers/usb/host/oxu210hp-hcd.c spin_lock(&oxu->mem_lock); oxu 966 drivers/usb/host/oxu210hp-hcd.c index = (qtd->buffer - (void *) &oxu->mem->db_pool[0]) oxu 968 drivers/usb/host/oxu210hp-hcd.c oxu->db_used[index] = 0; oxu 973 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->mem_lock); oxu 986 drivers/usb/host/oxu210hp-hcd.c static inline void oxu_qtd_free(struct oxu_hcd *oxu, struct ehci_qtd *qtd) oxu 991 drivers/usb/host/oxu210hp-hcd.c oxu_buf_free(oxu, qtd); oxu 993 drivers/usb/host/oxu210hp-hcd.c spin_lock(&oxu->mem_lock); oxu 995 drivers/usb/host/oxu210hp-hcd.c index = qtd - &oxu->mem->qtd_pool[0]; oxu 996 drivers/usb/host/oxu210hp-hcd.c oxu->qtd_used[index] = 0; oxu 998 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->mem_lock); oxu 1001 drivers/usb/host/oxu210hp-hcd.c static struct ehci_qtd *ehci_qtd_alloc(struct oxu_hcd *oxu) oxu 1006 drivers/usb/host/oxu210hp-hcd.c spin_lock(&oxu->mem_lock); oxu 1009 drivers/usb/host/oxu210hp-hcd.c if (!oxu->qtd_used[i]) oxu 1013 drivers/usb/host/oxu210hp-hcd.c qtd = (struct ehci_qtd *) &oxu->mem->qtd_pool[i]; oxu 1023 drivers/usb/host/oxu210hp-hcd.c oxu->qtd_used[i] = 1; oxu 1026 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->mem_lock); oxu 1031 drivers/usb/host/oxu210hp-hcd.c static void oxu_qh_free(struct oxu_hcd *oxu, struct ehci_qh *qh) oxu 1035 drivers/usb/host/oxu210hp-hcd.c spin_lock(&oxu->mem_lock); oxu 1037 drivers/usb/host/oxu210hp-hcd.c index = qh - &oxu->mem->qh_pool[0]; oxu 1038 drivers/usb/host/oxu210hp-hcd.c oxu->qh_used[index] = 0; oxu 1040 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->mem_lock); oxu 1046 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = qh->oxu; oxu 1050 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "unused qh not empty!\n"); oxu 1054 drivers/usb/host/oxu210hp-hcd.c oxu_qtd_free(oxu, qh->dummy); oxu 1055 drivers/usb/host/oxu210hp-hcd.c oxu_qh_free(oxu, qh); oxu 1058 drivers/usb/host/oxu210hp-hcd.c static struct ehci_qh *oxu_qh_alloc(struct oxu_hcd *oxu) oxu 1063 drivers/usb/host/oxu210hp-hcd.c spin_lock(&oxu->mem_lock); oxu 1066 drivers/usb/host/oxu210hp-hcd.c if (!oxu->qh_used[i]) oxu 1070 drivers/usb/host/oxu210hp-hcd.c qh = (struct ehci_qh *) &oxu->mem->qh_pool[i]; oxu 1074 drivers/usb/host/oxu210hp-hcd.c qh->oxu = oxu; oxu 1079 drivers/usb/host/oxu210hp-hcd.c qh->dummy = ehci_qtd_alloc(oxu); oxu 1081 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "no dummy td\n"); oxu 1082 drivers/usb/host/oxu210hp-hcd.c oxu->qh_used[i] = 0; oxu 1087 drivers/usb/host/oxu210hp-hcd.c oxu->qh_used[i] = 1; oxu 1090 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->mem_lock); oxu 1107 drivers/usb/host/oxu210hp-hcd.c static void oxu_murb_free(struct oxu_hcd *oxu, struct oxu_murb *murb) oxu 1111 drivers/usb/host/oxu210hp-hcd.c spin_lock(&oxu->mem_lock); oxu 1113 drivers/usb/host/oxu210hp-hcd.c index = murb - &oxu->murb_pool[0]; oxu 1114 drivers/usb/host/oxu210hp-hcd.c oxu->murb_used[index] = 0; oxu 1116 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->mem_lock); oxu 1119 drivers/usb/host/oxu210hp-hcd.c static struct oxu_murb *oxu_murb_alloc(struct oxu_hcd *oxu) oxu 1125 drivers/usb/host/oxu210hp-hcd.c spin_lock(&oxu->mem_lock); oxu 1128 drivers/usb/host/oxu210hp-hcd.c if (!oxu->murb_used[i]) oxu 1132 drivers/usb/host/oxu210hp-hcd.c murb = &(oxu->murb_pool)[i]; oxu 1134 drivers/usb/host/oxu210hp-hcd.c oxu->murb_used[i] = 1; oxu 1137 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->mem_lock); oxu 1146 drivers/usb/host/oxu210hp-hcd.c static void ehci_mem_cleanup(struct oxu_hcd *oxu) oxu 1148 drivers/usb/host/oxu210hp-hcd.c kfree(oxu->murb_pool); oxu 1149 drivers/usb/host/oxu210hp-hcd.c oxu->murb_pool = NULL; oxu 1151 drivers/usb/host/oxu210hp-hcd.c if (oxu->async) oxu 1152 drivers/usb/host/oxu210hp-hcd.c qh_put(oxu->async); oxu 1153 drivers/usb/host/oxu210hp-hcd.c oxu->async = NULL; oxu 1155 drivers/usb/host/oxu210hp-hcd.c del_timer(&oxu->urb_timer); oxu 1157 drivers/usb/host/oxu210hp-hcd.c oxu->periodic = NULL; oxu 1160 drivers/usb/host/oxu210hp-hcd.c kfree(oxu->pshadow); oxu 1161 drivers/usb/host/oxu210hp-hcd.c oxu->pshadow = NULL; oxu 1166 drivers/usb/host/oxu210hp-hcd.c static int ehci_mem_init(struct oxu_hcd *oxu, gfp_t flags) oxu 1170 drivers/usb/host/oxu210hp-hcd.c for (i = 0; i < oxu->periodic_size; i++) oxu 1171 drivers/usb/host/oxu210hp-hcd.c oxu->mem->frame_list[i] = EHCI_LIST_END; oxu 1173 drivers/usb/host/oxu210hp-hcd.c oxu->qh_used[i] = 0; oxu 1175 drivers/usb/host/oxu210hp-hcd.c oxu->qtd_used[i] = 0; oxu 1177 drivers/usb/host/oxu210hp-hcd.c oxu->murb_pool = kcalloc(MURB_NUM, sizeof(struct oxu_murb), flags); oxu 1178 drivers/usb/host/oxu210hp-hcd.c if (!oxu->murb_pool) oxu 1182 drivers/usb/host/oxu210hp-hcd.c oxu->murb_used[i] = 0; oxu 1184 drivers/usb/host/oxu210hp-hcd.c oxu->async = oxu_qh_alloc(oxu); oxu 1185 drivers/usb/host/oxu210hp-hcd.c if (!oxu->async) oxu 1188 drivers/usb/host/oxu210hp-hcd.c oxu->periodic = (__le32 *) &oxu->mem->frame_list; oxu 1189 drivers/usb/host/oxu210hp-hcd.c oxu->periodic_dma = virt_to_phys(oxu->periodic); oxu 1191 drivers/usb/host/oxu210hp-hcd.c for (i = 0; i < oxu->periodic_size; i++) oxu 1192 drivers/usb/host/oxu210hp-hcd.c oxu->periodic[i] = EHCI_LIST_END; oxu 1195 drivers/usb/host/oxu210hp-hcd.c oxu->pshadow = kcalloc(oxu->periodic_size, sizeof(void *), flags); oxu 1196 drivers/usb/host/oxu210hp-hcd.c if (oxu->pshadow != NULL) oxu 1200 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "couldn't init memory\n"); oxu 1201 drivers/usb/host/oxu210hp-hcd.c ehci_mem_cleanup(oxu); oxu 1245 drivers/usb/host/oxu210hp-hcd.c static inline void qh_update(struct oxu_hcd *oxu, oxu 1279 drivers/usb/host/oxu210hp-hcd.c static void qh_refresh(struct oxu_hcd *oxu, struct ehci_qh *qh) oxu 1294 drivers/usb/host/oxu210hp-hcd.c qh_update(oxu, qh, qtd); oxu 1297 drivers/usb/host/oxu210hp-hcd.c static void qtd_copy_status(struct oxu_hcd *oxu, struct urb *urb, oxu 1329 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "devpath %s ep%d%s 3strikes\n", oxu 1341 drivers/usb/host/oxu210hp-hcd.c oxu_vdbg(oxu, "dev%d ep%d%s qtd token %08x --> status %d\n", oxu 1349 drivers/usb/host/oxu210hp-hcd.c static void ehci_urb_done(struct oxu_hcd *oxu, struct urb *urb) oxu 1350 drivers/usb/host/oxu210hp-hcd.c __releases(oxu->lock) oxu 1351 drivers/usb/host/oxu210hp-hcd.c __acquires(oxu->lock) oxu 1360 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->self.bandwidth_int_reqs--; oxu 1381 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "%s %s urb %p ep%d%s status %d len %d/%d\n", oxu 1390 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->lock); oxu 1391 drivers/usb/host/oxu210hp-hcd.c usb_hcd_giveback_urb(oxu_to_hcd(oxu), urb, urb->status); oxu 1392 drivers/usb/host/oxu210hp-hcd.c spin_lock(&oxu->lock); oxu 1395 drivers/usb/host/oxu210hp-hcd.c static void start_unlink_async(struct oxu_hcd *oxu, struct ehci_qh *qh); oxu 1396 drivers/usb/host/oxu210hp-hcd.c static void unlink_async(struct oxu_hcd *oxu, struct ehci_qh *qh); oxu 1398 drivers/usb/host/oxu210hp-hcd.c static void intr_deschedule(struct oxu_hcd *oxu, struct ehci_qh *qh); oxu 1399 drivers/usb/host/oxu210hp-hcd.c static int qh_schedule(struct oxu_hcd *oxu, struct ehci_qh *qh); oxu 1407 drivers/usb/host/oxu210hp-hcd.c static unsigned qh_completions(struct oxu_hcd *oxu, struct ehci_qh *qh) oxu 1448 drivers/usb/host/oxu210hp-hcd.c ehci_urb_done(oxu, last->urb); oxu 1451 drivers/usb/host/oxu210hp-hcd.c oxu_murb_free(oxu, murb); oxu 1453 drivers/usb/host/oxu210hp-hcd.c ehci_urb_done(oxu, last->urb); oxu 1457 drivers/usb/host/oxu210hp-hcd.c oxu_qtd_free(oxu, last); oxu 1486 drivers/usb/host/oxu210hp-hcd.c HC_IS_RUNNING(oxu_to_hcd(oxu)->state))) { oxu 1492 drivers/usb/host/oxu210hp-hcd.c if (unlikely(!HC_IS_RUNNING(oxu_to_hcd(oxu)->state))) oxu 1527 drivers/usb/host/oxu210hp-hcd.c qtd_copy_status(oxu, urb->complete ? oxu 1551 drivers/usb/host/oxu210hp-hcd.c ehci_urb_done(oxu, last->urb); oxu 1554 drivers/usb/host/oxu210hp-hcd.c oxu_murb_free(oxu, murb); oxu 1556 drivers/usb/host/oxu210hp-hcd.c ehci_urb_done(oxu, last->urb); oxu 1559 drivers/usb/host/oxu210hp-hcd.c oxu_qtd_free(oxu, last); oxu 1572 drivers/usb/host/oxu210hp-hcd.c qh_refresh(oxu, qh); oxu 1580 drivers/usb/host/oxu210hp-hcd.c intr_deschedule(oxu, qh); oxu 1581 drivers/usb/host/oxu210hp-hcd.c (void) qh_schedule(oxu, qh); oxu 1583 drivers/usb/host/oxu210hp-hcd.c unlink_async(oxu, qh); oxu 1600 drivers/usb/host/oxu210hp-hcd.c static void qtd_list_free(struct oxu_hcd *oxu, oxu 1607 drivers/usb/host/oxu210hp-hcd.c oxu_qtd_free(oxu, qtd); oxu 1613 drivers/usb/host/oxu210hp-hcd.c static struct list_head *qh_urb_transaction(struct oxu_hcd *oxu, oxu 1629 drivers/usb/host/oxu210hp-hcd.c qtd = ehci_qtd_alloc(oxu); oxu 1646 drivers/usb/host/oxu210hp-hcd.c ret = oxu_buf_alloc(oxu, qtd, sizeof(struct usb_ctrlrequest)); oxu 1658 drivers/usb/host/oxu210hp-hcd.c qtd = ehci_qtd_alloc(oxu); oxu 1674 drivers/usb/host/oxu210hp-hcd.c ret = oxu_buf_alloc(oxu, qtd, len); oxu 1704 drivers/usb/host/oxu210hp-hcd.c qtd->hw_alt_next = oxu->async->hw_alt_next; oxu 1714 drivers/usb/host/oxu210hp-hcd.c qtd = ehci_qtd_alloc(oxu); oxu 1718 drivers/usb/host/oxu210hp-hcd.c ret = oxu_buf_alloc(oxu, qtd, len); oxu 1752 drivers/usb/host/oxu210hp-hcd.c qtd = ehci_qtd_alloc(oxu); oxu 1769 drivers/usb/host/oxu210hp-hcd.c qtd_list_free(oxu, urb, head); oxu 1780 drivers/usb/host/oxu210hp-hcd.c static struct ehci_qh *qh_make(struct oxu_hcd *oxu, oxu 1783 drivers/usb/host/oxu210hp-hcd.c struct ehci_qh *qh = oxu_qh_alloc(oxu); oxu 1825 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "intr period %d uframes, NYET!\n", oxu 1897 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "bogus dev %p speed %d\n", urb->dev, urb->dev->speed); oxu 1910 drivers/usb/host/oxu210hp-hcd.c qh_refresh(oxu, qh); oxu 1916 drivers/usb/host/oxu210hp-hcd.c static void qh_link_async(struct oxu_hcd *oxu, struct ehci_qh *qh) oxu 1922 drivers/usb/host/oxu210hp-hcd.c head = oxu->async; oxu 1923 drivers/usb/host/oxu210hp-hcd.c timer_action_done(oxu, TIMER_ASYNC_OFF); oxu 1925 drivers/usb/host/oxu210hp-hcd.c u32 cmd = readl(&oxu->regs->command); oxu 1929 drivers/usb/host/oxu210hp-hcd.c (void)handshake(oxu, &oxu->regs->status, oxu 1932 drivers/usb/host/oxu210hp-hcd.c writel(cmd, &oxu->regs->command); oxu 1933 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->state = HC_STATE_RUNNING; oxu 1940 drivers/usb/host/oxu210hp-hcd.c qh_refresh(oxu, qh); oxu 1962 drivers/usb/host/oxu210hp-hcd.c static struct ehci_qh *qh_append_tds(struct oxu_hcd *oxu, oxu 1971 drivers/usb/host/oxu210hp-hcd.c qh = qh_make(oxu, urb, GFP_ATOMIC); oxu 2037 drivers/usb/host/oxu210hp-hcd.c static int submit_async(struct oxu_hcd *oxu, struct urb *urb, oxu 2050 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "%s %s urb %p ep%d%s len %d, qtd %p [qh %p]\n", oxu 2057 drivers/usb/host/oxu210hp-hcd.c spin_lock_irqsave(&oxu->lock, flags); oxu 2058 drivers/usb/host/oxu210hp-hcd.c if (unlikely(!HCD_HW_ACCESSIBLE(oxu_to_hcd(oxu)))) { oxu 2063 drivers/usb/host/oxu210hp-hcd.c qh = qh_append_tds(oxu, urb, qtd_list, epnum, &urb->ep->hcpriv); oxu 2073 drivers/usb/host/oxu210hp-hcd.c qh_link_async(oxu, qh_get(qh)); oxu 2075 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irqrestore(&oxu->lock, flags); oxu 2077 drivers/usb/host/oxu210hp-hcd.c qtd_list_free(oxu, urb, qtd_list); oxu 2083 drivers/usb/host/oxu210hp-hcd.c static void end_unlink_async(struct oxu_hcd *oxu) oxu 2085 drivers/usb/host/oxu210hp-hcd.c struct ehci_qh *qh = oxu->reclaim; oxu 2088 drivers/usb/host/oxu210hp-hcd.c timer_action_done(oxu, TIMER_IAA_WATCHDOG); oxu 2096 drivers/usb/host/oxu210hp-hcd.c oxu->reclaim = next; oxu 2097 drivers/usb/host/oxu210hp-hcd.c oxu->reclaim_ready = 0; oxu 2100 drivers/usb/host/oxu210hp-hcd.c qh_completions(oxu, qh); oxu 2103 drivers/usb/host/oxu210hp-hcd.c && HC_IS_RUNNING(oxu_to_hcd(oxu)->state)) oxu 2104 drivers/usb/host/oxu210hp-hcd.c qh_link_async(oxu, qh); oxu 2111 drivers/usb/host/oxu210hp-hcd.c if (HC_IS_RUNNING(oxu_to_hcd(oxu)->state) oxu 2112 drivers/usb/host/oxu210hp-hcd.c && oxu->async->qh_next.qh == NULL) oxu 2113 drivers/usb/host/oxu210hp-hcd.c timer_action(oxu, TIMER_ASYNC_OFF); oxu 2117 drivers/usb/host/oxu210hp-hcd.c oxu->reclaim = NULL; oxu 2118 drivers/usb/host/oxu210hp-hcd.c start_unlink_async(oxu, next); oxu 2125 drivers/usb/host/oxu210hp-hcd.c static void start_unlink_async(struct oxu_hcd *oxu, struct ehci_qh *qh) oxu 2127 drivers/usb/host/oxu210hp-hcd.c int cmd = readl(&oxu->regs->command); oxu 2131 drivers/usb/host/oxu210hp-hcd.c assert_spin_locked(&oxu->lock); oxu 2132 drivers/usb/host/oxu210hp-hcd.c BUG_ON(oxu->reclaim || (qh->qh_state != QH_STATE_LINKED oxu 2137 drivers/usb/host/oxu210hp-hcd.c if (unlikely(qh == oxu->async)) { oxu 2139 drivers/usb/host/oxu210hp-hcd.c if (oxu_to_hcd(oxu)->state != HC_STATE_HALT oxu 2140 drivers/usb/host/oxu210hp-hcd.c && !oxu->reclaim) { oxu 2142 drivers/usb/host/oxu210hp-hcd.c writel(cmd & ~CMD_ASE, &oxu->regs->command); oxu 2145 drivers/usb/host/oxu210hp-hcd.c timer_action_done(oxu, TIMER_ASYNC_OFF); oxu 2151 drivers/usb/host/oxu210hp-hcd.c oxu->reclaim = qh = qh_get(qh); oxu 2153 drivers/usb/host/oxu210hp-hcd.c prev = oxu->async; oxu 2161 drivers/usb/host/oxu210hp-hcd.c if (unlikely(oxu_to_hcd(oxu)->state == HC_STATE_HALT)) { oxu 2165 drivers/usb/host/oxu210hp-hcd.c end_unlink_async(oxu); oxu 2169 drivers/usb/host/oxu210hp-hcd.c oxu->reclaim_ready = 0; oxu 2171 drivers/usb/host/oxu210hp-hcd.c writel(cmd, &oxu->regs->command); oxu 2172 drivers/usb/host/oxu210hp-hcd.c (void) readl(&oxu->regs->command); oxu 2173 drivers/usb/host/oxu210hp-hcd.c timer_action(oxu, TIMER_IAA_WATCHDOG); oxu 2176 drivers/usb/host/oxu210hp-hcd.c static void scan_async(struct oxu_hcd *oxu) oxu 2181 drivers/usb/host/oxu210hp-hcd.c if (!++(oxu->stamp)) oxu 2182 drivers/usb/host/oxu210hp-hcd.c oxu->stamp++; oxu 2183 drivers/usb/host/oxu210hp-hcd.c timer_action_done(oxu, TIMER_ASYNC_SHRINK); oxu 2185 drivers/usb/host/oxu210hp-hcd.c qh = oxu->async->qh_next.qh; oxu 2190 drivers/usb/host/oxu210hp-hcd.c && qh->stamp != oxu->stamp) { oxu 2199 drivers/usb/host/oxu210hp-hcd.c qh->stamp = oxu->stamp; oxu 2200 drivers/usb/host/oxu210hp-hcd.c temp = qh_completions(oxu, qh); oxu 2213 drivers/usb/host/oxu210hp-hcd.c if (qh->stamp == oxu->stamp) oxu 2215 drivers/usb/host/oxu210hp-hcd.c else if (!oxu->reclaim oxu 2217 drivers/usb/host/oxu210hp-hcd.c start_unlink_async(oxu, qh); oxu 2224 drivers/usb/host/oxu210hp-hcd.c timer_action(oxu, TIMER_ASYNC_SHRINK); oxu 2243 drivers/usb/host/oxu210hp-hcd.c static void periodic_unlink(struct oxu_hcd *oxu, unsigned frame, void *ptr) oxu 2245 drivers/usb/host/oxu210hp-hcd.c union ehci_shadow *prev_p = &oxu->pshadow[frame]; oxu 2246 drivers/usb/host/oxu210hp-hcd.c __le32 *hw_p = &oxu->periodic[frame]; oxu 2267 drivers/usb/host/oxu210hp-hcd.c static unsigned short periodic_usecs(struct oxu_hcd *oxu, oxu 2270 drivers/usb/host/oxu210hp-hcd.c __le32 *hw_p = &oxu->periodic[frame]; oxu 2271 drivers/usb/host/oxu210hp-hcd.c union ehci_shadow *q = &oxu->pshadow[frame]; oxu 2291 drivers/usb/host/oxu210hp-hcd.c oxu_err(oxu, "uframe %d sched overrun: %d usecs\n", oxu 2297 drivers/usb/host/oxu210hp-hcd.c static int enable_periodic(struct oxu_hcd *oxu) oxu 2305 drivers/usb/host/oxu210hp-hcd.c status = handshake(oxu, &oxu->regs->status, STS_PSS, 0, 9 * 125); oxu 2307 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->state = HC_STATE_HALT; oxu 2308 drivers/usb/host/oxu210hp-hcd.c usb_hc_died(oxu_to_hcd(oxu)); oxu 2312 drivers/usb/host/oxu210hp-hcd.c cmd = readl(&oxu->regs->command) | CMD_PSE; oxu 2313 drivers/usb/host/oxu210hp-hcd.c writel(cmd, &oxu->regs->command); oxu 2315 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->state = HC_STATE_RUNNING; oxu 2318 drivers/usb/host/oxu210hp-hcd.c oxu->next_uframe = readl(&oxu->regs->frame_index) oxu 2319 drivers/usb/host/oxu210hp-hcd.c % (oxu->periodic_size << 3); oxu 2323 drivers/usb/host/oxu210hp-hcd.c static int disable_periodic(struct oxu_hcd *oxu) oxu 2331 drivers/usb/host/oxu210hp-hcd.c status = handshake(oxu, &oxu->regs->status, STS_PSS, STS_PSS, 9 * 125); oxu 2333 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->state = HC_STATE_HALT; oxu 2334 drivers/usb/host/oxu210hp-hcd.c usb_hc_died(oxu_to_hcd(oxu)); oxu 2338 drivers/usb/host/oxu210hp-hcd.c cmd = readl(&oxu->regs->command) & ~CMD_PSE; oxu 2339 drivers/usb/host/oxu210hp-hcd.c writel(cmd, &oxu->regs->command); oxu 2342 drivers/usb/host/oxu210hp-hcd.c oxu->next_uframe = -1; oxu 2352 drivers/usb/host/oxu210hp-hcd.c static int qh_link_periodic(struct oxu_hcd *oxu, struct ehci_qh *qh) oxu 2366 drivers/usb/host/oxu210hp-hcd.c for (i = qh->start; i < oxu->periodic_size; i += period) { oxu 2367 drivers/usb/host/oxu210hp-hcd.c union ehci_shadow *prev = &oxu->pshadow[i]; oxu 2368 drivers/usb/host/oxu210hp-hcd.c __le32 *hw_p = &oxu->periodic[i]; oxu 2406 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->self.bandwidth_allocated += qh->period oxu 2411 drivers/usb/host/oxu210hp-hcd.c if (!oxu->periodic_sched++) oxu 2412 drivers/usb/host/oxu210hp-hcd.c return enable_periodic(oxu); oxu 2417 drivers/usb/host/oxu210hp-hcd.c static void qh_unlink_periodic(struct oxu_hcd *oxu, struct ehci_qh *qh) oxu 2435 drivers/usb/host/oxu210hp-hcd.c for (i = qh->start; i < oxu->periodic_size; i += period) oxu 2436 drivers/usb/host/oxu210hp-hcd.c periodic_unlink(oxu, i, qh); oxu 2439 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->self.bandwidth_allocated -= qh->period oxu 2455 drivers/usb/host/oxu210hp-hcd.c oxu->periodic_sched--; oxu 2456 drivers/usb/host/oxu210hp-hcd.c if (!oxu->periodic_sched) oxu 2457 drivers/usb/host/oxu210hp-hcd.c (void) disable_periodic(oxu); oxu 2460 drivers/usb/host/oxu210hp-hcd.c static void intr_deschedule(struct oxu_hcd *oxu, struct ehci_qh *qh) oxu 2464 drivers/usb/host/oxu210hp-hcd.c qh_unlink_periodic(oxu, qh); oxu 2483 drivers/usb/host/oxu210hp-hcd.c static int check_period(struct oxu_hcd *oxu, oxu 2507 drivers/usb/host/oxu210hp-hcd.c claimed = periodic_usecs(oxu, frame, uframe); oxu 2511 drivers/usb/host/oxu210hp-hcd.c } while ((frame += 1) < oxu->periodic_size); oxu 2516 drivers/usb/host/oxu210hp-hcd.c claimed = periodic_usecs(oxu, frame, uframe); oxu 2519 drivers/usb/host/oxu210hp-hcd.c } while ((frame += period) < oxu->periodic_size); oxu 2525 drivers/usb/host/oxu210hp-hcd.c static int check_intr_schedule(struct oxu_hcd *oxu, oxu 2534 drivers/usb/host/oxu210hp-hcd.c if (!check_period(oxu, frame, uframe, qh->period, qh->usecs)) oxu 2549 drivers/usb/host/oxu210hp-hcd.c static int qh_schedule(struct oxu_hcd *oxu, struct ehci_qh *qh) oxu 2556 drivers/usb/host/oxu210hp-hcd.c qh_refresh(oxu, qh); oxu 2563 drivers/usb/host/oxu210hp-hcd.c status = check_intr_schedule(oxu, frame, --uframe, oxu 2580 drivers/usb/host/oxu210hp-hcd.c status = check_intr_schedule(oxu, oxu 2591 drivers/usb/host/oxu210hp-hcd.c status = check_intr_schedule(oxu, 0, 0, qh, &c_mask); oxu 2604 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "reused qh %p schedule\n", qh); oxu 2607 drivers/usb/host/oxu210hp-hcd.c status = qh_link_periodic(oxu, qh); oxu 2612 drivers/usb/host/oxu210hp-hcd.c static int intr_submit(struct oxu_hcd *oxu, struct urb *urb, oxu 2624 drivers/usb/host/oxu210hp-hcd.c spin_lock_irqsave(&oxu->lock, flags); oxu 2626 drivers/usb/host/oxu210hp-hcd.c if (unlikely(!HCD_HW_ACCESSIBLE(oxu_to_hcd(oxu)))) { oxu 2633 drivers/usb/host/oxu210hp-hcd.c qh = qh_append_tds(oxu, urb, &empty, epnum, &urb->ep->hcpriv); oxu 2639 drivers/usb/host/oxu210hp-hcd.c status = qh_schedule(oxu, qh); oxu 2645 drivers/usb/host/oxu210hp-hcd.c qh = qh_append_tds(oxu, urb, qtd_list, epnum, &urb->ep->hcpriv); oxu 2649 drivers/usb/host/oxu210hp-hcd.c oxu_to_hcd(oxu)->self.bandwidth_int_reqs++; oxu 2652 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irqrestore(&oxu->lock, flags); oxu 2654 drivers/usb/host/oxu210hp-hcd.c qtd_list_free(oxu, urb, qtd_list); oxu 2659 drivers/usb/host/oxu210hp-hcd.c static inline int itd_submit(struct oxu_hcd *oxu, struct urb *urb, oxu 2662 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "iso support is missing!\n"); oxu 2666 drivers/usb/host/oxu210hp-hcd.c static inline int sitd_submit(struct oxu_hcd *oxu, struct urb *urb, oxu 2669 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "split iso support is missing!\n"); oxu 2673 drivers/usb/host/oxu210hp-hcd.c static void scan_periodic(struct oxu_hcd *oxu) oxu 2678 drivers/usb/host/oxu210hp-hcd.c mod = oxu->periodic_size << 3; oxu 2685 drivers/usb/host/oxu210hp-hcd.c now_uframe = oxu->next_uframe; oxu 2686 drivers/usb/host/oxu210hp-hcd.c if (HC_IS_RUNNING(oxu_to_hcd(oxu)->state)) oxu 2687 drivers/usb/host/oxu210hp-hcd.c clock = readl(&oxu->regs->frame_index); oxu 2705 drivers/usb/host/oxu210hp-hcd.c q_p = &oxu->pshadow[frame]; oxu 2706 drivers/usb/host/oxu210hp-hcd.c hw_p = &oxu->periodic[frame]; oxu 2720 drivers/usb/host/oxu210hp-hcd.c modified = qh_completions(oxu, temp.qh); oxu 2722 drivers/usb/host/oxu210hp-hcd.c intr_deschedule(oxu, temp.qh); oxu 2726 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "corrupt type %d frame %d shadow %p\n", oxu 2750 drivers/usb/host/oxu210hp-hcd.c if (!HC_IS_RUNNING(oxu_to_hcd(oxu)->state)) oxu 2752 drivers/usb/host/oxu210hp-hcd.c oxu->next_uframe = now_uframe; oxu 2753 drivers/usb/host/oxu210hp-hcd.c now = readl(&oxu->regs->frame_index) % mod; oxu 2770 drivers/usb/host/oxu210hp-hcd.c static void ehci_turn_off_all_ports(struct oxu_hcd *oxu) oxu 2772 drivers/usb/host/oxu210hp-hcd.c int port = HCS_N_PORTS(oxu->hcs_params); oxu 2775 drivers/usb/host/oxu210hp-hcd.c writel(PORT_RWC_BITS, &oxu->regs->port_status[port]); oxu 2778 drivers/usb/host/oxu210hp-hcd.c static void ehci_port_power(struct oxu_hcd *oxu, int is_on) oxu 2782 drivers/usb/host/oxu210hp-hcd.c if (!HCS_PPC(oxu->hcs_params)) oxu 2785 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "...power%s ports...\n", is_on ? "up" : "down"); oxu 2786 drivers/usb/host/oxu210hp-hcd.c for (port = HCS_N_PORTS(oxu->hcs_params); port > 0; ) oxu 2787 drivers/usb/host/oxu210hp-hcd.c (void) oxu_hub_control(oxu_to_hcd(oxu), oxu 2797 drivers/usb/host/oxu210hp-hcd.c static void ehci_work(struct oxu_hcd *oxu) oxu 2799 drivers/usb/host/oxu210hp-hcd.c timer_action_done(oxu, TIMER_IO_WATCHDOG); oxu 2800 drivers/usb/host/oxu210hp-hcd.c if (oxu->reclaim_ready) oxu 2801 drivers/usb/host/oxu210hp-hcd.c end_unlink_async(oxu); oxu 2807 drivers/usb/host/oxu210hp-hcd.c if (oxu->scanning) oxu 2809 drivers/usb/host/oxu210hp-hcd.c oxu->scanning = 1; oxu 2810 drivers/usb/host/oxu210hp-hcd.c scan_async(oxu); oxu 2811 drivers/usb/host/oxu210hp-hcd.c if (oxu->next_uframe != -1) oxu 2812 drivers/usb/host/oxu210hp-hcd.c scan_periodic(oxu); oxu 2813 drivers/usb/host/oxu210hp-hcd.c oxu->scanning = 0; oxu 2819 drivers/usb/host/oxu210hp-hcd.c if (HC_IS_RUNNING(oxu_to_hcd(oxu)->state) && oxu 2820 drivers/usb/host/oxu210hp-hcd.c (oxu->async->qh_next.ptr != NULL || oxu 2821 drivers/usb/host/oxu210hp-hcd.c oxu->periodic_sched != 0)) oxu 2822 drivers/usb/host/oxu210hp-hcd.c timer_action(oxu, TIMER_IO_WATCHDOG); oxu 2825 drivers/usb/host/oxu210hp-hcd.c static void unlink_async(struct oxu_hcd *oxu, struct ehci_qh *qh) oxu 2829 drivers/usb/host/oxu210hp-hcd.c && oxu->reclaim oxu 2830 drivers/usb/host/oxu210hp-hcd.c && HC_IS_RUNNING(oxu_to_hcd(oxu)->state)) { oxu 2833 drivers/usb/host/oxu210hp-hcd.c for (last = oxu->reclaim; oxu 2841 drivers/usb/host/oxu210hp-hcd.c } else if (!HC_IS_RUNNING(oxu_to_hcd(oxu)->state) && oxu->reclaim) oxu 2842 drivers/usb/host/oxu210hp-hcd.c end_unlink_async(oxu); oxu 2846 drivers/usb/host/oxu210hp-hcd.c start_unlink_async(oxu, qh); oxu 2855 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 2859 drivers/usb/host/oxu210hp-hcd.c spin_lock(&oxu->lock); oxu 2861 drivers/usb/host/oxu210hp-hcd.c status = readl(&oxu->regs->status); oxu 2865 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "device removed\n"); oxu 2872 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->lock); oxu 2877 drivers/usb/host/oxu210hp-hcd.c writel(status, &oxu->regs->status); oxu 2878 drivers/usb/host/oxu210hp-hcd.c readl(&oxu->regs->command); /* unblock posted write */ oxu 2883 drivers/usb/host/oxu210hp-hcd.c dbg_status(oxu, "irq", status); oxu 2894 drivers/usb/host/oxu210hp-hcd.c oxu->reclaim_ready = 1; oxu 2900 drivers/usb/host/oxu210hp-hcd.c unsigned i = HCS_N_PORTS(oxu->hcs_params); oxu 2904 drivers/usb/host/oxu210hp-hcd.c if (!(readl(&oxu->regs->command) & CMD_RUN)) oxu 2908 drivers/usb/host/oxu210hp-hcd.c int pstatus = readl(&oxu->regs->port_status[i]); oxu 2913 drivers/usb/host/oxu210hp-hcd.c || oxu->reset_done[i] != 0) oxu 2920 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[i] = jiffies + oxu 2922 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "port %d remote wakeup\n", i + 1); oxu 2923 drivers/usb/host/oxu210hp-hcd.c mod_timer(&hcd->rh_timer, oxu->reset_done[i]); oxu 2930 drivers/usb/host/oxu210hp-hcd.c status = readl(&oxu->regs->status); oxu 2931 drivers/usb/host/oxu210hp-hcd.c dbg_cmd(oxu, "fatal", readl(&oxu->regs->command)); oxu 2932 drivers/usb/host/oxu210hp-hcd.c dbg_status(oxu, "fatal", status); oxu 2934 drivers/usb/host/oxu210hp-hcd.c oxu_err(oxu, "fatal error\n"); oxu 2936 drivers/usb/host/oxu210hp-hcd.c ehci_reset(oxu); oxu 2937 drivers/usb/host/oxu210hp-hcd.c writel(0, &oxu->regs->configured_flag); oxu 2947 drivers/usb/host/oxu210hp-hcd.c ehci_work(oxu); oxu 2948 drivers/usb/host/oxu210hp-hcd.c spin_unlock(&oxu->lock); oxu 2956 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 2965 drivers/usb/host/oxu210hp-hcd.c if ((oxu->is_otg && (status & OXU_USBOTGI)) || oxu 2966 drivers/usb/host/oxu210hp-hcd.c (!oxu->is_otg && (status & OXU_USBSPHI))) oxu 2979 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = from_timer(oxu, t, watchdog); oxu 2982 drivers/usb/host/oxu210hp-hcd.c spin_lock_irqsave(&oxu->lock, flags); oxu 2985 drivers/usb/host/oxu210hp-hcd.c if (oxu->reclaim) { oxu 2986 drivers/usb/host/oxu210hp-hcd.c u32 status = readl(&oxu->regs->status); oxu 2988 drivers/usb/host/oxu210hp-hcd.c oxu_vdbg(oxu, "lost IAA\n"); oxu 2989 drivers/usb/host/oxu210hp-hcd.c writel(STS_IAA, &oxu->regs->status); oxu 2990 drivers/usb/host/oxu210hp-hcd.c oxu->reclaim_ready = 1; oxu 2995 drivers/usb/host/oxu210hp-hcd.c if (test_bit(TIMER_ASYNC_OFF, &oxu->actions)) oxu 2996 drivers/usb/host/oxu210hp-hcd.c start_unlink_async(oxu, oxu->async); oxu 2999 drivers/usb/host/oxu210hp-hcd.c ehci_work(oxu); oxu 3001 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irqrestore(&oxu->lock, flags); oxu 3008 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3013 drivers/usb/host/oxu210hp-hcd.c spin_lock_init(&oxu->lock); oxu 3015 drivers/usb/host/oxu210hp-hcd.c timer_setup(&oxu->watchdog, oxu_watchdog, 0); oxu 3021 drivers/usb/host/oxu210hp-hcd.c oxu->periodic_size = DEFAULT_I_TDPS; oxu 3022 drivers/usb/host/oxu210hp-hcd.c retval = ehci_mem_init(oxu, GFP_KERNEL); oxu 3027 drivers/usb/host/oxu210hp-hcd.c hcc_params = readl(&oxu->caps->hcc_params); oxu 3029 drivers/usb/host/oxu210hp-hcd.c oxu->i_thresh = 8; oxu 3031 drivers/usb/host/oxu210hp-hcd.c oxu->i_thresh = 2 + HCC_ISOC_THRES(hcc_params); oxu 3033 drivers/usb/host/oxu210hp-hcd.c oxu->reclaim = NULL; oxu 3034 drivers/usb/host/oxu210hp-hcd.c oxu->reclaim_ready = 0; oxu 3035 drivers/usb/host/oxu210hp-hcd.c oxu->next_uframe = -1; oxu 3044 drivers/usb/host/oxu210hp-hcd.c oxu->async->qh_next.qh = NULL; oxu 3045 drivers/usb/host/oxu210hp-hcd.c oxu->async->hw_next = QH_NEXT(oxu->async->qh_dma); oxu 3046 drivers/usb/host/oxu210hp-hcd.c oxu->async->hw_info1 = cpu_to_le32(QH_HEAD); oxu 3047 drivers/usb/host/oxu210hp-hcd.c oxu->async->hw_token = cpu_to_le32(QTD_STS_HALT); oxu 3048 drivers/usb/host/oxu210hp-hcd.c oxu->async->hw_qtd_next = EHCI_LIST_END; oxu 3049 drivers/usb/host/oxu210hp-hcd.c oxu->async->qh_state = QH_STATE_LINKED; oxu 3050 drivers/usb/host/oxu210hp-hcd.c oxu->async->hw_alt_next = QTD_NEXT(oxu->async->dummy->qtd_dma); oxu 3069 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "park %d\n", park); oxu 3076 drivers/usb/host/oxu210hp-hcd.c oxu->command = temp; oxu 3085 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3087 drivers/usb/host/oxu210hp-hcd.c spin_lock_init(&oxu->mem_lock); oxu 3088 drivers/usb/host/oxu210hp-hcd.c INIT_LIST_HEAD(&oxu->urb_list); oxu 3089 drivers/usb/host/oxu210hp-hcd.c oxu->urb_len = 0; oxu 3091 drivers/usb/host/oxu210hp-hcd.c if (oxu->is_otg) { oxu 3092 drivers/usb/host/oxu210hp-hcd.c oxu->caps = hcd->regs + OXU_OTG_CAP_OFFSET; oxu 3093 drivers/usb/host/oxu210hp-hcd.c oxu->regs = hcd->regs + OXU_OTG_CAP_OFFSET + \ oxu 3094 drivers/usb/host/oxu210hp-hcd.c HC_LENGTH(readl(&oxu->caps->hc_capbase)); oxu 3096 drivers/usb/host/oxu210hp-hcd.c oxu->mem = hcd->regs + OXU_SPH_MEM; oxu 3098 drivers/usb/host/oxu210hp-hcd.c oxu->caps = hcd->regs + OXU_SPH_CAP_OFFSET; oxu 3099 drivers/usb/host/oxu210hp-hcd.c oxu->regs = hcd->regs + OXU_SPH_CAP_OFFSET + \ oxu 3100 drivers/usb/host/oxu210hp-hcd.c HC_LENGTH(readl(&oxu->caps->hc_capbase)); oxu 3102 drivers/usb/host/oxu210hp-hcd.c oxu->mem = hcd->regs + OXU_OTG_MEM; oxu 3105 drivers/usb/host/oxu210hp-hcd.c oxu->hcs_params = readl(&oxu->caps->hcs_params); oxu 3106 drivers/usb/host/oxu210hp-hcd.c oxu->sbrn = 0x20; oxu 3113 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3120 drivers/usb/host/oxu210hp-hcd.c retval = ehci_reset(oxu); oxu 3122 drivers/usb/host/oxu210hp-hcd.c ehci_mem_cleanup(oxu); oxu 3125 drivers/usb/host/oxu210hp-hcd.c writel(oxu->periodic_dma, &oxu->regs->frame_list); oxu 3126 drivers/usb/host/oxu210hp-hcd.c writel((u32) oxu->async->qh_dma, &oxu->regs->async_next); oxu 3139 drivers/usb/host/oxu210hp-hcd.c hcc_params = readl(&oxu->caps->hcc_params); oxu 3141 drivers/usb/host/oxu210hp-hcd.c writel(0, &oxu->regs->segment); oxu 3143 drivers/usb/host/oxu210hp-hcd.c oxu->command &= ~(CMD_LRESET | CMD_IAAD | CMD_PSE | oxu 3145 drivers/usb/host/oxu210hp-hcd.c oxu->command |= CMD_RUN; oxu 3146 drivers/usb/host/oxu210hp-hcd.c writel(oxu->command, &oxu->regs->command); oxu 3147 drivers/usb/host/oxu210hp-hcd.c dbg_cmd(oxu, "init", oxu->command); oxu 3156 drivers/usb/host/oxu210hp-hcd.c writel(FLAG_CF, &oxu->regs->configured_flag); oxu 3157 drivers/usb/host/oxu210hp-hcd.c readl(&oxu->regs->command); /* unblock posted writes */ oxu 3159 drivers/usb/host/oxu210hp-hcd.c temp = HC_VERSION(readl(&oxu->caps->hc_capbase)); oxu 3160 drivers/usb/host/oxu210hp-hcd.c oxu_info(oxu, "USB %x.%x started, quasi-EHCI %x.%02x, driver %s%s\n", oxu 3161 drivers/usb/host/oxu210hp-hcd.c ((oxu->sbrn & 0xf0)>>4), (oxu->sbrn & 0x0f), oxu 3165 drivers/usb/host/oxu210hp-hcd.c writel(INTR_MASK, &oxu->regs->intr_enable); /* Turn On Interrupts */ oxu 3172 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3175 drivers/usb/host/oxu210hp-hcd.c ehci_port_power(oxu, 0); oxu 3178 drivers/usb/host/oxu210hp-hcd.c del_timer_sync(&oxu->watchdog); oxu 3180 drivers/usb/host/oxu210hp-hcd.c spin_lock_irq(&oxu->lock); oxu 3182 drivers/usb/host/oxu210hp-hcd.c ehci_quiesce(oxu); oxu 3184 drivers/usb/host/oxu210hp-hcd.c ehci_reset(oxu); oxu 3185 drivers/usb/host/oxu210hp-hcd.c writel(0, &oxu->regs->intr_enable); oxu 3186 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irq(&oxu->lock); oxu 3189 drivers/usb/host/oxu210hp-hcd.c writel(0, &oxu->regs->configured_flag); oxu 3192 drivers/usb/host/oxu210hp-hcd.c spin_lock_irq(&oxu->lock); oxu 3193 drivers/usb/host/oxu210hp-hcd.c if (oxu->async) oxu 3194 drivers/usb/host/oxu210hp-hcd.c ehci_work(oxu); oxu 3195 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irq(&oxu->lock); oxu 3196 drivers/usb/host/oxu210hp-hcd.c ehci_mem_cleanup(oxu); oxu 3198 drivers/usb/host/oxu210hp-hcd.c dbg_status(oxu, "oxu_stop completed", readl(&oxu->regs->status)); oxu 3207 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3209 drivers/usb/host/oxu210hp-hcd.c (void) ehci_halt(oxu); oxu 3210 drivers/usb/host/oxu210hp-hcd.c ehci_turn_off_all_ports(oxu); oxu 3213 drivers/usb/host/oxu210hp-hcd.c writel(0, &oxu->regs->configured_flag); oxu 3216 drivers/usb/host/oxu210hp-hcd.c readl(&oxu->regs->configured_flag); oxu 3233 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3242 drivers/usb/host/oxu210hp-hcd.c if (!qh_urb_transaction(oxu, urb, &qtd_list, mem_flags)) oxu 3244 drivers/usb/host/oxu210hp-hcd.c return submit_async(oxu, urb, &qtd_list, mem_flags); oxu 3247 drivers/usb/host/oxu210hp-hcd.c if (!qh_urb_transaction(oxu, urb, &qtd_list, mem_flags)) oxu 3249 drivers/usb/host/oxu210hp-hcd.c return intr_submit(oxu, urb, &qtd_list, mem_flags); oxu 3253 drivers/usb/host/oxu210hp-hcd.c return itd_submit(oxu, urb, mem_flags); oxu 3255 drivers/usb/host/oxu210hp-hcd.c return sitd_submit(oxu, urb, mem_flags); oxu 3265 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3293 drivers/usb/host/oxu210hp-hcd.c murb = (struct urb *) oxu_murb_alloc(oxu); oxu 3324 drivers/usb/host/oxu210hp-hcd.c murb = (struct urb *) oxu_murb_alloc(oxu); oxu 3355 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3359 drivers/usb/host/oxu210hp-hcd.c spin_lock_irqsave(&oxu->lock, flags); oxu 3367 drivers/usb/host/oxu210hp-hcd.c unlink_async(oxu, qh); oxu 3376 drivers/usb/host/oxu210hp-hcd.c intr_deschedule(oxu, qh); oxu 3379 drivers/usb/host/oxu210hp-hcd.c qh_completions(oxu, qh); oxu 3382 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "bogus qh %p state %d\n", oxu 3392 drivers/usb/host/oxu210hp-hcd.c status = qh_schedule(oxu, qh); oxu 3393 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irqrestore(&oxu->lock, flags); oxu 3408 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irqrestore(&oxu->lock, flags); oxu 3416 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3424 drivers/usb/host/oxu210hp-hcd.c spin_lock_irqsave(&oxu->lock, flags); oxu 3433 drivers/usb/host/oxu210hp-hcd.c oxu_vdbg(oxu, "iso delay\n"); oxu 3441 drivers/usb/host/oxu210hp-hcd.c for (tmp = oxu->async->qh_next.qh; oxu 3448 drivers/usb/host/oxu210hp-hcd.c unlink_async(oxu, qh); oxu 3452 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irqrestore(&oxu->lock, flags); oxu 3466 drivers/usb/host/oxu210hp-hcd.c oxu_err(oxu, "qh %p (#%02x) state %d%s\n", oxu 3473 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irqrestore(&oxu->lock, flags); oxu 3478 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3480 drivers/usb/host/oxu210hp-hcd.c return (readl(&oxu->regs->frame_index) >> 3) % oxu 3481 drivers/usb/host/oxu210hp-hcd.c oxu->periodic_size; oxu 3487 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3498 drivers/usb/host/oxu210hp-hcd.c ports = HCS_N_PORTS(oxu->hcs_params); oxu 3518 drivers/usb/host/oxu210hp-hcd.c spin_lock_irqsave(&oxu->lock, flags); oxu 3520 drivers/usb/host/oxu210hp-hcd.c temp = readl(&oxu->regs->port_status[i]); oxu 3530 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[i] = 0; oxu 3532 drivers/usb/host/oxu210hp-hcd.c time_after_eq(jiffies, oxu->reset_done[i]))) { oxu 3541 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irqrestore(&oxu->lock, flags); oxu 3546 drivers/usb/host/oxu210hp-hcd.c static inline unsigned int oxu_port_speed(struct oxu_hcd *oxu, oxu 3564 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3565 drivers/usb/host/oxu210hp-hcd.c int ports = HCS_N_PORTS(oxu->hcs_params); oxu 3566 drivers/usb/host/oxu210hp-hcd.c u32 __iomem *status_reg = &oxu->regs->port_status[wIndex - 1]; oxu 3579 drivers/usb/host/oxu210hp-hcd.c spin_lock_irqsave(&oxu->lock, flags); oxu 3620 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[wIndex] = jiffies oxu 3628 drivers/usb/host/oxu210hp-hcd.c if (HCS_PPC(oxu->hcs_params)) oxu 3644 drivers/usb/host/oxu210hp-hcd.c readl(&oxu->regs->command); /* unblock posted write */ oxu 3647 drivers/usb/host/oxu210hp-hcd.c ehci_hub_descriptor(oxu, (struct usb_hub_descriptor *) oxu 3673 drivers/usb/host/oxu210hp-hcd.c if (!oxu->reset_done[wIndex]) { oxu 3675 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[wIndex] = jiffies oxu 3678 drivers/usb/host/oxu210hp-hcd.c mod_timer(&oxu_to_hcd(oxu)->rh_timer, oxu 3679 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[wIndex]); oxu 3684 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[wIndex])) { oxu 3686 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[wIndex] = 0; oxu 3692 drivers/usb/host/oxu210hp-hcd.c retval = handshake(oxu, status_reg, oxu 3695 drivers/usb/host/oxu210hp-hcd.c oxu_err(oxu, oxu 3707 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[wIndex])) { oxu 3709 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[wIndex] = 0; oxu 3717 drivers/usb/host/oxu210hp-hcd.c retval = handshake(oxu, status_reg, oxu 3720 drivers/usb/host/oxu210hp-hcd.c oxu_err(oxu, "port %d reset error %d\n", oxu 3726 drivers/usb/host/oxu210hp-hcd.c temp = check_reset_complete(oxu, wIndex, status_reg, oxu 3732 drivers/usb/host/oxu210hp-hcd.c test_bit(wIndex, &oxu->companion_ports)) { oxu 3736 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "port %d --> companion\n", wIndex + 1); oxu 3749 drivers/usb/host/oxu210hp-hcd.c status |= oxu_port_speed(oxu, temp); oxu 3765 drivers/usb/host/oxu210hp-hcd.c dbg_port(oxu, "GetStatus", wIndex + 1, temp); oxu 3799 drivers/usb/host/oxu210hp-hcd.c if (HCS_PPC(oxu->hcs_params)) oxu 3809 drivers/usb/host/oxu210hp-hcd.c oxu_vdbg(oxu, "port %d reset\n", wIndex + 1); oxu 3817 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[wIndex] = jiffies oxu 3831 drivers/usb/host/oxu210hp-hcd.c ehci_quiesce(oxu); oxu 3832 drivers/usb/host/oxu210hp-hcd.c ehci_halt(oxu); oxu 3840 drivers/usb/host/oxu210hp-hcd.c readl(&oxu->regs->command); /* unblock posted writes */ oxu 3848 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irqrestore(&oxu->lock, flags); oxu 3856 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3860 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "suspend root hub\n"); oxu 3862 drivers/usb/host/oxu210hp-hcd.c if (time_before(jiffies, oxu->next_statechange)) oxu 3865 drivers/usb/host/oxu210hp-hcd.c port = HCS_N_PORTS(oxu->hcs_params); oxu 3866 drivers/usb/host/oxu210hp-hcd.c spin_lock_irq(&oxu->lock); oxu 3870 drivers/usb/host/oxu210hp-hcd.c ehci_quiesce(oxu); oxu 3873 drivers/usb/host/oxu210hp-hcd.c oxu->command = readl(&oxu->regs->command); oxu 3874 drivers/usb/host/oxu210hp-hcd.c if (oxu->reclaim) oxu 3875 drivers/usb/host/oxu210hp-hcd.c oxu->reclaim_ready = 1; oxu 3876 drivers/usb/host/oxu210hp-hcd.c ehci_work(oxu); oxu 3883 drivers/usb/host/oxu210hp-hcd.c oxu->bus_suspended = 0; oxu 3885 drivers/usb/host/oxu210hp-hcd.c u32 __iomem *reg = &oxu->regs->port_status[port]; oxu 3893 drivers/usb/host/oxu210hp-hcd.c set_bit(port, &oxu->bus_suspended); oxu 3903 drivers/usb/host/oxu210hp-hcd.c oxu_vdbg(oxu, "port %d, %08x -> %08x\n", oxu 3910 drivers/usb/host/oxu210hp-hcd.c del_timer_sync(&oxu->watchdog); oxu 3911 drivers/usb/host/oxu210hp-hcd.c ehci_halt(oxu); oxu 3918 drivers/usb/host/oxu210hp-hcd.c writel(mask, &oxu->regs->intr_enable); oxu 3919 drivers/usb/host/oxu210hp-hcd.c readl(&oxu->regs->intr_enable); oxu 3921 drivers/usb/host/oxu210hp-hcd.c oxu->next_statechange = jiffies + msecs_to_jiffies(10); oxu 3922 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irq(&oxu->lock); oxu 3929 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu = hcd_to_oxu(hcd); oxu 3933 drivers/usb/host/oxu210hp-hcd.c if (time_before(jiffies, oxu->next_statechange)) oxu 3935 drivers/usb/host/oxu210hp-hcd.c spin_lock_irq(&oxu->lock); oxu 3943 drivers/usb/host/oxu210hp-hcd.c temp = readl(&oxu->regs->intr_enable); oxu 3944 drivers/usb/host/oxu210hp-hcd.c oxu_dbg(oxu, "resume root hub%s\n", temp ? "" : " after power loss"); oxu 3949 drivers/usb/host/oxu210hp-hcd.c writel(0, &oxu->regs->intr_enable); oxu 3952 drivers/usb/host/oxu210hp-hcd.c writel(0, &oxu->regs->segment); oxu 3953 drivers/usb/host/oxu210hp-hcd.c writel(oxu->periodic_dma, &oxu->regs->frame_list); oxu 3954 drivers/usb/host/oxu210hp-hcd.c writel((u32) oxu->async->qh_dma, &oxu->regs->async_next); oxu 3957 drivers/usb/host/oxu210hp-hcd.c writel(oxu->command, &oxu->regs->command); oxu 3964 drivers/usb/host/oxu210hp-hcd.c i = HCS_N_PORTS(oxu->hcs_params); oxu 3966 drivers/usb/host/oxu210hp-hcd.c temp = readl(&oxu->regs->port_status[i]); oxu 3969 drivers/usb/host/oxu210hp-hcd.c if (test_bit(i, &oxu->bus_suspended) && (temp & PORT_SUSPEND)) { oxu 3970 drivers/usb/host/oxu210hp-hcd.c oxu->reset_done[i] = jiffies + msecs_to_jiffies(20); oxu 3973 drivers/usb/host/oxu210hp-hcd.c writel(temp, &oxu->regs->port_status[i]); oxu 3975 drivers/usb/host/oxu210hp-hcd.c i = HCS_N_PORTS(oxu->hcs_params); oxu 3978 drivers/usb/host/oxu210hp-hcd.c temp = readl(&oxu->regs->port_status[i]); oxu 3979 drivers/usb/host/oxu210hp-hcd.c if (test_bit(i, &oxu->bus_suspended) && (temp & PORT_SUSPEND)) { oxu 3981 drivers/usb/host/oxu210hp-hcd.c writel(temp, &oxu->regs->port_status[i]); oxu 3982 drivers/usb/host/oxu210hp-hcd.c oxu_vdbg(oxu, "resumed port %d\n", i + 1); oxu 3985 drivers/usb/host/oxu210hp-hcd.c (void) readl(&oxu->regs->command); oxu 3989 drivers/usb/host/oxu210hp-hcd.c if (oxu->async->qh_next.qh) oxu 3991 drivers/usb/host/oxu210hp-hcd.c if (oxu->periodic_sched) oxu 3994 drivers/usb/host/oxu210hp-hcd.c oxu->command |= temp; oxu 3995 drivers/usb/host/oxu210hp-hcd.c writel(oxu->command, &oxu->regs->command); oxu 3998 drivers/usb/host/oxu210hp-hcd.c oxu->next_statechange = jiffies + msecs_to_jiffies(5); oxu 4002 drivers/usb/host/oxu210hp-hcd.c writel(INTR_MASK, &oxu->regs->intr_enable); oxu 4004 drivers/usb/host/oxu210hp-hcd.c spin_unlock_irq(&oxu->lock); oxu 4129 drivers/usb/host/oxu210hp-hcd.c struct oxu_hcd *oxu; oxu 4148 drivers/usb/host/oxu210hp-hcd.c oxu = hcd_to_oxu(hcd); oxu 4149 drivers/usb/host/oxu210hp-hcd.c oxu->is_otg = otg;