diff options
Diffstat (limited to 'drivers/misc/habanalabs/common/hw_queue.c')
| -rw-r--r-- | drivers/misc/habanalabs/common/hw_queue.c | 19 | 
1 files changed, 9 insertions, 10 deletions
| diff --git a/drivers/misc/habanalabs/common/hw_queue.c b/drivers/misc/habanalabs/common/hw_queue.c index 5e66c98fb0d3..250cf9cefc06 100644 --- a/drivers/misc/habanalabs/common/hw_queue.c +++ b/drivers/misc/habanalabs/common/hw_queue.c @@ -75,7 +75,7 @@ static void ext_and_hw_queue_submit_bd(struct hl_device *hdev,  {  	struct hl_bd *bd; -	bd = (struct hl_bd *) (uintptr_t) q->kernel_address; +	bd = q->kernel_address;  	bd += hl_pi_2_offset(q->pi);  	bd->ctl = cpu_to_le32(ctl);  	bd->len = cpu_to_le32(len); @@ -335,8 +335,7 @@ static void int_queue_schedule_job(struct hl_cs_job *job)  	bd.len = cpu_to_le32(job->job_cb_size);  	bd.ptr = cpu_to_le64((u64) (uintptr_t) job->user_cb); -	pi = (__le64 *) (uintptr_t) (q->kernel_address + -		((q->pi & (q->int_queue_len - 1)) * sizeof(bd))); +	pi = q->kernel_address + (q->pi & (q->int_queue_len - 1)) * sizeof(bd);  	q->pi++;  	q->pi &= ((q->int_queue_len << 1) - 1); @@ -630,7 +629,7 @@ static int ext_and_cpu_queue_init(struct hl_device *hdev, struct hl_hw_queue *q,  	if (!p)  		return -ENOMEM; -	q->kernel_address = (u64) (uintptr_t) p; +	q->kernel_address = p;  	q->shadow_queue = kmalloc_array(HL_QUEUE_LENGTH,  					sizeof(*q->shadow_queue), @@ -653,11 +652,11 @@ free_queue:  	if (is_cpu_queue)  		hdev->asic_funcs->cpu_accessible_dma_pool_free(hdev,  					HL_QUEUE_SIZE_IN_BYTES, -					(void *) (uintptr_t) q->kernel_address); +					q->kernel_address);  	else  		hdev->asic_funcs->asic_dma_free_coherent(hdev,  					HL_QUEUE_SIZE_IN_BYTES, -					(void *) (uintptr_t) q->kernel_address, +					q->kernel_address,  					q->bus_address);  	return rc; @@ -676,7 +675,7 @@ static int int_queue_init(struct hl_device *hdev, struct hl_hw_queue *q)  		return -EFAULT;  	} -	q->kernel_address = (u64) (uintptr_t) p; +	q->kernel_address = p;  	q->pi = 0;  	atomic_set(&q->ci, 0); @@ -704,7 +703,7 @@ static int hw_queue_init(struct hl_device *hdev, struct hl_hw_queue *q)  	if (!p)  		return -ENOMEM; -	q->kernel_address = (u64) (uintptr_t) p; +	q->kernel_address = p;  	/* Make sure read/write pointers are initialized to start of queue */  	atomic_set(&q->ci, 0); @@ -839,11 +838,11 @@ static void queue_fini(struct hl_device *hdev, struct hl_hw_queue *q)  	if (q->queue_type == QUEUE_TYPE_CPU)  		hdev->asic_funcs->cpu_accessible_dma_pool_free(hdev,  					HL_QUEUE_SIZE_IN_BYTES, -					(void *) (uintptr_t) q->kernel_address); +					q->kernel_address);  	else  		hdev->asic_funcs->asic_dma_free_coherent(hdev,  					HL_QUEUE_SIZE_IN_BYTES, -					(void *) (uintptr_t) q->kernel_address, +					q->kernel_address,  					q->bus_address);  } | 
