Lines Matching refs:adev
49 static void iceland_ih_set_interrupt_funcs(struct amdgpu_device *adev);
58 static void iceland_ih_enable_interrupts(struct amdgpu_device *adev) in iceland_ih_enable_interrupts() argument
67 adev->irq.ih.enabled = true; in iceland_ih_enable_interrupts()
77 static void iceland_ih_disable_interrupts(struct amdgpu_device *adev) in iceland_ih_disable_interrupts() argument
89 adev->irq.ih.enabled = false; in iceland_ih_disable_interrupts()
90 adev->irq.ih.rptr = 0; in iceland_ih_disable_interrupts()
104 static int iceland_ih_irq_init(struct amdgpu_device *adev) in iceland_ih_irq_init() argument
112 iceland_ih_disable_interrupts(adev); in iceland_ih_irq_init()
115 WREG32(mmINTERRUPT_CNTL2, adev->dummy_page.addr >> 8); in iceland_ih_irq_init()
126 WREG32(mmIH_RB_BASE, adev->irq.ih.gpu_addr >> 8); in iceland_ih_irq_init()
128 rb_bufsz = order_base_2(adev->irq.ih.ring_size / 4); in iceland_ih_irq_init()
137 wptr_off = adev->wb.gpu_addr + (adev->irq.ih.wptr_offs * 4); in iceland_ih_irq_init()
151 if (adev->irq.msi_enabled) in iceland_ih_irq_init()
155 pci_set_master(adev->pdev); in iceland_ih_irq_init()
158 iceland_ih_enable_interrupts(adev); in iceland_ih_irq_init()
170 static void iceland_ih_irq_disable(struct amdgpu_device *adev) in iceland_ih_irq_disable() argument
172 iceland_ih_disable_interrupts(adev); in iceland_ih_irq_disable()
189 static u32 iceland_ih_get_wptr(struct amdgpu_device *adev) in iceland_ih_get_wptr() argument
193 wptr = le32_to_cpu(adev->wb.wb[adev->irq.ih.wptr_offs]); in iceland_ih_get_wptr()
201 dev_warn(adev->dev, "IH ring buffer overflow (0x%08X, 0x%08X, 0x%08X)\n", in iceland_ih_get_wptr()
202 wptr, adev->irq.ih.rptr, (wptr + 16) & adev->irq.ih.ptr_mask); in iceland_ih_get_wptr()
203 adev->irq.ih.rptr = (wptr + 16) & adev->irq.ih.ptr_mask; in iceland_ih_get_wptr()
208 return (wptr & adev->irq.ih.ptr_mask); in iceland_ih_get_wptr()
219 static void iceland_ih_decode_iv(struct amdgpu_device *adev, in iceland_ih_decode_iv() argument
223 u32 ring_index = adev->irq.ih.rptr >> 2; in iceland_ih_decode_iv()
226 dw[0] = le32_to_cpu(adev->irq.ih.ring[ring_index + 0]); in iceland_ih_decode_iv()
227 dw[1] = le32_to_cpu(adev->irq.ih.ring[ring_index + 1]); in iceland_ih_decode_iv()
228 dw[2] = le32_to_cpu(adev->irq.ih.ring[ring_index + 2]); in iceland_ih_decode_iv()
229 dw[3] = le32_to_cpu(adev->irq.ih.ring[ring_index + 3]); in iceland_ih_decode_iv()
238 adev->irq.ih.rptr += 16; in iceland_ih_decode_iv()
248 static void iceland_ih_set_rptr(struct amdgpu_device *adev) in iceland_ih_set_rptr() argument
250 WREG32(mmIH_RB_RPTR, adev->irq.ih.rptr); in iceland_ih_set_rptr()
255 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_early_init() local
257 iceland_ih_set_interrupt_funcs(adev); in iceland_ih_early_init()
264 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_sw_init() local
266 r = amdgpu_ih_ring_init(adev, 64 * 1024, false); in iceland_ih_sw_init()
270 r = amdgpu_irq_init(adev); in iceland_ih_sw_init()
277 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_sw_fini() local
279 amdgpu_irq_fini(adev); in iceland_ih_sw_fini()
280 amdgpu_ih_ring_fini(adev); in iceland_ih_sw_fini()
288 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_hw_init() local
290 r = iceland_ih_irq_init(adev); in iceland_ih_hw_init()
299 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_hw_fini() local
301 iceland_ih_irq_disable(adev); in iceland_ih_hw_fini()
308 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_suspend() local
310 return iceland_ih_hw_fini(adev); in iceland_ih_suspend()
315 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_resume() local
317 return iceland_ih_hw_init(adev); in iceland_ih_resume()
322 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_is_idle() local
335 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_wait_for_idle() local
337 for (i = 0; i < adev->usec_timeout; i++) { in iceland_ih_wait_for_idle()
349 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_print_status() local
351 dev_info(adev->dev, "ICELAND IH registers\n"); in iceland_ih_print_status()
352 dev_info(adev->dev, " SRBM_STATUS=0x%08X\n", in iceland_ih_print_status()
354 dev_info(adev->dev, " SRBM_STATUS2=0x%08X\n", in iceland_ih_print_status()
356 dev_info(adev->dev, " INTERRUPT_CNTL=0x%08X\n", in iceland_ih_print_status()
358 dev_info(adev->dev, " INTERRUPT_CNTL2=0x%08X\n", in iceland_ih_print_status()
360 dev_info(adev->dev, " IH_CNTL=0x%08X\n", in iceland_ih_print_status()
362 dev_info(adev->dev, " IH_RB_CNTL=0x%08X\n", in iceland_ih_print_status()
364 dev_info(adev->dev, " IH_RB_BASE=0x%08X\n", in iceland_ih_print_status()
366 dev_info(adev->dev, " IH_RB_WPTR_ADDR_LO=0x%08X\n", in iceland_ih_print_status()
368 dev_info(adev->dev, " IH_RB_WPTR_ADDR_HI=0x%08X\n", in iceland_ih_print_status()
370 dev_info(adev->dev, " IH_RB_RPTR=0x%08X\n", in iceland_ih_print_status()
372 dev_info(adev->dev, " IH_RB_WPTR=0x%08X\n", in iceland_ih_print_status()
379 struct amdgpu_device *adev = (struct amdgpu_device *)handle; in iceland_ih_soft_reset() local
387 iceland_ih_print_status((void *)adev); in iceland_ih_soft_reset()
391 dev_info(adev->dev, "SRBM_SOFT_RESET=0x%08X\n", tmp); in iceland_ih_soft_reset()
404 iceland_ih_print_status((void *)adev); in iceland_ih_soft_reset()
445 static void iceland_ih_set_interrupt_funcs(struct amdgpu_device *adev) in iceland_ih_set_interrupt_funcs() argument
447 if (adev->irq.ih_funcs == NULL) in iceland_ih_set_interrupt_funcs()
448 adev->irq.ih_funcs = &iceland_ih_funcs; in iceland_ih_set_interrupt_funcs()