aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu.h')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h154
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;
127extern int amdgpu_lbpw; 128extern int amdgpu_lbpw;
128extern int amdgpu_compute_multipipe; 129extern int amdgpu_compute_multipipe;
129extern int amdgpu_gpu_recovery; 130extern int amdgpu_gpu_recovery;
131extern int amdgpu_emu_mode;
130 132
131#ifdef CONFIG_DRM_AMDGPU_SI 133#ifdef CONFIG_DRM_AMDGPU_SI
132extern int amdgpu_si_support; 134extern 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
186struct amdgpu_device; 184struct amdgpu_device;
187struct amdgpu_ib; 185struct amdgpu_ib;
188struct amdgpu_cs_parser; 186struct 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 */
336struct 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 */
358struct amdgpu_ih_funcs { 327struct 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);
371bool amdgpu_read_bios(struct amdgpu_device *adev); 340bool amdgpu_read_bios(struct amdgpu_device *adev);
372 341
373/* 342/*
374 * Dummy page
375 */
376struct 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,
418struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev, 379struct 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);
421int amdgpu_gem_prime_pin(struct drm_gem_object *obj); 382struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev,
422void amdgpu_gem_prime_unpin(struct drm_gem_object *obj); 383 struct dma_buf *dma_buf);
423struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *); 384struct reservation_object *amdgpu_gem_prime_res_obj(struct drm_gem_object *);
424void *amdgpu_gem_prime_vmap(struct drm_gem_object *obj); 385void *amdgpu_gem_prime_vmap(struct drm_gem_object *obj);
425void amdgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr); 386void amdgpu_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr);
@@ -480,7 +441,7 @@ struct amdgpu_sa_bo {
480void amdgpu_gem_force_release(struct amdgpu_device *adev); 441void amdgpu_gem_force_release(struct amdgpu_device *adev);
481int amdgpu_gem_object_create(struct amdgpu_device *adev, unsigned long size, 442int 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);
494void amdgpu_fence_slab_fini(void); 455void amdgpu_fence_slab_fini(void);
495 456
496/* 457/*
497 * VMHUB structures, functions & helpers
498 */
499struct 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 */
512struct 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 */
549typedef enum _AMDGPU_DOORBELL_ASSIGNMENT 460typedef 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
984struct amdgpu_ngg_buf { 896struct 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 {
1169int amdgpu_device_wb_get(struct amdgpu_device *adev, u32 *wb); 1082int amdgpu_device_wb_get(struct amdgpu_device *adev, u32 *wb);
1170void amdgpu_device_wb_free(struct amdgpu_device *adev, u32 wb); 1083void amdgpu_device_wb_free(struct amdgpu_device *adev, u32 wb);
1171 1084
1172void 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
1480struct amd_powerplay { 1398struct 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);
1715void amdgpu_mm_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v, 1632void amdgpu_mm_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v,
1716 uint32_t acc_flags); 1633 uint32_t acc_flags);
1634void amdgpu_mm_wreg8(struct amdgpu_device *adev, uint32_t offset, uint8_t value);
1635uint8_t amdgpu_mm_rreg8(struct amdgpu_device *adev, uint32_t offset);
1636
1717u32 amdgpu_io_rreg(struct amdgpu_device *adev, u32 reg); 1637u32 amdgpu_io_rreg(struct amdgpu_device *adev, u32 reg);
1718void amdgpu_io_wreg(struct amdgpu_device *adev, u32 reg, u32 v); 1638void 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);
1725bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type); 1645bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type);
1726bool amdgpu_device_has_dc_support(struct amdgpu_device *adev); 1646bool amdgpu_device_has_dc_support(struct amdgpu_device *adev);
1727 1647
1648int 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 */
1892int amdgpu_device_gpu_recover(struct amdgpu_device *adev, 1821int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
1893 struct amdgpu_job* job, bool force); 1822 struct amdgpu_job* job, bool force);
1894void amdgpu_device_pci_config_reset(struct amdgpu_device *adev); 1823void amdgpu_device_pci_config_reset(struct amdgpu_device *adev);
1895bool amdgpu_device_need_post(struct amdgpu_device *adev); 1824bool amdgpu_device_need_post(struct amdgpu_device *adev);
1896void amdgpu_update_display_priority(struct amdgpu_device *adev); 1825void amdgpu_display_update_priority(struct amdgpu_device *adev);
1897 1826
1898void amdgpu_cs_report_moved_bytes(struct amdgpu_device *adev, u64 num_bytes, 1827void amdgpu_cs_report_moved_bytes(struct amdgpu_device *adev, u64 num_bytes,
1899 u64 num_vis_bytes); 1828 u64 num_vis_bytes);
1900void amdgpu_ttm_placement_from_domain(struct amdgpu_bo *abo, u32 domain); 1829void amdgpu_ttm_placement_from_domain(struct amdgpu_bo *abo, u32 domain);
1901bool amdgpu_ttm_bo_is_amdgpu_bo(struct ttm_buffer_object *bo); 1830bool amdgpu_ttm_bo_is_amdgpu_bo(struct ttm_buffer_object *bo);
1902void amdgpu_device_vram_location(struct amdgpu_device *adev, 1831void amdgpu_device_vram_location(struct amdgpu_device *adev,
1903 struct amdgpu_mc *mc, u64 base); 1832 struct amdgpu_gmc *mc, u64 base);
1904void amdgpu_device_gart_location(struct amdgpu_device *adev, 1833void amdgpu_device_gart_location(struct amdgpu_device *adev,
1905 struct amdgpu_mc *mc); 1834 struct amdgpu_gmc *mc);
1906int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev); 1835int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev);
1907void amdgpu_ttm_set_active_vram_size(struct amdgpu_device *adev, u64 size);
1908int amdgpu_ttm_init(struct amdgpu_device *adev);
1909void amdgpu_ttm_fini(struct amdgpu_device *adev);
1910void amdgpu_device_program_register_sequence(struct amdgpu_device *adev, 1836void 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);