drm/radeon/kms: add radeon_asic entry for cayman
authorAlex Deucher <alexdeucher@gmail.com>
Thu, 3 Mar 2011 01:07:36 +0000 (20:07 -0500)
committerDave Airlie <airlied@redhat.com>
Thu, 3 Mar 2011 01:56:50 +0000 (11:56 +1000)
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/radeon_asic.c
drivers/gpu/drm/radeon/radeon_asic.h

index e75d63b8e21d8dcc8902b08f8a479baeea9644c9..3c5d140d2efbc04a40712f13480f5b550b1303c4 100644 (file)
@@ -882,6 +882,52 @@ static struct radeon_asic btc_asic = {
        .post_page_flip = &evergreen_post_page_flip,
 };
 
+static struct radeon_asic cayman_asic = {
+       .init = &cayman_init,
+       .fini = &cayman_fini,
+       .suspend = &cayman_suspend,
+       .resume = &cayman_resume,
+       .cp_commit = &r600_cp_commit,
+       .gpu_is_lockup = &cayman_gpu_is_lockup,
+       .asic_reset = &cayman_asic_reset,
+       .vga_set_state = &r600_vga_set_state,
+       .gart_tlb_flush = &cayman_pcie_gart_tlb_flush,
+       .gart_set_page = &rs600_gart_set_page,
+       .ring_test = &r600_ring_test,
+       .ring_ib_execute = &evergreen_ring_ib_execute,
+       .irq_set = &evergreen_irq_set,
+       .irq_process = &evergreen_irq_process,
+       .get_vblank_counter = &evergreen_get_vblank_counter,
+       .fence_ring_emit = &r600_fence_ring_emit,
+       .cs_parse = &evergreen_cs_parse,
+       .copy_blit = NULL,
+       .copy_dma = NULL,
+       .copy = NULL,
+       .get_engine_clock = &radeon_atom_get_engine_clock,
+       .set_engine_clock = &radeon_atom_set_engine_clock,
+       .get_memory_clock = &radeon_atom_get_memory_clock,
+       .set_memory_clock = &radeon_atom_set_memory_clock,
+       .get_pcie_lanes = NULL,
+       .set_pcie_lanes = NULL,
+       .set_clock_gating = NULL,
+       .set_surface_reg = r600_set_surface_reg,
+       .clear_surface_reg = r600_clear_surface_reg,
+       .bandwidth_update = &evergreen_bandwidth_update,
+       .hpd_init = &evergreen_hpd_init,
+       .hpd_fini = &evergreen_hpd_fini,
+       .hpd_sense = &evergreen_hpd_sense,
+       .hpd_set_polarity = &evergreen_hpd_set_polarity,
+       .gui_idle = &r600_gui_idle,
+       .pm_misc = &evergreen_pm_misc,
+       .pm_prepare = &evergreen_pm_prepare,
+       .pm_finish = &evergreen_pm_finish,
+       .pm_init_profile = &r600_pm_init_profile,
+       .pm_get_dynpm_state = &r600_pm_get_dynpm_state,
+       .pre_page_flip = &evergreen_pre_page_flip,
+       .page_flip = &evergreen_page_flip,
+       .post_page_flip = &evergreen_post_page_flip,
+};
+
 int radeon_asic_init(struct radeon_device *rdev)
 {
        radeon_register_accessor_init(rdev);
@@ -974,6 +1020,9 @@ int radeon_asic_init(struct radeon_device *rdev)
        case CHIP_CAICOS:
                rdev->asic = &btc_asic;
                break;
+       case CHIP_CAYMAN:
+               rdev->asic = &cayman_asic;
+               break;
        default:
                /* FIXME: not supported yet */
                return -EINVAL;
index 1c7317e3aa8c099ceb38b4bcb560f9bc4462a9f9..3d7a0d7c6a9afe4601267e1707eeef2ac9eef5ec 100644 (file)
@@ -429,5 +429,15 @@ void evergreen_kms_blit_copy(struct radeon_device *rdev,
                             u64 src_gpu_addr, u64 dst_gpu_addr,
                             int size_bytes);
 
+/*
+ * cayman
+ */
+void cayman_pcie_gart_tlb_flush(struct radeon_device *rdev);
+int cayman_init(struct radeon_device *rdev);
+void cayman_fini(struct radeon_device *rdev);
+int cayman_suspend(struct radeon_device *rdev);
+int cayman_resume(struct radeon_device *rdev);
+bool cayman_gpu_is_lockup(struct radeon_device *rdev);
+int cayman_asic_reset(struct radeon_device *rdev);
 
 #endif