amdgpu.h (6670ee2ef219ac9e1c836a277dda0c949ad8b1ff) amdgpu.h (8a791dabea181607f27aacb89c5e75a2eaaf0586)
1/*
2 * Copyright 2008 Advanced Micro Devices, Inc.
3 * Copyright 2008 Red Hat Inc.
4 * Copyright 2009 Jerome Glisse.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation

--- 14 unchanged lines hidden (view full) ---

23 *
24 * Authors: Dave Airlie
25 * Alex Deucher
26 * Jerome Glisse
27 */
28#ifndef __AMDGPU_H__
29#define __AMDGPU_H__
30
1/*
2 * Copyright 2008 Advanced Micro Devices, Inc.
3 * Copyright 2008 Red Hat Inc.
4 * Copyright 2009 Jerome Glisse.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation

--- 14 unchanged lines hidden (view full) ---

23 *
24 * Authors: Dave Airlie
25 * Alex Deucher
26 * Jerome Glisse
27 */
28#ifndef __AMDGPU_H__
29#define __AMDGPU_H__
30
31#ifdef pr_fmt
32#undef pr_fmt
33#endif
34
35#define pr_fmt(fmt) "amdgpu: " fmt
36
37#ifdef dev_fmt
38#undef dev_fmt
39#endif
40
41#define dev_fmt(fmt) "amdgpu: " fmt
42
31#include "amdgpu_ctx.h"
32
33#include <linux/atomic.h>
34#include <linux/wait.h>
35#include <linux/list.h>
36#include <linux/kref.h>
37#include <linux/rbtree.h>
38#include <linux/hashtable.h>

--- 117 unchanged lines hidden (view full) ---

156extern uint amdgpu_force_long_training;
157extern int amdgpu_job_hang_limit;
158extern int amdgpu_lbpw;
159extern int amdgpu_compute_multipipe;
160extern int amdgpu_gpu_recovery;
161extern int amdgpu_emu_mode;
162extern uint amdgpu_smu_memory_pool_size;
163extern uint amdgpu_dc_feature_mask;
43#include "amdgpu_ctx.h"
44
45#include <linux/atomic.h>
46#include <linux/wait.h>
47#include <linux/list.h>
48#include <linux/kref.h>
49#include <linux/rbtree.h>
50#include <linux/hashtable.h>

--- 117 unchanged lines hidden (view full) ---

