.. | .. |
---|
20 | 20 | * OTHER DEALINGS IN THE SOFTWARE. |
---|
21 | 21 | * |
---|
22 | 22 | */ |
---|
| 23 | + |
---|
| 24 | +#include <linux/pci.h> |
---|
23 | 25 | #include <linux/slab.h> |
---|
24 | | -#include <drm/drmP.h> |
---|
| 26 | + |
---|
25 | 27 | #include "amdgpu.h" |
---|
26 | 28 | #include "amdgpu_atombios.h" |
---|
27 | 29 | #include "amdgpu_ih.h" |
---|
.. | .. |
---|
57 | 59 | |
---|
58 | 60 | #include "vid.h" |
---|
59 | 61 | #include "vi.h" |
---|
60 | | -#include "vi_dpm.h" |
---|
61 | 62 | #include "gmc_v8_0.h" |
---|
62 | 63 | #include "gmc_v7_0.h" |
---|
63 | 64 | #include "gfx_v8_0.h" |
---|
.. | .. |
---|
87 | 88 | u32 r; |
---|
88 | 89 | |
---|
89 | 90 | spin_lock_irqsave(&adev->pcie_idx_lock, flags); |
---|
90 | | - WREG32(mmPCIE_INDEX, reg); |
---|
91 | | - (void)RREG32(mmPCIE_INDEX); |
---|
92 | | - r = RREG32(mmPCIE_DATA); |
---|
| 91 | + WREG32_NO_KIQ(mmPCIE_INDEX, reg); |
---|
| 92 | + (void)RREG32_NO_KIQ(mmPCIE_INDEX); |
---|
| 93 | + r = RREG32_NO_KIQ(mmPCIE_DATA); |
---|
93 | 94 | spin_unlock_irqrestore(&adev->pcie_idx_lock, flags); |
---|
94 | 95 | return r; |
---|
95 | 96 | } |
---|
.. | .. |
---|
99 | 100 | unsigned long flags; |
---|
100 | 101 | |
---|
101 | 102 | spin_lock_irqsave(&adev->pcie_idx_lock, flags); |
---|
102 | | - WREG32(mmPCIE_INDEX, reg); |
---|
103 | | - (void)RREG32(mmPCIE_INDEX); |
---|
104 | | - WREG32(mmPCIE_DATA, v); |
---|
105 | | - (void)RREG32(mmPCIE_DATA); |
---|
| 103 | + WREG32_NO_KIQ(mmPCIE_INDEX, reg); |
---|
| 104 | + (void)RREG32_NO_KIQ(mmPCIE_INDEX); |
---|
| 105 | + WREG32_NO_KIQ(mmPCIE_DATA, v); |
---|
| 106 | + (void)RREG32_NO_KIQ(mmPCIE_DATA); |
---|
106 | 107 | spin_unlock_irqrestore(&adev->pcie_idx_lock, flags); |
---|
107 | 108 | } |
---|
108 | 109 | |
---|
.. | .. |
---|
123 | 124 | unsigned long flags; |
---|
124 | 125 | |
---|
125 | 126 | spin_lock_irqsave(&adev->smc_idx_lock, flags); |
---|
126 | | - WREG32(mmSMC_IND_INDEX_11, (reg)); |
---|
127 | | - WREG32(mmSMC_IND_DATA_11, (v)); |
---|
| 127 | + WREG32_NO_KIQ(mmSMC_IND_INDEX_11, (reg)); |
---|
| 128 | + WREG32_NO_KIQ(mmSMC_IND_DATA_11, (v)); |
---|
128 | 129 | spin_unlock_irqrestore(&adev->smc_idx_lock, flags); |
---|
129 | 130 | } |
---|
130 | 131 | |
---|
.. | .. |
---|
447 | 448 | return true; |
---|
448 | 449 | } |
---|
449 | 450 | |
---|
450 | | -static void vi_detect_hw_virtualization(struct amdgpu_device *adev) |
---|
451 | | -{ |
---|
452 | | - uint32_t reg = 0; |
---|
453 | | - |
---|
454 | | - if (adev->asic_type == CHIP_TONGA || |
---|
455 | | - adev->asic_type == CHIP_FIJI) { |
---|
456 | | - reg = RREG32(mmBIF_IOV_FUNC_IDENTIFIER); |
---|
457 | | - /* bit0: 0 means pf and 1 means vf */ |
---|
458 | | - if (REG_GET_FIELD(reg, BIF_IOV_FUNC_IDENTIFIER, FUNC_IDENTIFIER)) |
---|
459 | | - adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF; |
---|
460 | | - /* bit31: 0 means disable IOV and 1 means enable */ |
---|
461 | | - if (REG_GET_FIELD(reg, BIF_IOV_FUNC_IDENTIFIER, IOV_ENABLE)) |
---|
462 | | - adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV; |
---|
463 | | - } |
---|
464 | | - |
---|
465 | | - if (reg == 0) { |
---|
466 | | - if (is_virtual_machine()) /* passthrough mode exclus sr-iov mode */ |
---|
467 | | - adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE; |
---|
468 | | - } |
---|
469 | | -} |
---|
470 | | - |
---|
471 | 451 | static const struct amdgpu_allowed_register_entry vi_allowed_read_registers[] = { |
---|
472 | 452 | {mmGRBM_STATUS}, |
---|
473 | 453 | {mmGRBM_STATUS2}, |
---|
.. | .. |
---|
689 | 669 | } |
---|
690 | 670 | |
---|
691 | 671 | /** |
---|
| 672 | + * vi_asic_pci_config_reset - soft reset GPU |
---|
| 673 | + * |
---|
| 674 | + * @adev: amdgpu_device pointer |
---|
| 675 | + * |
---|
| 676 | + * Use PCI Config method to reset the GPU. |
---|
| 677 | + * |
---|
| 678 | + * Returns 0 for success. |
---|
| 679 | + */ |
---|
| 680 | +static int vi_asic_pci_config_reset(struct amdgpu_device *adev) |
---|
| 681 | +{ |
---|
| 682 | + int r; |
---|
| 683 | + |
---|
| 684 | + amdgpu_atombios_scratch_regs_engine_hung(adev, true); |
---|
| 685 | + |
---|
| 686 | + r = vi_gpu_pci_config_reset(adev); |
---|
| 687 | + |
---|
| 688 | + amdgpu_atombios_scratch_regs_engine_hung(adev, false); |
---|
| 689 | + |
---|
| 690 | + return r; |
---|
| 691 | +} |
---|
| 692 | + |
---|
| 693 | +static bool vi_asic_supports_baco(struct amdgpu_device *adev) |
---|
| 694 | +{ |
---|
| 695 | + switch (adev->asic_type) { |
---|
| 696 | + case CHIP_FIJI: |
---|
| 697 | + case CHIP_TONGA: |
---|
| 698 | + case CHIP_POLARIS10: |
---|
| 699 | + case CHIP_POLARIS11: |
---|
| 700 | + case CHIP_POLARIS12: |
---|
| 701 | + case CHIP_TOPAZ: |
---|
| 702 | + return amdgpu_dpm_is_baco_supported(adev); |
---|
| 703 | + default: |
---|
| 704 | + return false; |
---|
| 705 | + } |
---|
| 706 | +} |
---|
| 707 | + |
---|
| 708 | +static enum amd_reset_method |
---|
| 709 | +vi_asic_reset_method(struct amdgpu_device *adev) |
---|
| 710 | +{ |
---|
| 711 | + bool baco_reset; |
---|
| 712 | + |
---|
| 713 | + if (amdgpu_reset_method == AMD_RESET_METHOD_LEGACY || |
---|
| 714 | + amdgpu_reset_method == AMD_RESET_METHOD_BACO) |
---|
| 715 | + return amdgpu_reset_method; |
---|
| 716 | + |
---|
| 717 | + if (amdgpu_reset_method != -1) |
---|
| 718 | + dev_warn(adev->dev, "Specified reset method:%d isn't supported, using AUTO instead.\n", |
---|
| 719 | + amdgpu_reset_method); |
---|
| 720 | + |
---|
| 721 | + switch (adev->asic_type) { |
---|
| 722 | + case CHIP_FIJI: |
---|
| 723 | + case CHIP_TONGA: |
---|
| 724 | + case CHIP_POLARIS10: |
---|
| 725 | + case CHIP_POLARIS11: |
---|
| 726 | + case CHIP_POLARIS12: |
---|
| 727 | + case CHIP_TOPAZ: |
---|
| 728 | + baco_reset = amdgpu_dpm_is_baco_supported(adev); |
---|
| 729 | + break; |
---|
| 730 | + default: |
---|
| 731 | + baco_reset = false; |
---|
| 732 | + break; |
---|
| 733 | + } |
---|
| 734 | + |
---|
| 735 | + if (baco_reset) |
---|
| 736 | + return AMD_RESET_METHOD_BACO; |
---|
| 737 | + else |
---|
| 738 | + return AMD_RESET_METHOD_LEGACY; |
---|
| 739 | +} |
---|
| 740 | + |
---|
| 741 | +/** |
---|
692 | 742 | * vi_asic_reset - soft reset GPU |
---|
693 | 743 | * |
---|
694 | 744 | * @adev: amdgpu_device pointer |
---|
.. | .. |
---|
701 | 751 | { |
---|
702 | 752 | int r; |
---|
703 | 753 | |
---|
704 | | - amdgpu_atombios_scratch_regs_engine_hung(adev, true); |
---|
705 | | - |
---|
706 | | - r = vi_gpu_pci_config_reset(adev); |
---|
707 | | - |
---|
708 | | - amdgpu_atombios_scratch_regs_engine_hung(adev, false); |
---|
| 754 | + if (vi_asic_reset_method(adev) == AMD_RESET_METHOD_BACO) { |
---|
| 755 | + dev_info(adev->dev, "BACO reset\n"); |
---|
| 756 | + r = amdgpu_dpm_baco_reset(adev); |
---|
| 757 | + } else { |
---|
| 758 | + dev_info(adev->dev, "PCI CONFIG reset\n"); |
---|
| 759 | + r = vi_asic_pci_config_reset(adev); |
---|
| 760 | + } |
---|
709 | 761 | |
---|
710 | 762 | return r; |
---|
711 | 763 | } |
---|
.. | .. |
---|
941 | 993 | } |
---|
942 | 994 | } |
---|
943 | 995 | |
---|
| 996 | +static void vi_get_pcie_usage(struct amdgpu_device *adev, uint64_t *count0, |
---|
| 997 | + uint64_t *count1) |
---|
| 998 | +{ |
---|
| 999 | + uint32_t perfctr = 0; |
---|
| 1000 | + uint64_t cnt0_of, cnt1_of; |
---|
| 1001 | + int tmp; |
---|
| 1002 | + |
---|
| 1003 | + /* This reports 0 on APUs, so return to avoid writing/reading registers |
---|
| 1004 | + * that may or may not be different from their GPU counterparts |
---|
| 1005 | + */ |
---|
| 1006 | + if (adev->flags & AMD_IS_APU) |
---|
| 1007 | + return; |
---|
| 1008 | + |
---|
| 1009 | + /* Set the 2 events that we wish to watch, defined above */ |
---|
| 1010 | + /* Reg 40 is # received msgs, Reg 104 is # of posted requests sent */ |
---|
| 1011 | + perfctr = REG_SET_FIELD(perfctr, PCIE_PERF_CNTL_TXCLK, EVENT0_SEL, 40); |
---|
| 1012 | + perfctr = REG_SET_FIELD(perfctr, PCIE_PERF_CNTL_TXCLK, EVENT1_SEL, 104); |
---|
| 1013 | + |
---|
| 1014 | + /* Write to enable desired perf counters */ |
---|
| 1015 | + WREG32_PCIE(ixPCIE_PERF_CNTL_TXCLK, perfctr); |
---|
| 1016 | + /* Zero out and enable the perf counters |
---|
| 1017 | + * Write 0x5: |
---|
| 1018 | + * Bit 0 = Start all counters(1) |
---|
| 1019 | + * Bit 2 = Global counter reset enable(1) |
---|
| 1020 | + */ |
---|
| 1021 | + WREG32_PCIE(ixPCIE_PERF_COUNT_CNTL, 0x00000005); |
---|
| 1022 | + |
---|
| 1023 | + msleep(1000); |
---|
| 1024 | + |
---|
| 1025 | + /* Load the shadow and disable the perf counters |
---|
| 1026 | + * Write 0x2: |
---|
| 1027 | + * Bit 0 = Stop counters(0) |
---|
| 1028 | + * Bit 1 = Load the shadow counters(1) |
---|
| 1029 | + */ |
---|
| 1030 | + WREG32_PCIE(ixPCIE_PERF_COUNT_CNTL, 0x00000002); |
---|
| 1031 | + |
---|
| 1032 | + /* Read register values to get any >32bit overflow */ |
---|
| 1033 | + tmp = RREG32_PCIE(ixPCIE_PERF_CNTL_TXCLK); |
---|
| 1034 | + cnt0_of = REG_GET_FIELD(tmp, PCIE_PERF_CNTL_TXCLK, COUNTER0_UPPER); |
---|
| 1035 | + cnt1_of = REG_GET_FIELD(tmp, PCIE_PERF_CNTL_TXCLK, COUNTER1_UPPER); |
---|
| 1036 | + |
---|
| 1037 | + /* Get the values and add the overflow */ |
---|
| 1038 | + *count0 = RREG32_PCIE(ixPCIE_PERF_COUNT0_TXCLK) | (cnt0_of << 32); |
---|
| 1039 | + *count1 = RREG32_PCIE(ixPCIE_PERF_COUNT1_TXCLK) | (cnt1_of << 32); |
---|
| 1040 | +} |
---|
| 1041 | + |
---|
| 1042 | +static uint64_t vi_get_pcie_replay_count(struct amdgpu_device *adev) |
---|
| 1043 | +{ |
---|
| 1044 | + uint64_t nak_r, nak_g; |
---|
| 1045 | + |
---|
| 1046 | + /* Get the number of NAKs received and generated */ |
---|
| 1047 | + nak_r = RREG32_PCIE(ixPCIE_RX_NUM_NAK); |
---|
| 1048 | + nak_g = RREG32_PCIE(ixPCIE_RX_NUM_NAK_GENERATED); |
---|
| 1049 | + |
---|
| 1050 | + /* Add the total number of NAKs, i.e the number of replays */ |
---|
| 1051 | + return (nak_r + nak_g); |
---|
| 1052 | +} |
---|
| 1053 | + |
---|
| 1054 | +static bool vi_need_reset_on_init(struct amdgpu_device *adev) |
---|
| 1055 | +{ |
---|
| 1056 | + u32 clock_cntl, pc; |
---|
| 1057 | + |
---|
| 1058 | + if (adev->flags & AMD_IS_APU) |
---|
| 1059 | + return false; |
---|
| 1060 | + |
---|
| 1061 | + /* check if the SMC is already running */ |
---|
| 1062 | + clock_cntl = RREG32_SMC(ixSMC_SYSCON_CLOCK_CNTL_0); |
---|
| 1063 | + pc = RREG32_SMC(ixSMC_PC_C); |
---|
| 1064 | + if ((0 == REG_GET_FIELD(clock_cntl, SMC_SYSCON_CLOCK_CNTL_0, ck_disable)) && |
---|
| 1065 | + (0x20100 <= pc)) |
---|
| 1066 | + return true; |
---|
| 1067 | + |
---|
| 1068 | + return false; |
---|
| 1069 | +} |
---|
| 1070 | + |
---|
| 1071 | +static void vi_pre_asic_init(struct amdgpu_device *adev) |
---|
| 1072 | +{ |
---|
| 1073 | +} |
---|
| 1074 | + |
---|
944 | 1075 | static const struct amdgpu_asic_funcs vi_asic_funcs = |
---|
945 | 1076 | { |
---|
946 | 1077 | .read_disabled_bios = &vi_read_disabled_bios, |
---|
947 | 1078 | .read_bios_from_rom = &vi_read_bios_from_rom, |
---|
948 | 1079 | .read_register = &vi_read_register, |
---|
949 | 1080 | .reset = &vi_asic_reset, |
---|
| 1081 | + .reset_method = &vi_asic_reset_method, |
---|
950 | 1082 | .set_vga_state = &vi_vga_set_state, |
---|
951 | 1083 | .get_xclk = &vi_get_xclk, |
---|
952 | 1084 | .set_uvd_clocks = &vi_set_uvd_clocks, |
---|
.. | .. |
---|
955 | 1087 | .flush_hdp = &vi_flush_hdp, |
---|
956 | 1088 | .invalidate_hdp = &vi_invalidate_hdp, |
---|
957 | 1089 | .need_full_reset = &vi_need_full_reset, |
---|
| 1090 | + .init_doorbell_index = &legacy_doorbell_index_init, |
---|
| 1091 | + .get_pcie_usage = &vi_get_pcie_usage, |
---|
| 1092 | + .need_reset_on_init = &vi_need_reset_on_init, |
---|
| 1093 | + .get_pcie_replay_count = &vi_get_pcie_replay_count, |
---|
| 1094 | + .supports_baco = &vi_asic_supports_baco, |
---|
| 1095 | + .pre_asic_init = &vi_pre_asic_init, |
---|
958 | 1096 | }; |
---|
959 | 1097 | |
---|
960 | 1098 | #define CZ_REV_BRISTOL(rev) \ |
---|
.. | .. |
---|
1376 | 1514 | PP_BLOCK_SYS_MC, |
---|
1377 | 1515 | pp_support_state, |
---|
1378 | 1516 | pp_state); |
---|
1379 | | - if (adev->powerplay.pp_funcs->set_clockgating_by_smu) |
---|
1380 | | - amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
| 1517 | + amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
1381 | 1518 | } |
---|
1382 | 1519 | |
---|
1383 | 1520 | if (adev->cg_flags & (AMD_CG_SUPPORT_SDMA_LS | AMD_CG_SUPPORT_SDMA_MGCG)) { |
---|
.. | .. |
---|
1395 | 1532 | PP_BLOCK_SYS_SDMA, |
---|
1396 | 1533 | pp_support_state, |
---|
1397 | 1534 | pp_state); |
---|
1398 | | - if (adev->powerplay.pp_funcs->set_clockgating_by_smu) |
---|
1399 | | - amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
| 1535 | + amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
1400 | 1536 | } |
---|
1401 | 1537 | |
---|
1402 | 1538 | if (adev->cg_flags & (AMD_CG_SUPPORT_HDP_LS | AMD_CG_SUPPORT_HDP_MGCG)) { |
---|
.. | .. |
---|
1414 | 1550 | PP_BLOCK_SYS_HDP, |
---|
1415 | 1551 | pp_support_state, |
---|
1416 | 1552 | pp_state); |
---|
1417 | | - if (adev->powerplay.pp_funcs->set_clockgating_by_smu) |
---|
1418 | | - amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
| 1553 | + amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
1419 | 1554 | } |
---|
1420 | 1555 | |
---|
1421 | 1556 | |
---|
.. | .. |
---|
1429 | 1564 | PP_BLOCK_SYS_BIF, |
---|
1430 | 1565 | PP_STATE_SUPPORT_LS, |
---|
1431 | 1566 | pp_state); |
---|
1432 | | - if (adev->powerplay.pp_funcs->set_clockgating_by_smu) |
---|
1433 | | - amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
| 1567 | + amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
1434 | 1568 | } |
---|
1435 | 1569 | if (adev->cg_flags & AMD_CG_SUPPORT_BIF_MGCG) { |
---|
1436 | 1570 | if (state == AMD_CG_STATE_UNGATE) |
---|
.. | .. |
---|
1442 | 1576 | PP_BLOCK_SYS_BIF, |
---|
1443 | 1577 | PP_STATE_SUPPORT_CG, |
---|
1444 | 1578 | pp_state); |
---|
1445 | | - if (adev->powerplay.pp_funcs->set_clockgating_by_smu) |
---|
1446 | | - amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
| 1579 | + amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
1447 | 1580 | } |
---|
1448 | 1581 | |
---|
1449 | 1582 | if (adev->cg_flags & AMD_CG_SUPPORT_DRM_LS) { |
---|
.. | .. |
---|
1457 | 1590 | PP_BLOCK_SYS_DRM, |
---|
1458 | 1591 | PP_STATE_SUPPORT_LS, |
---|
1459 | 1592 | pp_state); |
---|
1460 | | - if (adev->powerplay.pp_funcs->set_clockgating_by_smu) |
---|
1461 | | - amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
| 1593 | + amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
1462 | 1594 | } |
---|
1463 | 1595 | |
---|
1464 | 1596 | if (adev->cg_flags & AMD_CG_SUPPORT_ROM_MGCG) { |
---|
.. | .. |
---|
1472 | 1604 | PP_BLOCK_SYS_ROM, |
---|
1473 | 1605 | PP_STATE_SUPPORT_CG, |
---|
1474 | 1606 | pp_state); |
---|
1475 | | - if (adev->powerplay.pp_funcs->set_clockgating_by_smu) |
---|
1476 | | - amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
| 1607 | + amdgpu_dpm_set_clockgating_by_smu(adev, msg_id); |
---|
1477 | 1608 | } |
---|
1478 | 1609 | return 0; |
---|
1479 | 1610 | } |
---|
.. | .. |
---|
1582 | 1713 | .funcs = &vi_common_ip_funcs, |
---|
1583 | 1714 | }; |
---|
1584 | 1715 | |
---|
| 1716 | +void vi_set_virt_ops(struct amdgpu_device *adev) |
---|
| 1717 | +{ |
---|
| 1718 | + adev->virt.ops = &xgpu_vi_virt_ops; |
---|
| 1719 | +} |
---|
| 1720 | + |
---|
1585 | 1721 | int vi_set_ip_blocks(struct amdgpu_device *adev) |
---|
1586 | 1722 | { |
---|
1587 | | - /* in early init stage, vbios code won't work */ |
---|
1588 | | - vi_detect_hw_virtualization(adev); |
---|
1589 | | - |
---|
1590 | | - if (amdgpu_sriov_vf(adev)) |
---|
1591 | | - adev->virt.ops = &xgpu_vi_virt_ops; |
---|
1592 | | - |
---|
1593 | 1723 | switch (adev->asic_type) { |
---|
1594 | 1724 | case CHIP_TOPAZ: |
---|
1595 | 1725 | /* topaz has no DCE, UVD, VCE */ |
---|
1596 | 1726 | amdgpu_device_ip_block_add(adev, &vi_common_ip_block); |
---|
1597 | 1727 | amdgpu_device_ip_block_add(adev, &gmc_v7_4_ip_block); |
---|
1598 | 1728 | amdgpu_device_ip_block_add(adev, &iceland_ih_ip_block); |
---|
| 1729 | + amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block); |
---|
| 1730 | + amdgpu_device_ip_block_add(adev, &sdma_v2_4_ip_block); |
---|
1599 | 1731 | amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); |
---|
1600 | 1732 | if (adev->enable_virtual_display) |
---|
1601 | 1733 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); |
---|
1602 | | - amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block); |
---|
1603 | | - amdgpu_device_ip_block_add(adev, &sdma_v2_4_ip_block); |
---|
1604 | 1734 | break; |
---|
1605 | 1735 | case CHIP_FIJI: |
---|
1606 | 1736 | amdgpu_device_ip_block_add(adev, &vi_common_ip_block); |
---|
1607 | 1737 | amdgpu_device_ip_block_add(adev, &gmc_v8_5_ip_block); |
---|
1608 | 1738 | amdgpu_device_ip_block_add(adev, &tonga_ih_ip_block); |
---|
| 1739 | + amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block); |
---|
| 1740 | + amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block); |
---|
1609 | 1741 | amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); |
---|
1610 | 1742 | if (adev->enable_virtual_display || amdgpu_sriov_vf(adev)) |
---|
1611 | 1743 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); |
---|
.. | .. |
---|
1615 | 1747 | #endif |
---|
1616 | 1748 | else |
---|
1617 | 1749 | amdgpu_device_ip_block_add(adev, &dce_v10_1_ip_block); |
---|
1618 | | - amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block); |
---|
1619 | | - amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block); |
---|
1620 | 1750 | if (!amdgpu_sriov_vf(adev)) { |
---|
1621 | 1751 | amdgpu_device_ip_block_add(adev, &uvd_v6_0_ip_block); |
---|
1622 | 1752 | amdgpu_device_ip_block_add(adev, &vce_v3_0_ip_block); |
---|
.. | .. |
---|
1626 | 1756 | amdgpu_device_ip_block_add(adev, &vi_common_ip_block); |
---|
1627 | 1757 | amdgpu_device_ip_block_add(adev, &gmc_v8_0_ip_block); |
---|
1628 | 1758 | amdgpu_device_ip_block_add(adev, &tonga_ih_ip_block); |
---|
| 1759 | + amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block); |
---|
| 1760 | + amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block); |
---|
1629 | 1761 | amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); |
---|
1630 | 1762 | if (adev->enable_virtual_display || amdgpu_sriov_vf(adev)) |
---|
1631 | 1763 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); |
---|
.. | .. |
---|
1635 | 1767 | #endif |
---|
1636 | 1768 | else |
---|
1637 | 1769 | amdgpu_device_ip_block_add(adev, &dce_v10_0_ip_block); |
---|
1638 | | - amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block); |
---|
1639 | | - amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block); |
---|
1640 | 1770 | if (!amdgpu_sriov_vf(adev)) { |
---|
1641 | 1771 | amdgpu_device_ip_block_add(adev, &uvd_v5_0_ip_block); |
---|
1642 | 1772 | amdgpu_device_ip_block_add(adev, &vce_v3_0_ip_block); |
---|
.. | .. |
---|
1649 | 1779 | amdgpu_device_ip_block_add(adev, &vi_common_ip_block); |
---|
1650 | 1780 | amdgpu_device_ip_block_add(adev, &gmc_v8_1_ip_block); |
---|
1651 | 1781 | amdgpu_device_ip_block_add(adev, &tonga_ih_ip_block); |
---|
| 1782 | + amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block); |
---|
| 1783 | + amdgpu_device_ip_block_add(adev, &sdma_v3_1_ip_block); |
---|
1652 | 1784 | amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); |
---|
1653 | 1785 | if (adev->enable_virtual_display) |
---|
1654 | 1786 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); |
---|
.. | .. |
---|
1658 | 1790 | #endif |
---|
1659 | 1791 | else |
---|
1660 | 1792 | amdgpu_device_ip_block_add(adev, &dce_v11_2_ip_block); |
---|
1661 | | - amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block); |
---|
1662 | | - amdgpu_device_ip_block_add(adev, &sdma_v3_1_ip_block); |
---|
1663 | 1793 | amdgpu_device_ip_block_add(adev, &uvd_v6_3_ip_block); |
---|
1664 | 1794 | amdgpu_device_ip_block_add(adev, &vce_v3_4_ip_block); |
---|
1665 | 1795 | break; |
---|
.. | .. |
---|
1667 | 1797 | amdgpu_device_ip_block_add(adev, &vi_common_ip_block); |
---|
1668 | 1798 | amdgpu_device_ip_block_add(adev, &gmc_v8_0_ip_block); |
---|
1669 | 1799 | amdgpu_device_ip_block_add(adev, &cz_ih_ip_block); |
---|
| 1800 | + amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block); |
---|
| 1801 | + amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block); |
---|
1670 | 1802 | amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); |
---|
1671 | 1803 | if (adev->enable_virtual_display) |
---|
1672 | 1804 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); |
---|
.. | .. |
---|
1676 | 1808 | #endif |
---|
1677 | 1809 | else |
---|
1678 | 1810 | amdgpu_device_ip_block_add(adev, &dce_v11_0_ip_block); |
---|
1679 | | - amdgpu_device_ip_block_add(adev, &gfx_v8_0_ip_block); |
---|
1680 | | - amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block); |
---|
1681 | 1811 | amdgpu_device_ip_block_add(adev, &uvd_v6_0_ip_block); |
---|
1682 | 1812 | amdgpu_device_ip_block_add(adev, &vce_v3_1_ip_block); |
---|
1683 | 1813 | #if defined(CONFIG_DRM_AMD_ACP) |
---|
.. | .. |
---|
1688 | 1818 | amdgpu_device_ip_block_add(adev, &vi_common_ip_block); |
---|
1689 | 1819 | amdgpu_device_ip_block_add(adev, &gmc_v8_0_ip_block); |
---|
1690 | 1820 | amdgpu_device_ip_block_add(adev, &cz_ih_ip_block); |
---|
| 1821 | + amdgpu_device_ip_block_add(adev, &gfx_v8_1_ip_block); |
---|
| 1822 | + amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block); |
---|
1691 | 1823 | amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); |
---|
1692 | 1824 | if (adev->enable_virtual_display) |
---|
1693 | 1825 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); |
---|
.. | .. |
---|
1697 | 1829 | #endif |
---|
1698 | 1830 | else |
---|
1699 | 1831 | amdgpu_device_ip_block_add(adev, &dce_v11_0_ip_block); |
---|
1700 | | - amdgpu_device_ip_block_add(adev, &gfx_v8_1_ip_block); |
---|
1701 | | - amdgpu_device_ip_block_add(adev, &sdma_v3_0_ip_block); |
---|
1702 | 1832 | amdgpu_device_ip_block_add(adev, &uvd_v6_2_ip_block); |
---|
1703 | 1833 | amdgpu_device_ip_block_add(adev, &vce_v3_4_ip_block); |
---|
1704 | 1834 | #if defined(CONFIG_DRM_AMD_ACP) |
---|
.. | .. |
---|
1712 | 1842 | |
---|
1713 | 1843 | return 0; |
---|
1714 | 1844 | } |
---|
| 1845 | + |
---|
| 1846 | +void legacy_doorbell_index_init(struct amdgpu_device *adev) |
---|
| 1847 | +{ |
---|
| 1848 | + adev->doorbell_index.kiq = AMDGPU_DOORBELL_KIQ; |
---|
| 1849 | + adev->doorbell_index.mec_ring0 = AMDGPU_DOORBELL_MEC_RING0; |
---|
| 1850 | + adev->doorbell_index.mec_ring1 = AMDGPU_DOORBELL_MEC_RING1; |
---|
| 1851 | + adev->doorbell_index.mec_ring2 = AMDGPU_DOORBELL_MEC_RING2; |
---|
| 1852 | + adev->doorbell_index.mec_ring3 = AMDGPU_DOORBELL_MEC_RING3; |
---|
| 1853 | + adev->doorbell_index.mec_ring4 = AMDGPU_DOORBELL_MEC_RING4; |
---|
| 1854 | + adev->doorbell_index.mec_ring5 = AMDGPU_DOORBELL_MEC_RING5; |
---|
| 1855 | + adev->doorbell_index.mec_ring6 = AMDGPU_DOORBELL_MEC_RING6; |
---|
| 1856 | + adev->doorbell_index.mec_ring7 = AMDGPU_DOORBELL_MEC_RING7; |
---|
| 1857 | + adev->doorbell_index.gfx_ring0 = AMDGPU_DOORBELL_GFX_RING0; |
---|
| 1858 | + adev->doorbell_index.sdma_engine[0] = AMDGPU_DOORBELL_sDMA_ENGINE0; |
---|
| 1859 | + adev->doorbell_index.sdma_engine[1] = AMDGPU_DOORBELL_sDMA_ENGINE1; |
---|
| 1860 | + adev->doorbell_index.ih = AMDGPU_DOORBELL_IH; |
---|
| 1861 | + adev->doorbell_index.max_assignment = AMDGPU_DOORBELL_MAX_ASSIGNMENT; |
---|
| 1862 | +} |
---|