diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/cik.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/cik.c | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c index 8e59e65efd44..0df22030e713 100644 --- a/drivers/gpu/drm/amd/amdgpu/cik.c +++ b/drivers/gpu/drm/amd/amdgpu/cik.c | |||
@@ -67,7 +67,6 @@ | |||
67 | 67 | ||
68 | #include "amdgpu_dm.h" | 68 | #include "amdgpu_dm.h" |
69 | #include "amdgpu_amdkfd.h" | 69 | #include "amdgpu_amdkfd.h" |
70 | #include "amdgpu_powerplay.h" | ||
71 | #include "dce_virtual.h" | 70 | #include "dce_virtual.h" |
72 | 71 | ||
73 | /* | 72 | /* |
@@ -1715,6 +1714,27 @@ static void cik_detect_hw_virtualization(struct amdgpu_device *adev) | |||
1715 | adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE; | 1714 | adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE; |
1716 | } | 1715 | } |
1717 | 1716 | ||
1717 | static void cik_flush_hdp(struct amdgpu_device *adev, struct amdgpu_ring *ring) | ||
1718 | { | ||
1719 | if (!ring || !ring->funcs->emit_wreg) { | ||
1720 | WREG32(mmHDP_MEM_COHERENCY_FLUSH_CNTL, 1); | ||
1721 | RREG32(mmHDP_MEM_COHERENCY_FLUSH_CNTL); | ||
1722 | } else { | ||
1723 | amdgpu_ring_emit_wreg(ring, mmHDP_MEM_COHERENCY_FLUSH_CNTL, 1); | ||
1724 | } | ||
1725 | } | ||
1726 | |||
1727 | static void cik_invalidate_hdp(struct amdgpu_device *adev, | ||
1728 | struct amdgpu_ring *ring) | ||
1729 | { | ||
1730 | if (!ring || !ring->funcs->emit_wreg) { | ||
1731 | WREG32(mmHDP_DEBUG0, 1); | ||
1732 | RREG32(mmHDP_DEBUG0); | ||
1733 | } else { | ||
1734 | amdgpu_ring_emit_wreg(ring, mmHDP_DEBUG0, 1); | ||
1735 | } | ||
1736 | } | ||
1737 | |||
1718 | static const struct amdgpu_asic_funcs cik_asic_funcs = | 1738 | static const struct amdgpu_asic_funcs cik_asic_funcs = |
1719 | { | 1739 | { |
1720 | .read_disabled_bios = &cik_read_disabled_bios, | 1740 | .read_disabled_bios = &cik_read_disabled_bios, |
@@ -1726,6 +1746,8 @@ static const struct amdgpu_asic_funcs cik_asic_funcs = | |||
1726 | .set_uvd_clocks = &cik_set_uvd_clocks, | 1746 | .set_uvd_clocks = &cik_set_uvd_clocks, |
1727 | .set_vce_clocks = &cik_set_vce_clocks, | 1747 | .set_vce_clocks = &cik_set_vce_clocks, |
1728 | .get_config_memsize = &cik_get_config_memsize, | 1748 | .get_config_memsize = &cik_get_config_memsize, |
1749 | .flush_hdp = &cik_flush_hdp, | ||
1750 | .invalidate_hdp = &cik_invalidate_hdp, | ||
1729 | }; | 1751 | }; |
1730 | 1752 | ||
1731 | static int cik_common_early_init(void *handle) | 1753 | static int cik_common_early_init(void *handle) |
@@ -1864,10 +1886,6 @@ static int cik_common_early_init(void *handle) | |||
1864 | return -EINVAL; | 1886 | return -EINVAL; |
1865 | } | 1887 | } |
1866 | 1888 | ||
1867 | adev->firmware.load_type = amdgpu_ucode_get_load_type(adev, amdgpu_fw_load_type); | ||
1868 | |||
1869 | amdgpu_device_get_pcie_info(adev); | ||
1870 | |||
1871 | return 0; | 1889 | return 0; |
1872 | } | 1890 | } |
1873 | 1891 | ||
@@ -1977,7 +1995,10 @@ int cik_set_ip_blocks(struct amdgpu_device *adev) | |||
1977 | amdgpu_device_ip_block_add(adev, &cik_common_ip_block); | 1995 | amdgpu_device_ip_block_add(adev, &cik_common_ip_block); |
1978 | amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block); | 1996 | amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block); |
1979 | amdgpu_device_ip_block_add(adev, &cik_ih_ip_block); | 1997 | amdgpu_device_ip_block_add(adev, &cik_ih_ip_block); |
1980 | amdgpu_device_ip_block_add(adev, &amdgpu_pp_ip_block); | 1998 | if (amdgpu_dpm == -1) |
1999 | amdgpu_device_ip_block_add(adev, &ci_smu_ip_block); | ||
2000 | else | ||
2001 | amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); | ||
1981 | if (adev->enable_virtual_display) | 2002 | if (adev->enable_virtual_display) |
1982 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); | 2003 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); |
1983 | #if defined(CONFIG_DRM_AMD_DC) | 2004 | #if defined(CONFIG_DRM_AMD_DC) |
@@ -1995,7 +2016,10 @@ int cik_set_ip_blocks(struct amdgpu_device *adev) | |||
1995 | amdgpu_device_ip_block_add(adev, &cik_common_ip_block); | 2016 | amdgpu_device_ip_block_add(adev, &cik_common_ip_block); |
1996 | amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block); | 2017 | amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block); |
1997 | amdgpu_device_ip_block_add(adev, &cik_ih_ip_block); | 2018 | amdgpu_device_ip_block_add(adev, &cik_ih_ip_block); |
1998 | amdgpu_device_ip_block_add(adev, &amdgpu_pp_ip_block); | 2019 | if (amdgpu_dpm == -1) |
2020 | amdgpu_device_ip_block_add(adev, &ci_smu_ip_block); | ||
2021 | else | ||
2022 | amdgpu_device_ip_block_add(adev, &pp_smu_ip_block); | ||
1999 | if (adev->enable_virtual_display) | 2023 | if (adev->enable_virtual_display) |
2000 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); | 2024 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); |
2001 | #if defined(CONFIG_DRM_AMD_DC) | 2025 | #if defined(CONFIG_DRM_AMD_DC) |
@@ -2013,7 +2037,7 @@ int cik_set_ip_blocks(struct amdgpu_device *adev) | |||
2013 | amdgpu_device_ip_block_add(adev, &cik_common_ip_block); | 2037 | amdgpu_device_ip_block_add(adev, &cik_common_ip_block); |
2014 | amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block); | 2038 | amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block); |
2015 | amdgpu_device_ip_block_add(adev, &cik_ih_ip_block); | 2039 | amdgpu_device_ip_block_add(adev, &cik_ih_ip_block); |
2016 | amdgpu_device_ip_block_add(adev, &amdgpu_pp_ip_block); | 2040 | amdgpu_device_ip_block_add(adev, &kv_smu_ip_block); |
2017 | if (adev->enable_virtual_display) | 2041 | if (adev->enable_virtual_display) |
2018 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); | 2042 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); |
2019 | #if defined(CONFIG_DRM_AMD_DC) | 2043 | #if defined(CONFIG_DRM_AMD_DC) |
@@ -2032,7 +2056,7 @@ int cik_set_ip_blocks(struct amdgpu_device *adev) | |||
2032 | amdgpu_device_ip_block_add(adev, &cik_common_ip_block); | 2056 | amdgpu_device_ip_block_add(adev, &cik_common_ip_block); |
2033 | amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block); | 2057 | amdgpu_device_ip_block_add(adev, &gmc_v7_0_ip_block); |
2034 | amdgpu_device_ip_block_add(adev, &cik_ih_ip_block); | 2058 | amdgpu_device_ip_block_add(adev, &cik_ih_ip_block); |
2035 | amdgpu_device_ip_block_add(adev, &amdgpu_pp_ip_block); | 2059 | amdgpu_device_ip_block_add(adev, &kv_smu_ip_block); |
2036 | if (adev->enable_virtual_display) | 2060 | if (adev->enable_virtual_display) |
2037 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); | 2061 | amdgpu_device_ip_block_add(adev, &dce_virtual_ip_block); |
2038 | #if defined(CONFIG_DRM_AMD_DC) | 2062 | #if defined(CONFIG_DRM_AMD_DC) |