168extern uint amdgpu_force_long_training;
169extern int amdgpu_job_hang_limit;
170extern int amdgpu_lbpw;
171extern int amdgpu_compute_multipipe;
172extern int amdgpu_gpu_recovery;
173extern int amdgpu_emu_mode;
174extern uint amdgpu_smu_memory_pool_size;
175extern uint amdgpu_dc_feature_mask;
176extern uint amdgpu_dc_debug_mask;
164extern uint amdgpu_dm_abm_level;
165extern struct amdgpu_mgpu_info mgpu_info;
166extern int amdgpu_ras_enable;
167extern uint amdgpu_ras_mask;
168extern int amdgpu_async_gfx_ring;
169extern int amdgpu_mcbp;
170extern int amdgpu_discovery;
171extern int amdgpu_mes;
172extern int amdgpu_noretry;
173extern int amdgpu_force_asic_type;
174#ifdef CONFIG_HSA_AMD
175extern int sched_policy;
176#else
177static const int sched_policy = KFD_SCHED_POLICY_HWS;
178#endif
179
177extern uint amdgpu_dm_abm_level;
178extern struct amdgpu_mgpu_info mgpu_info;
179extern int amdgpu_ras_enable;
180extern uint amdgpu_ras_mask;
181extern int amdgpu_async_gfx_ring;
182extern int amdgpu_mcbp;
183extern int amdgpu_discovery;
184extern int amdgpu_mes;
185extern int amdgpu_noretry;
186extern int amdgpu_force_asic_type;
187#ifdef CONFIG_HSA_AMD
188extern int sched_policy;
189#else
190static const int sched_policy = KFD_SCHED_POLICY_HWS;
191#endif
192
193extern int amdgpu_tmz;
194
180#ifdef CONFIG_DRM_AMDGPU_SI
181extern int amdgpu_si_support;
182#endif
183#ifdef CONFIG_DRM_AMDGPU_CIK
184extern int amdgpu_cik_support;
185#endif
186
187#define AMDGPU_VM_MAX_NUM_CTX 4096
188#define AMDGPU_SG_THRESHOLD (256*1024*1024)
189#define AMDGPU_DEFAULT_GTT_SIZE_MB 3072ULL /* 3GB by default */
190#define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS 3000
191#define AMDGPU_MAX_USEC_TIMEOUT 100000 /* 100 ms */
192#define AMDGPU_FENCE_JIFFIES_TIMEOUT (HZ / 2)
195#ifdef CONFIG_DRM_AMDGPU_SI
196extern int amdgpu_si_support;
197#endif
198#ifdef CONFIG_DRM_AMDGPU_CIK
199extern int amdgpu_cik_support;
200#endif
201
202#define AMDGPU_VM_MAX_NUM_CTX 4096
203#define AMDGPU_SG_THRESHOLD (256*1024*1024)
204#define AMDGPU_DEFAULT_GTT_SIZE_MB 3072ULL /* 3GB by default */
205#define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS 3000
206#define AMDGPU_MAX_USEC_TIMEOUT 100000 /* 100 ms */
207#define AMDGPU_FENCE_JIFFIES_TIMEOUT (HZ / 2)
193/* AMDGPU_IB_POOL_SIZE must be a power of 2 */
194#define AMDGPU_IB_POOL_SIZE 16
195#define AMDGPU_DEBUGFS_MAX_COMPONENTS 32
196#define AMDGPUFB_CONN_LIMIT 4
197#define AMDGPU_BIOS_NUM_SCRATCH 16
198
199/* hard reset data */
200#define AMDGPU_ASIC_RESET_DATA 0x39d5e86b
201
202/* reset flags */

--- 231 unchanged lines hidden (view full) ---

434 struct mutex bo_list_lock;
435 struct idr bo_list_handles;
436 struct amdgpu_ctx_mgr ctx_mgr;
437};
438
439int amdgpu_file_to_fpriv(struct file *filp, struct amdgpu_fpriv **fpriv);
440
441int amdgpu_ib_get(struct amdgpu_device *adev, struct amdgpu_vm *vm,
208#define AMDGPU_DEBUGFS_MAX_COMPONENTS 32
209#define AMDGPUFB_CONN_LIMIT 4
210#define AMDGPU_BIOS_NUM_SCRATCH 16
211
212/* hard reset data */
213#define AMDGPU_ASIC_RESET_DATA 0x39d5e86b
214
215/* reset flags */

--- 231 unchanged lines hidden (view full) ---

447 struct mutex bo_list_lock;
448 struct idr bo_list_handles;
449 struct amdgpu_ctx_mgr ctx_mgr;
450};
451
452int amdgpu_file_to_fpriv(struct file *filp, struct amdgpu_fpriv **fpriv);
453
454int amdgpu_ib_get(struct amdgpu_device *adev, struct amdgpu_vm *vm,
442 unsigned size, struct amdgpu_ib *ib);
455 unsigned size,
456 enum amdgpu_ib_pool_type pool,
457 struct amdgpu_ib *ib);
443void amdgpu_ib_free(struct amdgpu_device *adev, struct amdgpu_ib *ib,
444 struct dma_fence *f);
445int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
446 struct amdgpu_ib *ibs, struct amdgpu_job *job,
447 struct dma_fence **f);
448int amdgpu_ib_pool_init(struct amdgpu_device *adev);
449void amdgpu_ib_pool_fini(struct amdgpu_device *adev);
450int amdgpu_ib_ring_tests(struct amdgpu_device *adev);

--- 56 unchanged lines hidden (view full) ---

