Commit 948bee3f authored by Alex Deucher's avatar Alex Deucher

drm/radeon: track which asics have UVD

Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 86a45cac
...@@ -1694,6 +1694,7 @@ struct radeon_device { ...@@ -1694,6 +1694,7 @@ struct radeon_device {
int num_crtc; /* number of crtcs */ int num_crtc; /* number of crtcs */
struct mutex dc_hw_i2c_mutex; /* display controller hw i2c mutex */ struct mutex dc_hw_i2c_mutex; /* display controller hw i2c mutex */
bool audio_enabled; bool audio_enabled;
bool has_uvd;
struct r600_audio audio_status; /* audio stuff */ struct r600_audio audio_status; /* audio stuff */
struct notifier_block acpi_nb; struct notifier_block acpi_nb;
/* only one userspace can use Hyperz features or CMASK at a time */ /* only one userspace can use Hyperz features or CMASK at a time */
......
...@@ -1935,6 +1935,8 @@ int radeon_asic_init(struct radeon_device *rdev) ...@@ -1935,6 +1935,8 @@ int radeon_asic_init(struct radeon_device *rdev)
else else
rdev->num_crtc = 2; rdev->num_crtc = 2;
rdev->has_uvd = false;
switch (rdev->family) { switch (rdev->family) {
case CHIP_R100: case CHIP_R100:
case CHIP_RV100: case CHIP_RV100:
...@@ -1999,16 +2001,22 @@ int radeon_asic_init(struct radeon_device *rdev) ...@@ -1999,16 +2001,22 @@ int radeon_asic_init(struct radeon_device *rdev)
case CHIP_RV635: case CHIP_RV635:
case CHIP_RV670: case CHIP_RV670:
rdev->asic = &r600_asic; rdev->asic = &r600_asic;
if (rdev->family == CHIP_R600)
rdev->has_uvd = false;
else
rdev->has_uvd = true;
break; break;
case CHIP_RS780: case CHIP_RS780:
case CHIP_RS880: case CHIP_RS880:
rdev->asic = &rs780_asic; rdev->asic = &rs780_asic;
rdev->has_uvd = true;
break; break;
case CHIP_RV770: case CHIP_RV770:
case CHIP_RV730: case CHIP_RV730:
case CHIP_RV710: case CHIP_RV710:
case CHIP_RV740: case CHIP_RV740:
rdev->asic = &rv770_asic; rdev->asic = &rv770_asic;
rdev->has_uvd = true;
break; break;
case CHIP_CEDAR: case CHIP_CEDAR:
case CHIP_REDWOOD: case CHIP_REDWOOD:
...@@ -2021,11 +2029,13 @@ int radeon_asic_init(struct radeon_device *rdev) ...@@ -2021,11 +2029,13 @@ int radeon_asic_init(struct radeon_device *rdev)
else else
rdev->num_crtc = 6; rdev->num_crtc = 6;
rdev->asic = &evergreen_asic; rdev->asic = &evergreen_asic;
rdev->has_uvd = true;
break; break;
case CHIP_PALM: case CHIP_PALM:
case CHIP_SUMO: case CHIP_SUMO:
case CHIP_SUMO2: case CHIP_SUMO2:
rdev->asic = &sumo_asic; rdev->asic = &sumo_asic;
rdev->has_uvd = true;
break; break;
case CHIP_BARTS: case CHIP_BARTS:
case CHIP_TURKS: case CHIP_TURKS:
...@@ -2036,16 +2046,19 @@ int radeon_asic_init(struct radeon_device *rdev) ...@@ -2036,16 +2046,19 @@ int radeon_asic_init(struct radeon_device *rdev)
else else
rdev->num_crtc = 6; rdev->num_crtc = 6;
rdev->asic = &btc_asic; rdev->asic = &btc_asic;
rdev->has_uvd = true;
break; break;
case CHIP_CAYMAN: case CHIP_CAYMAN:
rdev->asic = &cayman_asic; rdev->asic = &cayman_asic;
/* set num crtcs */ /* set num crtcs */
rdev->num_crtc = 6; rdev->num_crtc = 6;
rdev->has_uvd = true;
break; break;
case CHIP_ARUBA: case CHIP_ARUBA:
rdev->asic = &trinity_asic; rdev->asic = &trinity_asic;
/* set num crtcs */ /* set num crtcs */
rdev->num_crtc = 4; rdev->num_crtc = 4;
rdev->has_uvd = true;
break; break;
case CHIP_TAHITI: case CHIP_TAHITI:
case CHIP_PITCAIRN: case CHIP_PITCAIRN:
...@@ -2060,6 +2073,10 @@ int radeon_asic_init(struct radeon_device *rdev) ...@@ -2060,6 +2073,10 @@ int radeon_asic_init(struct radeon_device *rdev)
rdev->num_crtc = 2; rdev->num_crtc = 2;
else else
rdev->num_crtc = 6; rdev->num_crtc = 6;
if (rdev->family == CHIP_HAINAN)
rdev->has_uvd = false;
else
rdev->has_uvd = true;
break; break;
default: default:
/* FIXME: not supported yet */ /* FIXME: not supported yet */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment