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 */ |
