diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vi.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vi.c | 282 |
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 | ||
81 | MODULE_FIRMWARE("amdgpu/polaris10_smc.bin"); | 82 | MODULE_FIRMWARE("amdgpu/polaris10_smc.bin"); |
82 | MODULE_FIRMWARE("amdgpu/polaris10_smc_sk.bin"); | 83 | MODULE_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 | ||
894 | static 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 | |||
893 | static const struct amdgpu_ip_block_version fiji_ip_blocks[] = | 962 | static 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 | ||
1030 | static 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 | |||
961 | static const struct amdgpu_ip_block_version polaris11_ip_blocks[] = | 1098 | static 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 | ||
1166 | static 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 | |||
1029 | static const struct amdgpu_ip_block_version cz_ip_blocks[] = | 1234 | static 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 | ||
1311 | static 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 | |||
1106 | int vi_set_ip_blocks(struct amdgpu_device *adev) | 1388 | int vi_set_ip_blocks(struct amdgpu_device *adev) |
1107 | { | 1389 | { |
1108 | switch (adev->asic_type) { | 1390 | switch (adev->asic_type) { |