Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: add asic callback to get memsize register

Newer asics use different registers so abstract it.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

+23 -1
+3
drivers/gpu/drm/amd/amdgpu/amdgpu.h
··· 1221 1221 /* static power management */ 1222 1222 int (*get_pcie_lanes)(struct amdgpu_device *adev); 1223 1223 void (*set_pcie_lanes)(struct amdgpu_device *adev, int lanes); 1224 + /* get config memsize register */ 1225 + u32 (*get_config_memsize)(struct amdgpu_device *adev); 1224 1226 }; 1225 1227 1226 1228 /* ··· 1682 1680 #define amdgpu_asic_read_disabled_bios(adev) (adev)->asic_funcs->read_disabled_bios((adev)) 1683 1681 #define amdgpu_asic_read_bios_from_rom(adev, b, l) (adev)->asic_funcs->read_bios_from_rom((adev), (b), (l)) 1684 1682 #define amdgpu_asic_read_register(adev, se, sh, offset, v)((adev)->asic_funcs->read_register((adev), (se), (sh), (offset), (v))) 1683 + #define amdgpu_asic_get_config_memsize(adev) (adev)->asic_funcs->get_config_memsize((adev)) 1685 1684 #define amdgpu_gart_flush_gpu_tlb(adev, vmid) (adev)->gart.gart_funcs->flush_gpu_tlb((adev), (vmid)) 1686 1685 #define amdgpu_gart_set_pte_pde(adev, pt, idx, addr, flags) (adev)->gart.gart_funcs->set_pte_pde((adev), (pt), (idx), (addr), (flags)) 1687 1686 #define amdgpu_vm_copy_pte(adev, ib, pe, src, count) ((adev)->vm_manager.vm_pte_funcs->copy_pte((ib), (pe), (src), (count)))
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
··· 713 713 return true; 714 714 } 715 715 /* then check MEM_SIZE, in case the crtcs are off */ 716 - reg = RREG32(mmCONFIG_MEMSIZE); 716 + reg = amdgpu_asic_get_config_memsize(adev); 717 717 718 718 if (reg) 719 719 return false;
+6
drivers/gpu/drm/amd/amdgpu/cik.c
··· 1212 1212 return r; 1213 1213 } 1214 1214 1215 + static u32 cik_get_config_memsize(struct amdgpu_device *adev) 1216 + { 1217 + return RREG32(mmCONFIG_MEMSIZE); 1218 + } 1219 + 1215 1220 static int cik_set_uvd_clock(struct amdgpu_device *adev, u32 clock, 1216 1221 u32 cntl_reg, u32 status_reg) 1217 1222 { ··· 1646 1641 .get_xclk = &cik_get_xclk, 1647 1642 .set_uvd_clocks = &cik_set_uvd_clocks, 1648 1643 .set_vce_clocks = &cik_set_vce_clocks, 1644 + .get_config_memsize = &cik_get_config_memsize, 1649 1645 }; 1650 1646 1651 1647 static int cik_common_early_init(void *handle)
+7
drivers/gpu/drm/amd/amdgpu/si.c
··· 45 45 #include "gmc/gmc_6_0_d.h" 46 46 #include "dce/dce_6_0_d.h" 47 47 #include "uvd/uvd_4_0_d.h" 48 + #include "bif/bif_3_0_d.h" 48 49 49 50 static const u32 tahiti_golden_registers[] = 50 51 { ··· 1156 1155 return 0; 1157 1156 } 1158 1157 1158 + static u32 si_get_config_memsize(struct amdgpu_device *adev) 1159 + { 1160 + return RREG32(mmCONFIG_MEMSIZE); 1161 + } 1162 + 1159 1163 static void si_vga_set_state(struct amdgpu_device *adev, bool state) 1160 1164 { 1161 1165 uint32_t temp; ··· 1212 1206 .get_xclk = &si_get_xclk, 1213 1207 .set_uvd_clocks = &si_set_uvd_clocks, 1214 1208 .set_vce_clocks = NULL, 1209 + .get_config_memsize = &si_get_config_memsize, 1215 1210 }; 1216 1211 1217 1212 static uint32_t si_get_rev_id(struct amdgpu_device *adev)
+6
drivers/gpu/drm/amd/amdgpu/vi.c
··· 751 751 return r; 752 752 } 753 753 754 + static u32 vi_get_config_memsize(struct amdgpu_device *adev) 755 + { 756 + return RREG32(mmCONFIG_MEMSIZE); 757 + } 758 + 754 759 static int vi_set_uvd_clock(struct amdgpu_device *adev, u32 clock, 755 760 u32 cntl_reg, u32 status_reg) 756 761 { ··· 905 900 .get_xclk = &vi_get_xclk, 906 901 .set_uvd_clocks = &vi_set_uvd_clocks, 907 902 .set_vce_clocks = &vi_set_vce_clocks, 903 + .get_config_memsize = &vi_get_config_memsize, 908 904 }; 909 905 910 906 static int vi_common_early_init(void *handle)