Lines Matching refs:hwq
109 u32 hwq = blk_mq_unique_tag_to_hwq(utag); in ufshcd_mcq_req_to_hwq() local
112 return &hba->uhq[hwq + UFSHCD_MCQ_IO_QUEUE_OFFSET]; in ufshcd_mcq_req_to_hwq()
196 struct ufs_hw_queue *hwq; in ufshcd_mcq_memory_alloc() local
201 hwq = &hba->uhq[i]; in ufshcd_mcq_memory_alloc()
204 hwq->max_entries; in ufshcd_mcq_memory_alloc()
205 hwq->sqe_base_addr = dmam_alloc_coherent(hba->dev, utrdl_size, in ufshcd_mcq_memory_alloc()
206 &hwq->sqe_dma_addr, in ufshcd_mcq_memory_alloc()
208 if (!hwq->sqe_dma_addr) { in ufshcd_mcq_memory_alloc()
213 cqe_size = sizeof(struct cq_entry) * hwq->max_entries; in ufshcd_mcq_memory_alloc()
214 hwq->cqe_base_addr = dmam_alloc_coherent(hba->dev, cqe_size, in ufshcd_mcq_memory_alloc()
215 &hwq->cqe_dma_addr, in ufshcd_mcq_memory_alloc()
217 if (!hwq->cqe_dma_addr) { in ufshcd_mcq_memory_alloc()
256 struct ufs_hw_queue *hwq, in ufshcd_mcq_get_tag() argument
272 struct ufs_hw_queue *hwq) in ufshcd_mcq_process_cqe() argument
274 struct cq_entry *cqe = ufshcd_mcq_cur_cqe(hwq); in ufshcd_mcq_process_cqe()
275 int tag = ufshcd_mcq_get_tag(hba, hwq, cqe); in ufshcd_mcq_process_cqe()
281 struct ufs_hw_queue *hwq) in ufshcd_mcq_poll_cqe_nolock() argument
285 ufshcd_mcq_update_cq_tail_slot(hwq); in ufshcd_mcq_poll_cqe_nolock()
286 while (!ufshcd_mcq_is_cq_empty(hwq)) { in ufshcd_mcq_poll_cqe_nolock()
287 ufshcd_mcq_process_cqe(hba, hwq); in ufshcd_mcq_poll_cqe_nolock()
288 ufshcd_mcq_inc_cq_head_slot(hwq); in ufshcd_mcq_poll_cqe_nolock()
293 ufshcd_mcq_update_cq_head(hwq); in ufshcd_mcq_poll_cqe_nolock()
300 struct ufs_hw_queue *hwq) in ufshcd_mcq_poll_cqe_lock() argument
304 spin_lock(&hwq->cq_lock); in ufshcd_mcq_poll_cqe_lock()
305 completed_reqs = ufshcd_mcq_poll_cqe_nolock(hba, hwq); in ufshcd_mcq_poll_cqe_lock()
306 spin_unlock(&hwq->cq_lock); in ufshcd_mcq_poll_cqe_lock()
313 struct ufs_hw_queue *hwq; in ufshcd_mcq_make_queues_operational() local
318 hwq = &hba->uhq[i]; in ufshcd_mcq_make_queues_operational()
319 hwq->id = i; in ufshcd_mcq_make_queues_operational()
320 qsize = hwq->max_entries * MCQ_ENTRY_SIZE_IN_DWORD - 1; in ufshcd_mcq_make_queues_operational()
323 ufsmcq_writelx(hba, lower_32_bits(hwq->sqe_dma_addr), in ufshcd_mcq_make_queues_operational()
326 ufsmcq_writelx(hba, upper_32_bits(hwq->sqe_dma_addr), in ufshcd_mcq_make_queues_operational()
336 ufsmcq_writelx(hba, lower_32_bits(hwq->cqe_dma_addr), in ufshcd_mcq_make_queues_operational()
339 ufsmcq_writelx(hba, upper_32_bits(hwq->cqe_dma_addr), in ufshcd_mcq_make_queues_operational()
349 hwq->mcq_sq_head = mcq_opr_base(hba, OPR_SQD, i) + REG_SQHP; in ufshcd_mcq_make_queues_operational()
350 hwq->mcq_sq_tail = mcq_opr_base(hba, OPR_SQD, i) + REG_SQTP; in ufshcd_mcq_make_queues_operational()
351 hwq->mcq_cq_head = mcq_opr_base(hba, OPR_CQD, i) + REG_CQHP; in ufshcd_mcq_make_queues_operational()
352 hwq->mcq_cq_tail = mcq_opr_base(hba, OPR_CQD, i) + REG_CQTP; in ufshcd_mcq_make_queues_operational()
355 hwq->sq_tail_slot = hwq->cq_tail_slot = hwq->cq_head_slot = 0; in ufshcd_mcq_make_queues_operational()
392 struct ufs_hw_queue *hwq; in ufshcd_mcq_init() local
418 hwq = &hba->uhq[i]; in ufshcd_mcq_init()
419 hwq->max_entries = hba->nutrs; in ufshcd_mcq_init()
420 spin_lock_init(&hwq->sq_lock); in ufshcd_mcq_init()
421 spin_lock_init(&hwq->cq_lock); in ufshcd_mcq_init()