diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2013-05-14 12:08:35 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2013-05-20 12:09:37 -0400 |
commit | 948bee3ff41c226b5c8f7d4a78f5562473a09de6 (patch) | |
tree | 9bd05786ffca09615a74e025627705062bcb534f | |
parent | 86a45cac3f86eb65bfdaa122acf1b9073f9e69b2 (diff) |
drm/radeon: track which asics have UVD
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.c | 17 |
2 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index ec26d686eb7c..142ce6cc69f5 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -1694,6 +1694,7 @@ struct radeon_device { | |||
1694 | int num_crtc; /* number of crtcs */ | 1694 | int num_crtc; /* number of crtcs */ |
1695 | struct mutex dc_hw_i2c_mutex; /* display controller hw i2c mutex */ | 1695 | struct mutex dc_hw_i2c_mutex; /* display controller hw i2c mutex */ |
1696 | bool audio_enabled; | 1696 | bool audio_enabled; |
1697 | bool has_uvd; | ||
1697 | struct r600_audio audio_status; /* audio stuff */ | 1698 | struct r600_audio audio_status; /* audio stuff */ |
1698 | struct notifier_block acpi_nb; | 1699 | struct notifier_block acpi_nb; |
1699 | /* only one userspace can use Hyperz features or CMASK at a time */ | 1700 | /* only one userspace can use Hyperz features or CMASK at a time */ |
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c index 44a7a410141e..06b8c19ab19e 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.c +++ b/drivers/gpu/drm/radeon/radeon_asic.c | |||
@@ -1935,6 +1935,8 @@ int radeon_asic_init(struct radeon_device *rdev) | |||
1935 | else | 1935 | else |
1936 | rdev->num_crtc = 2; | 1936 | rdev->num_crtc = 2; |
1937 | 1937 | ||
1938 | rdev->has_uvd = false; | ||
1939 | |||
1938 | switch (rdev->family) { | 1940 | switch (rdev->family) { |
1939 | case CHIP_R100: | 1941 | case CHIP_R100: |
1940 | case CHIP_RV100: | 1942 | case CHIP_RV100: |
@@ -1999,16 +2001,22 @@ int radeon_asic_init(struct radeon_device *rdev) | |||
1999 | case CHIP_RV635: | 2001 | case CHIP_RV635: |
2000 | case CHIP_RV670: | 2002 | case CHIP_RV670: |
2001 | rdev->asic = &r600_asic; | 2003 | rdev->asic = &r600_asic; |
2004 | if (rdev->family == CHIP_R600) | ||
2005 | rdev->has_uvd = false; | ||
2006 | else | ||
2007 | rdev->has_uvd = true; | ||
2002 | break; | 2008 | break; |
2003 | case CHIP_RS780: | 2009 | case CHIP_RS780: |
2004 | case CHIP_RS880: | 2010 | case CHIP_RS880: |
2005 | rdev->asic = &rs780_asic; | 2011 | rdev->asic = &rs780_asic; |
2012 | rdev->has_uvd = true; | ||
2006 | break; | 2013 | break; |
2007 | case CHIP_RV770: | 2014 | case CHIP_RV770: |
2008 | case CHIP_RV730: | 2015 | case CHIP_RV730: |
2009 | case CHIP_RV710: | 2016 | case CHIP_RV710: |
2010 | case CHIP_RV740: | 2017 | case CHIP_RV740: |
2011 | rdev->asic = &rv770_asic; | 2018 | rdev->asic = &rv770_asic; |
2019 | rdev->has_uvd = true; | ||
2012 | break; | 2020 | break; |
2013 | case CHIP_CEDAR: | 2021 | case CHIP_CEDAR: |
2014 | case CHIP_REDWOOD: | 2022 | case CHIP_REDWOOD: |
@@ -2021,11 +2029,13 @@ int radeon_asic_init(struct radeon_device *rdev) | |||
2021 | else | 2029 | else |
2022 | rdev->num_crtc = 6; | 2030 | rdev->num_crtc = 6; |
2023 | rdev->asic = &evergreen_asic; | 2031 | rdev->asic = &evergreen_asic; |
2032 | rdev->has_uvd = true; | ||
2024 | break; | 2033 | break; |
2025 | case CHIP_PALM: | 2034 | case CHIP_PALM: |
2026 | case CHIP_SUMO: | 2035 | case CHIP_SUMO: |
2027 | case CHIP_SUMO2: | 2036 | case CHIP_SUMO2: |
2028 | rdev->asic = &sumo_asic; | 2037 | rdev->asic = &sumo_asic; |
2038 | rdev->has_uvd = true; | ||
2029 | break; | 2039 | break; |
2030 | case CHIP_BARTS: | 2040 | case CHIP_BARTS: |
2031 | case CHIP_TURKS: | 2041 | case CHIP_TURKS: |
@@ -2036,16 +2046,19 @@ int radeon_asic_init(struct radeon_device *rdev) | |||
2036 | else | 2046 | else |
2037 | rdev->num_crtc = 6; | 2047 | rdev->num_crtc = 6; |
2038 | rdev->asic = &btc_asic; | 2048 | rdev->asic = &btc_asic; |
2049 | rdev->has_uvd = true; | ||
2039 | break; | 2050 | break; |
2040 | case CHIP_CAYMAN: | 2051 | case CHIP_CAYMAN: |
2041 | rdev->asic = &cayman_asic; | 2052 | rdev->asic = &cayman_asic; |
2042 | /* set num crtcs */ | 2053 | /* set num crtcs */ |
2043 | rdev->num_crtc = 6; | 2054 | rdev->num_crtc = 6; |
2055 | rdev->has_uvd = true; | ||
2044 | break; | 2056 | break; |
2045 | case CHIP_ARUBA: | 2057 | case CHIP_ARUBA: |
2046 | rdev->asic = &trinity_asic; | 2058 | rdev->asic = &trinity_asic; |
2047 | /* set num crtcs */ | 2059 | /* set num crtcs */ |
2048 | rdev->num_crtc = 4; | 2060 | rdev->num_crtc = 4; |
2061 | rdev->has_uvd = true; | ||
2049 | break; | 2062 | break; |
2050 | case CHIP_TAHITI: | 2063 | case CHIP_TAHITI: |
2051 | case CHIP_PITCAIRN: | 2064 | case CHIP_PITCAIRN: |
@@ -2060,6 +2073,10 @@ int radeon_asic_init(struct radeon_device *rdev) | |||
2060 | rdev->num_crtc = 2; | 2073 | rdev->num_crtc = 2; |
2061 | else | 2074 | else |
2062 | rdev->num_crtc = 6; | 2075 | rdev->num_crtc = 6; |
2076 | if (rdev->family == CHIP_HAINAN) | ||
2077 | rdev->has_uvd = false; | ||
2078 | else | ||
2079 | rdev->has_uvd = true; | ||
2063 | break; | 2080 | break; |
2064 | default: | 2081 | default: |
2065 | /* FIXME: not supported yet */ | 2082 | /* FIXME: not supported yet */ |