diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu.h')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 154 |
1 files changed, 40 insertions, 114 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 74edba18b159..c8b605f3dc05 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h | |||
@@ -68,6 +68,7 @@ | |||
68 | #include "amdgpu_vce.h" | 68 | #include "amdgpu_vce.h" |
69 | #include "amdgpu_vcn.h" | 69 | #include "amdgpu_vcn.h" |
70 | #include "amdgpu_mn.h" | 70 | #include "amdgpu_mn.h" |
71 | #include "amdgpu_gmc.h" | ||
71 | #include "amdgpu_dm.h" | 72 | #include "amdgpu_dm.h" |
72 | #include "amdgpu_virt.h" | 73 | #include "amdgpu_virt.h" |
73 | #include "amdgpu_gart.h" | 74 | #include "amdgpu_gart.h" |
@@ -127,6 +128,7 @@ extern int amdgpu_job_hang_limit; | |||
127 | extern int amdgpu_lbpw; | 128 | extern int amdgpu_lbpw; |
128 | extern int amdgpu_compute_multipipe; | 129 | extern int amdgpu_compute_multipipe; |
129 | extern int amdgpu_gpu_recovery; | 130 | extern int amdgpu_gpu_recovery; |
131 | extern int amdgpu_emu_mode; | ||
130 | 132 | ||
131 | #ifdef CONFIG_DRM_AMDGPU_SI | 133 | #ifdef CONFIG_DRM_AMDGPU_SI |
132 | extern int amdgpu_si_support; | 134 | extern int amdgpu_si_support; |
@@ -179,10 +181,6 @@ extern int amdgpu_cik_support; | |||
179 | #define CIK_CURSOR_WIDTH 128 | 181 | #define CIK_CURSOR_WIDTH 128 |
180 | #define CIK_CURSOR_HEIGHT 128 | 182 | #define CIK_CURSOR_HEIGHT 128 |
181 | 183 | ||
182 | /* GPU RESET flags */ | ||
183 | #define AMDGPU_RESET_INFO_VRAM_LOST (1 << 0) | ||
184 | #define AMDGPU_RESET_INFO_FULLRESET (1 << 1) | ||
185 | |||
186 | struct amdgpu_device; | 184 | struct amdgpu_device; |
187 | struct amdgpu_ib; | 185 | struct amdgpu_ib; |
188 | struct amdgpu_cs_parser; | 186 | struct amdgpu_cs_parser; |
@@ -318,13 +316,6 @@ struct amdgpu_vm_pte_funcs { | |||
318 | void (*write_pte)(struct amdgpu_ib *ib, uint64_t pe, | 316 | void (*write_pte)(struct amdgpu_ib *ib, uint64_t pe, |
319 | uint64_t value, unsigned count, | 317 | uint64_t value, unsigned count, |
320 | uint32_t incr); | 318 | uint32_t incr); |
321 | |||
322 | /* maximum nums of PTEs/PDEs in a single operation */ | ||
323 | uint32_t set_max_nums_pte_pde; | ||
324 | |||
325 | /* number of dw to reserve per operation */ | ||
326 | unsigned set_pte_pde_num_dw; | ||
327 | |||
328 | /* for linear pte/pde updates without addr mapping */ | 319 | /* for linear pte/pde updates without addr mapping */ |
329 | void (*set_pte_pde)(struct amdgpu_ib *ib, | 320 | void (*set_pte_pde)(struct amdgpu_ib *ib, |
330 | uint64_t pe, | 321 | uint64_t pe, |
@@ -332,28 +323,6 @@ struct amdgpu_vm_pte_funcs { | |||
332 | uint32_t incr, uint64_t flags); | 323 | uint32_t incr, uint64_t flags); |
333 | }; | 324 | }; |
334 | 325 | ||
335 | /* provided by the gmc block */ | ||
336 | struct amdgpu_gart_funcs { | ||
337 | /* flush the vm tlb via mmio */ | ||
338 | void (*flush_gpu_tlb)(struct amdgpu_device *adev, | ||
339 | uint32_t vmid); | ||
340 | /* write pte/pde updates using the cpu */ | ||
341 | int (*set_pte_pde)(struct amdgpu_device *adev, | ||
342 | void *cpu_pt_addr, /* cpu addr of page table */ | ||
343 | uint32_t gpu_page_idx, /* pte/pde to update */ | ||
344 | uint64_t addr, /* addr to write into pte/pde */ | ||
345 | uint64_t flags); /* access flags */ | ||
346 | /* enable/disable PRT support */ | ||
347 | void (*set_prt)(struct amdgpu_device *adev, bool enable); | ||
348 | /* set pte flags based per asic */ | ||
349 | uint64_t (*get_vm_pte_flags)(struct amdgpu_device *adev, | ||
350 | uint32_t flags); | ||
351 | /* get the pde for a given mc addr */ | ||
352 | void (*get_vm_pde)(struct amdgpu_device *adev, int level, | ||
353 | u64 *dst, u64 *flags); | ||
354 | uint32_t (*get_invalidate_req)(unsigned int vmid); | ||
355 | }; | ||
356 | |||
357 | /* provided by the ih block */ | 326 | /* provided by the ih block */ |
358 | struct amdgpu_ih_funcs { | 327 | struct amdgpu_ih_funcs { |
359 | /* ring read/write ptr handling, called from interrupt context */ | 328 | /* ring read/write ptr handling, called from interrupt context */ |
@@ -371,14 +340,6 @@ bool amdgpu_get_bios(struct amdgpu_device *adev); | |||
371 | bool amdgpu_read_bios(struct amdgpu_device *adev); | 340 | bool amdgpu_read_bios(struct amdgpu_device *adev); |
372 | 341 | ||
373 | /* | 342 | /* |
374 | * Dummy page | ||
375 | */ | ||
376 | struct amdgpu_dummy_page { | ||
377 | struct page *page; | ||
378 | dma_addr_t addr; | ||
379 | }; | ||
380 | |||
381 | /* | ||
382 | * Clocks | 343 | * Clocks |
383 | */ | 344 | */ |
384 | 345 | ||
@@ -418,8 +379,8 @@ amdgpu_gem_prime_import_sg_table(struct drm_device *dev, | |||
418 | struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev, | 379 | struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev, |
419 | struct drm_gem_object *gobj, | 380 | struct drm_gem_object *gobj, |
420 | int flags); | 381 | int flags); |
421 | int amdgpu_gem_prime_pin(struct drm_gem_object *obj); | 382 | struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev, |
422 | void amdgpu_gem_prime_unpin(struct drm_gem_object *obj); | 383 | struct dma_buf *dma_buf); |
423 | struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *); | 384 | struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *); |
424 | void *amdgpu_gem_prime_vmap(struct drm_gem_object *obj); | 385 | void *amdgpu_gem_prime_vmap(struct drm_gem_object *obj); |
425 | void amdgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); | 386 | void amdgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); |
@@ -480,7 +441,7 @@ struct amdgpu_sa_bo { | |||
480 | void amdgpu_gem_force_release(struct amdgpu_device *adev); | 441 | void amdgpu_gem_force_release(struct amdgpu_device *adev); |
481 | int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size, | 442 | int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size, |
482 | int alignment, u32 initial_domain, | 443 | int alignment, u32 initial_domain, |
483 | u64 flags, bool kernel, | 444 | u64 flags, enum ttm_bo_type type, |
484 | struct reservation_object *resv, | 445 | struct reservation_object *resv, |
485 | struct drm_gem_object **obj); | 446 | struct drm_gem_object **obj); |
486 | 447 | ||
@@ -494,56 +455,6 @@ int amdgpu_fence_slab_init(void); | |||
494 | void amdgpu_fence_slab_fini(void); | 455 | void amdgpu_fence_slab_fini(void); |
495 | 456 | ||
496 | /* | 457 | /* |
497 | * VMHUB structures, functions & helpers | ||
498 | */ | ||
499 | struct amdgpu_vmhub { | ||
500 | uint32_t ctx0_ptb_addr_lo32; | ||
501 | uint32_t ctx0_ptb_addr_hi32; | ||
502 | uint32_t vm_inv_eng0_req; | ||
503 | uint32_t vm_inv_eng0_ack; | ||
504 | uint32_t vm_context0_cntl; | ||
505 | uint32_t vm_l2_pro_fault_status; | ||
506 | uint32_t vm_l2_pro_fault_cntl; | ||
507 | }; | ||
508 | |||
509 | /* | ||
510 | * GPU MC structures, functions & helpers | ||
511 | */ | ||
512 | struct amdgpu_mc { | ||
513 | resource_size_t aper_size; | ||
514 | resource_size_t aper_base; | ||
515 | resource_size_t agp_base; | ||
516 | /* for some chips with <= 32MB we need to lie | ||
517 | * about vram size near mc fb location */ | ||
518 | u64 mc_vram_size; | ||
519 | u64 visible_vram_size; | ||
520 | u64 gart_size; | ||
521 | u64 gart_start; | ||
522 | u64 gart_end; | ||
523 | u64 vram_start; | ||
524 | u64 vram_end; | ||
525 | unsigned vram_width; | ||
526 | u64 real_vram_size; | ||
527 | int vram_mtrr; | ||
528 | u64 mc_mask; | ||
529 | const struct firmware *fw; /* MC firmware */ | ||
530 | uint32_t fw_version; | ||
531 | struct amdgpu_irq_src vm_fault; | ||
532 | uint32_t vram_type; | ||
533 | uint32_t srbm_soft_reset; | ||
534 | bool prt_warning; | ||
535 | uint64_t stolen_size; | ||
536 | /* apertures */ | ||
537 | u64 shared_aperture_start; | ||
538 | u64 shared_aperture_end; | ||
539 | u64 private_aperture_start; | ||
540 | u64 private_aperture_end; | ||
541 | /* protects concurrent invalidation */ | ||
542 | spinlock_t invalidate_lock; | ||
543 | bool translate_further; | ||
544 | }; | ||
545 | |||
546 | /* | ||
547 | * GPU doorbell structures, functions & helpers | 458 | * GPU doorbell structures, functions & helpers |
548 | */ | 459 | */ |
549 | typedef enum _AMDGPU_DOORBELL_ASSIGNMENT | 460 | typedef enum _AMDGPU_DOORBELL_ASSIGNMENT |
@@ -979,6 +890,7 @@ struct amdgpu_gfx_funcs { | |||
979 | void (*read_wave_data)(struct amdgpu_device *adev, uint32_t simd, uint32_t wave, uint32_t *dst, int *no_fields); | 890 | void (*read_wave_data)(struct amdgpu_device *adev, uint32_t simd, uint32_t wave, uint32_t *dst, int *no_fields); |
980 | void (*read_wave_vgprs)(struct amdgpu_device *adev, uint32_t simd, uint32_t wave, uint32_t thread, uint32_t start, uint32_t size, uint32_t *dst); | 891 | void (*read_wave_vgprs)(struct amdgpu_device *adev, uint32_t simd, uint32_t wave, uint32_t thread, uint32_t start, uint32_t size, uint32_t *dst); |
981 | void (*read_wave_sgprs)(struct amdgpu_device *adev, uint32_t simd, uint32_t wave, uint32_t start, uint32_t size, uint32_t *dst); | 892 | void (*read_wave_sgprs)(struct amdgpu_device *adev, uint32_t simd, uint32_t wave, uint32_t start, uint32_t size, uint32_t *dst); |
893 | void (*select_me_pipe_q)(struct amdgpu_device *adev, u32 me, u32 pipe, u32 queue); | ||
982 | }; | 894 | }; |
983 | 895 | ||
984 | struct amdgpu_ngg_buf { | 896 | struct amdgpu_ngg_buf { |
@@ -1125,8 +1037,9 @@ struct amdgpu_job { | |||
1125 | void *owner; | 1037 | void *owner; |
1126 | uint64_t fence_ctx; /* the fence_context this job uses */ | 1038 | uint64_t fence_ctx; /* the fence_context this job uses */ |
1127 | bool vm_needs_flush; | 1039 | bool vm_needs_flush; |
1128 | unsigned vmid; | ||
1129 | uint64_t vm_pd_addr; | 1040 | uint64_t vm_pd_addr; |
1041 | unsigned vmid; | ||
1042 | unsigned pasid; | ||
1130 | uint32_t gds_base, gds_size; | 1043 | uint32_t gds_base, gds_size; |
1131 | uint32_t gws_base, gws_size; | 1044 | uint32_t gws_base, gws_size; |
1132 | uint32_t oa_base, oa_size; | 1045 | uint32_t oa_base, oa_size; |
@@ -1169,8 +1082,6 @@ struct amdgpu_wb { | |||
1169 | int amdgpu_device_wb_get(struct amdgpu_device *adev, u32 *wb); | 1082 | int amdgpu_device_wb_get(struct amdgpu_device *adev, u32 *wb); |
1170 | void amdgpu_device_wb_free(struct amdgpu_device *adev, u32 wb); | 1083 | void amdgpu_device_wb_free(struct amdgpu_device *adev, u32 wb); |
1171 | 1084 | ||
1172 | void amdgpu_device_get_pcie_info(struct amdgpu_device *adev); | ||
1173 | |||
1174 | /* | 1085 | /* |
1175 | * SDMA | 1086 | * SDMA |
1176 | */ | 1087 | */ |
@@ -1288,6 +1199,11 @@ struct amdgpu_asic_funcs { | |||
1288 | void (*set_pcie_lanes)(struct amdgpu_device *adev, int lanes); | 1199 | void (*set_pcie_lanes)(struct amdgpu_device *adev, int lanes); |
1289 | /* get config memsize register */ | 1200 | /* get config memsize register */ |
1290 | u32 (*get_config_memsize)(struct amdgpu_device *adev); | 1201 | u32 (*get_config_memsize)(struct amdgpu_device *adev); |
1202 | /* flush hdp write queue */ | ||
1203 | void (*flush_hdp)(struct amdgpu_device *adev, struct amdgpu_ring *ring); | ||
1204 | /* invalidate hdp read cache */ | ||
1205 | void (*invalidate_hdp)(struct amdgpu_device *adev, | ||
1206 | struct amdgpu_ring *ring); | ||
1291 | }; | 1207 | }; |
1292 | 1208 | ||
1293 | /* | 1209 | /* |
@@ -1431,7 +1347,7 @@ struct amdgpu_nbio_funcs { | |||
1431 | u32 (*get_pcie_data_offset)(struct amdgpu_device *adev); | 1347 | u32 (*get_pcie_data_offset)(struct amdgpu_device *adev); |
1432 | u32 (*get_rev_id)(struct amdgpu_device *adev); | 1348 | u32 (*get_rev_id)(struct amdgpu_device *adev); |
1433 | void (*mc_access_enable)(struct amdgpu_device *adev, bool enable); | 1349 | void (*mc_access_enable)(struct amdgpu_device *adev, bool enable); |
1434 | void (*hdp_flush)(struct amdgpu_device *adev); | 1350 | void (*hdp_flush)(struct amdgpu_device *adev, struct amdgpu_ring *ring); |
1435 | u32 (*get_memsize)(struct amdgpu_device *adev); | 1351 | u32 (*get_memsize)(struct amdgpu_device *adev); |
1436 | void (*sdma_doorbell_range)(struct amdgpu_device *adev, int instance, | 1352 | void (*sdma_doorbell_range)(struct amdgpu_device *adev, int instance, |
1437 | bool use_doorbell, int doorbell_index); | 1353 | bool use_doorbell, int doorbell_index); |
@@ -1463,6 +1379,7 @@ enum amd_hw_ip_block_type { | |||
1463 | ATHUB_HWIP, | 1379 | ATHUB_HWIP, |
1464 | NBIO_HWIP, | 1380 | NBIO_HWIP, |
1465 | MP0_HWIP, | 1381 | MP0_HWIP, |
1382 | MP1_HWIP, | ||
1466 | UVD_HWIP, | 1383 | UVD_HWIP, |
1467 | VCN_HWIP = UVD_HWIP, | 1384 | VCN_HWIP = UVD_HWIP, |
1468 | VCE_HWIP, | 1385 | VCE_HWIP, |
@@ -1472,15 +1389,14 @@ enum amd_hw_ip_block_type { | |||
1472 | SMUIO_HWIP, | 1389 | SMUIO_HWIP, |
1473 | PWR_HWIP, | 1390 | PWR_HWIP, |
1474 | NBIF_HWIP, | 1391 | NBIF_HWIP, |
1392 | THM_HWIP, | ||
1475 | MAX_HWIP | 1393 | MAX_HWIP |
1476 | }; | 1394 | }; |
1477 | 1395 | ||
1478 | #define HWIP_MAX_INSTANCE 6 | 1396 | #define HWIP_MAX_INSTANCE 6 |
1479 | 1397 | ||
1480 | struct amd_powerplay { | 1398 | struct amd_powerplay { |
1481 | struct cgs_device *cgs_device; | ||
1482 | void *pp_handle; | 1399 | void *pp_handle; |
1483 | const struct amd_ip_funcs *ip_funcs; | ||
1484 | const struct amd_pm_funcs *pp_funcs; | 1400 | const struct amd_pm_funcs *pp_funcs; |
1485 | }; | 1401 | }; |
1486 | 1402 | ||
@@ -1504,6 +1420,7 @@ struct amdgpu_device { | |||
1504 | const struct amdgpu_asic_funcs *asic_funcs; | 1420 | const struct amdgpu_asic_funcs *asic_funcs; |
1505 | bool shutdown; | 1421 | bool shutdown; |
1506 | bool need_dma32; | 1422 | bool need_dma32; |
1423 | bool need_swiotlb; | ||
1507 | bool accel_working; | 1424 | bool accel_working; |
1508 | struct work_struct reset_work; | 1425 | struct work_struct reset_work; |
1509 | struct notifier_block acpi_nb; | 1426 | struct notifier_block acpi_nb; |
@@ -1573,9 +1490,9 @@ struct amdgpu_device { | |||
1573 | struct amdgpu_clock clock; | 1490 | struct amdgpu_clock clock; |
1574 | 1491 | ||
1575 | /* MC */ | 1492 | /* MC */ |
1576 | struct amdgpu_mc mc; | 1493 | struct amdgpu_gmc gmc; |
1577 | struct amdgpu_gart gart; | 1494 | struct amdgpu_gart gart; |
1578 | struct amdgpu_dummy_page dummy_page; | 1495 | dma_addr_t dummy_page_addr; |
1579 | struct amdgpu_vm_manager vm_manager; | 1496 | struct amdgpu_vm_manager vm_manager; |
1580 | struct amdgpu_vmhub vmhub[AMDGPU_MAX_VMHUBS]; | 1497 | struct amdgpu_vmhub vmhub[AMDGPU_MAX_VMHUBS]; |
1581 | 1498 | ||
@@ -1714,6 +1631,9 @@ uint32_t amdgpu_mm_rreg(struct amdgpu_device *adev, uint32_t reg, | |||
1714 | uint32_t acc_flags); | 1631 | uint32_t acc_flags); |
1715 | void amdgpu_mm_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v, | 1632 | void amdgpu_mm_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v, |
1716 | uint32_t acc_flags); | 1633 | uint32_t acc_flags); |
1634 | void amdgpu_mm_wreg8(struct amdgpu_device *adev, uint32_t offset, uint8_t value); | ||
1635 | uint8_t amdgpu_mm_rreg8(struct amdgpu_device *adev, uint32_t offset); | ||
1636 | |||
1717 | u32 amdgpu_io_rreg(struct amdgpu_device *adev, u32 reg); | 1637 | u32 amdgpu_io_rreg(struct amdgpu_device *adev, u32 reg); |
1718 | void amdgpu_io_wreg(struct amdgpu_device *adev, u32 reg, u32 v); | 1638 | void amdgpu_io_wreg(struct amdgpu_device *adev, u32 reg, u32 v); |
1719 | 1639 | ||
@@ -1725,6 +1645,8 @@ void amdgpu_mm_wdoorbell64(struct amdgpu_device *adev, u32 index, u64 v); | |||
1725 | bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type); | 1645 | bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type); |
1726 | bool amdgpu_device_has_dc_support(struct amdgpu_device *adev); | 1646 | bool amdgpu_device_has_dc_support(struct amdgpu_device *adev); |
1727 | 1647 | ||
1648 | int emu_soc_asic_init(struct amdgpu_device *adev); | ||
1649 | |||
1728 | /* | 1650 | /* |
1729 | * Registers read & write functions. | 1651 | * Registers read & write functions. |
1730 | */ | 1652 | */ |
@@ -1735,6 +1657,9 @@ bool amdgpu_device_has_dc_support(struct amdgpu_device *adev); | |||
1735 | #define RREG32_NO_KIQ(reg) amdgpu_mm_rreg(adev, (reg), AMDGPU_REGS_NO_KIQ) | 1657 | #define RREG32_NO_KIQ(reg) amdgpu_mm_rreg(adev, (reg), AMDGPU_REGS_NO_KIQ) |
1736 | #define WREG32_NO_KIQ(reg, v) amdgpu_mm_wreg(adev, (reg), (v), AMDGPU_REGS_NO_KIQ) | 1658 | #define WREG32_NO_KIQ(reg, v) amdgpu_mm_wreg(adev, (reg), (v), AMDGPU_REGS_NO_KIQ) |
1737 | 1659 | ||
1660 | #define RREG8(reg) amdgpu_mm_rreg8(adev, (reg)) | ||
1661 | #define WREG8(reg, v) amdgpu_mm_wreg8(adev, (reg), (v)) | ||
1662 | |||
1738 | #define RREG32(reg) amdgpu_mm_rreg(adev, (reg), 0) | 1663 | #define RREG32(reg) amdgpu_mm_rreg(adev, (reg), 0) |
1739 | #define RREG32_IDX(reg) amdgpu_mm_rreg(adev, (reg), AMDGPU_REGS_IDX) | 1664 | #define RREG32_IDX(reg) amdgpu_mm_rreg(adev, (reg), AMDGPU_REGS_IDX) |
1740 | #define DREG32(reg) printk(KERN_INFO "REGISTER: " #reg " : 0x%08X\n", amdgpu_mm_rreg(adev, (reg), 0)) | 1665 | #define DREG32(reg) printk(KERN_INFO "REGISTER: " #reg " : 0x%08X\n", amdgpu_mm_rreg(adev, (reg), 0)) |
@@ -1837,13 +1762,17 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring) | |||
1837 | #define amdgpu_asic_read_bios_from_rom(adev, b, l) (adev)->asic_funcs->read_bios_from_rom((adev), (b), (l)) | 1762 | #define amdgpu_asic_read_bios_from_rom(adev, b, l) (adev)->asic_funcs->read_bios_from_rom((adev), (b), (l)) |
1838 | #define amdgpu_asic_read_register(adev, se, sh, offset, v)((adev)->asic_funcs->read_register((adev), (se), (sh), (offset), (v))) | 1763 | #define amdgpu_asic_read_register(adev, se, sh, offset, v)((adev)->asic_funcs->read_register((adev), (se), (sh), (offset), (v))) |
1839 | #define amdgpu_asic_get_config_memsize(adev) (adev)->asic_funcs->get_config_memsize((adev)) | 1764 | #define amdgpu_asic_get_config_memsize(adev) (adev)->asic_funcs->get_config_memsize((adev)) |
1840 | #define amdgpu_gart_flush_gpu_tlb(adev, vmid) (adev)->gart.gart_funcs->flush_gpu_tlb((adev), (vmid)) | 1765 | #define amdgpu_asic_flush_hdp(adev, r) (adev)->asic_funcs->flush_hdp((adev), (r)) |
1841 | #define amdgpu_gart_set_pte_pde(adev, pt, idx, addr, flags) (adev)->gart.gart_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags)) | 1766 | #define amdgpu_asic_invalidate_hdp(adev, r) (adev)->asic_funcs->invalidate_hdp((adev), (r)) |
1842 | #define amdgpu_gart_get_vm_pde(adev, level, dst, flags) (adev)->gart.gart_funcs->get_vm_pde((adev), (level), (dst), (flags)) | 1767 | #define amdgpu_gmc_flush_gpu_tlb(adev, vmid) (adev)->gmc.gmc_funcs->flush_gpu_tlb((adev), (vmid)) |
1768 | #define amdgpu_gmc_emit_flush_gpu_tlb(r, vmid, addr) (r)->adev->gmc.gmc_funcs->emit_flush_gpu_tlb((r), (vmid), (addr)) | ||
1769 | #define amdgpu_gmc_emit_pasid_mapping(r, vmid, pasid) (r)->adev->gmc.gmc_funcs->emit_pasid_mapping((r), (vmid), (pasid)) | ||
1770 | #define amdgpu_gmc_set_pte_pde(adev, pt, idx, addr, flags) (adev)->gmc.gmc_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags)) | ||
1771 | #define amdgpu_gmc_get_vm_pde(adev, level, dst, flags) (adev)->gmc.gmc_funcs->get_vm_pde((adev), (level), (dst), (flags)) | ||
1772 | #define amdgpu_gmc_get_pte_flags(adev, flags) (adev)->gmc.gmc_funcs->get_vm_pte_flags((adev),(flags)) | ||
1843 | #define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count))) | 1773 | #define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count))) |
1844 | #define amdgpu_vm_write_pte(adev, ib, pe, value, count, incr) ((adev)->vm_manager.vm_pte_funcs->write_pte((ib), (pe), (value), (count), (incr))) | 1774 | #define amdgpu_vm_write_pte(adev, ib, pe, value, count, incr) ((adev)->vm_manager.vm_pte_funcs->write_pte((ib), (pe), (value), (count), (incr))) |
1845 | #define amdgpu_vm_set_pte_pde(adev, ib, pe, addr, count, incr, flags) ((adev)->vm_manager.vm_pte_funcs->set_pte_pde((ib), (pe), (addr), (count), (incr), (flags))) | 1775 | #define amdgpu_vm_set_pte_pde(adev, ib, pe, addr, count, incr, flags) ((adev)->vm_manager.vm_pte_funcs->set_pte_pde((ib), (pe), (addr), (count), (incr), (flags))) |
1846 | #define amdgpu_vm_get_pte_flags(adev, flags) (adev)->gart.gart_funcs->get_vm_pte_flags((adev),(flags)) | ||
1847 | #define amdgpu_ring_parse_cs(r, p, ib) ((r)->funcs->parse_cs((p), (ib))) | 1776 | #define amdgpu_ring_parse_cs(r, p, ib) ((r)->funcs->parse_cs((p), (ib))) |
1848 | #define amdgpu_ring_test_ring(r) (r)->funcs->test_ring((r)) | 1777 | #define amdgpu_ring_test_ring(r) (r)->funcs->test_ring((r)) |
1849 | #define amdgpu_ring_test_ib(r, t) (r)->funcs->test_ib((r), (t)) | 1778 | #define amdgpu_ring_test_ib(r, t) (r)->funcs->test_ib((r), (t)) |
@@ -1856,11 +1785,11 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring) | |||
1856 | #define amdgpu_ring_emit_fence(r, addr, seq, flags) (r)->funcs->emit_fence((r), (addr), (seq), (flags)) | 1785 | #define amdgpu_ring_emit_fence(r, addr, seq, flags) (r)->funcs->emit_fence((r), (addr), (seq), (flags)) |
1857 | #define amdgpu_ring_emit_gds_switch(r, v, db, ds, wb, ws, ab, as) (r)->funcs->emit_gds_switch((r), (v), (db), (ds), (wb), (ws), (ab), (as)) | 1786 | #define amdgpu_ring_emit_gds_switch(r, v, db, ds, wb, ws, ab, as) (r)->funcs->emit_gds_switch((r), (v), (db), (ds), (wb), (ws), (ab), (as)) |
1858 | #define amdgpu_ring_emit_hdp_flush(r) (r)->funcs->emit_hdp_flush((r)) | 1787 | #define amdgpu_ring_emit_hdp_flush(r) (r)->funcs->emit_hdp_flush((r)) |
1859 | #define amdgpu_ring_emit_hdp_invalidate(r) (r)->funcs->emit_hdp_invalidate((r)) | ||
1860 | #define amdgpu_ring_emit_switch_buffer(r) (r)->funcs->emit_switch_buffer((r)) | 1788 | #define amdgpu_ring_emit_switch_buffer(r) (r)->funcs->emit_switch_buffer((r)) |
1861 | #define amdgpu_ring_emit_cntxcntl(r, d) (r)->funcs->emit_cntxcntl((r), (d)) | 1789 | #define amdgpu_ring_emit_cntxcntl(r, d) (r)->funcs->emit_cntxcntl((r), (d)) |
1862 | #define amdgpu_ring_emit_rreg(r, d) (r)->funcs->emit_rreg((r), (d)) | 1790 | #define amdgpu_ring_emit_rreg(r, d) (r)->funcs->emit_rreg((r), (d)) |
1863 | #define amdgpu_ring_emit_wreg(r, d, v) (r)->funcs->emit_wreg((r), (d), (v)) | 1791 | #define amdgpu_ring_emit_wreg(r, d, v) (r)->funcs->emit_wreg((r), (d), (v)) |
1792 | #define amdgpu_ring_emit_reg_wait(r, d, v, m) (r)->funcs->emit_reg_wait((r), (d), (v), (m)) | ||
1864 | #define amdgpu_ring_emit_tmz(r, b) (r)->funcs->emit_tmz((r), (b)) | 1793 | #define amdgpu_ring_emit_tmz(r, b) (r)->funcs->emit_tmz((r), (b)) |
1865 | #define amdgpu_ring_pad_ib(r, ib) ((r)->funcs->pad_ib((r), (ib))) | 1794 | #define amdgpu_ring_pad_ib(r, ib) ((r)->funcs->pad_ib((r), (ib))) |
1866 | #define amdgpu_ring_init_cond_exec(r) (r)->funcs->init_cond_exec((r)) | 1795 | #define amdgpu_ring_init_cond_exec(r) (r)->funcs->init_cond_exec((r)) |
@@ -1870,7 +1799,6 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring) | |||
1870 | #define amdgpu_ih_decode_iv(adev, iv) (adev)->irq.ih_funcs->decode_iv((adev), (iv)) | 1799 | #define amdgpu_ih_decode_iv(adev, iv) (adev)->irq.ih_funcs->decode_iv((adev), (iv)) |
1871 | #define amdgpu_ih_set_rptr(adev) (adev)->irq.ih_funcs->set_rptr((adev)) | 1800 | #define amdgpu_ih_set_rptr(adev) (adev)->irq.ih_funcs->set_rptr((adev)) |
1872 | #define amdgpu_display_vblank_get_counter(adev, crtc) (adev)->mode_info.funcs->vblank_get_counter((adev), (crtc)) | 1801 | #define amdgpu_display_vblank_get_counter(adev, crtc) (adev)->mode_info.funcs->vblank_get_counter((adev), (crtc)) |
1873 | #define amdgpu_display_vblank_wait(adev, crtc) (adev)->mode_info.funcs->vblank_wait((adev), (crtc)) | ||
1874 | #define amdgpu_display_backlight_set_level(adev, e, l) (adev)->mode_info.funcs->backlight_set_level((e), (l)) | 1802 | #define amdgpu_display_backlight_set_level(adev, e, l) (adev)->mode_info.funcs->backlight_set_level((e), (l)) |
1875 | #define amdgpu_display_backlight_get_level(adev, e) (adev)->mode_info.funcs->backlight_get_level((e)) | 1803 | #define amdgpu_display_backlight_get_level(adev, e) (adev)->mode_info.funcs->backlight_get_level((e)) |
1876 | #define amdgpu_display_hpd_sense(adev, h) (adev)->mode_info.funcs->hpd_sense((adev), (h)) | 1804 | #define amdgpu_display_hpd_sense(adev, h) (adev)->mode_info.funcs->hpd_sense((adev), (h)) |
@@ -1887,26 +1815,24 @@ amdgpu_get_sdma_instance(struct amdgpu_ring *ring) | |||
1887 | #define amdgpu_gfx_select_se_sh(adev, se, sh, instance) (adev)->gfx.funcs->select_se_sh((adev), (se), (sh), (instance)) | 1815 | #define amdgpu_gfx_select_se_sh(adev, se, sh, instance) (adev)->gfx.funcs->select_se_sh((adev), (se), (sh), (instance)) |
1888 | #define amdgpu_gds_switch(adev, r, v, d, w, a) (adev)->gds.funcs->patch_gds_switch((r), (v), (d), (w), (a)) | 1816 | #define amdgpu_gds_switch(adev, r, v, d, w, a) (adev)->gds.funcs->patch_gds_switch((r), (v), (d), (w), (a)) |
1889 | #define amdgpu_psp_check_fw_loading_status(adev, i) (adev)->firmware.funcs->check_fw_loading_status((adev), (i)) | 1817 | #define amdgpu_psp_check_fw_loading_status(adev, i) (adev)->firmware.funcs->check_fw_loading_status((adev), (i)) |
1818 | #define amdgpu_gfx_select_me_pipe_q(adev, me, pipe, q) (adev)->gfx.funcs->select_me_pipe_q((adev), (me), (pipe), (q)) | ||
1890 | 1819 | ||
1891 | /* Common functions */ | 1820 | /* Common functions */ |
1892 | int amdgpu_device_gpu_recover(struct amdgpu_device *adev, | 1821 | int amdgpu_device_gpu_recover(struct amdgpu_device *adev, |
1893 | struct amdgpu_job* job, bool force); | 1822 | struct amdgpu_job* job, bool force); |
1894 | void amdgpu_device_pci_config_reset(struct amdgpu_device *adev); | 1823 | void amdgpu_device_pci_config_reset(struct amdgpu_device *adev); |
1895 | bool amdgpu_device_need_post(struct amdgpu_device *adev); | 1824 | bool amdgpu_device_need_post(struct amdgpu_device *adev); |
1896 | void amdgpu_update_display_priority(struct amdgpu_device *adev); | 1825 | void amdgpu_display_update_priority(struct amdgpu_device *adev); |
1897 | 1826 | ||
1898 | void amdgpu_cs_report_moved_bytes(struct amdgpu_device *adev, u64 num_bytes, | 1827 | void amdgpu_cs_report_moved_bytes(struct amdgpu_device *adev, u64 num_bytes, |
1899 | u64 num_vis_bytes); | 1828 | u64 num_vis_bytes); |
1900 | void amdgpu_ttm_placement_from_domain(struct amdgpu_bo *abo, u32 domain); | 1829 | void amdgpu_ttm_placement_from_domain(struct amdgpu_bo *abo, u32 domain); |
1901 | bool amdgpu_ttm_bo_is_amdgpu_bo(struct ttm_buffer_object *bo); | 1830 | bool amdgpu_ttm_bo_is_amdgpu_bo(struct ttm_buffer_object *bo); |
1902 | void amdgpu_device_vram_location(struct amdgpu_device *adev, | 1831 | void amdgpu_device_vram_location(struct amdgpu_device *adev, |
1903 | struct amdgpu_mc *mc, u64 base); | 1832 | struct amdgpu_gmc *mc, u64 base); |
1904 | void amdgpu_device_gart_location(struct amdgpu_device *adev, | 1833 | void amdgpu_device_gart_location(struct amdgpu_device *adev, |
1905 | struct amdgpu_mc *mc); | 1834 | struct amdgpu_gmc *mc); |
1906 | int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev); | 1835 | int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev); |
1907 | void amdgpu_ttm_set_active_vram_size(struct amdgpu_device *adev, u64 size); | ||
1908 | int amdgpu_ttm_init(struct amdgpu_device *adev); | ||
1909 | void amdgpu_ttm_fini(struct amdgpu_device *adev); | ||
1910 | void amdgpu_device_program_register_sequence(struct amdgpu_device *adev, | 1836 | void amdgpu_device_program_register_sequence(struct amdgpu_device *adev, |
1911 | const u32 *registers, | 1837 | const u32 *registers, |
1912 | const u32 array_size); | 1838 | const u32 array_size); |