507 uint32_t value)
508{
509 p->job->ibs[ib_idx].ptr[idx] = value;
510}
511
512/*
513 * Writeback
514 */
458void amdgpu_ib_free(struct amdgpu_device *adev, struct amdgpu_ib *ib,
459 struct dma_fence *f);
460int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
461 struct amdgpu_ib *ibs, struct amdgpu_job *job,
462 struct dma_fence **f);
463int amdgpu_ib_pool_init(struct amdgpu_device *adev);
464void amdgpu_ib_pool_fini(struct amdgpu_device *adev);
465int amdgpu_ib_ring_tests(struct amdgpu_device *adev);

--- 56 unchanged lines hidden (view full) ---

522 uint32_t value)
523{
524 p->job->ibs[ib_idx].ptr[idx] = value;
525}
526
527/*
528 * Writeback
529 */
515#define AMDGPU_MAX_WB 128 /* Reserve at most 128 WB slots for amdgpu-owned rings. */
530#define AMDGPU_MAX_WB 256 /* Reserve at most 256 WB slots for amdgpu-owned rings. */
516
517struct amdgpu_wb {
518 struct amdgpu_bo *wb_obj;
519 volatile uint32_t *wb;
520 uint64_t gpu_addr;
521 u32 num_wb; /* Number of wb slots actually reserved for amdgpu. */
522 unsigned long used[DIV_ROUND_UP(AMDGPU_MAX_WB, BITS_PER_LONG)];
523};

--- 222 unchanged lines hidden (view full) ---

746 bool have_disp_power_ref;
747 bool have_atomics_support;
748
749 /* BIOS */
750 bool is_atom_fw;
751 uint8_t *bios;
752 uint32_t bios_size;
753 struct amdgpu_bo *stolen_vga_memory;
531
532struct amdgpu_wb {
533 struct amdgpu_bo *wb_obj;
534 volatile uint32_t *wb;
535 uint64_t gpu_addr;
536 u32 num_wb; /* Number of wb slots actually reserved for amdgpu. */
537 unsigned long used[DIV_ROUND_UP(AMDGPU_MAX_WB, BITS_PER_LONG)];
538};

--- 222 unchanged lines hidden (view full) ---

761 bool have_disp_power_ref;
762 bool have_atomics_support;
763
764 /* BIOS */
765 bool is_atom_fw;
766 uint8_t *bios;
767 uint32_t bios_size;
768 struct amdgpu_bo *stolen_vga_memory;
754 struct amdgpu_bo *discovery_memory;
755 uint32_t bios_scratch_reg_offset;
756 uint32_t bios_scratch[AMDGPU_BIOS_NUM_SCRATCH];
757
758 /* Register/doorbell mmio */
759 resource_size_t rmmio_base;
760 resource_size_t rmmio_size;
761 void __iomem *rmmio;
762 /* protects concurrent MM_INDEX/DATA based register access */

--- 75 unchanged lines hidden (view full) ---

838 struct amdgpu_irq_src pageflip_irq;
839 struct amdgpu_irq_src hpd_irq;
840
841 /* rings */
842 u64 fence_context;
843 unsigned num_rings;
844 struct amdgpu_ring *rings[AMDGPU_MAX_RINGS];
845 bool ib_pool_ready;
769 uint32_t bios_scratch_reg_offset;
770 uint32_t bios_scratch[AMDGPU_BIOS_NUM_SCRATCH];
771
772 /* Register/doorbell mmio */
773 resource_size_t rmmio_base;
774 resource_size_t rmmio_size;
775 void __iomem *rmmio;
776 /* protects concurrent MM_INDEX/DATA based register access */

--- 75 unchanged lines hidden (view full) ---

852 struct amdgpu_irq_src pageflip_irq;
853 struct amdgpu_irq_src hpd_irq;
854
855 /* rings */
856 u64 fence_context;
857 unsigned num_rings;
858 struct amdgpu_ring *rings[AMDGPU_MAX_RINGS];
859 bool ib_pool_ready;
846 struct amdgpu_sa_manager ring_tmp_bo;
860 struct amdgpu_sa_manager ib_pools[AMDGPU_IB_POOL_MAX];
861 struct amdgpu_sched gpu_sched[AMDGPU_HW_IP_NUM][AMDGPU_RING_PRIO_MAX];
847
848 /* interrupts */
849 struct amdgpu_irq irq;
850
851 /* powerplay */
852 struct amd_powerplay powerplay;
853 bool pp_force_state_enabled;
854

