Lines Matching refs:ir

1802 xhci_remove_interrupter(struct xhci_hcd *xhci, struct xhci_interrupter *ir)
1806 if (!ir)
1814 if (ir->ir_set) {
1815 tmp = readl(&ir->ir_set->erst_size);
1817 writel(tmp, &ir->ir_set->erst_size);
1819 xhci_write_64(xhci, ERST_EHB, &ir->ir_set->erst_dequeue);
1824 xhci_free_interrupter(struct xhci_hcd *xhci, struct xhci_interrupter *ir)
1829 if (!ir)
1832 erst_size = array_size(sizeof(struct xhci_erst_entry), ir->erst.num_entries);
1833 if (ir->erst.entries)
1835 ir->erst.entries,
1836 ir->erst.erst_dma_addr);
1837 ir->erst.entries = NULL;
1840 if (ir->event_ring)
1841 xhci_ring_free(xhci, ir->event_ring);
1843 ir->event_ring = NULL;
1845 kfree(ir);
1848 void xhci_remove_secondary_interrupter(struct usb_hcd *hcd, struct xhci_interrupter *ir)
1856 if (!ir || !ir->intr_num || ir->intr_num >= xhci->max_interrupters) {
1862 intr_num = ir->intr_num;
1864 xhci_remove_interrupter(xhci, ir);
1869 xhci_free_interrupter(xhci, ir);
1972 static void xhci_set_hc_event_deq(struct xhci_hcd *xhci, struct xhci_interrupter *ir)
1976 deq = xhci_trb_virt_to_dma(ir->event_ring->deq_seg,
1977 ir->event_ring->dequeue);
1986 xhci_write_64(xhci, deq & ERST_PTR_MASK, &ir->ir_set->erst_dequeue);
2265 struct xhci_interrupter *ir;
2275 ir = kzalloc_node(sizeof(*ir), flags, dev_to_node(dev));
2276 if (!ir)
2279 ir->event_ring = xhci_ring_alloc(xhci, segs, 1, TYPE_EVENT, 0, flags);
2280 if (!ir->event_ring) {
2282 kfree(ir);
2286 ret = xhci_alloc_erst(xhci, ir->event_ring, &ir->erst, flags);
2289 xhci_ring_free(xhci, ir->event_ring);
2290 kfree(ir);
2294 return ir;
2298 xhci_add_interrupter(struct xhci_hcd *xhci, struct xhci_interrupter *ir,
2315 xhci->interrupters[intr_num] = ir;
2316 ir->intr_num = intr_num;
2317 ir->ir_set = &xhci->run_regs->ir_set[intr_num];
2320 erst_size = readl(&ir->ir_set->erst_size);
2322 erst_size |= ir->event_ring->num_segs;
2323 writel(erst_size, &ir->ir_set->erst_size);
2325 erst_base = xhci_read_64(xhci, &ir->ir_set->erst_base);
2327 erst_base |= ir->erst.erst_dma_addr & ~ERST_BASE_RSVDP;
2328 xhci_write_64(xhci, erst_base, &ir->ir_set->erst_base);
2331 xhci_set_hc_event_deq(xhci, ir);
2340 struct xhci_interrupter *ir;
2347 ir = xhci_alloc_interrupter(xhci, segs, GFP_KERNEL);
2348 if (!ir)
2356 err = xhci_add_interrupter(xhci, ir, i);
2366 xhci_free_interrupter(xhci, ir);
2373 return ir;
2379 struct xhci_interrupter *ir;
2508 ir = xhci_alloc_interrupter(xhci, 0, flags);
2509 if (!ir)
2512 if (xhci_add_interrupter(xhci, ir, 0))
2515 ir->isoc_bei_interval = AVOID_BEI_INTERVAL_MAX;