diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_asic.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.c | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c index d948265db87e..b2449629537d 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.c +++ b/drivers/gpu/drm/radeon/radeon_asic.c | |||
@@ -906,9 +906,9 @@ static struct radeon_asic cayman_asic = { | |||
906 | .get_vblank_counter = &evergreen_get_vblank_counter, | 906 | .get_vblank_counter = &evergreen_get_vblank_counter, |
907 | .fence_ring_emit = &r600_fence_ring_emit, | 907 | .fence_ring_emit = &r600_fence_ring_emit, |
908 | .cs_parse = &evergreen_cs_parse, | 908 | .cs_parse = &evergreen_cs_parse, |
909 | .copy_blit = NULL, | 909 | .copy_blit = &evergreen_copy_blit, |
910 | .copy_dma = NULL, | 910 | .copy_dma = &evergreen_copy_blit, |
911 | .copy = NULL, | 911 | .copy = &evergreen_copy_blit, |
912 | .get_engine_clock = &radeon_atom_get_engine_clock, | 912 | .get_engine_clock = &radeon_atom_get_engine_clock, |
913 | .set_engine_clock = &radeon_atom_set_engine_clock, | 913 | .set_engine_clock = &radeon_atom_set_engine_clock, |
914 | .get_memory_clock = &radeon_atom_get_memory_clock, | 914 | .get_memory_clock = &radeon_atom_get_memory_clock, |
@@ -938,6 +938,13 @@ static struct radeon_asic cayman_asic = { | |||
938 | int radeon_asic_init(struct radeon_device *rdev) | 938 | int radeon_asic_init(struct radeon_device *rdev) |
939 | { | 939 | { |
940 | radeon_register_accessor_init(rdev); | 940 | radeon_register_accessor_init(rdev); |
941 | |||
942 | /* set the number of crtcs */ | ||
943 | if (rdev->flags & RADEON_SINGLE_CRTC) | ||
944 | rdev->num_crtc = 1; | ||
945 | else | ||
946 | rdev->num_crtc = 2; | ||
947 | |||
941 | switch (rdev->family) { | 948 | switch (rdev->family) { |
942 | case CHIP_R100: | 949 | case CHIP_R100: |
943 | case CHIP_RV100: | 950 | case CHIP_RV100: |
@@ -1017,18 +1024,32 @@ int radeon_asic_init(struct radeon_device *rdev) | |||
1017 | case CHIP_JUNIPER: | 1024 | case CHIP_JUNIPER: |
1018 | case CHIP_CYPRESS: | 1025 | case CHIP_CYPRESS: |
1019 | case CHIP_HEMLOCK: | 1026 | case CHIP_HEMLOCK: |
1027 | /* set num crtcs */ | ||
1028 | if (rdev->family == CHIP_CEDAR) | ||
1029 | rdev->num_crtc = 4; | ||
1030 | else | ||
1031 | rdev->num_crtc = 6; | ||
1020 | rdev->asic = &evergreen_asic; | 1032 | rdev->asic = &evergreen_asic; |
1021 | break; | 1033 | break; |
1022 | case CHIP_PALM: | 1034 | case CHIP_PALM: |
1035 | case CHIP_SUMO: | ||
1036 | case CHIP_SUMO2: | ||
1023 | rdev->asic = &sumo_asic; | 1037 | rdev->asic = &sumo_asic; |
1024 | break; | 1038 | break; |
1025 | case CHIP_BARTS: | 1039 | case CHIP_BARTS: |
1026 | case CHIP_TURKS: | 1040 | case CHIP_TURKS: |
1027 | case CHIP_CAICOS: | 1041 | case CHIP_CAICOS: |
1042 | /* set num crtcs */ | ||
1043 | if (rdev->family == CHIP_CAICOS) | ||
1044 | rdev->num_crtc = 4; | ||
1045 | else | ||
1046 | rdev->num_crtc = 6; | ||
1028 | rdev->asic = &btc_asic; | 1047 | rdev->asic = &btc_asic; |
1029 | break; | 1048 | break; |
1030 | case CHIP_CAYMAN: | 1049 | case CHIP_CAYMAN: |
1031 | rdev->asic = &cayman_asic; | 1050 | rdev->asic = &cayman_asic; |
1051 | /* set num crtcs */ | ||
1052 | rdev->num_crtc = 6; | ||
1032 | break; | 1053 | break; |
1033 | default: | 1054 | default: |
1034 | /* FIXME: not supported yet */ | 1055 | /* FIXME: not supported yet */ |
@@ -1040,18 +1061,6 @@ int radeon_asic_init(struct radeon_device *rdev) | |||
1040 | rdev->asic->set_memory_clock = NULL; | 1061 | rdev->asic->set_memory_clock = NULL; |
1041 | } | 1062 | } |
1042 | 1063 | ||
1043 | /* set the number of crtcs */ | ||
1044 | if (rdev->flags & RADEON_SINGLE_CRTC) | ||
1045 | rdev->num_crtc = 1; | ||
1046 | else { | ||
1047 | if (ASIC_IS_DCE41(rdev)) | ||
1048 | rdev->num_crtc = 2; | ||
1049 | else if (ASIC_IS_DCE4(rdev)) | ||
1050 | rdev->num_crtc = 6; | ||
1051 | else | ||
1052 | rdev->num_crtc = 2; | ||
1053 | } | ||
1054 | |||
1055 | return 0; | 1064 | return 0; |
1056 | } | 1065 | } |
1057 | 1066 | ||