--- 43 unchanged lines hidden (view full) ---

898
899 /* UMC */
900 struct amdgpu_umc umc;
901
902 /* display related functionality */
903 struct amdgpu_display_manager dm;
904
905 /* discovery */
862
863 /* interrupts */
864 struct amdgpu_irq irq;
865
866 /* powerplay */
867 struct amd_powerplay powerplay;
868 bool pp_force_state_enabled;
869

--- 43 unchanged lines hidden (view full) ---

913
914 /* UMC */
915 struct amdgpu_umc umc;
916
917 /* display related functionality */
918 struct amdgpu_display_manager dm;
919
920 /* discovery */
906 uint8_t *discovery;
921 uint8_t *discovery_bin;
922 uint32_t discovery_tmr_size;
923 struct amdgpu_bo *discovery_memory;
907
908 /* mes */
909 bool enable_mes;
910 struct amdgpu_mes mes;
911
912 /* df */
913 struct amdgpu_df df;
914
915 struct amdgpu_ip_block ip_blocks[AMDGPU_MAX_IP_NUM];
916 int num_ip_blocks;
917 struct mutex mn_lock;
918 DECLARE_HASHTABLE(mn_hash, 7);
919
920 /* tracking pinned memory */
921 atomic64_t vram_pin_size;
922 atomic64_t visible_pin_size;
923 atomic64_t gart_pin_size;
924
925 /* soc15 register offset based on ip, instance and segment */
924
925 /* mes */
926 bool enable_mes;
927 struct amdgpu_mes mes;
928
929 /* df */
930 struct amdgpu_df df;
931
932 struct amdgpu_ip_block ip_blocks[AMDGPU_MAX_IP_NUM];
933 int num_ip_blocks;
934 struct mutex mn_lock;
935 DECLARE_HASHTABLE(mn_hash, 7);
936
937 /* tracking pinned memory */
938 atomic64_t vram_pin_size;
939 atomic64_t visible_pin_size;
940 atomic64_t gart_pin_size;
941
942 /* soc15 register offset based on ip, instance and segment */
926 uint32_t *reg_offset[MAX_HWIP][HWIP_MAX_INSTANCE];
943 uint32_t *reg_offset[MAX_HWIP][HWIP_MAX_INSTANCE];
927
928 /* delayed work_func for deferring clockgating during resume */
929 struct delayed_work delayed_init_work;
930
931 struct amdgpu_virt virt;
932 /* firmware VRAM reservation */
933 struct amdgpu_fw_vram_usage fw_vram_usage;
934
935 /* link all shadow bo */
936 struct list_head shadow_list;
937 struct mutex shadow_list_lock;
944
945 /* delayed work_func for deferring clockgating during resume */
946 struct delayed_work delayed_init_work;
947
948 struct amdgpu_virt virt;
949 /* firmware VRAM reservation */
950 struct amdgpu_fw_vram_usage fw_vram_usage;
951
952 /* link all shadow bo */
953 struct list_head shadow_list;
954 struct mutex shadow_list_lock;
938 /* keep an lru list of rings by HW IP */
939 struct list_head ring_lru_list;
940 spinlock_t ring_lru_list_lock;
941
942 /* record hw reset is performed */
943 bool has_hw_reset;
944 u8 reset_magic[AMDGPU_RESET_MAGIC_NUM];
945
946 /* s3/s4 mask */
947 bool in_suspend;
948 bool in_hibernate;
949
955
956 /* record hw reset is performed */
957 bool has_hw_reset;
958 u8 reset_magic[AMDGPU_RESET_MAGIC_NUM];
959
960 /* s3/s4 mask */
961 bool in_suspend;
962 bool in_hibernate;
963
950 /* record last mm index being written through WREG32*/
951 unsigned long last_mm_index;
952 bool in_gpu_reset;
953 enum pp_mp1_state mp1_state;
954 struct mutex lock_reset;
955 struct amdgpu_doorbell_index doorbell_index;
956
957 struct mutex notifier_lock;
958
959 int asic_reset_res;
960 struct work_struct xgmi_reset_work;
961
962 long gfx_timeout;
963 long sdma_timeout;
964 long video_timeout;
965 long compute_timeout;
966
967 uint64_t unique_id;
968 uint64_t df_perfmon_config_assign_mask[AMDGPU_MAX_DF_PERFMONS];
969
964 bool in_gpu_reset;
965 enum pp_mp1_state mp1_state;
966 struct mutex lock_reset;
967 struct amdgpu_doorbell_index doorbell_index;
968
969 struct mutex notifier_lock;
970
971 int asic_reset_res;
972 struct work_struct xgmi_reset_work;
973
974 long gfx_timeout;
975 long sdma_timeout;
976 long video_timeout;
977 long compute_timeout;
978
979 uint64_t unique_id;
980 uint64_t df_perfmon_config_assign_mask[AMDGPU_MAX_DF_PERFMONS];
981
970 /* device pstate */
971 int pstate;
972 /* enable runtime pm on the device */
973 bool runpm;
974 bool in_runpm;
975
976 bool pm_sysfs_en;
977 bool ucode_sysfs_en;
982 /* enable runtime pm on the device */
983 bool runpm;
984 bool in_runpm;
985
986 bool pm_sysfs_en;
987 bool ucode_sysfs_en;
988
989 /* Chip product information */
990 char product_number[16];
991 char product_name[32];
992 char serial[16];
993
994 struct amdgpu_autodump autodump;
978};
979
980static inline struct amdgpu_device *amdgpu_ttm_adev(struct ttm_bo_device *bdev)
981{
982 return container_of(bdev, struct amdgpu_device, mman.bdev);
983}
984
985int amdgpu_device_init(struct amdgpu_device *adev,
986 struct drm_device *ddev,
987 struct pci_dev *pdev,
988 uint32_t flags);
989void amdgpu_device_fini(struct amdgpu_device *adev);
990int amdgpu_gpu_wait_for_idle(struct amdgpu_device *adev);
991
992void amdgpu_device_vram_access(struct amdgpu_device *adev, loff_t pos,
993 uint32_t *buf, size_t size, bool write);
995};
996
997static inline struct amdgpu_device *amdgpu_ttm_adev(struct ttm_bo_device *bdev)
998{
999 return container_of(bdev, struct amdgpu_device, mman.bdev);
1000}
1001
1002int amdgpu_device_init(struct amdgpu_device *adev,
1003 struct drm_device *ddev,
1004 struct pci_dev *pdev,
1005 uint32_t flags);
1006void amdgpu_device_fini(struct amdgpu_device *adev);
1007int amdgpu_gpu_wait_for_idle(struct amdgpu_device *adev);
1008
1009void amdgpu_device_vram_access(struct amdgpu_device *adev, loff_t pos,
1010 uint32_t *buf, size_t size, bool write);
994uint32_t amdgpu_mm_rreg(struct amdgpu_device *adev, uint32_t reg,
1011uint32_t amdgpu_device_rreg(struct amdgpu_device *adev, uint32_t reg,
1012 uint32_t acc_flags);
1013void amdgpu_device_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v,
995 uint32_t acc_flags);
1014 uint32_t acc_flags);
996void amdgpu_mm_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v,
997 uint32_t acc_flags);
998void amdgpu_mm_wreg_mmio_rlc(struct amdgpu_device *adev, uint32_t reg, uint32_t v,
999 uint32_t acc_flags);
1000void amdgpu_mm_wreg8(struct amdgpu_device *adev, uint32_t offset, uint8_t value);
1001uint8_t amdgpu_mm_rreg8(struct amdgpu_device *adev, uint32_t offset);
1002
1003u32 amdgpu_io_rreg(struct amdgpu_device *adev, u32 reg);
1004void amdgpu_io_wreg(struct amdgpu_device *adev, u32 reg, u32 v);
1005
1006bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type);
1007bool amdgpu_device_has_dc_support(struct amdgpu_device *adev);
1008
1009int emu_soc_asic_init(struct amdgpu_device *adev);
1010
1011/*
1012 * Registers read & write functions.
1013 */
1015void amdgpu_mm_wreg_mmio_rlc(struct amdgpu_device *adev, uint32_t reg, uint32_t v,
1016 uint32_t acc_flags);
1017void amdgpu_mm_wreg8(struct amdgpu_device *adev, uint32_t offset, uint8_t value);
1018uint8_t amdgpu_mm_rreg8(struct amdgpu_device *adev, uint32_t offset);
1019
1020u32 amdgpu_io_rreg(struct amdgpu_device *adev, u32 reg);
1021void amdgpu_io_wreg(struct amdgpu_device *adev, u32 reg, u32 v);
1022
1023bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type);
1024bool amdgpu_device_has_dc_support(struct amdgpu_device *adev);
1025
1026int emu_soc_asic_init(struct amdgpu_device *adev);
1027
1028/*
1029 * Registers read & write functions.
1030 */
1014
1015#define AMDGPU_REGS_IDX (1<<0)
1016#define AMDGPU_REGS_NO_KIQ (1<<1)
1031#define AMDGPU_REGS_NO_KIQ (1<<1)
1017#define AMDGPU_REGS_KIQ (1<<2)
1018
1032
1019#define RREG32_NO_KIQ(reg) amdgpu_mm_rreg(adev, (reg), AMDGPU_REGS_NO_KIQ)
1020#define WREG32_NO_KIQ(reg, v) amdgpu_mm_wreg(adev, (reg), (v), AMDGPU_REGS_NO_KIQ)
1033#define RREG32_NO_KIQ(reg) amdgpu_device_rreg(adev, (reg), AMDGPU_REGS_NO_KIQ)
1034#define WREG32_NO_KIQ(reg, v) amdgpu_device_wreg(adev, (reg), (v), AMDGPU_REGS_NO_KIQ)
1021
1035
1022#define RREG32_KIQ(reg) amdgpu_mm_rreg(adev, (reg), AMDGPU_REGS_KIQ)
1023#define WREG32_KIQ(reg, v) amdgpu_mm_wreg(adev, (reg), (v), AMDGPU_REGS_KIQ)
1036#define RREG32_KIQ(reg) amdgpu_kiq_rreg(adev, (reg))
1037#define WREG32_KIQ(reg, v) amdgpu_kiq_wreg(adev, (reg), (v))
1024
1025#define RREG8(reg) amdgpu_mm_rreg8(adev, (reg))
1026#define WREG8(reg, v) amdgpu_mm_wreg8(adev, (reg), (v))
1027
1038
1039#define RREG8(reg) amdgpu_mm_rreg8(adev, (reg))
1040#define WREG8(reg, v) amdgpu_mm_wreg8(adev, (reg), (v))
1041
1028#define RREG32(reg) amdgpu_mm_rreg(adev, (reg), 0)
1029#define RREG32_IDX(reg) amdgpu_mm_rreg(adev, (reg), AMDGPU_REGS_IDX)
1030#define DREG32(reg) printk(KERN_INFO "REGISTER: " #reg " : 0x%08X\n", amdgpu_mm_rreg(adev, (reg), 0))
1031#define WREG32(reg, v) amdgpu_mm_wreg(adev, (reg), (v), 0)
1032#define WREG32_IDX(reg, v) amdgpu_mm_wreg(adev, (reg), (v), AMDGPU_REGS_IDX)
1042#define RREG32(reg) amdgpu_device_rreg(adev, (reg), 0)
1043#define DREG32(reg) printk(KERN_INFO "REGISTER: " #reg " : 0x%08X\n", amdgpu_device_rreg(adev, (reg), 0))
1044#define WREG32(reg, v) amdgpu_device_wreg(adev, (reg), (v), 0)
1033#define REG_SET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK)
1034#define REG_GET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK)
1035#define RREG32_PCIE(reg) adev->pcie_rreg(adev, (reg))
1036#define WREG32_PCIE(reg, v) adev->pcie_wreg(adev, (reg), (v))
1037#define RREG32_PCIE_PORT(reg) adev->pciep_rreg(adev, (reg))
1038#define WREG32_PCIE_PORT(reg, v) adev->pciep_wreg(adev, (reg), (v))
1039#define RREG64_PCIE(reg) adev->pcie_rreg64(adev, (reg))
1040#define WREG64_PCIE(reg, v) adev->pcie_wreg64(adev, (reg), (v))

