Lines Matching refs:seq
218 struct asd_seq_data *seq = &asd_ha->seq; in asd_init_scbs() local
222 asd_ha->seq.tc_index_bitmap_bits = asd_ha->hw_prof.max_scbs; in asd_init_scbs()
223 asd_ha->seq.tc_index_array = kzalloc(asd_ha->seq.tc_index_bitmap_bits* in asd_init_scbs()
225 if (!asd_ha->seq.tc_index_array) in asd_init_scbs()
228 bitmap_bytes = (asd_ha->seq.tc_index_bitmap_bits+7)/8; in asd_init_scbs()
230 asd_ha->seq.tc_index_bitmap = kzalloc(bitmap_bytes, GFP_KERNEL); in asd_init_scbs()
231 if (!asd_ha->seq.tc_index_bitmap) in asd_init_scbs()
234 spin_lock_init(&seq->tc_index_lock); in asd_init_scbs()
236 seq->next_scb.size = sizeof(struct scb); in asd_init_scbs()
237 seq->next_scb.vaddr = dma_pool_alloc(asd_ha->scb_pool, GFP_KERNEL, in asd_init_scbs()
238 &seq->next_scb.dma_handle); in asd_init_scbs()
239 if (!seq->next_scb.vaddr) { in asd_init_scbs()
240 kfree(asd_ha->seq.tc_index_bitmap); in asd_init_scbs()
241 kfree(asd_ha->seq.tc_index_array); in asd_init_scbs()
242 asd_ha->seq.tc_index_bitmap = NULL; in asd_init_scbs()
243 asd_ha->seq.tc_index_array = NULL; in asd_init_scbs()
247 seq->pending = 0; in asd_init_scbs()
248 spin_lock_init(&seq->pend_q_lock); in asd_init_scbs()
249 INIT_LIST_HEAD(&seq->pend_q); in asd_init_scbs()
269 asd_ha->seq.actual_dl in asd_init_dl()
273 if (!asd_ha->seq.actual_dl) in asd_init_dl()
275 asd_ha->seq.dl = asd_ha->seq.actual_dl->vaddr; in asd_init_dl()
276 asd_ha->seq.dl_toggle = ASD_DEF_DL_TOGGLE; in asd_init_dl()
277 asd_ha->seq.dl_next = 0; in asd_init_dl()
278 tasklet_init(&asd_ha->seq.dl_tasklet, asd_dl_tasklet_handler, in asd_init_dl()
288 struct asd_seq_data *seq = &asd_ha->seq; in asd_alloc_edbs() local
291 seq->edb_arr = kmalloc(seq->num_edbs*sizeof(*seq->edb_arr), gfp_flags); in asd_alloc_edbs()
292 if (!seq->edb_arr) in asd_alloc_edbs()
295 for (i = 0; i < seq->num_edbs; i++) { in asd_alloc_edbs()
296 seq->edb_arr[i] = asd_alloc_coherent(asd_ha, ASD_EDB_SIZE, in asd_alloc_edbs()
298 if (!seq->edb_arr[i]) in asd_alloc_edbs()
300 memset(seq->edb_arr[i]->vaddr, 0, ASD_EDB_SIZE); in asd_alloc_edbs()
303 ASD_DPRINTK("num_edbs:%d\n", seq->num_edbs); in asd_alloc_edbs()
309 asd_free_coherent(asd_ha, seq->edb_arr[i]); in asd_alloc_edbs()
310 kfree(seq->edb_arr); in asd_alloc_edbs()
311 seq->edb_arr = NULL; in asd_alloc_edbs()
319 struct asd_seq_data *seq = &asd_ha->seq; in asd_alloc_escbs() local
323 seq->escb_arr = kmalloc(seq->num_escbs*sizeof(*seq->escb_arr), in asd_alloc_escbs()
325 if (!seq->escb_arr) in asd_alloc_escbs()
328 escbs = seq->num_escbs; in asd_alloc_escbs()
334 seq->num_escbs -= escbs; /* subtract what was not allocated */ in asd_alloc_escbs()
335 ASD_DPRINTK("num_escbs:%d\n", seq->num_escbs); in asd_alloc_escbs()
337 for (i = 0; i < seq->num_escbs; i++, escb = list_entry(escb->list.next, in asd_alloc_escbs()
340 seq->escb_arr[i] = escb; in asd_alloc_escbs()
346 kfree(seq->escb_arr); in asd_alloc_escbs()
347 seq->escb_arr = NULL; in asd_alloc_escbs()
354 struct asd_seq_data *seq = &asd_ha->seq; in asd_assign_edbs2escbs() local
357 for (i = 0; i < seq->num_escbs; i++) { in asd_assign_edbs2escbs()
358 struct asd_ascb *ascb = seq->escb_arr[i]; in asd_assign_edbs2escbs()
367 struct asd_dma_tok *edb = seq->edb_arr[z++]; in asd_assign_edbs2escbs()
385 struct asd_seq_data *seq = &asd_ha->seq; in asd_init_escbs() local
391 seq->num_escbs = (edbs+ASD_EDBS_PER_SCB-1)/ASD_EDBS_PER_SCB; in asd_init_escbs()
392 seq->num_edbs = seq->num_escbs * ASD_EDBS_PER_SCB; in asd_init_escbs()
412 seq->pending = seq->num_escbs; in asd_init_escbs()
413 seq->can_queue = 1 + (asd_ha->hw_prof.max_scbs - seq->pending)/2; in asd_init_escbs()
733 struct asd_seq_data *seq = &asd_ha->seq; in asd_dl_tasklet_handler() local
737 struct done_list_struct *dl = &seq->dl[seq->dl_next]; in asd_dl_tasklet_handler()
740 if ((dl->toggle & DL_TOGGLE_MASK) != seq->dl_toggle) in asd_dl_tasklet_handler()
744 spin_lock_irqsave(&seq->tc_index_lock, flags); in asd_dl_tasklet_handler()
745 ascb = asd_tc_index_find(seq, (int)le16_to_cpu(dl->index)); in asd_dl_tasklet_handler()
746 spin_unlock_irqrestore(&seq->tc_index_lock, flags); in asd_dl_tasklet_handler()
755 spin_lock_irqsave(&seq->pend_q_lock, flags); in asd_dl_tasklet_handler()
757 seq->pending--; in asd_dl_tasklet_handler()
758 spin_unlock_irqrestore(&seq->pend_q_lock, flags); in asd_dl_tasklet_handler()
763 seq->dl_next = (seq->dl_next + 1) & (ASD_DL_SIZE-1); in asd_dl_tasklet_handler()
764 if (!seq->dl_next) in asd_dl_tasklet_handler()
765 seq->dl_toggle ^= DL_TOGGLE_MASK; in asd_dl_tasklet_handler()
777 tasklet_schedule(&asd_ha->seq.dl_tasklet); in asd_process_donelist_isr()
1050 struct asd_seq_data *seq = &asd_ha->seq; in asd_ascb_alloc() local
1068 spin_lock_irqsave(&seq->tc_index_lock, flags); in asd_ascb_alloc()
1069 ascb->tc_index = asd_tc_index_get(seq, ascb); in asd_ascb_alloc()
1070 spin_unlock_irqrestore(&seq->tc_index_lock, flags); in asd_ascb_alloc()
1149 struct asd_seq_data *seq = &asd_ha->seq; in asd_swap_head_scb() local
1155 memcpy(seq->next_scb.vaddr, ascb->scb, sizeof(*ascb->scb)); in asd_swap_head_scb()
1156 ascb->dma_scb = seq->next_scb; in asd_swap_head_scb()
1158 seq->next_scb = t; in asd_swap_head_scb()
1160 cpu_to_le64(((u64)seq->next_scb.dma_handle)); in asd_swap_head_scb()
1213 spin_lock_irqsave(&asd_ha->seq.pend_q_lock, flags); in asd_post_ascb_list()
1214 can_queue = asd_ha->hw_prof.max_scbs - asd_ha->seq.pending; in asd_post_ascb_list()
1216 asd_ha->seq.pending += num; in asd_post_ascb_list()
1221 spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags); in asd_post_ascb_list()
1232 asd_ha->seq.scbpro += num; in asd_post_ascb_list()
1233 list_splice_init(&list, asd_ha->seq.pend_q.prev); in asd_post_ascb_list()
1234 asd_write_reg_dword(asd_ha, SCBPRO, (u32)asd_ha->seq.scbpro); in asd_post_ascb_list()
1235 spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags); in asd_post_ascb_list()
1263 spin_lock_irqsave(&asd_ha->seq.pend_q_lock, flags); in asd_post_escb_list()
1265 asd_ha->seq.scbpro += num; in asd_post_escb_list()
1266 asd_write_reg_dword(asd_ha, SCBPRO, (u32)asd_ha->seq.scbpro); in asd_post_escb_list()
1267 spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags); in asd_post_escb_list()