Searched refs:wa (Results 1 - 21 of 21) sorted by relevance

/linux-4.1.27/drivers/usb/wusbcore/
H A DMakefile4 obj-$(CONFIG_USB_HWA_HCD) += wusb-wa.o
21 wusb-wa-y := \
22 wa-hc.o \
23 wa-nep.o \
24 wa-rpipe.o \
25 wa-xfer.o
H A Dwa-hc.c28 #include "wa-hc.h"
33 * wa->usb_dev and wa->usb_iface initialized and refcounted,
34 * wa->wa_descr initialized.
36 int wa_create(struct wahc *wa, struct usb_interface *iface, wa_create() argument
42 result = wa_rpipes_create(wa); wa_create()
45 wa->quirks = quirks; wa_create()
47 wa->dti_epd = &iface->cur_altsetting->endpoint[1].desc; wa_create()
48 wa->dto_epd = &iface->cur_altsetting->endpoint[2].desc; wa_create()
49 wa->dti_buf_size = usb_endpoint_maxp(wa->dti_epd); wa_create()
50 wa->dti_buf = kmalloc(wa->dti_buf_size, GFP_KERNEL); wa_create()
51 if (wa->dti_buf == NULL) { wa_create()
55 result = wa_nep_create(wa, iface); wa_create()
64 kfree(wa->dti_buf); wa_create()
66 wa_rpipes_destroy(wa); wa_create()
73 void __wa_destroy(struct wahc *wa) __wa_destroy() argument
75 if (wa->dti_urb) { __wa_destroy()
76 usb_kill_urb(wa->dti_urb); __wa_destroy()
77 usb_put_urb(wa->dti_urb); __wa_destroy()
79 kfree(wa->dti_buf); __wa_destroy()
80 wa_nep_destroy(wa); __wa_destroy()
81 wa_rpipes_destroy(wa); __wa_destroy()
87 * @wa: the WA to be reset
91 void wa_reset_all(struct wahc *wa) wa_reset_all() argument
94 wusbhc_reset_all(wa->wusb); wa_reset_all()
H A Dwa-nep.c56 #include "wa-hc.h"
62 struct wahc *wa; member in struct:wa_notif_work
72 * @wa, the size of the buffer and the work queue
90 * @wa has to be referenced
98 struct wahc *wa = nw->wa; wa_notif_dispatch() local
102 struct device *dev = &wa->usb_iface->dev; wa_notif_dispatch()
109 atomic_dec(&wa->notifs_queued); /* Throttling ctl */ wa_notif_dispatch()
110 dev = &wa->usb_iface->dev; wa_notif_dispatch()
130 wusbhc_handle_dn(wa->wusb, hwa_dn->bSourceDeviceAddr, wa_notif_dispatch()
136 wa_handle_notif_xfer(wa, notif_hdr); wa_notif_dispatch()
153 wa_put(wa); wa_notif_dispatch()
172 * @wa: Pointer the Wire Adapter Controller Data Streaming
177 * The input buffer is @wa->nep_buffer, with @size bytes
179 * @wa->nep_buffer_size).
181 static int wa_nep_queue(struct wahc *wa, size_t size) wa_nep_queue() argument
184 struct device *dev = &wa->usb_iface->dev; wa_nep_queue()
187 /* dev_fnstart(dev, "(wa %p, size %zu)\n", wa, size); */ wa_nep_queue()
188 BUG_ON(size > wa->nep_buffer_size); wa_nep_queue()
191 if (atomic_read(&wa->notifs_queued) > 200) { wa_nep_queue()
204 nw->wa = wa_get(wa); wa_nep_queue()
206 memcpy(nw->data, wa->nep_buffer, size); wa_nep_queue()
207 atomic_inc(&wa->notifs_queued); /* Throttling ctl */ wa_nep_queue()
210 /* dev_fnend(dev, "(wa %p, size %zu) = result\n", wa, size, result); */ wa_nep_queue()
223 struct wahc *wa = urb->context; wa_nep_cb() local
224 struct device *dev = &wa->usb_iface->dev; wa_nep_cb()
228 result = wa_nep_queue(wa, urb->actual_length); wa_nep_cb()
239 if (edc_inc(&wa->nep_edc, EDC_MAX_ERRORS, wa_nep_cb()
243 wa_reset_all(wa); wa_nep_cb()
248 result = wa_nep_arm(wa, GFP_ATOMIC); wa_nep_cb()
251 wa_reset_all(wa); wa_nep_cb()
258 * Initialize @wa's notification and event's endpoint stuff
263 int wa_nep_create(struct wahc *wa, struct usb_interface *iface) wa_nep_create() argument
270 edc_init(&wa->nep_edc); wa_nep_create()
272 wa->nep_buffer_size = 1024; wa_nep_create()
273 wa->nep_buffer = kmalloc(wa->nep_buffer_size, GFP_KERNEL); wa_nep_create()
274 if (wa->nep_buffer == NULL) { wa_nep_create()
279 wa->nep_urb = usb_alloc_urb(0, GFP_KERNEL); wa_nep_create()
280 if (wa->nep_urb == NULL) { wa_nep_create()
284 usb_fill_int_urb(wa->nep_urb, usb_dev, wa_nep_create()
286 wa->nep_buffer, wa->nep_buffer_size, wa_nep_create()
287 wa_nep_cb, wa, epd->bInterval); wa_nep_create()
288 result = wa_nep_arm(wa, GFP_KERNEL); wa_nep_create()
296 usb_free_urb(wa->nep_urb); wa_nep_create()
298 kfree(wa->nep_buffer); wa_nep_create()
303 void wa_nep_destroy(struct wahc *wa) wa_nep_destroy() argument
305 wa_nep_disarm(wa); wa_nep_destroy()
306 usb_free_urb(wa->nep_urb); wa_nep_destroy()
307 kfree(wa->nep_buffer); wa_nep_destroy()
H A Dwa-hc.h89 #include <linux/usb/wusb-wa.h>
102 * @wa is referenced when set
117 struct wahc *wa; member in struct:wa_rpipe
183 * commonalities with WHCI), a wa layer (for sharing
249 extern int wa_create(struct wahc *wa, struct usb_interface *iface,
251 extern void __wa_destroy(struct wahc *wa);
252 extern int wa_dti_start(struct wahc *wa);
253 void wa_reset_all(struct wahc *wa);
270 static inline int wa_nep_arm(struct wahc *wa, gfp_t gfp_mask) wa_nep_arm() argument
272 struct urb *urb = wa->nep_urb; wa_nep_arm()
273 urb->transfer_buffer = wa->nep_buffer; wa_nep_arm()
274 urb->transfer_buffer_length = wa->nep_buffer_size; wa_nep_arm()
278 static inline void wa_nep_disarm(struct wahc *wa) wa_nep_disarm() argument
280 usb_kill_urb(wa->nep_urb); wa_nep_disarm()
285 static inline void wa_rpipe_init(struct wahc *wa) wa_rpipe_init() argument
287 INIT_LIST_HEAD(&wa->rpipe_delayed_list); wa_rpipe_init()
288 spin_lock_init(&wa->rpipe_lock); wa_rpipe_init()
289 mutex_init(&wa->rpipe_mutex); wa_rpipe_init()
292 static inline void wa_init(struct wahc *wa) wa_init() argument
296 edc_init(&wa->nep_edc); wa_init()
297 atomic_set(&wa->notifs_queued, 0); wa_init()
298 wa->dti_state = WA_DTI_TRANSFER_RESULT_PENDING; wa_init()
299 wa_rpipe_init(wa); wa_init()
300 edc_init(&wa->dti_edc); wa_init()
301 INIT_LIST_HEAD(&wa->xfer_list); wa_init()
302 INIT_LIST_HEAD(&wa->xfer_delayed_list); wa_init()
303 INIT_LIST_HEAD(&wa->xfer_errored_list); wa_init()
304 spin_lock_init(&wa->xfer_list_lock); wa_init()
305 INIT_WORK(&wa->xfer_enqueue_work, wa_urb_enqueue_run); wa_init()
306 INIT_WORK(&wa->xfer_error_work, wa_process_errored_transfers_run); wa_init()
307 wa->dto_in_use = 0; wa_init()
308 atomic_set(&wa->xfer_id_count, 1); wa_init()
311 usb_init_urb(&(wa->buf_in_urbs[index])); wa_init()
312 wa->active_buf_in_urbs = 0; wa_init()
372 static inline struct wahc *wa_get(struct wahc *wa) wa_get() argument
374 usb_get_intf(wa->usb_iface); wa_get()
375 return wa; wa_get()
378 static inline void wa_put(struct wahc *wa) wa_put() argument
380 usb_put_intf(wa->usb_iface); wa_put()
384 static inline int __wa_feature(struct wahc *wa, unsigned op, u16 feature) __wa_feature() argument
386 return usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __wa_feature()
390 wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, __wa_feature()
395 static inline int __wa_set_feature(struct wahc *wa, u16 feature) __wa_set_feature() argument
397 return __wa_feature(wa, 1, feature); __wa_set_feature()
401 static inline int __wa_clear_feature(struct wahc *wa, u16 feature) __wa_clear_feature() argument
403 return __wa_feature(wa, 0, feature); __wa_clear_feature()
410 * @wa: Wire Adapter instance
417 s32 __wa_get_status(struct wahc *wa) __wa_get_status() argument
421 wa->usb_dev, usb_rcvctrlpipe(wa->usb_dev, 0), __wa_get_status()
424 0, wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, __wa_get_status()
425 &wa->status, sizeof(wa->status), USB_CTRL_GET_TIMEOUT); __wa_get_status()
427 result = wa->status; __wa_get_status()
435 * @wa: Wire Adapter instance.
444 static inline s32 __wa_wait_status(struct wahc *wa, u32 mask, u32 value) __wa_wait_status() argument
450 result = __wa_get_status(wa); __wa_wait_status()
463 static inline int __wa_stop(struct wahc *wa) __wa_stop() argument
466 struct device *dev = &wa->usb_iface->dev; __wa_stop()
468 result = __wa_clear_feature(wa, WA_ENABLE); __wa_stop()
473 result = __wa_wait_status(wa, WA_ENABLE, 0); __wa_stop()
H A Dwa-rpipe.c34 * Each bit in wa->rpipe_bm represents if an rpipe is being used or
66 #include "wa-hc.h"
68 static int __rpipe_get_descr(struct wahc *wa, __rpipe_get_descr() argument
72 struct device *dev = &wa->usb_iface->dev; __rpipe_get_descr()
78 wa->usb_dev, usb_rcvctrlpipe(wa->usb_dev, 0), __rpipe_get_descr()
106 static int __rpipe_set_descr(struct wahc *wa, __rpipe_set_descr() argument
110 struct device *dev = &wa->usb_iface->dev; __rpipe_set_descr()
116 wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __rpipe_set_descr()
148 static unsigned rpipe_get_idx(struct wahc *wa, unsigned rpipe_idx) rpipe_get_idx() argument
152 spin_lock_irqsave(&wa->rpipe_lock, flags); rpipe_get_idx()
153 rpipe_idx = find_next_zero_bit(wa->rpipe_bm, wa->rpipes, rpipe_idx); rpipe_get_idx()
154 if (rpipe_idx < wa->rpipes) rpipe_get_idx()
155 set_bit(rpipe_idx, wa->rpipe_bm); rpipe_get_idx()
156 spin_unlock_irqrestore(&wa->rpipe_lock, flags); rpipe_get_idx()
161 static void rpipe_put_idx(struct wahc *wa, unsigned rpipe_idx) rpipe_put_idx() argument
165 spin_lock_irqsave(&wa->rpipe_lock, flags); rpipe_put_idx()
166 clear_bit(rpipe_idx, wa->rpipe_bm); rpipe_put_idx()
167 spin_unlock_irqrestore(&wa->rpipe_lock, flags); rpipe_put_idx()
177 rpipe_put_idx(rpipe->wa, index); rpipe_destroy()
178 wa_put(rpipe->wa); rpipe_destroy()
186 * @wa is referenced and unlocked
193 static int rpipe_get_idle(struct wa_rpipe **prpipe, struct wahc *wa, u8 crs, rpipe_get_idle() argument
199 struct device *dev = &wa->usb_iface->dev; rpipe_get_idle()
207 for (rpipe_idx = 0; rpipe_idx < wa->rpipes; rpipe_idx++) { rpipe_get_idle()
208 rpipe_idx = rpipe_get_idx(wa, rpipe_idx); rpipe_get_idle()
209 if (rpipe_idx >= wa->rpipes) /* no more pipes :( */ rpipe_get_idle()
211 result = __rpipe_get_descr(wa, &rpipe->descr, rpipe_idx); rpipe_get_idle()
217 rpipe_put_idx(wa, rpipe_idx); rpipe_get_idle()
224 set_bit(rpipe_idx, wa->rpipe_bm); rpipe_get_idle()
225 rpipe->wa = wa_get(wa); rpipe_get_idle()
230 static int __rpipe_reset(struct wahc *wa, unsigned index) __rpipe_reset() argument
233 struct device *dev = &wa->usb_iface->dev; __rpipe_reset()
236 wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __rpipe_reset()
313 static int rpipe_aim(struct wa_rpipe *rpipe, struct wahc *wa, rpipe_aim() argument
317 struct device *dev = &wa->usb_iface->dev; rpipe_aim()
330 __rpipe_reset(wa, le16_to_cpu(rpipe->descr.wRPipeIndex)); rpipe_aim()
376 rpipe->descr.bmRetryOptions = (wa->wusb->retry_count & 0xF); rpipe_aim()
379 result = __rpipe_set_descr(wa, &rpipe->descr, rpipe_aim()
396 static int rpipe_check_aim(const struct wa_rpipe *rpipe, const struct wahc *wa, rpipe_check_aim() argument
401 struct device *dev = &wa->usb_iface->dev; rpipe_check_aim()
437 int rpipe_get_by_ep(struct wahc *wa, struct usb_host_endpoint *ep, rpipe_get_by_ep() argument
441 struct device *dev = &wa->usb_iface->dev; rpipe_get_by_ep()
445 mutex_lock(&wa->rpipe_mutex); rpipe_get_by_ep()
449 result = rpipe_check_aim(rpipe, wa, ep, urb, gfp); rpipe_get_by_ep()
461 result = rpipe_get_idle(&rpipe, wa, 1 << eptype, gfp); rpipe_get_by_ep()
464 result = rpipe_aim(rpipe, wa, ep, urb, gfp); rpipe_get_by_ep()
477 mutex_unlock(&wa->rpipe_mutex); rpipe_get_by_ep()
484 int wa_rpipes_create(struct wahc *wa) wa_rpipes_create() argument
486 wa->rpipes = le16_to_cpu(wa->wa_descr->wNumRPipes); wa_rpipes_create()
487 wa->rpipe_bm = kzalloc(BITS_TO_LONGS(wa->rpipes)*sizeof(unsigned long), wa_rpipes_create()
489 if (wa->rpipe_bm == NULL) wa_rpipes_create()
494 void wa_rpipes_destroy(struct wahc *wa) wa_rpipes_destroy() argument
496 struct device *dev = &wa->usb_iface->dev; wa_rpipes_destroy()
498 if (!bitmap_empty(wa->rpipe_bm, wa->rpipes)) { wa_rpipes_destroy()
501 wa->rpipes, wa->rpipe_bm); wa_rpipes_destroy()
503 kfree(wa->rpipe_bm); wa_rpipes_destroy()
516 void rpipe_ep_disable(struct wahc *wa, struct usb_host_endpoint *ep) rpipe_ep_disable() argument
520 mutex_lock(&wa->rpipe_mutex); rpipe_ep_disable()
526 wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), rpipe_ep_disable()
532 mutex_unlock(&wa->rpipe_mutex); rpipe_ep_disable()
537 void rpipe_clear_feature_stalled(struct wahc *wa, struct usb_host_endpoint *ep) rpipe_clear_feature_stalled() argument
541 mutex_lock(&wa->rpipe_mutex); rpipe_clear_feature_stalled()
547 wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), rpipe_clear_feature_stalled()
552 mutex_unlock(&wa->rpipe_mutex); rpipe_clear_feature_stalled()
H A Dwa-xfer.c59 * rpipe to the endpoint is done under the wa->rpipe_sem semaphore
89 #include "wa-hc.h"
153 struct wahc *wa; /* Wire adapter we are plugged to */ member in struct:wa_xfer
221 static inline int __wa_dto_try_get(struct wahc *wa) __wa_dto_try_get() argument
223 return (test_and_set_bit(0, &wa->dto_in_use) == 0); __wa_dto_try_get()
227 static inline void __wa_dto_put(struct wahc *wa) __wa_dto_put() argument
229 clear_bit_unlock(0, &wa->dto_in_use); __wa_dto_put()
233 static void wa_check_for_delayed_rpipes(struct wahc *wa) wa_check_for_delayed_rpipes() argument
239 spin_lock_irqsave(&wa->rpipe_lock, flags); wa_check_for_delayed_rpipes()
240 while (!list_empty(&wa->rpipe_delayed_list) && !dto_waiting) { wa_check_for_delayed_rpipes()
241 rpipe = list_first_entry(&wa->rpipe_delayed_list, wa_check_for_delayed_rpipes()
252 spin_unlock_irqrestore(&wa->rpipe_lock, flags); wa_check_for_delayed_rpipes()
256 static void wa_add_delayed_rpipe(struct wahc *wa, struct wa_rpipe *rpipe) wa_add_delayed_rpipe() argument
260 spin_lock_irqsave(&wa->rpipe_lock, flags); wa_add_delayed_rpipe()
265 list_add_tail(&rpipe->list_node, &wa->rpipe_delayed_list); wa_add_delayed_rpipe()
267 spin_unlock_irqrestore(&wa->rpipe_lock, flags); wa_add_delayed_rpipe()
284 spin_lock_irqsave(&xfer->wa->xfer_list_lock, flags); wa_xfer_giveback()
286 usb_hcd_unlink_urb_from_ep(&(xfer->wa->wusb->usb_hcd), xfer->urb); wa_xfer_giveback()
287 spin_unlock_irqrestore(&xfer->wa->xfer_list_lock, flags); wa_xfer_giveback()
289 wusbhc_giveback_urb(xfer->wa->wusb, xfer->urb, xfer->result); wa_xfer_giveback()
290 wa_put(xfer->wa); wa_xfer_giveback()
317 xfer->id = atomic_add_return(1, &xfer->wa->xfer_id_count); wa_xfer_id_init()
339 struct device *dev = &xfer->wa->usb_iface->dev; __wa_xfer_is_done()
420 static struct wa_xfer *wa_xfer_get_by_id(struct wahc *wa, u32 id) wa_xfer_get_by_id() argument
424 spin_lock_irqsave(&wa->xfer_list_lock, flags); wa_xfer_get_by_id()
425 list_for_each_entry(xfer_itr, &wa->xfer_list, list_node) { wa_xfer_get_by_id()
433 spin_unlock_irqrestore(&wa->xfer_list_lock, flags); wa_xfer_get_by_id()
439 struct wahc *wa; member in struct:wa_xfer_abort_buffer
446 struct wahc *wa = b->wa; __wa_xfer_abort_cb() local
455 struct device *dev = &wa->usb_iface->dev; __wa_xfer_abort_cb()
457 xfer = wa_xfer_get_by_id(wa, le32_to_cpu(b->cmd.dwTransferID)); __wa_xfer_abort_cb()
494 wa_put(wa); /* taken in __wa_xfer_abort */ __wa_xfer_abort_cb()
511 struct device *dev = &xfer->wa->usb_iface->dev; __wa_xfer_abort()
522 b->wa = wa_get(xfer->wa); __wa_xfer_abort()
525 usb_fill_bulk_urb(&b->urb, xfer->wa->usb_dev, __wa_xfer_abort()
526 usb_sndbulkpipe(xfer->wa->usb_dev, __wa_xfer_abort()
527 xfer->wa->dto_epd->bEndpointAddress), __wa_xfer_abort()
536 wa_put(xfer->wa); __wa_xfer_abort()
568 if ((xfer->wa->quirks & WUSB_QUIRK_ALEREON_HWA_CONCAT_ISOC) __wa_seg_calculate_isoc_frame_count()
596 struct device *dev = &xfer->wa->usb_iface->dev; __wa_xfer_setup_sizes()
625 * 1 << (xfer->wa->wa_descr->bRPipeBlockSize - 1); __wa_xfer_setup_sizes()
750 struct wahc *wa; wa_seg_dto_cb() local
764 wa = xfer->wa; wa_seg_dto_cb()
765 dev = &wa->usb_iface->dev; wa_seg_dto_cb()
768 if (wa->quirks & WUSB_QUIRK_ALEREON_HWA_CONCAT_ISOC) wa_seg_dto_cb()
820 __wa_dto_put(wa); wa_seg_dto_cb()
821 wa_check_for_delayed_rpipes(wa); wa_seg_dto_cb()
827 __wa_dto_put(wa); wa_seg_dto_cb()
828 wa_check_for_delayed_rpipes(wa); wa_seg_dto_cb()
847 if (edc_inc(&wa->nep_edc, EDC_MAX_ERRORS, wa_seg_dto_cb()
850 wa_reset_all(wa); wa_seg_dto_cb()
860 __wa_dto_put(wa); wa_seg_dto_cb()
861 wa_check_for_delayed_rpipes(wa); wa_seg_dto_cb()
887 struct wahc *wa; wa_seg_iso_pack_desc_cb() local
897 wa = xfer->wa; wa_seg_iso_pack_desc_cb()
898 dev = &wa->usb_iface->dev; wa_seg_iso_pack_desc_cb()
910 wa = xfer->wa; wa_seg_iso_pack_desc_cb()
911 dev = &wa->usb_iface->dev; wa_seg_iso_pack_desc_cb()
915 if (edc_inc(&wa->nep_edc, EDC_MAX_ERRORS, wa_seg_iso_pack_desc_cb()
918 wa_reset_all(wa); wa_seg_iso_pack_desc_cb()
960 struct wahc *wa; wa_seg_tr_cb() local
970 wa = xfer->wa; wa_seg_tr_cb()
971 dev = &wa->usb_iface->dev; wa_seg_tr_cb()
985 wa = xfer->wa; wa_seg_tr_cb()
986 dev = &wa->usb_iface->dev; wa_seg_tr_cb()
992 if (edc_inc(&wa->nep_edc, EDC_MAX_ERRORS, wa_seg_tr_cb()
996 wa_reset_all(wa); wa_seg_tr_cb()
1109 if (xfer->wa->quirks & WUSB_QUIRK_ALEREON_HWA_CONCAT_ISOC) __wa_populate_dto_urb_isoc()
1178 struct usb_device *usb_dev = xfer->wa->usb_dev; __wa_xfer_setup_segs()
1179 const struct usb_endpoint_descriptor *dto_epd = xfer->wa->dto_epd; __wa_xfer_setup_segs()
1312 struct device *dev = &xfer->wa->usb_iface->dev; __wa_xfer_setup()
1425 struct wahc *wa = xfer->wa; __wa_seg_submit() local
1439 if (((wa->quirks & WUSB_QUIRK_ALEREON_HWA_CONCAT_ISOC) == 0) __wa_seg_submit()
1467 struct device *dev = &rpipe->wa->usb_iface->dev; __wa_xfer_delayed_run()
1477 && (dto_acquired = __wa_dto_try_get(rpipe->wa))) { __wa_xfer_delayed_run()
1491 __wa_dto_put(rpipe->wa); __wa_xfer_delayed_run()
1542 wa_add_delayed_rpipe(rpipe->wa, rpipe); wa_xfer_delayed_run()
1544 wa_check_for_delayed_rpipes(rpipe->wa); wa_xfer_delayed_run()
1557 struct wahc *wa = xfer->wa; __wa_xfer_submit() local
1558 struct device *dev = &wa->usb_iface->dev; __wa_xfer_submit()
1567 spin_lock_irqsave(&wa->xfer_list_lock, flags); __wa_xfer_submit()
1568 list_add_tail(&xfer->list_node, &wa->xfer_list); __wa_xfer_submit()
1569 spin_unlock_irqrestore(&wa->xfer_list_lock, flags); __wa_xfer_submit()
1585 dto_acquired = __wa_dto_try_get(rpipe->wa); __wa_xfer_submit()
1594 __wa_dto_put(rpipe->wa); __wa_xfer_submit()
1623 wa_add_delayed_rpipe(rpipe->wa, rpipe); __wa_xfer_submit()
1625 wa_check_for_delayed_rpipes(rpipe->wa); __wa_xfer_submit()
1636 * xfer->wa filled and refcounted
1657 struct wahc *wa = xfer->wa; wa_urb_enqueue_b() local
1658 struct wusbhc *wusbhc = wa->wusb; wa_urb_enqueue_b()
1662 result = rpipe_get_by_ep(wa, xfer->ep, urb, xfer->gfp); wa_urb_enqueue_b()
1741 * Execute the delayed transfers in the Wire Adapter @wa
1745 * wa->xfer_list_lock. If dequeue() jumps in, it first locks xfer->lock
1752 struct wahc *wa = container_of(ws, struct wahc, xfer_enqueue_work); wa_urb_enqueue_run() local
1757 /* Create a copy of the wa->xfer_delayed_list while holding the lock */ wa_urb_enqueue_run()
1758 spin_lock_irq(&wa->xfer_list_lock); wa_urb_enqueue_run()
1759 list_cut_position(&tmp_list, &wa->xfer_delayed_list, wa_urb_enqueue_run()
1760 wa->xfer_delayed_list.prev); wa_urb_enqueue_run()
1761 spin_unlock_irq(&wa->xfer_list_lock); wa_urb_enqueue_run()
1783 struct wahc *wa = container_of(ws, struct wahc, xfer_error_work); wa_process_errored_transfers_run() local
1789 /* Create a copy of the wa->xfer_errored_list while holding the lock */ wa_process_errored_transfers_run()
1790 spin_lock_irq(&wa->xfer_list_lock); wa_process_errored_transfers_run()
1791 list_cut_position(&tmp_list, &wa->xfer_errored_list, wa_process_errored_transfers_run()
1792 wa->xfer_errored_list.prev); wa_process_errored_transfers_run()
1793 spin_unlock_irq(&wa->xfer_list_lock); wa_process_errored_transfers_run()
1810 rpipe_clear_feature_stalled(wa, ep); wa_process_errored_transfers_run()
1833 int wa_urb_enqueue(struct wahc *wa, struct usb_host_endpoint *ep, wa_urb_enqueue() argument
1837 struct device *dev = &wa->usb_iface->dev; wa_urb_enqueue()
1850 spin_lock_irqsave(&wa->xfer_list_lock, my_flags); wa_urb_enqueue()
1851 result = usb_hcd_link_urb_to_ep(&(wa->wusb->usb_hcd), urb); wa_urb_enqueue()
1852 spin_unlock_irqrestore(&wa->xfer_list_lock, my_flags); wa_urb_enqueue()
1865 xfer->wa = wa_get(wa); wa_urb_enqueue()
1879 spin_lock_irqsave(&wa->xfer_list_lock, my_flags); wa_urb_enqueue()
1880 list_add_tail(&xfer->list_node, &wa->xfer_delayed_list); wa_urb_enqueue()
1881 spin_unlock_irqrestore(&wa->xfer_list_lock, my_flags); wa_urb_enqueue()
1882 queue_work(wusbd, &wa->xfer_enqueue_work); wa_urb_enqueue()
1893 wa_put(xfer->wa); wa_urb_enqueue()
1895 spin_lock_irqsave(&wa->xfer_list_lock, my_flags); wa_urb_enqueue()
1896 usb_hcd_unlink_urb_from_ep(&(wa->wusb->usb_hcd), urb); wa_urb_enqueue()
1897 spin_unlock_irqrestore(&wa->xfer_list_lock, my_flags); wa_urb_enqueue()
1906 spin_lock_irqsave(&wa->xfer_list_lock, my_flags); wa_urb_enqueue()
1907 usb_hcd_unlink_urb_from_ep(&(wa->wusb->usb_hcd), urb); wa_urb_enqueue()
1908 spin_unlock_irqrestore(&wa->xfer_list_lock, my_flags); wa_urb_enqueue()
1932 int wa_urb_dequeue(struct wahc *wa, struct urb *urb, int status) wa_urb_dequeue() argument
1943 spin_lock_irqsave(&wa->xfer_list_lock, flags); wa_urb_dequeue()
1944 result = usb_hcd_check_unlink_urb(&(wa->wusb->usb_hcd), urb, status); wa_urb_dequeue()
1952 spin_unlock_irqrestore(&wa->xfer_list_lock, flags); wa_urb_dequeue()
1980 spin_lock_irqsave(&wa->xfer_list_lock, flags2); wa_urb_dequeue()
1983 spin_unlock_irqrestore(&wa->xfer_list_lock, flags2); wa_urb_dequeue()
2070 spin_unlock_irqrestore(&wa->xfer_list_lock, flags2); wa_urb_dequeue()
2174 static int __wa_populate_buf_in_urb_isoc(struct wahc *wa, __wa_populate_buf_in_urb_isoc() argument
2181 const int dti_packet_size = usb_endpoint_maxp(wa->dti_epd); __wa_populate_buf_in_urb_isoc()
2288 static void wa_xfer_result_chew(struct wahc *wa, struct wa_xfer *xfer, wa_xfer_result_chew() argument
2292 struct device *dev = &wa->usb_iface->dev; wa_xfer_result_chew()
2301 struct urb *buf_in_urb = &(wa->buf_in_urbs[0]); wa_xfer_result_chew()
2345 wa->dti_isoc_xfer_in_progress = wa_xfer_id(xfer); wa_xfer_result_chew()
2346 wa->dti_isoc_xfer_seg = seg_idx; wa_xfer_result_chew()
2347 wa->dti_state = WA_DTI_ISOC_PACKET_STATUS_PENDING; wa_xfer_result_chew()
2356 ++(wa->active_buf_in_urbs); wa_xfer_result_chew()
2359 --(wa->active_buf_in_urbs); wa_xfer_result_chew()
2376 if (edc_inc(&wa->dti_edc, EDC_MAX_ERRORS, EDC_ERROR_TIMEFRAME)) { wa_xfer_result_chew()
2379 wa_reset_all(wa); wa_xfer_result_chew()
2404 spin_lock(&wa->xfer_list_lock); wa_xfer_result_chew()
2406 list_move_tail(&xfer->list_node, &wa->xfer_errored_list); wa_xfer_result_chew()
2407 spin_unlock(&wa->xfer_list_lock); wa_xfer_result_chew()
2409 queue_work(wusbd, &wa->xfer_error_work); wa_xfer_result_chew()
2422 wa_urb_dequeue(wa, xfer->urb, -ENOENT); wa_xfer_result_chew()
2425 if (edc_inc(&wa->dti_edc, EDC_MAX_ERRORS, EDC_ERROR_TIMEFRAME)) { wa_xfer_result_chew()
2428 wa_reset_all(wa); wa_xfer_result_chew()
2442 static int wa_process_iso_packet_status(struct wahc *wa, struct urb *urb) wa_process_iso_packet_status() argument
2444 struct device *dev = &wa->usb_iface->dev; wa_process_iso_packet_status()
2458 packet_status = (struct wa_xfer_packet_status_hwaiso *)(wa->dti_buf); wa_process_iso_packet_status()
2464 xfer = wa_xfer_get_by_id(wa, wa->dti_isoc_xfer_in_progress); wa_process_iso_packet_status()
2467 wa->dti_isoc_xfer_in_progress); wa_process_iso_packet_status()
2471 if (unlikely(wa->dti_isoc_xfer_seg >= xfer->segs)) wa_process_iso_packet_status()
2473 seg = xfer->seg[wa->dti_isoc_xfer_seg]; wa_process_iso_packet_status()
2491 wa->wusb->usb_hcd.driver->get_frame_number(&wa->wusb->usb_hcd); wa_process_iso_packet_status()
2526 buf_in_urb = &(wa->buf_in_urbs[urb_index]); wa_process_iso_packet_status()
2527 urb_frame_count = __wa_populate_buf_in_urb_isoc(wa, wa_process_iso_packet_status()
2533 ++(wa->active_buf_in_urbs); wa_process_iso_packet_status()
2554 --(wa->active_buf_in_urbs); wa_process_iso_packet_status()
2557 wa_reset_all(wa); wa_process_iso_packet_status()
2568 wa->dti_state = WA_DTI_BUF_IN_DATA_PENDING; wa_process_iso_packet_status()
2570 wa->dti_state = WA_DTI_TRANSFER_RESULT_PENDING; wa_process_iso_packet_status()
2599 struct wahc *wa; wa_buf_in_cb() local
2612 wa = xfer->wa; wa_buf_in_cb()
2613 dev = &wa->usb_iface->dev; wa_buf_in_cb()
2614 --(wa->active_buf_in_urbs); wa_buf_in_cb()
2615 active_buf_in_urbs = wa->active_buf_in_urbs; wa_buf_in_cb()
2652 urb_frame_count = __wa_populate_buf_in_urb_isoc(wa, urb, wa_buf_in_cb()
2656 ++(wa->active_buf_in_urbs); wa_buf_in_cb()
2659 --(wa->active_buf_in_urbs); wa_buf_in_cb()
2662 wa_reset_all(wa); wa_buf_in_cb()
2697 resubmit_dti = wa->dti_state != WA_DTI_TRANSFER_RESULT_PENDING; wa_buf_in_cb()
2703 if (edc_inc(&wa->nep_edc, EDC_MAX_ERRORS, wa_buf_in_cb()
2707 wa_reset_all(wa); wa_buf_in_cb()
2726 wa->dti_state = WA_DTI_TRANSFER_RESULT_PENDING; wa_buf_in_cb()
2728 result = usb_submit_urb(wa->dti_urb, GFP_ATOMIC); wa_buf_in_cb()
2732 wa_reset_all(wa); wa_buf_in_cb()
2766 struct wahc *wa = urb->context; wa_dti_cb() local
2767 struct device *dev = &wa->usb_iface->dev; wa_dti_cb()
2771 BUG_ON(wa->dti_urb != urb); wa_dti_cb()
2772 switch (wa->dti_urb->status) { wa_dti_cb()
2774 if (wa->dti_state == WA_DTI_TRANSFER_RESULT_PENDING) { wa_dti_cb()
2787 xfer_result = (struct wa_xfer_result *)(wa->dti_buf); wa_dti_cb()
2807 xfer = wa_xfer_get_by_id(wa, xfer_id); wa_dti_cb()
2814 wa_xfer_result_chew(wa, xfer, xfer_result); wa_dti_cb()
2816 } else if (wa->dti_state == WA_DTI_ISOC_PACKET_STATUS_PENDING) { wa_dti_cb()
2817 dti_busy = wa_process_iso_packet_status(wa, urb); wa_dti_cb()
2820 wa->dti_state); wa_dti_cb()
2829 if (edc_inc(&wa->dti_edc, EDC_MAX_ERRORS, wa_dti_cb()
2833 wa_reset_all(wa); wa_dti_cb()
2843 result = usb_submit_urb(wa->dti_urb, GFP_ATOMIC); wa_dti_cb()
2847 wa_reset_all(wa); wa_dti_cb()
2858 int wa_dti_start(struct wahc *wa) wa_dti_start() argument
2860 const struct usb_endpoint_descriptor *dti_epd = wa->dti_epd; wa_dti_start()
2861 struct device *dev = &wa->usb_iface->dev; wa_dti_start()
2864 if (wa->dti_urb != NULL) /* DTI URB already started */ wa_dti_start()
2867 wa->dti_urb = usb_alloc_urb(0, GFP_KERNEL); wa_dti_start()
2868 if (wa->dti_urb == NULL) { wa_dti_start()
2873 wa->dti_urb, wa->usb_dev, wa_dti_start()
2874 usb_rcvbulkpipe(wa->usb_dev, 0x80 | dti_epd->bEndpointAddress), wa_dti_start()
2875 wa->dti_buf, wa->dti_buf_size, wa_dti_start()
2876 wa_dti_cb, wa); wa_dti_start()
2881 &(wa->buf_in_urbs[index]), wa->usb_dev, wa_dti_start()
2882 usb_rcvbulkpipe(wa->usb_dev, wa_dti_start()
2884 NULL, 0, wa_buf_in_cb, wa); wa_dti_start()
2886 result = usb_submit_urb(wa->dti_urb, GFP_KERNEL); wa_dti_start()
2896 usb_put_urb(wa->dti_urb); wa_dti_start()
2897 wa->dti_urb = NULL; wa_dti_start()
2916 * @wa shall be referenced
2918 void wa_handle_notif_xfer(struct wahc *wa, struct wa_notif_hdr *notif_hdr) wa_handle_notif_xfer() argument
2920 struct device *dev = &wa->usb_iface->dev; wa_handle_notif_xfer()
2922 const struct usb_endpoint_descriptor *dti_epd = wa->dti_epd; wa_handle_notif_xfer()
2935 if (wa_dti_start(wa) < 0) wa_handle_notif_xfer()
2941 wa_reset_all(wa); wa_handle_notif_xfer()
/linux-4.1.27/drivers/usb/host/
H A Dhwa-hc.c62 #include "../wusbcore/wa-hc.h"
67 struct wahc wa; member in struct:hwahc
80 struct wahc *wa = &hwahc->wa; __hwahc_set_cluster_id() local
81 struct device *dev = &wa->usb_iface->dev; __hwahc_set_cluster_id()
83 result = usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __hwahc_set_cluster_id()
87 wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, __hwahc_set_cluster_id()
101 struct wahc *wa = &hwahc->wa; __hwahc_op_set_num_dnts() local
103 return usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __hwahc_op_set_num_dnts()
107 wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, __hwahc_op_set_num_dnts()
122 struct device *dev = &hwahc->wa.usb_iface->dev; hwahc_op_reset()
125 wa_nep_disarm(&hwahc->wa); hwahc_op_reset()
126 result = __wa_set_feature(&hwahc->wa, WA_RESET); hwahc_op_reset()
131 result = __wa_wait_status(&hwahc->wa, WA_STATUS_RESETTING, 0); hwahc_op_reset()
201 struct wahc *wa = &hwahc->wa; hwahc_op_get_frame_number() local
208 return usb_get_current_frame_number(wa->usb_dev); hwahc_op_get_frame_number()
217 return wa_urb_enqueue(&hwahc->wa, urb->ep, urb, gfp); hwahc_op_urb_enqueue()
226 return wa_urb_dequeue(&hwahc->wa, urb, status); hwahc_op_urb_dequeue()
240 rpipe_ep_disable(&hwahc->wa, ep); hwahc_op_endpoint_disable()
247 struct device *dev = &hwahc->wa.usb_iface->dev; __hwahc_op_wusbhc_start()
249 result = __wa_set_feature(&hwahc->wa, WA_ENABLE); __hwahc_op_wusbhc_start()
254 result = __wa_wait_status(&hwahc->wa, WA_ENABLE, WA_ENABLE); __hwahc_op_wusbhc_start()
259 result = wa_nep_arm(&hwahc->wa, GFP_KERNEL); __hwahc_op_wusbhc_start()
268 if (hwahc->wa.quirks & __hwahc_op_wusbhc_start()
271 hwahc->wa.usb_iface->cur_altsetting; __hwahc_op_wusbhc_start()
273 result = usb_control_msg(hwahc->wa.usb_dev, __hwahc_op_wusbhc_start()
274 usb_sndctrlpipe(hwahc->wa.usb_dev, 0), __hwahc_op_wusbhc_start()
288 result = wa_dti_start(&hwahc->wa); __hwahc_op_wusbhc_start()
301 wa_nep_disarm(&hwahc->wa); __hwahc_op_wusbhc_start()
303 __wa_clear_feature(&hwahc->wa, WA_ENABLE); __hwahc_op_wusbhc_start()
310 struct wahc *wa = &hwahc->wa; __hwahc_op_wusbhc_stop() local
311 u8 iface_no = wa->usb_iface->cur_altsetting->desc.bInterfaceNumber; __hwahc_op_wusbhc_stop()
314 ret = usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __hwahc_op_wusbhc_stop()
323 wa_nep_disarm(&hwahc->wa); __hwahc_op_wusbhc_stop()
324 __wa_stop(&hwahc->wa); __hwahc_op_wusbhc_stop()
338 struct wahc *wa = &hwahc->wa; __hwahc_op_bwa_set() local
339 struct device *dev = &wa->usb_iface->dev; __hwahc_op_bwa_set()
343 result = usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __hwahc_op_bwa_set()
347 wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, __hwahc_op_bwa_set()
355 result = usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __hwahc_op_bwa_set()
358 0, wa->usb_iface->cur_altsetting->desc.bInterfaceNumber, __hwahc_op_bwa_set()
385 struct wahc *wa = &hwahc->wa; __hwahc_op_mmcie_add() local
386 u8 iface_no = wa->usb_iface->cur_altsetting->desc.bInterfaceNumber; __hwahc_op_mmcie_add()
388 return usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __hwahc_op_mmcie_add()
404 struct wahc *wa = &hwahc->wa; __hwahc_op_mmcie_rm() local
405 u8 iface_no = wa->usb_iface->cur_altsetting->desc.bInterfaceNumber; __hwahc_op_mmcie_rm()
406 return usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __hwahc_op_mmcie_rm()
423 struct wahc *wa = &hwahc->wa; __hwahc_op_dev_info_set() local
424 u8 iface_no = wa->usb_iface->cur_altsetting->desc.bInterfaceNumber; __hwahc_op_dev_info_set()
448 ret = usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __hwahc_op_dev_info_set()
471 struct wahc *wa = &hwahc->wa; __hwahc_dev_set_key() local
472 u8 iface_no = wa->usb_iface->cur_altsetting->desc.bInterfaceNumber; __hwahc_dev_set_key()
488 result = usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __hwahc_dev_set_key()
511 struct wahc *wa = &hwahc->wa; __hwahc_op_set_ptk() local
512 u8 iface_no = wa->usb_iface->cur_altsetting->desc.bInterfaceNumber; __hwahc_op_set_ptk()
531 result = usb_control_msg(wa->usb_dev, usb_sndctrlpipe(wa->usb_dev, 0), __hwahc_op_set_ptk()
566 static int wa_fill_descr(struct wahc *wa) wa_fill_descr() argument
569 struct device *dev = &wa->usb_iface->dev; wa_fill_descr()
571 struct usb_device *usb_dev = wa->usb_dev; wa_fill_descr()
603 if (hdr->bLength < sizeof(*wa->wa_descr)) { wa_fill_descr()
607 wa->wa_descr = wa_descr = (struct usb_wa_descriptor *) hdr; wa_fill_descr()
640 struct usb_device *usb_dev = hwahc->wa.usb_dev; hwahc_security_create()
723 struct wahc *wa = &hwahc->wa; hwahc_create() local
726 wa->usb_dev = usb_get_dev(usb_dev); /* bind the USB device */ hwahc_create()
727 wa->usb_iface = usb_get_intf(iface); hwahc_create()
732 result = wa_fill_descr(wa); /* Get the device descriptor */ hwahc_create()
735 if (wa->wa_descr->bNumPorts > USB_MAXCHILDREN) { hwahc_create()
737 "adapter (%u ports)\n", wa->wa_descr->bNumPorts); hwahc_create()
740 wusbhc->ports_max = wa->wa_descr->bNumPorts; hwahc_create()
742 wusbhc->mmcies_max = wa->wa_descr->bNumMMCIEs; hwahc_create()
757 wa->wusb = wusbhc; /* FIXME: ugly, need to fix */ hwahc_create()
763 result = wa_create(&hwahc->wa, iface, quirks); hwahc_create()
784 __wa_destroy(&hwahc->wa); hwahc_destroy()
789 usb_put_intf(hwahc->wa.usb_iface); hwahc_destroy()
790 usb_put_dev(hwahc->wa.usb_dev); hwahc_destroy()
796 wa_init(&hwahc->wa); hwahc_init()
/linux-4.1.27/drivers/crypto/ccp/
H A Dccp-ops.c481 static void ccp_sg_free(struct ccp_sg_workarea *wa) ccp_sg_free() argument
483 if (wa->dma_count) ccp_sg_free()
484 dma_unmap_sg(wa->dma_dev, wa->dma_sg, wa->nents, wa->dma_dir); ccp_sg_free()
486 wa->dma_count = 0; ccp_sg_free()
489 static int ccp_init_sg_workarea(struct ccp_sg_workarea *wa, struct device *dev, ccp_init_sg_workarea() argument
493 memset(wa, 0, sizeof(*wa)); ccp_init_sg_workarea()
495 wa->sg = sg; ccp_init_sg_workarea()
499 wa->nents = sg_nents(sg); ccp_init_sg_workarea()
500 wa->length = sg->length; ccp_init_sg_workarea()
501 wa->bytes_left = len; ccp_init_sg_workarea()
502 wa->sg_used = 0; ccp_init_sg_workarea()
510 wa->dma_sg = sg; ccp_init_sg_workarea()
511 wa->dma_dev = dev; ccp_init_sg_workarea()
512 wa->dma_dir = dma_dir; ccp_init_sg_workarea()
513 wa->dma_count = dma_map_sg(dev, sg, wa->nents, dma_dir); ccp_init_sg_workarea()
514 if (!wa->dma_count) ccp_init_sg_workarea()
520 static void ccp_update_sg_workarea(struct ccp_sg_workarea *wa, unsigned int len) ccp_update_sg_workarea() argument
522 unsigned int nbytes = min_t(u64, len, wa->bytes_left); ccp_update_sg_workarea()
524 if (!wa->sg) ccp_update_sg_workarea()
527 wa->sg_used += nbytes; ccp_update_sg_workarea()
528 wa->bytes_left -= nbytes; ccp_update_sg_workarea()
529 if (wa->sg_used == wa->sg->length) { ccp_update_sg_workarea()
530 wa->sg = sg_next(wa->sg); ccp_update_sg_workarea()
531 wa->sg_used = 0; ccp_update_sg_workarea()
535 static void ccp_dm_free(struct ccp_dm_workarea *wa) ccp_dm_free() argument
537 if (wa->length <= CCP_DMAPOOL_MAX_SIZE) { ccp_dm_free()
538 if (wa->address) ccp_dm_free()
539 dma_pool_free(wa->dma_pool, wa->address, ccp_dm_free()
540 wa->dma.address); ccp_dm_free()
542 if (wa->dma.address) ccp_dm_free()
543 dma_unmap_single(wa->dev, wa->dma.address, wa->length, ccp_dm_free()
544 wa->dma.dir); ccp_dm_free()
545 kfree(wa->address); ccp_dm_free()
548 wa->address = NULL; ccp_dm_free()
549 wa->dma.address = 0; ccp_dm_free()
552 static int ccp_init_dm_workarea(struct ccp_dm_workarea *wa, ccp_init_dm_workarea() argument
557 memset(wa, 0, sizeof(*wa)); ccp_init_dm_workarea()
562 wa->dev = cmd_q->ccp->dev; ccp_init_dm_workarea()
563 wa->length = len; ccp_init_dm_workarea()
566 wa->dma_pool = cmd_q->dma_pool; ccp_init_dm_workarea()
568 wa->address = dma_pool_alloc(wa->dma_pool, GFP_KERNEL, ccp_init_dm_workarea()
569 &wa->dma.address); ccp_init_dm_workarea()
570 if (!wa->address) ccp_init_dm_workarea()
573 wa->dma.length = CCP_DMAPOOL_MAX_SIZE; ccp_init_dm_workarea()
575 memset(wa->address, 0, CCP_DMAPOOL_MAX_SIZE); ccp_init_dm_workarea()
577 wa->address = kzalloc(len, GFP_KERNEL); ccp_init_dm_workarea()
578 if (!wa->address) ccp_init_dm_workarea()
581 wa->dma.address = dma_map_single(wa->dev, wa->address, len, ccp_init_dm_workarea()
583 if (!wa->dma.address) ccp_init_dm_workarea()
586 wa->dma.length = len; ccp_init_dm_workarea()
588 wa->dma.dir = dir; ccp_init_dm_workarea()
593 static void ccp_set_dm_area(struct ccp_dm_workarea *wa, unsigned int wa_offset, ccp_set_dm_area() argument
597 WARN_ON(!wa->address); ccp_set_dm_area()
599 scatterwalk_map_and_copy(wa->address + wa_offset, sg, sg_offset, len, ccp_set_dm_area()
603 static void ccp_get_dm_area(struct ccp_dm_workarea *wa, unsigned int wa_offset, ccp_get_dm_area() argument
607 WARN_ON(!wa->address); ccp_get_dm_area()
609 scatterwalk_map_and_copy(wa->address + wa_offset, sg, sg_offset, len, ccp_get_dm_area()
613 static void ccp_reverse_set_dm_area(struct ccp_dm_workarea *wa, ccp_reverse_set_dm_area() argument
632 wa->address[dm_offset + i] = buffer[ksb_len - i - 1]; ccp_reverse_set_dm_area()
639 if (wa->address[dm_offset - 1] & 0x80) ccp_reverse_set_dm_area()
640 memset(wa->address + dm_offset, 0xff, ccp_reverse_set_dm_area()
646 static void ccp_reverse_get_dm_area(struct ccp_dm_workarea *wa, ccp_reverse_get_dm_area() argument
661 buffer[ksb_len - i - 1] = wa->address[dm_offset + i]; ccp_reverse_get_dm_area()
834 struct ccp_dm_workarea *wa, u32 jobid, u32 ksb, ccp_copy_to_from_ksb()
850 op.dst.u.dma.address = wa->dma.address; ccp_copy_to_from_ksb()
851 op.dst.u.dma.length = wa->length; ccp_copy_to_from_ksb()
854 op.src.u.dma.address = wa->dma.address; ccp_copy_to_from_ksb()
855 op.src.u.dma.length = wa->length; ccp_copy_to_from_ksb()
866 struct ccp_dm_workarea *wa, u32 jobid, u32 ksb, ccp_copy_to_ksb()
869 return ccp_copy_to_from_ksb(cmd_q, wa, jobid, ksb, byte_swap, false); ccp_copy_to_ksb()
873 struct ccp_dm_workarea *wa, u32 jobid, u32 ksb, ccp_copy_from_ksb()
876 return ccp_copy_to_from_ksb(cmd_q, wa, jobid, ksb, byte_swap, true); ccp_copy_from_ksb()
833 ccp_copy_to_from_ksb(struct ccp_cmd_queue *cmd_q, struct ccp_dm_workarea *wa, u32 jobid, u32 ksb, u32 byte_swap, bool from) ccp_copy_to_from_ksb() argument
865 ccp_copy_to_ksb(struct ccp_cmd_queue *cmd_q, struct ccp_dm_workarea *wa, u32 jobid, u32 ksb, u32 byte_swap) ccp_copy_to_ksb() argument
872 ccp_copy_from_ksb(struct ccp_cmd_queue *cmd_q, struct ccp_dm_workarea *wa, u32 jobid, u32 ksb, u32 byte_swap) ccp_copy_from_ksb() argument
/linux-4.1.27/scripts/
H A Dkallsyms.c641 int wa, wb; compare_symbols() local
653 wa = (sa->sym[0] == 'w') || (sa->sym[0] == 'W'); compare_symbols()
655 if (wa != wb) compare_symbols()
656 return wa - wb; compare_symbols()
659 wa = may_be_linker_script_provide_symbol(sa); compare_symbols()
661 if (wa != wb) compare_symbols()
662 return wa - wb; compare_symbols()
665 wa = prefix_underscores_count((const char *)sa->sym + 1); compare_symbols()
667 if (wa != wb) compare_symbols()
668 return wa - wb; compare_symbols()
/linux-4.1.27/drivers/net/wireless/b43/
H A Dphy_a.c34 #include "wa.h"
H A Dwa.c31 #include "wa.h"
/linux-4.1.27/drivers/uwb/i1480/dfu/
H A Dusb.c44 #include <linux/usb/wusb-wa.h>
/linux-4.1.27/drivers/uwb/
H A Dreset.c51 "time out (wa) or invalid ie data (whci)",
H A Dneh.c150 * (assumes @wa is locked).
H A Dhwa-rc.c59 #include <linux/usb/wusb-wa.h>
/linux-4.1.27/arch/arc/kernel/
H A Dentry.S776 .section .debug_frame, "wa",@progbits
/linux-4.1.27/drivers/gpu/drm/i915/
H A Dintel_ringbuffer.c1732 /* Just userspace ABI convention to limit the wa batch bo to a resonable size */
2649 /* gen6 bsd needs a special wa for tail updates */ intel_init_bsd_ring_buffer()
H A Dintel_lrc.c403 * Apply the wa NOOPS to prevent ring:HEAD == req:TAIL execlists_context_unqueue()
H A Di915_drv.h1043 /* manual wa residency calculations */
/linux-4.1.27/drivers/block/drbd/
H A Ddrbd_worker.c543 drbd_warn(device, "si=%u if=%d wa=%u co=%d st=%d cps=%d pl=%d cc=%d rs=%d\n", drbd_rs_controller()
/linux-4.1.27/drivers/net/ethernet/intel/e1000e/
H A Dich8lan.c2648 /* LV 1G/100 Packet drop issue wa */ e1000_k1_workaround_lv()

Completed in 651 milliseconds