--- 20 unchanged lines hidden (view full) ---

1061#define WREG32_OR(reg, or) WREG32_P(reg, or, ~(or))
1062#define WREG32_PLL_P(reg, val, mask) \
1063 do { \
1064 uint32_t tmp_ = RREG32_PLL(reg); \
1065 tmp_ &= (mask); \
1066 tmp_ |= ((val) & ~(mask)); \
1067 WREG32_PLL(reg, tmp_); \
1068 } while (0)
1045#define REG_SET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK)
1046#define REG_GET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK)
1047#define RREG32_PCIE(reg) adev->pcie_rreg(adev, (reg))
1048#define WREG32_PCIE(reg, v) adev->pcie_wreg(adev, (reg), (v))
1049#define RREG32_PCIE_PORT(reg) adev->pciep_rreg(adev, (reg))
1050#define WREG32_PCIE_PORT(reg, v) adev->pciep_wreg(adev, (reg), (v))
1051#define RREG64_PCIE(reg) adev->pcie_rreg64(adev, (reg))
1052#define WREG64_PCIE(reg, v) adev->pcie_wreg64(adev, (reg), (v))

--- 20 unchanged lines hidden (view full) ---

1073#define WREG32_OR(reg, or) WREG32_P(reg, or, ~(or))
1074#define WREG32_PLL_P(reg, val, mask) \
1075 do { \
1076 uint32_t tmp_ = RREG32_PLL(reg); \
1077 tmp_ &= (mask); \
1078 tmp_ |= ((val) & ~(mask)); \
1079 WREG32_PLL(reg, tmp_); \
1080 } while (0)
1069#define DREG32_SYS(sqf, adev, reg) seq_printf((sqf), #reg " : 0x%08X\n", amdgpu_mm_rreg((adev), (reg), false))
1081#define DREG32_SYS(sqf, adev, reg) seq_printf((sqf), #reg " : 0x%08X\n", amdgpu_device_rreg((adev), (reg), false))
1070#define RREG32_IO(reg) amdgpu_io_rreg(adev, (reg))
1071#define WREG32_IO(reg, v) amdgpu_io_wreg(adev, (reg), (v))
1072
1073#define REG_FIELD_SHIFT(reg, field) reg##__##field##__SHIFT
1074#define REG_FIELD_MASK(reg, field) reg##__##field##_MASK
1075
1076#define REG_SET_FIELD(orig_val, reg, field, field_val) \
1077 (((orig_val) & ~REG_FIELD_MASK(reg, field)) | \

--- 166 unchanged lines hidden (view full) ---

1244 char *page) \
1245{ \
1246 BUILD_BUG_ON(sizeof(_object) >= PAGE_SIZE - 1); \
1247 return sprintf(page, _object "\n"); \
1248} \
1249 \
1250static struct device_attribute pmu_attr_##_name = __ATTR_RO(_name)
1251
1082#define RREG32_IO(reg) amdgpu_io_rreg(adev, (reg))
1083#define WREG32_IO(reg, v) amdgpu_io_wreg(adev, (reg), (v))
1084
1085#define REG_FIELD_SHIFT(reg, field) reg##__##field##__SHIFT
1086#define REG_FIELD_MASK(reg, field) reg##__##field##_MASK
1087
1088#define REG_SET_FIELD(orig_val, reg, field, field_val) \
1089 (((orig_val) & ~REG_FIELD_MASK(reg, field)) | \

--- 166 unchanged lines hidden (view full) ---

1256 char *page) \
1257{ \
1258 BUILD_BUG_ON(sizeof(_object) >= PAGE_SIZE - 1); \
1259 return sprintf(page, _object "\n"); \
1260} \
1261 \
1262static struct device_attribute pmu_attr_##_name = __ATTR_RO(_name)
1263
1252#endif
1264static inline bool amdgpu_is_tmz(struct amdgpu_device *adev)
1265{
1266 return adev->gmc.tmz_enabled;
1267}
1253
1268
1269#endif