aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon.h
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2010-08-27 18:25:25 -0400
committerDave Airlie <airlied@redhat.com>2010-10-05 21:38:08 -0400
commit724c80e1d630296d1324859e964d80d35007d83c (patch)
tree954e86447e1c259160d09c732ac0eb0289b2ec8b /drivers/gpu/drm/radeon/radeon.h
parentb70d6bb3f67b2e2964abafb0117f1733f062cba5 (diff)
drm/radeon/kms: enable writeback (v2)
When writeback is enabled, the GPU shadows writes to certain registers into a buffer in memory. The driver can then read the values from the shadow rather than reading back from the register across the bus. Writeback can be disabled by setting the no_wb module param to 1. On r6xx/r7xx/evergreen, the following registers are shadowed: - CP scratch registers - CP read pointer - IH write pointer On r1xx-rr5xx, the following registers are shadowed: - CP scratch registers - CP read pointer v2: - Combine wb patches for r6xx-evergreen and r1xx-r5xx - Writeback is disabled on AGP boards since it tends to be unreliable on AGP using the gart. - Check radeon_wb_init return values properly. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon.h')
-rw-r--r--drivers/gpu/drm/radeon/radeon.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index a168d644bf9e..4e10938d8dd1 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -365,6 +365,7 @@ bool radeon_atombios_sideport_present(struct radeon_device *rdev);
365 */ 365 */
366struct radeon_scratch { 366struct radeon_scratch {
367 unsigned num_reg; 367 unsigned num_reg;
368 uint32_t reg_base;
368 bool free[32]; 369 bool free[32];
369 uint32_t reg[32]; 370 uint32_t reg[32];
370}; 371};
@@ -593,8 +594,13 @@ struct radeon_wb {
593 struct radeon_bo *wb_obj; 594 struct radeon_bo *wb_obj;
594 volatile uint32_t *wb; 595 volatile uint32_t *wb;
595 uint64_t gpu_addr; 596 uint64_t gpu_addr;
597 bool enabled;
596}; 598};
597 599
600#define RADEON_WB_SCRATCH_OFFSET 0
601#define RADEON_WB_CP_RPTR_OFFSET 1024
602#define R600_WB_IH_WPTR_OFFSET 2048
603
598/** 604/**
599 * struct radeon_pm - power management datas 605 * struct radeon_pm - power management datas
600 * @max_bandwidth: maximum bandwidth the gpu has (MByte/s) 606 * @max_bandwidth: maximum bandwidth the gpu has (MByte/s)
@@ -1340,6 +1346,9 @@ extern void radeon_update_bandwidth_info(struct radeon_device *rdev);
1340extern void radeon_update_display_priority(struct radeon_device *rdev); 1346extern void radeon_update_display_priority(struct radeon_device *rdev);
1341extern bool radeon_boot_test_post_card(struct radeon_device *rdev); 1347extern bool radeon_boot_test_post_card(struct radeon_device *rdev);
1342extern void radeon_scratch_init(struct radeon_device *rdev); 1348extern void radeon_scratch_init(struct radeon_device *rdev);
1349extern void radeon_wb_fini(struct radeon_device *rdev);
1350extern int radeon_wb_init(struct radeon_device *rdev);
1351extern void radeon_wb_disable(struct radeon_device *rdev);
1343extern void radeon_surface_init(struct radeon_device *rdev); 1352extern void radeon_surface_init(struct radeon_device *rdev);
1344extern int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data); 1353extern int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data);
1345extern void radeon_legacy_set_clock_gating(struct radeon_device *rdev, int enable); 1354extern void radeon_legacy_set_clock_gating(struct radeon_device *rdev, int enable);
@@ -1424,9 +1433,6 @@ extern int r600_pcie_gart_init(struct radeon_device *rdev);
1424extern void r600_pcie_gart_tlb_flush(struct radeon_device *rdev); 1433extern void r600_pcie_gart_tlb_flush(struct radeon_device *rdev);
1425extern int r600_ib_test(struct radeon_device *rdev); 1434extern int r600_ib_test(struct radeon_device *rdev);
1426extern int r600_ring_test(struct radeon_device *rdev); 1435extern int r600_ring_test(struct radeon_device *rdev);
1427extern void r600_wb_fini(struct radeon_device *rdev);
1428extern int r600_wb_enable(struct radeon_device *rdev);
1429extern void r600_wb_disable(struct radeon_device *rdev);
1430extern void r600_scratch_init(struct radeon_device *rdev); 1436extern void r600_scratch_init(struct radeon_device *rdev);
1431extern int r600_blit_init(struct radeon_device *rdev); 1437extern int r600_blit_init(struct radeon_device *rdev);
1432extern void r600_blit_fini(struct radeon_device *rdev); 1438extern void r600_blit_fini(struct radeon_device *rdev);