aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/vi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vi.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/vi.c282
1 files changed, 282 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c
index 8f37066adcee..ff78b5a36143 100644
--- a/drivers/gpu/drm/amd/amdgpu/vi.c
+++ b/drivers/gpu/drm/amd/amdgpu/vi.c
@@ -77,6 +77,7 @@
77#if defined(CONFIG_DRM_AMD_ACP) 77#if defined(CONFIG_DRM_AMD_ACP)
78#include "amdgpu_acp.h" 78#include "amdgpu_acp.h"
79#endif 79#endif
80#include "dce_virtual.h"
80 81
81MODULE_FIRMWARE("amdgpu/polaris10_smc.bin"); 82MODULE_FIRMWARE("amdgpu/polaris10_smc.bin");
82MODULE_FIRMWARE("amdgpu/polaris10_smc_sk.bin"); 83MODULE_FIRMWARE("amdgpu/polaris10_smc_sk.bin");
@@ -890,6 +891,74 @@ static const struct amdgpu_ip_block_version tonga_ip_blocks[] =
890 }, 891 },
891}; 892};
892 893
894static const struct amdgpu_ip_block_version tonga_ip_blocks_vd[] =
895{
896 /* ORDER MATTERS! */
897 {
898 .type = AMD_IP_BLOCK_TYPE_COMMON,
899 .major = 2,
900 .minor = 0,
901 .rev = 0,
902 .funcs = &vi_common_ip_funcs,
903 },
904 {
905 .type = AMD_IP_BLOCK_TYPE_GMC,
906 .major = 8,
907 .minor = 0,
908 .rev = 0,
909 .funcs = &gmc_v8_0_ip_funcs,
910 },
911 {
912 .type = AMD_IP_BLOCK_TYPE_IH,
913 .major = 3,
914 .minor = 0,
915 .rev = 0,
916 .funcs = &tonga_ih_ip_funcs,
917 },
918 {
919 .type = AMD_IP_BLOCK_TYPE_SMC,
920 .major = 7,
921 .minor = 1,
922 .rev = 0,
923 .funcs = &amdgpu_pp_ip_funcs,
924 },
925 {
926 .type = AMD_IP_BLOCK_TYPE_DCE,
927 .major = 10,
928 .minor = 0,
929 .rev = 0,
930 .funcs = &dce_virtual_ip_funcs,
931 },
932 {
933 .type = AMD_IP_BLOCK_TYPE_GFX,
934 .major = 8,
935 .minor = 0,
936 .rev = 0,
937 .funcs = &gfx_v8_0_ip_funcs,
938 },
939 {
940 .type = AMD_IP_BLOCK_TYPE_SDMA,
941 .major = 3,
942 .minor = 0,
943 .rev = 0,
944 .funcs = &sdma_v3_0_ip_funcs,
945 },
946 {
947 .type = AMD_IP_BLOCK_TYPE_UVD,
948 .major = 5,
949 .minor = 0,
950 .rev = 0,
951 .funcs = &uvd_v5_0_ip_funcs,
952 },
953 {
954 .type = AMD_IP_BLOCK_TYPE_VCE,
955 .major = 3,
956 .minor = 0,
957 .rev = 0,
958 .funcs = &vce_v3_0_ip_funcs,
959 },
960};
961
893static const struct amdgpu_ip_block_version fiji_ip_blocks[] = 962static const struct amdgpu_ip_block_version fiji_ip_blocks[] =
894{ 963{
895 /* ORDER MATTERS! */ 964 /* ORDER MATTERS! */
@@ -958,6 +1027,74 @@ static const struct amdgpu_ip_block_version fiji_ip_blocks[] =
958 }, 1027 },
959}; 1028};
960 1029
1030static const struct amdgpu_ip_block_version fiji_ip_blocks_vd[] =
1031{
1032 /* ORDER MATTERS! */
1033 {
1034 .type = AMD_IP_BLOCK_TYPE_COMMON,
1035 .major = 2,
1036 .minor = 0,
1037 .rev = 0,
1038 .funcs = &vi_common_ip_funcs,
1039 },
1040 {
1041 .type = AMD_IP_BLOCK_TYPE_GMC,
1042 .major = 8,
1043 .minor = 5,
1044 .rev = 0,
1045 .funcs = &gmc_v8_0_ip_funcs,
1046 },
1047 {
1048 .type = AMD_IP_BLOCK_TYPE_IH,
1049 .major = 3,
1050 .minor = 0,
1051 .rev = 0,
1052 .funcs = &tonga_ih_ip_funcs,
1053 },
1054 {
1055 .type = AMD_IP_BLOCK_TYPE_SMC,
1056 .major = 7,
1057 .minor = 1,
1058 .rev = 0,
1059 .funcs = &amdgpu_pp_ip_funcs,
1060 },
1061 {
1062 .type = AMD_IP_BLOCK_TYPE_DCE,
1063 .major = 10,
1064 .minor = 1,
1065 .rev = 0,
1066 .funcs = &dce_virtual_ip_funcs,
1067 },
1068 {
1069 .type = AMD_IP_BLOCK_TYPE_GFX,
1070 .major = 8,
1071 .minor = 0,
1072 .rev = 0,
1073 .funcs = &gfx_v8_0_ip_funcs,
1074 },
1075 {
1076 .type = AMD_IP_BLOCK_TYPE_SDMA,
1077 .major = 3,
1078 .minor = 0,
1079 .rev = 0,
1080 .funcs = &sdma_v3_0_ip_funcs,
1081 },
1082 {
1083 .type = AMD_IP_BLOCK_TYPE_UVD,
1084 .major = 6,
1085 .minor = 0,
1086 .rev = 0,
1087 .funcs = &uvd_v6_0_ip_funcs,
1088 },
1089 {
1090 .type = AMD_IP_BLOCK_TYPE_VCE,
1091 .major = 3,
1092 .minor = 0,
1093 .rev = 0,
1094 .funcs = &vce_v3_0_ip_funcs,
1095 },
1096};
1097
961static const struct amdgpu_ip_block_version polaris11_ip_blocks[] = 1098static const struct amdgpu_ip_block_version polaris11_ip_blocks[] =
962{ 1099{
963 /* ORDER MATTERS! */ 1100 /* ORDER MATTERS! */
@@ -1026,6 +1163,74 @@ static const struct amdgpu_ip_block_version polaris11_ip_blocks[] =
1026 }, 1163 },
1027}; 1164};
1028 1165
1166static const struct amdgpu_ip_block_version polaris11_ip_blocks_vd[] =
1167{
1168 /* ORDER MATTERS! */
1169 {
1170 .type = AMD_IP_BLOCK_TYPE_COMMON,
1171 .major = 2,
1172 .minor = 0,
1173 .rev = 0,
1174 .funcs = &vi_common_ip_funcs,
1175 },
1176 {
1177 .type = AMD_IP_BLOCK_TYPE_GMC,
1178 .major = 8,
1179 .minor = 1,
1180 .rev = 0,
1181 .funcs = &gmc_v8_0_ip_funcs,
1182 },
1183 {
1184 .type = AMD_IP_BLOCK_TYPE_IH,
1185 .major = 3,
1186 .minor = 1,
1187 .rev = 0,
1188 .funcs = &tonga_ih_ip_funcs,
1189 },
1190 {
1191 .type = AMD_IP_BLOCK_TYPE_SMC,
1192 .major = 7,
1193 .minor = 2,
1194 .rev = 0,
1195 .funcs = &amdgpu_pp_ip_funcs,
1196 },
1197 {
1198 .type = AMD_IP_BLOCK_TYPE_DCE,
1199 .major = 11,
1200 .minor = 2,
1201 .rev = 0,
1202 .funcs = &dce_virtual_ip_funcs,
1203 },
1204 {
1205 .type = AMD_IP_BLOCK_TYPE_GFX,
1206 .major = 8,
1207 .minor = 0,
1208 .rev = 0,
1209 .funcs = &gfx_v8_0_ip_funcs,
1210 },
1211 {
1212 .type = AMD_IP_BLOCK_TYPE_SDMA,
1213 .major = 3,
1214 .minor = 1,
1215 .rev = 0,
1216 .funcs = &sdma_v3_0_ip_funcs,
1217 },
1218 {
1219 .type = AMD_IP_BLOCK_TYPE_UVD,
1220 .major = 6,
1221 .minor = 3,
1222 .rev = 0,
1223 .funcs = &uvd_v6_0_ip_funcs,
1224 },
1225 {
1226 .type = AMD_IP_BLOCK_TYPE_VCE,
1227 .major = 3,
1228 .minor = 4,
1229 .rev = 0,
1230 .funcs = &vce_v3_0_ip_funcs,
1231 },
1232};
1233
1029static const struct amdgpu_ip_block_version cz_ip_blocks[] = 1234static const struct amdgpu_ip_block_version cz_ip_blocks[] =
1030{ 1235{
1031 /* ORDER MATTERS! */ 1236 /* ORDER MATTERS! */
@@ -1103,6 +1308,83 @@ static const struct amdgpu_ip_block_version cz_ip_blocks[] =
1103#endif 1308#endif
1104}; 1309};
1105 1310
1311static const struct amdgpu_ip_block_version cz_ip_blocks_vd[] =
1312{
1313 /* ORDER MATTERS! */
1314 {
1315 .type = AMD_IP_BLOCK_TYPE_COMMON,
1316 .major = 2,
1317 .minor = 0,
1318 .rev = 0,
1319 .funcs = &vi_common_ip_funcs,
1320 },
1321 {
1322 .type = AMD_IP_BLOCK_TYPE_GMC,
1323 .major = 8,
1324 .minor = 0,
1325 .rev = 0,
1326 .funcs = &gmc_v8_0_ip_funcs,
1327 },
1328 {
1329 .type = AMD_IP_BLOCK_TYPE_IH,
1330 .major = 3,
1331 .minor = 0,
1332 .rev = 0,
1333 .funcs = &cz_ih_ip_funcs,
1334 },
1335 {
1336 .type = AMD_IP_BLOCK_TYPE_SMC,
1337 .major = 8,
1338 .minor = 0,
1339 .rev = 0,
1340 .funcs = &amdgpu_pp_ip_funcs
1341 },
1342 {
1343 .type = AMD_IP_BLOCK_TYPE_DCE,
1344 .major = 11,
1345 .minor = 0,
1346 .rev = 0,
1347 .funcs = &dce_virtual_ip_funcs,
1348 },
1349 {
1350 .type = AMD_IP_BLOCK_TYPE_GFX,
1351 .major = 8,
1352 .minor = 0,
1353 .rev = 0,
1354 .funcs = &gfx_v8_0_ip_funcs,
1355 },
1356 {
1357 .type = AMD_IP_BLOCK_TYPE_SDMA,
1358 .major = 3,
1359 .minor = 0,
1360 .rev = 0,
1361 .funcs = &sdma_v3_0_ip_funcs,
1362 },
1363 {
1364 .type = AMD_IP_BLOCK_TYPE_UVD,
1365 .major = 6,
1366 .minor = 0,
1367 .rev = 0,
1368 .funcs = &uvd_v6_0_ip_funcs,
1369 },
1370 {
1371 .type = AMD_IP_BLOCK_TYPE_VCE,
1372 .major = 3,
1373 .minor = 0,
1374 .rev = 0,
1375 .funcs = &vce_v3_0_ip_funcs,
1376 },
1377#if defined(CONFIG_DRM_AMD_ACP)
1378 {
1379 .type = AMD_IP_BLOCK_TYPE_ACP,
1380 .major = 2,
1381 .minor = 2,
1382 .rev = 0,
1383 .funcs = &acp_ip_funcs,
1384 },
1385#endif
1386};
1387
1106int vi_set_ip_blocks(struct amdgpu_device *adev) 1388int vi_set_ip_blocks(struct amdgpu_device *adev)
1107{ 1389{
1108 switch (adev->asic_type) { 1390 switch (adev->asic_type) {