Lines Matching +full:6 +full:bd
69 * if yes, then check if bd memory has been allocated, then in ep_bd_list_free()
79 dev_dbg(bdc->dev, "bd dma pool not allocated\n"); in ep_bd_list_free()
94 /* Free the bd table array */ in ep_bd_list_free()
99 * chain the tables, by insteting a chain bd at the end of prev_table, pointing
135 /* if there is only 1 table in bd list then loop chain to self */ in ep_bd_list_alloc()
186 /* Free the bd_table_array, bd_table struct, bd's */ in ep_bd_list_alloc()
192 /* returns how many bd's are need for this transfer */
198 /* 1 bd needed for 0 byte transfer */ in bd_needed_req()
202 /* remaining bytes after tranfering all max BD size BD's */ in bd_needed_req()
207 /* How many maximum BUFF size BD's ? */ in bd_needed_req()
214 /* returns the bd index(bdi) corresponding to bd dma address */
229 * array and compare addresses of first and last address of bd of each in bd_add_to_bdi()
247 dev_err(bdc->dev, "%s FATAL err, bd not found\n", __func__); in bd_add_to_bdi()
270 /* Find the bdi last bd in the transfer */
285 * How many transfer bd's are available on this ep bdl, chain bds are not
297 /* if empty then we have all bd's available - number of chain bd's */ in bd_available_ep()
303 * of avaialble bd's in bd_available_ep()
306 /* available bd's are from eqp..max_bds + 0..dqp - chain_bds */ in bd_available_ep()
315 /* available bd's are from eqp..dqp - number of chain bd's */ in bd_available_ep()
320 /* If there any chain bd in between */ in bd_available_ep()
331 * we need to keep one extra bd to check if ring is full or empty so in bd_available_ep()
340 /* Notify the hardware after queueing the bd to bdl */
356 /* returns the bd corresponding to bdi */
374 /* if it's chain bd, then move to next */ in ep_bdlist_eqp_adv()
383 /* Setup the first bd for ep0 transfer */
416 "Unknown ep0 state for queueing bd ep0_state:%s\n", in setup_first_bd_ep0()
424 /* Setup the bd dma descriptor for a given request */
432 struct bdc_bd *bd; in setup_bd_list_xfr() local
441 bd = bdi_to_bd(ep, bd_list->eqp_bdi); in setup_bd_list_xfr()
446 dev_vdbg(bdc->dev, "%s ep:%s num_bds:%d tfs:%d r_len:%d bd:%p\n", in setup_bd_list_xfr()
447 __func__, ep->name, num_bds, tfs, req_len, bd); in setup_bd_list_xfr()
451 /* First bd */ in setup_bd_list_xfr()
455 /* format of first bd for ep0 is different than other */ in setup_bd_list_xfr()
469 /* this should be the last bd */ in setup_bd_list_xfr()
476 bd = bdi_to_bd(ep, ep->bd_list.eqp_bdi); in setup_bd_list_xfr()
477 if (unlikely(!bd)) { in setup_bd_list_xfr()
478 dev_err(bdc->dev, "Err bd pointing to wrong addr\n"); in setup_bd_list_xfr()
481 /* write bd */ in setup_bd_list_xfr()
482 bd->offset[0] = cpu_to_le32(lower_32_bits(buf_add)); in setup_bd_list_xfr()
483 bd->offset[1] = cpu_to_le32(upper_32_bits(buf_add)); in setup_bd_list_xfr()
484 bd->offset[2] = cpu_to_le32(dword2); in setup_bd_list_xfr()
485 bd->offset[3] = cpu_to_le32(dword3); in setup_bd_list_xfr()
490 dev_vdbg(bdc->dev, "buf_add:%08llx req_len:%d bd:%p eqp:%d\n", in setup_bd_list_xfr()
491 (unsigned long long)buf_add, req_len, bd, in setup_bd_list_xfr()
493 bd = bdi_to_bd(ep, ep->bd_list.eqp_bdi); in setup_bd_list_xfr()
494 bd->offset[3] = cpu_to_le32(BD_SBF); in setup_bd_list_xfr()
496 /* clear the STOP BD fetch bit from the first bd of this xfr */ in setup_bd_list_xfr()
497 bd = bdi_to_bd(ep, bd_xfr->start_bdi); in setup_bd_list_xfr()
498 bd->offset[3] &= cpu_to_le32(~BD_SBF); in setup_bd_list_xfr()
523 /* how many bd's are avaialble on ep */ in bdc_queue_xfr()
613 dev_err(bdc->dev, "ep bd list allocation failed:%d\n", ret); in bdc_ep_enable()
637 /* Queue a status stage BD */
671 /* Queue a status stage BD */ in ep0_queue()
781 /* we have the dma addr of next bd that will be fetched by hardware */ in ep_dequeue()
787 * curr_hw_dqpi points to actual dqp of HW and HW owns bd's from in ep_dequeue()
791 /* Check if start_bdi and end_bdi are in range of HW owned BD's */ in ep_dequeue()
835 * Due to HW limitation we need to bypadd chain bd's and issue ep_bla, in ep_dequeue()
837 * then issue ep_bla instead of marking as chain bd in ep_dequeue()
841 * Mark the start bd as Chain bd, and point the chain in ep_dequeue()
842 * bd to next_bd_dma in ep_dequeue()
975 dev_warn(bdc->dev, "xfr srr with no BD's queued\n"); in handle_xsr_succ_status()
985 * sr_status is short and this transfer has more than 1 bd then it needs in handle_xsr_succ_status()
990 * This is multi bd xfr, lets see which bd in handle_xsr_succ_status()
1000 dev_warn(bdc->dev, "bd doesn't exist?\n"); in handle_xsr_succ_status()
1384 /* Queue data stage to handle 6 byte SET_SEL request */
1393 if (unlikely(wLength != 6)) { in ep0_set_sel()
1399 bdc->ep0_req.usb_req.length = 6; in ep0_set_sel()
1408 * Queue a 0 byte bd only if wLength is more than the length and length is
1409 * a multiple of MaxPacket then queue 0 byte BD
1598 /* Queue a status stage BD */ in bdc_xsf_ep0_status_start()
1697 /* queue 0 length bd */ in bdc_sr_xsf()