Home
last modified time | relevance | path

Searched refs:whc (Results 1 – 12 of 12) sorted by relevance

/drivers/usb/host/whci/
Dinit.c30 static void whc_hw_reset(struct whc *whc) in whc_hw_reset() argument
32 le_writel(WUSBCMD_WHCRESET, whc->base + WUSBCMD); in whc_hw_reset()
33 whci_wait_for(&whc->umc->dev, whc->base + WUSBCMD, WUSBCMD_WHCRESET, 0, in whc_hw_reset()
37 static void whc_hw_init_di_buf(struct whc *whc) in whc_hw_init_di_buf() argument
42 for (d = 0; d < whc->n_devices; d++) in whc_hw_init_di_buf()
43 whc->di_buf[d].addr_sec_info = WHC_DI_DISABLE; in whc_hw_init_di_buf()
45 le_writeq(whc->di_buf_dma, whc->base + WUSBDEVICEINFOADDR); in whc_hw_init_di_buf()
48 static void whc_hw_init_dn_buf(struct whc *whc) in whc_hw_init_dn_buf() argument
52 memset(whc->dn_buf, 0, 4096); in whc_hw_init_dn_buf()
54 le_writeq(whc->dn_buf_dma, whc->base + WUSBDNTSBUFADDR); in whc_hw_init_dn_buf()
[all …]
Dpzl.c28 static void update_pzl_pointers(struct whc *whc, int period, u64 addr) in update_pzl_pointers() argument
32 whc_qset_set_link_ptr(&whc->pz_list[0], addr); in update_pzl_pointers()
33 whc_qset_set_link_ptr(&whc->pz_list[2], addr); in update_pzl_pointers()
34 whc_qset_set_link_ptr(&whc->pz_list[4], addr); in update_pzl_pointers()
35 whc_qset_set_link_ptr(&whc->pz_list[6], addr); in update_pzl_pointers()
36 whc_qset_set_link_ptr(&whc->pz_list[8], addr); in update_pzl_pointers()
37 whc_qset_set_link_ptr(&whc->pz_list[10], addr); in update_pzl_pointers()
38 whc_qset_set_link_ptr(&whc->pz_list[12], addr); in update_pzl_pointers()
39 whc_qset_set_link_ptr(&whc->pz_list[14], addr); in update_pzl_pointers()
42 whc_qset_set_link_ptr(&whc->pz_list[1], addr); in update_pzl_pointers()
[all …]
Dasl.c28 static void qset_get_next_prev(struct whc *whc, struct whc_qset *qset, in qset_get_next_prev() argument
33 BUG_ON(list_empty(&whc->async_list)); in qset_get_next_prev()
36 if (n == &whc->async_list) in qset_get_next_prev()
39 if (p == &whc->async_list) in qset_get_next_prev()
47 static void asl_qset_insert_begin(struct whc *whc, struct whc_qset *qset) in asl_qset_insert_begin() argument
49 list_move(&qset->list_node, &whc->async_list); in asl_qset_insert_begin()
53 static void asl_qset_insert(struct whc *whc, struct whc_qset *qset) in asl_qset_insert() argument
57 qset_clear(whc, qset); in asl_qset_insert()
60 qset_get_next_prev(whc, qset, &next, &prev); in asl_qset_insert()
66 static void asl_qset_remove(struct whc *whc, struct whc_qset *qset) in asl_qset_remove() argument
[all …]
Dwhcd.h34 struct whc { struct
78 #define wusbhc_to_whc(w) (container_of((w), struct whc, wusbhc)) argument
143 int whc_init(struct whc *whc);
144 void whc_clean_up(struct whc *whc);
147 void whc_write_wusbcmd(struct whc *whc, u32 mask, u32 val);
148 int whc_do_gencmd(struct whc *whc, u32 cmd, u32 params, void *addr, size_t len);
149 void whc_hw_error(struct whc *whc, const char *reason);
164 int whc_set_cluster_id(struct whc *whc, u8 bcid);
171 void asl_start(struct whc *whc);
172 void asl_stop(struct whc *whc);
[all …]
Dwusb.c26 static int whc_update_di(struct whc *whc, int idx) in whc_update_di() argument
31 le_writel(bit, whc->base + WUSBDIBUPDATED + offset); in whc_update_di()
33 return whci_wait_for(&whc->umc->dev, in whc_update_di()
34 whc->base + WUSBDIBUPDATED + offset, bit, 0, in whc_update_di()
46 struct whc *whc = wusbhc_to_whc(wusbhc); in whc_wusbhc_start() local
48 asl_start(whc); in whc_wusbhc_start()
49 pzl_start(whc); in whc_wusbhc_start()
56 struct whc *whc = wusbhc_to_whc(wusbhc); in whc_wusbhc_stop() local
60 pzl_stop(whc); in whc_wusbhc_stop()
61 asl_stop(whc); in whc_wusbhc_stop()
[all …]
Dint.c26 static void transfer_done(struct whc *whc) in transfer_done() argument
28 queue_work(whc->workqueue, &whc->async_work); in transfer_done()
29 queue_work(whc->workqueue, &whc->periodic_work); in transfer_done()
35 struct whc *whc = wusbhc_to_whc(wusbhc); in whc_int_handler() local
38 sts = le_readl(whc->base + WUSBSTS); in whc_int_handler()
41 le_writel(sts & WUSBSTS_INT_MASK, whc->base + WUSBSTS); in whc_int_handler()
44 wake_up(&whc->cmd_wq); in whc_int_handler()
47 dev_err(&whc->umc->dev, "FIXME: host system error\n"); in whc_int_handler()
50 wake_up(&whc->async_list_wq); in whc_int_handler()
53 wake_up(&whc->periodic_list_wq); in whc_int_handler()
[all …]
Dhcd.c47 struct whc *whc = wusbhc_to_whc(wusbhc); in whc_start() local
59 whc->base + WUSBINTR); in whc_start()
63 ret = whc_set_cluster_id(whc, bcid); in whc_start()
69 whc_write_wusbcmd(whc, WUSBCMD_RUN, WUSBCMD_RUN); in whc_start()
91 struct whc *whc = wusbhc_to_whc(wusbhc); in whc_stop() local
96 le_writel(0, whc->base + WUSBINTR); in whc_stop()
97 whc_write_wusbcmd(whc, WUSBCMD_RUN, 0); in whc_stop()
98 whci_wait_for(&whc->umc->dev, whc->base + WUSBSTS, in whc_stop()
121 struct whc *whc = wusbhc_to_whc(wusbhc); in whc_urb_enqueue() local
126 ret = pzl_urb_enqueue(whc, urb, mem_flags); in whc_urb_enqueue()
[all …]
Dhw.c26 void whc_write_wusbcmd(struct whc *whc, u32 mask, u32 val) in whc_write_wusbcmd() argument
31 spin_lock_irqsave(&whc->lock, flags); in whc_write_wusbcmd()
33 cmd = le_readl(whc->base + WUSBCMD); in whc_write_wusbcmd()
35 le_writel(cmd, whc->base + WUSBCMD); in whc_write_wusbcmd()
37 spin_unlock_irqrestore(&whc->lock, flags); in whc_write_wusbcmd()
48 int whc_do_gencmd(struct whc *whc, u32 cmd, u32 params, void *addr, size_t len) in whc_do_gencmd() argument
55 mutex_lock(&whc->mutex); in whc_do_gencmd()
58 t = wait_event_timeout(whc->cmd_wq, in whc_do_gencmd()
59 (le_readl(whc->base + WUSBGENCMDSTS) & WUSBGENCMDSTS_ACTIVE) == 0, in whc_do_gencmd()
62 dev_err(&whc->umc->dev, "generic command timeout (%04x/%04x)\n", in whc_do_gencmd()
[all …]
Dqset.c28 struct whc_qset *qset_alloc(struct whc *whc, gfp_t mem_flags) in qset_alloc() argument
33 qset = dma_pool_alloc(whc->qset_pool, mem_flags, &dma); in qset_alloc()
39 qset->whc = whc; in qset_alloc()
53 static void qset_fill_qh(struct whc *whc, struct whc_qset *qset, struct urb *urb) in qset_fill_qh() argument
86 if (phy_rate > whc->wusbhc.phy_rate) in qset_fill_qh()
87 phy_rate = whc->wusbhc.phy_rate; in qset_fill_qh()
123 void qset_clear(struct whc *whc, struct whc_qset *qset) in qset_clear() argument
145 void qset_reset(struct whc *whc, struct whc_qset *qset) in qset_reset() argument
158 struct whc_qset *get_qset(struct whc *whc, struct urb *urb, in get_qset() argument
165 qset = qset_alloc(whc, mem_flags); in get_qset()
[all …]
Ddebug.c43 if (&qset->list_node == qset->whc->async_list.prev) { in qset_print()
88 struct whc *whc = s->private; in di_print() local
92 for (d = 0; d < whc->n_devices; d++) { in di_print()
93 struct di_buf_entry *di = &whc->di_buf[d]; in di_print()
111 struct whc *whc = s->private; in asl_print() local
114 list_for_each_entry(qset, &whc->async_list, list_node) { in asl_print()
123 struct whc *whc = s->private; in pzl_print() local
129 list_for_each_entry(qset, &whc->periodic_list[period], list_node) { in pzl_print()
175 void whc_dbg_init(struct whc *whc) in whc_dbg_init() argument
177 if (whc->wusbhc.pal.debugfs_dir == NULL) in whc_dbg_init()
[all …]
Dwhci-hc.h250 struct whc *whc; member
/drivers/uwb/
DMakefile2 obj-$(CONFIG_UWB_WHCI) += umc.o whci.o whc-rc.o