/linux-4.1.27/drivers/usb/wusbcore/ |
H A D | Makefile | 4 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 D | wa-hc.c | 28 #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 D | wa-nep.c | 56 #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 D | wa-hc.h | 89 #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 D | wa-rpipe.c | 34 * 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 D | wa-xfer.c | 59 * 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 D | hwa-hc.c | 62 #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 D | ccp-ops.c | 481 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 D | kallsyms.c | 641 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 D | phy_a.c | 34 #include "wa.h"
|
H A D | wa.c | 31 #include "wa.h"
|
/linux-4.1.27/drivers/uwb/i1480/dfu/ |
H A D | usb.c | 44 #include <linux/usb/wusb-wa.h>
|
/linux-4.1.27/drivers/uwb/ |
H A D | reset.c | 51 "time out (wa) or invalid ie data (whci)",
|
H A D | neh.c | 150 * (assumes @wa is locked).
|
H A D | hwa-rc.c | 59 #include <linux/usb/wusb-wa.h>
|
/linux-4.1.27/arch/arc/kernel/ |
H A D | entry.S | 776 .section .debug_frame, "wa",@progbits
|
/linux-4.1.27/drivers/gpu/drm/i915/ |
H A D | intel_ringbuffer.c | 1732 /* 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 D | intel_lrc.c | 403 * Apply the wa NOOPS to prevent ring:HEAD == req:TAIL execlists_context_unqueue()
|
H A D | i915_drv.h | 1043 /* manual wa residency calculations */
|
/linux-4.1.27/drivers/block/drbd/ |
H A D | drbd_worker.c | 543 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 D | ich8lan.c | 2648 /* LV 1G/100 Packet drop issue wa */ e1000_k1_workaround_lv()
|