diff options
| author | Jerome Glisse <jglisse@redhat.com> | 2009-10-01 03:39:24 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2009-10-01 18:51:50 -0400 |
| commit | 3bc6853593bd4fba357dc252b3cf60cd86a1d2ec (patch) | |
| tree | f60509478804b0087bef653dc6c10578deeb40e9 /drivers/gpu | |
| parent | d4550907157d8b3d5286157c15f1200c44842269 (diff) | |
drm/radeon/kms: Convert RS690/RS740 to new init path (V2).
Also cleanup register specific to RS690/RS740. Version 2 add
missing header file for register, remove unecessary call to AGP
function and fix an indentation bug.
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.h | 41 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/rs600.c | 7 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/rs690.c | 356 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/rs690d.h | 307 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/rs690r.h | 99 |
6 files changed, 571 insertions, 249 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index dde1b521aae5..2f084e1501d7 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
| @@ -1081,6 +1081,16 @@ extern void rv515_clock_startup(struct radeon_device *rdev); | |||
| 1081 | extern void rv515_debugfs(struct radeon_device *rdev); | 1081 | extern void rv515_debugfs(struct radeon_device *rdev); |
| 1082 | extern int rv515_suspend(struct radeon_device *rdev); | 1082 | extern int rv515_suspend(struct radeon_device *rdev); |
| 1083 | 1083 | ||
| 1084 | /* rs400 */ | ||
| 1085 | extern int rs400_gart_init(struct radeon_device *rdev); | ||
| 1086 | extern int rs400_gart_enable(struct radeon_device *rdev); | ||
| 1087 | extern void rs400_gart_adjust_size(struct radeon_device *rdev); | ||
| 1088 | extern void rs400_gart_disable(struct radeon_device *rdev); | ||
| 1089 | extern void rs400_gart_fini(struct radeon_device *rdev); | ||
| 1090 | |||
| 1091 | /* rs600 */ | ||
| 1092 | extern void rs600_set_safe_registers(struct radeon_device *rdev); | ||
| 1093 | |||
| 1084 | /* rs690, rs740 */ | 1094 | /* rs690, rs740 */ |
| 1085 | extern void rs690_line_buffer_adjust(struct radeon_device *rdev, | 1095 | extern void rs690_line_buffer_adjust(struct radeon_device *rdev, |
| 1086 | struct drm_display_mode *mode1, | 1096 | struct drm_display_mode *mode1, |
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h index 39f1bb656e61..3ad916492747 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.h +++ b/drivers/gpu/drm/radeon/radeon_asic.h | |||
| @@ -349,36 +349,39 @@ static struct radeon_asic rs600_asic = { | |||
| 349 | /* | 349 | /* |
| 350 | * rs690,rs740 | 350 | * rs690,rs740 |
| 351 | */ | 351 | */ |
| 352 | void rs690_errata(struct radeon_device *rdev); | 352 | int rs690_init(struct radeon_device *rdev); |
| 353 | void rs690_vram_info(struct radeon_device *rdev); | 353 | void rs690_fini(struct radeon_device *rdev); |
| 354 | int rs690_mc_init(struct radeon_device *rdev); | 354 | int rs690_resume(struct radeon_device *rdev); |
| 355 | void rs690_mc_fini(struct radeon_device *rdev); | 355 | int rs690_suspend(struct radeon_device *rdev); |
| 356 | uint32_t rs690_mc_rreg(struct radeon_device *rdev, uint32_t reg); | 356 | uint32_t rs690_mc_rreg(struct radeon_device *rdev, uint32_t reg); |
| 357 | void rs690_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); | 357 | void rs690_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); |
| 358 | void rs690_bandwidth_update(struct radeon_device *rdev); | 358 | void rs690_bandwidth_update(struct radeon_device *rdev); |
| 359 | static struct radeon_asic rs690_asic = { | 359 | static struct radeon_asic rs690_asic = { |
| 360 | .init = &rs600_init, | 360 | .init = &rs690_init, |
| 361 | .errata = &rs690_errata, | 361 | .fini = &rs690_fini, |
| 362 | .vram_info = &rs690_vram_info, | 362 | .suspend = &rs690_suspend, |
| 363 | .resume = &rs690_resume, | ||
| 364 | .errata = NULL, | ||
| 365 | .vram_info = NULL, | ||
| 363 | .gpu_reset = &r300_gpu_reset, | 366 | .gpu_reset = &r300_gpu_reset, |
| 364 | .mc_init = &rs690_mc_init, | 367 | .mc_init = NULL, |
| 365 | .mc_fini = &rs690_mc_fini, | 368 | .mc_fini = NULL, |
| 366 | .wb_init = &r100_wb_init, | 369 | .wb_init = NULL, |
| 367 | .wb_fini = &r100_wb_fini, | 370 | .wb_fini = NULL, |
| 368 | .gart_init = &rs400_gart_init, | 371 | .gart_init = NULL, |
| 369 | .gart_fini = &rs400_gart_fini, | 372 | .gart_fini = NULL, |
| 370 | .gart_enable = &rs400_gart_enable, | 373 | .gart_enable = NULL, |
| 371 | .gart_disable = &rs400_gart_disable, | 374 | .gart_disable = NULL, |
| 372 | .gart_tlb_flush = &rs400_gart_tlb_flush, | 375 | .gart_tlb_flush = &rs400_gart_tlb_flush, |
| 373 | .gart_set_page = &rs400_gart_set_page, | 376 | .gart_set_page = &rs400_gart_set_page, |
| 374 | .cp_init = &r100_cp_init, | 377 | .cp_init = NULL, |
| 375 | .cp_fini = &r100_cp_fini, | 378 | .cp_fini = NULL, |
| 376 | .cp_disable = &r100_cp_disable, | 379 | .cp_disable = NULL, |
| 377 | .cp_commit = &r100_cp_commit, | 380 | .cp_commit = &r100_cp_commit, |
| 378 | .ring_start = &r300_ring_start, | 381 | .ring_start = &r300_ring_start, |
| 379 | .ring_test = &r100_ring_test, | 382 | .ring_test = &r100_ring_test, |
| 380 | .ring_ib_execute = &r100_ring_ib_execute, | 383 | .ring_ib_execute = &r100_ring_ib_execute, |
| 381 | .ib_test = &r100_ib_test, | 384 | .ib_test = NULL, |
| 382 | .irq_set = &rs600_irq_set, | 385 | .irq_set = &rs600_irq_set, |
| 383 | .irq_process = &rs600_irq_process, | 386 | .irq_process = &rs600_irq_process, |
| 384 | .get_vblank_counter = &rs600_get_vblank_counter, | 387 | .get_vblank_counter = &rs600_get_vblank_counter, |
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c index 4a4fe1cb131c..fa8e451c64e8 100644 --- a/drivers/gpu/drm/radeon/rs600.c +++ b/drivers/gpu/drm/radeon/rs600.c | |||
| @@ -416,9 +416,14 @@ void rs600_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v) | |||
| 416 | WREG32(RS600_MC_DATA, v); | 416 | WREG32(RS600_MC_DATA, v); |
| 417 | } | 417 | } |
| 418 | 418 | ||
| 419 | int rs600_init(struct radeon_device *rdev) | 419 | void rs600_set_safe_registers(struct radeon_device *rdev) |
| 420 | { | 420 | { |
| 421 | rdev->config.r300.reg_safe_bm = rs600_reg_safe_bm; | 421 | rdev->config.r300.reg_safe_bm = rs600_reg_safe_bm; |
| 422 | rdev->config.r300.reg_safe_bm_size = ARRAY_SIZE(rs600_reg_safe_bm); | 422 | rdev->config.r300.reg_safe_bm_size = ARRAY_SIZE(rs600_reg_safe_bm); |
| 423 | } | ||
| 424 | |||
| 425 | int rs600_init(struct radeon_device *rdev) | ||
| 426 | { | ||
| 427 | rs600_set_safe_registers(rdev); | ||
| 423 | return 0; | 428 | return 0; |
| 424 | } | 429 | } |
diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c index 7a0098ddf977..0028db51ae75 100644 --- a/drivers/gpu/drm/radeon/rs690.c +++ b/drivers/gpu/drm/radeon/rs690.c | |||
| @@ -26,105 +26,29 @@ | |||
| 26 | * Jerome Glisse | 26 | * Jerome Glisse |
| 27 | */ | 27 | */ |
| 28 | #include "drmP.h" | 28 | #include "drmP.h" |
| 29 | #include "radeon_reg.h" | ||
| 30 | #include "radeon.h" | 29 | #include "radeon.h" |
| 31 | #include "rs690r.h" | ||
| 32 | #include "atom.h" | 30 | #include "atom.h" |
| 33 | #include "atom-bits.h" | 31 | #include "rs690d.h" |
| 34 | |||
| 35 | /* rs690,rs740 depends on : */ | ||
| 36 | void r100_hdp_reset(struct radeon_device *rdev); | ||
| 37 | int r300_mc_wait_for_idle(struct radeon_device *rdev); | ||
| 38 | void r420_pipes_init(struct radeon_device *rdev); | ||
| 39 | void rs400_gart_disable(struct radeon_device *rdev); | ||
| 40 | int rs400_gart_enable(struct radeon_device *rdev); | ||
| 41 | void rs400_gart_adjust_size(struct radeon_device *rdev); | ||
| 42 | void rs600_mc_disable_clients(struct radeon_device *rdev); | ||
| 43 | |||
| 44 | /* This files gather functions specifics to : | ||
| 45 | * rs690,rs740 | ||
| 46 | * | ||
| 47 | * Some of these functions might be used by newer ASICs. | ||
| 48 | */ | ||
| 49 | void rs690_gpu_init(struct radeon_device *rdev); | ||
| 50 | int rs690_mc_wait_for_idle(struct radeon_device *rdev); | ||
| 51 | |||
| 52 | |||
| 53 | /* | ||
| 54 | * MC functions. | ||
| 55 | */ | ||
| 56 | int rs690_mc_init(struct radeon_device *rdev) | ||
| 57 | { | ||
| 58 | uint32_t tmp; | ||
| 59 | int r; | ||
| 60 | |||
| 61 | if (r100_debugfs_rbbm_init(rdev)) { | ||
| 62 | DRM_ERROR("Failed to register debugfs file for RBBM !\n"); | ||
| 63 | } | ||
| 64 | |||
| 65 | rs690_gpu_init(rdev); | ||
| 66 | rs400_gart_disable(rdev); | ||
| 67 | |||
| 68 | /* Setup GPU memory space */ | ||
| 69 | rdev->mc.gtt_location = rdev->mc.mc_vram_size; | ||
| 70 | rdev->mc.gtt_location += (rdev->mc.gtt_size - 1); | ||
| 71 | rdev->mc.gtt_location &= ~(rdev->mc.gtt_size - 1); | ||
| 72 | rdev->mc.vram_location = 0xFFFFFFFFUL; | ||
| 73 | r = radeon_mc_setup(rdev); | ||
| 74 | if (r) { | ||
| 75 | return r; | ||
| 76 | } | ||
| 77 | |||
| 78 | /* Program GPU memory space */ | ||
| 79 | rs600_mc_disable_clients(rdev); | ||
| 80 | if (rs690_mc_wait_for_idle(rdev)) { | ||
| 81 | printk(KERN_WARNING "Failed to wait MC idle while " | ||
| 82 | "programming pipes. Bad things might happen.\n"); | ||
| 83 | } | ||
| 84 | tmp = rdev->mc.vram_location + rdev->mc.mc_vram_size - 1; | ||
| 85 | tmp = REG_SET(RS690_MC_FB_TOP, tmp >> 16); | ||
| 86 | tmp |= REG_SET(RS690_MC_FB_START, rdev->mc.vram_location >> 16); | ||
| 87 | WREG32_MC(RS690_MCCFG_FB_LOCATION, tmp); | ||
| 88 | /* FIXME: Does this reg exist on RS480,RS740 ? */ | ||
| 89 | WREG32(0x310, rdev->mc.vram_location); | ||
| 90 | WREG32(RS690_HDP_FB_LOCATION, rdev->mc.vram_location >> 16); | ||
| 91 | return 0; | ||
| 92 | } | ||
| 93 | |||
| 94 | void rs690_mc_fini(struct radeon_device *rdev) | ||
| 95 | { | ||
| 96 | } | ||
| 97 | |||
| 98 | 32 | ||
| 99 | /* | 33 | static int rs690_mc_wait_for_idle(struct radeon_device *rdev) |
| 100 | * Global GPU functions | ||
| 101 | */ | ||
| 102 | int rs690_mc_wait_for_idle(struct radeon_device *rdev) | ||
| 103 | { | 34 | { |
| 104 | unsigned i; | 35 | unsigned i; |
| 105 | uint32_t tmp; | 36 | uint32_t tmp; |
| 106 | 37 | ||
| 107 | for (i = 0; i < rdev->usec_timeout; i++) { | 38 | for (i = 0; i < rdev->usec_timeout; i++) { |
| 108 | /* read MC_STATUS */ | 39 | /* read MC_STATUS */ |
| 109 | tmp = RREG32_MC(RS690_MC_STATUS); | 40 | tmp = RREG32_MC(R_000090_MC_SYSTEM_STATUS); |
| 110 | if (tmp & RS690_MC_STATUS_IDLE) { | 41 | if (G_000090_MC_SYSTEM_IDLE(tmp)) |
| 111 | return 0; | 42 | return 0; |
| 112 | } | 43 | udelay(1); |
| 113 | DRM_UDELAY(1); | ||
| 114 | } | 44 | } |
| 115 | return -1; | 45 | return -1; |
| 116 | } | 46 | } |
| 117 | 47 | ||
| 118 | void rs690_errata(struct radeon_device *rdev) | 48 | static void rs690_gpu_init(struct radeon_device *rdev) |
| 119 | { | ||
| 120 | rdev->pll_errata = 0; | ||
| 121 | } | ||
| 122 | |||
| 123 | void rs690_gpu_init(struct radeon_device *rdev) | ||
| 124 | { | 49 | { |
| 125 | /* FIXME: HDP same place on rs690 ? */ | 50 | /* FIXME: HDP same place on rs690 ? */ |
| 126 | r100_hdp_reset(rdev); | 51 | r100_hdp_reset(rdev); |
| 127 | rv515_vga_render_disable(rdev); | ||
| 128 | /* FIXME: is this correct ? */ | 52 | /* FIXME: is this correct ? */ |
| 129 | r420_pipes_init(rdev); | 53 | r420_pipes_init(rdev); |
| 130 | if (rs690_mc_wait_for_idle(rdev)) { | 54 | if (rs690_mc_wait_for_idle(rdev)) { |
| @@ -133,10 +57,6 @@ void rs690_gpu_init(struct radeon_device *rdev) | |||
| 133 | } | 57 | } |
| 134 | } | 58 | } |
| 135 | 59 | ||
| 136 | |||
| 137 | /* | ||
| 138 | * VRAM info. | ||
| 139 | */ | ||
| 140 | void rs690_pm_info(struct radeon_device *rdev) | 60 | void rs690_pm_info(struct radeon_device *rdev) |
| 141 | { | 61 | { |
| 142 | int index = GetIndexIntoMasterTable(DATA, IntegratedSystemInfo); | 62 | int index = GetIndexIntoMasterTable(DATA, IntegratedSystemInfo); |
| @@ -250,39 +170,39 @@ void rs690_line_buffer_adjust(struct radeon_device *rdev, | |||
| 250 | /* | 170 | /* |
| 251 | * Line Buffer Setup | 171 | * Line Buffer Setup |
| 252 | * There is a single line buffer shared by both display controllers. | 172 | * There is a single line buffer shared by both display controllers. |
| 253 | * DC_LB_MEMORY_SPLIT controls how that line buffer is shared between | 173 | * R_006520_DC_LB_MEMORY_SPLIT controls how that line buffer is shared between |
| 254 | * the display controllers. The paritioning can either be done | 174 | * the display controllers. The paritioning can either be done |
| 255 | * manually or via one of four preset allocations specified in bits 1:0: | 175 | * manually or via one of four preset allocations specified in bits 1:0: |
| 256 | * 0 - line buffer is divided in half and shared between crtc | 176 | * 0 - line buffer is divided in half and shared between crtc |
| 257 | * 1 - D1 gets 3/4 of the line buffer, D2 gets 1/4 | 177 | * 1 - D1 gets 3/4 of the line buffer, D2 gets 1/4 |
| 258 | * 2 - D1 gets the whole buffer | 178 | * 2 - D1 gets the whole buffer |
| 259 | * 3 - D1 gets 1/4 of the line buffer, D2 gets 3/4 | 179 | * 3 - D1 gets 1/4 of the line buffer, D2 gets 3/4 |
| 260 | * Setting bit 2 of DC_LB_MEMORY_SPLIT controls switches to manual | 180 | * Setting bit 2 of R_006520_DC_LB_MEMORY_SPLIT controls switches to manual |
| 261 | * allocation mode. In manual allocation mode, D1 always starts at 0, | 181 | * allocation mode. In manual allocation mode, D1 always starts at 0, |
| 262 | * D1 end/2 is specified in bits 14:4; D2 allocation follows D1. | 182 | * D1 end/2 is specified in bits 14:4; D2 allocation follows D1. |
| 263 | */ | 183 | */ |
| 264 | tmp = RREG32(DC_LB_MEMORY_SPLIT) & ~DC_LB_MEMORY_SPLIT_MASK; | 184 | tmp = RREG32(R_006520_DC_LB_MEMORY_SPLIT) & C_006520_DC_LB_MEMORY_SPLIT; |
| 265 | tmp &= ~DC_LB_MEMORY_SPLIT_SHIFT_MODE; | 185 | tmp &= ~C_006520_DC_LB_MEMORY_SPLIT_MODE; |
| 266 | /* auto */ | 186 | /* auto */ |
| 267 | if (mode1 && mode2) { | 187 | if (mode1 && mode2) { |
| 268 | if (mode1->hdisplay > mode2->hdisplay) { | 188 | if (mode1->hdisplay > mode2->hdisplay) { |
| 269 | if (mode1->hdisplay > 2560) | 189 | if (mode1->hdisplay > 2560) |
| 270 | tmp |= DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q; | 190 | tmp |= V_006520_DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q; |
| 271 | else | 191 | else |
| 272 | tmp |= DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; | 192 | tmp |= V_006520_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; |
| 273 | } else if (mode2->hdisplay > mode1->hdisplay) { | 193 | } else if (mode2->hdisplay > mode1->hdisplay) { |
| 274 | if (mode2->hdisplay > 2560) | 194 | if (mode2->hdisplay > 2560) |
| 275 | tmp |= DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q; | 195 | tmp |= V_006520_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q; |
| 276 | else | 196 | else |
| 277 | tmp |= DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; | 197 | tmp |= V_006520_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; |
| 278 | } else | 198 | } else |
| 279 | tmp |= AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; | 199 | tmp |= V_006520_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; |
| 280 | } else if (mode1) { | 200 | } else if (mode1) { |
| 281 | tmp |= DC_LB_MEMORY_SPLIT_D1_ONLY; | 201 | tmp |= V_006520_DC_LB_MEMORY_SPLIT_D1_ONLY; |
| 282 | } else if (mode2) { | 202 | } else if (mode2) { |
| 283 | tmp |= DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q; | 203 | tmp |= V_006520_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q; |
| 284 | } | 204 | } |
| 285 | WREG32(DC_LB_MEMORY_SPLIT, tmp); | 205 | WREG32(R_006520_DC_LB_MEMORY_SPLIT, tmp); |
| 286 | } | 206 | } |
| 287 | 207 | ||
| 288 | struct rs690_watermark { | 208 | struct rs690_watermark { |
| @@ -487,28 +407,28 @@ void rs690_bandwidth_update(struct radeon_device *rdev) | |||
| 487 | * option. | 407 | * option. |
| 488 | */ | 408 | */ |
| 489 | if (rdev->disp_priority == 2) { | 409 | if (rdev->disp_priority == 2) { |
| 490 | tmp = RREG32_MC(MC_INIT_MISC_LAT_TIMER); | 410 | tmp = RREG32_MC(R_000104_MC_INIT_MISC_LAT_TIMER); |
| 491 | tmp &= ~MC_DISP1R_INIT_LAT_MASK; | 411 | tmp &= C_000104_MC_DISP0R_INIT_LAT; |
| 492 | tmp &= ~MC_DISP0R_INIT_LAT_MASK; | 412 | tmp &= C_000104_MC_DISP1R_INIT_LAT; |
| 493 | if (mode1) | ||
| 494 | tmp |= (1 << MC_DISP1R_INIT_LAT_SHIFT); | ||
| 495 | if (mode0) | 413 | if (mode0) |
| 496 | tmp |= (1 << MC_DISP0R_INIT_LAT_SHIFT); | 414 | tmp |= S_000104_MC_DISP0R_INIT_LAT(1); |
| 497 | WREG32_MC(MC_INIT_MISC_LAT_TIMER, tmp); | 415 | if (mode1) |
| 416 | tmp |= S_000104_MC_DISP1R_INIT_LAT(1); | ||
| 417 | WREG32_MC(R_000104_MC_INIT_MISC_LAT_TIMER, tmp); | ||
| 498 | } | 418 | } |
| 499 | rs690_line_buffer_adjust(rdev, mode0, mode1); | 419 | rs690_line_buffer_adjust(rdev, mode0, mode1); |
| 500 | 420 | ||
| 501 | if ((rdev->family == CHIP_RS690) || (rdev->family == CHIP_RS740)) | 421 | if ((rdev->family == CHIP_RS690) || (rdev->family == CHIP_RS740)) |
| 502 | WREG32(DCP_CONTROL, 0); | 422 | WREG32(R_006C9C_DCP_CONTROL, 0); |
| 503 | if ((rdev->family == CHIP_RS780) || (rdev->family == CHIP_RS880)) | 423 | if ((rdev->family == CHIP_RS780) || (rdev->family == CHIP_RS880)) |
| 504 | WREG32(DCP_CONTROL, 2); | 424 | WREG32(R_006C9C_DCP_CONTROL, 2); |
| 505 | 425 | ||
| 506 | rs690_crtc_bandwidth_compute(rdev, rdev->mode_info.crtcs[0], &wm0); | 426 | rs690_crtc_bandwidth_compute(rdev, rdev->mode_info.crtcs[0], &wm0); |
| 507 | rs690_crtc_bandwidth_compute(rdev, rdev->mode_info.crtcs[1], &wm1); | 427 | rs690_crtc_bandwidth_compute(rdev, rdev->mode_info.crtcs[1], &wm1); |
| 508 | 428 | ||
| 509 | tmp = (wm0.lb_request_fifo_depth - 1); | 429 | tmp = (wm0.lb_request_fifo_depth - 1); |
| 510 | tmp |= (wm1.lb_request_fifo_depth - 1) << 16; | 430 | tmp |= (wm1.lb_request_fifo_depth - 1) << 16; |
| 511 | WREG32(LB_MAX_REQ_OUTSTANDING, tmp); | 431 | WREG32(R_006D58_LB_MAX_REQ_OUTSTANDING, tmp); |
| 512 | 432 | ||
| 513 | if (mode0 && mode1) { | 433 | if (mode0 && mode1) { |
| 514 | if (rfixed_trunc(wm0.dbpp) > 64) | 434 | if (rfixed_trunc(wm0.dbpp) > 64) |
| @@ -561,10 +481,10 @@ void rs690_bandwidth_update(struct radeon_device *rdev) | |||
| 561 | priority_mark12.full = 0; | 481 | priority_mark12.full = 0; |
| 562 | if (wm1.priority_mark_max.full > priority_mark12.full) | 482 | if (wm1.priority_mark_max.full > priority_mark12.full) |
| 563 | priority_mark12.full = wm1.priority_mark_max.full; | 483 | priority_mark12.full = wm1.priority_mark_max.full; |
| 564 | WREG32(D1MODE_PRIORITY_A_CNT, rfixed_trunc(priority_mark02)); | 484 | WREG32(R_006548_D1MODE_PRIORITY_A_CNT, rfixed_trunc(priority_mark02)); |
| 565 | WREG32(D1MODE_PRIORITY_B_CNT, rfixed_trunc(priority_mark02)); | 485 | WREG32(R_00654C_D1MODE_PRIORITY_B_CNT, rfixed_trunc(priority_mark02)); |
| 566 | WREG32(D2MODE_PRIORITY_A_CNT, rfixed_trunc(priority_mark12)); | 486 | WREG32(R_006D48_D2MODE_PRIORITY_A_CNT, rfixed_trunc(priority_mark12)); |
| 567 | WREG32(D2MODE_PRIORITY_B_CNT, rfixed_trunc(priority_mark12)); | 487 | WREG32(R_006D4C_D2MODE_PRIORITY_B_CNT, rfixed_trunc(priority_mark12)); |
| 568 | } else if (mode0) { | 488 | } else if (mode0) { |
| 569 | if (rfixed_trunc(wm0.dbpp) > 64) | 489 | if (rfixed_trunc(wm0.dbpp) > 64) |
| 570 | a.full = rfixed_mul(wm0.dbpp, wm0.num_line_pair); | 490 | a.full = rfixed_mul(wm0.dbpp, wm0.num_line_pair); |
| @@ -591,10 +511,12 @@ void rs690_bandwidth_update(struct radeon_device *rdev) | |||
| 591 | priority_mark02.full = 0; | 511 | priority_mark02.full = 0; |
| 592 | if (wm0.priority_mark_max.full > priority_mark02.full) | 512 | if (wm0.priority_mark_max.full > priority_mark02.full) |
| 593 | priority_mark02.full = wm0.priority_mark_max.full; | 513 | priority_mark02.full = wm0.priority_mark_max.full; |
| 594 | WREG32(D1MODE_PRIORITY_A_CNT, rfixed_trunc(priority_mark02)); | 514 | WREG32(R_006548_D1MODE_PRIORITY_A_CNT, rfixed_trunc(priority_mark02)); |
| 595 | WREG32(D1MODE_PRIORITY_B_CNT, rfixed_trunc(priority_mark02)); | 515 | WREG32(R_00654C_D1MODE_PRIORITY_B_CNT, rfixed_trunc(priority_mark02)); |
| 596 | WREG32(D2MODE_PRIORITY_A_CNT, MODE_PRIORITY_OFF); | 516 | WREG32(R_006D48_D2MODE_PRIORITY_A_CNT, |
| 597 | WREG32(D2MODE_PRIORITY_B_CNT, MODE_PRIORITY_OFF); | 517 | S_006D48_D2MODE_PRIORITY_A_OFF(1)); |
| 518 | WREG32(R_006D4C_D2MODE_PRIORITY_B_CNT, | ||
| 519 | S_006D4C_D2MODE_PRIORITY_B_OFF(1)); | ||
| 598 | } else { | 520 | } else { |
| 599 | if (rfixed_trunc(wm1.dbpp) > 64) | 521 | if (rfixed_trunc(wm1.dbpp) > 64) |
| 600 | a.full = rfixed_mul(wm1.dbpp, wm1.num_line_pair); | 522 | a.full = rfixed_mul(wm1.dbpp, wm1.num_line_pair); |
| @@ -621,30 +543,204 @@ void rs690_bandwidth_update(struct radeon_device *rdev) | |||
| 621 | priority_mark12.full = 0; | 543 | priority_mark12.full = 0; |
| 622 | if (wm1.priority_mark_max.full > priority_mark12.full) | 544 | if (wm1.priority_mark_max.full > priority_mark12.full) |
| 623 | priority_mark12.full = wm1.priority_mark_max.full; | 545 | priority_mark12.full = wm1.priority_mark_max.full; |
| 624 | WREG32(D1MODE_PRIORITY_A_CNT, MODE_PRIORITY_OFF); | 546 | WREG32(R_006548_D1MODE_PRIORITY_A_CNT, |
| 625 | WREG32(D1MODE_PRIORITY_B_CNT, MODE_PRIORITY_OFF); | 547 | S_006548_D1MODE_PRIORITY_A_OFF(1)); |
| 626 | WREG32(D2MODE_PRIORITY_A_CNT, rfixed_trunc(priority_mark12)); | 548 | WREG32(R_00654C_D1MODE_PRIORITY_B_CNT, |
| 627 | WREG32(D2MODE_PRIORITY_B_CNT, rfixed_trunc(priority_mark12)); | 549 | S_00654C_D1MODE_PRIORITY_B_OFF(1)); |
| 550 | WREG32(R_006D48_D2MODE_PRIORITY_A_CNT, rfixed_trunc(priority_mark12)); | ||
| 551 | WREG32(R_006D4C_D2MODE_PRIORITY_B_CNT, rfixed_trunc(priority_mark12)); | ||
| 628 | } | 552 | } |
| 629 | } | 553 | } |
| 630 | 554 | ||
| 631 | /* | ||
| 632 | * Indirect registers accessor | ||
| 633 | */ | ||
| 634 | uint32_t rs690_mc_rreg(struct radeon_device *rdev, uint32_t reg) | 555 | uint32_t rs690_mc_rreg(struct radeon_device *rdev, uint32_t reg) |
| 635 | { | 556 | { |
| 636 | uint32_t r; | 557 | uint32_t r; |
| 637 | 558 | ||
| 638 | WREG32(RS690_MC_INDEX, (reg & RS690_MC_INDEX_MASK)); | 559 | WREG32(R_000078_MC_INDEX, S_000078_MC_IND_ADDR(reg)); |
| 639 | r = RREG32(RS690_MC_DATA); | 560 | r = RREG32(R_00007C_MC_DATA); |
| 640 | WREG32(RS690_MC_INDEX, RS690_MC_INDEX_MASK); | 561 | WREG32(R_000078_MC_INDEX, ~C_000078_MC_IND_ADDR); |
| 641 | return r; | 562 | return r; |
| 642 | } | 563 | } |
| 643 | 564 | ||
| 644 | void rs690_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v) | 565 | void rs690_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v) |
| 645 | { | 566 | { |
| 646 | WREG32(RS690_MC_INDEX, | 567 | WREG32(R_000078_MC_INDEX, S_000078_MC_IND_ADDR(reg) | |
| 647 | RS690_MC_INDEX_WR_EN | ((reg) & RS690_MC_INDEX_MASK)); | 568 | S_000078_MC_IND_WR_EN(1)); |
| 648 | WREG32(RS690_MC_DATA, v); | 569 | WREG32(R_00007C_MC_DATA, v); |
| 649 | WREG32(RS690_MC_INDEX, RS690_MC_INDEX_WR_ACK); | 570 | WREG32(R_000078_MC_INDEX, 0x7F); |
| 571 | } | ||
| 572 | |||
| 573 | void rs690_mc_program(struct radeon_device *rdev) | ||
| 574 | { | ||
| 575 | struct rv515_mc_save save; | ||
| 576 | |||
| 577 | /* Stops all mc clients */ | ||
| 578 | rv515_mc_stop(rdev, &save); | ||
| 579 | |||
| 580 | /* Wait for mc idle */ | ||
| 581 | if (rs690_mc_wait_for_idle(rdev)) | ||
| 582 | dev_warn(rdev->dev, "Wait MC idle timeout before updating MC.\n"); | ||
| 583 | /* Program MC, should be a 32bits limited address space */ | ||
| 584 | WREG32_MC(R_000100_MCCFG_FB_LOCATION, | ||
| 585 | S_000100_MC_FB_START(rdev->mc.vram_start >> 16) | | ||
| 586 | S_000100_MC_FB_TOP(rdev->mc.vram_end >> 16)); | ||
| 587 | WREG32(R_000134_HDP_FB_LOCATION, | ||
| 588 | S_000134_HDP_FB_START(rdev->mc.vram_start >> 16)); | ||
| 589 | |||
| 590 | rv515_mc_resume(rdev, &save); | ||
| 591 | } | ||
| 592 | |||
| 593 | static int rs690_startup(struct radeon_device *rdev) | ||
| 594 | { | ||
| 595 | int r; | ||
| 596 | |||
| 597 | rs690_mc_program(rdev); | ||
| 598 | /* Resume clock */ | ||
| 599 | rv515_clock_startup(rdev); | ||
| 600 | /* Initialize GPU configuration (# pipes, ...) */ | ||
| 601 | rs690_gpu_init(rdev); | ||
| 602 | /* Initialize GART (initialize after TTM so we can allocate | ||
| 603 | * memory through TTM but finalize after TTM) */ | ||
| 604 | r = rs400_gart_enable(rdev); | ||
| 605 | if (r) | ||
| 606 | return r; | ||
| 607 | /* Enable IRQ */ | ||
| 608 | rdev->irq.sw_int = true; | ||
| 609 | r100_irq_set(rdev); | ||
| 610 | /* 1M ring buffer */ | ||
| 611 | r = r100_cp_init(rdev, 1024 * 1024); | ||
| 612 | if (r) { | ||
| 613 | dev_err(rdev->dev, "failled initializing CP (%d).\n", r); | ||
| 614 | return r; | ||
| 615 | } | ||
| 616 | r = r100_wb_init(rdev); | ||
| 617 | if (r) | ||
| 618 | dev_err(rdev->dev, "failled initializing WB (%d).\n", r); | ||
| 619 | r = r100_ib_init(rdev); | ||
| 620 | if (r) { | ||
| 621 | dev_err(rdev->dev, "failled initializing IB (%d).\n", r); | ||
| 622 | return r; | ||
| 623 | } | ||
| 624 | return 0; | ||
| 625 | } | ||
| 626 | |||
| 627 | int rs690_resume(struct radeon_device *rdev) | ||
| 628 | { | ||
| 629 | /* Make sur GART are not working */ | ||
| 630 | rs400_gart_disable(rdev); | ||
| 631 | /* Resume clock before doing reset */ | ||
| 632 | rv515_clock_startup(rdev); | ||
| 633 | /* Reset gpu before posting otherwise ATOM will enter infinite loop */ | ||
| 634 | if (radeon_gpu_reset(rdev)) { | ||
| 635 | dev_warn(rdev->dev, "GPU reset failed ! (0xE40=0x%08X, 0x7C0=0x%08X)\n", | ||
| 636 | RREG32(R_000E40_RBBM_STATUS), | ||
| 637 | RREG32(R_0007C0_CP_STAT)); | ||
| 638 | } | ||
| 639 | /* post */ | ||
| 640 | atom_asic_init(rdev->mode_info.atom_context); | ||
| 641 | /* Resume clock after posting */ | ||
| 642 | rv515_clock_startup(rdev); | ||
| 643 | return rs690_startup(rdev); | ||
| 644 | } | ||
| 645 | |||
| 646 | int rs690_suspend(struct radeon_device *rdev) | ||
| 647 | { | ||
| 648 | r100_cp_disable(rdev); | ||
| 649 | r100_wb_disable(rdev); | ||
| 650 | r100_irq_disable(rdev); | ||
| 651 | rs400_gart_disable(rdev); | ||
| 652 | return 0; | ||
| 653 | } | ||
| 654 | |||
| 655 | void rs690_fini(struct radeon_device *rdev) | ||
| 656 | { | ||
| 657 | rs690_suspend(rdev); | ||
| 658 | r100_cp_fini(rdev); | ||
| 659 | r100_wb_fini(rdev); | ||
| 660 | r100_ib_fini(rdev); | ||
| 661 | radeon_gem_fini(rdev); | ||
| 662 | rs400_gart_fini(rdev); | ||
| 663 | radeon_irq_kms_fini(rdev); | ||
| 664 | radeon_fence_driver_fini(rdev); | ||
| 665 | radeon_object_fini(rdev); | ||
| 666 | radeon_atombios_fini(rdev); | ||
| 667 | kfree(rdev->bios); | ||
| 668 | rdev->bios = NULL; | ||
| 669 | } | ||
| 670 | |||
| 671 | int rs690_init(struct radeon_device *rdev) | ||
| 672 | { | ||
| 673 | int r; | ||
| 674 | |||
| 675 | rdev->new_init_path = true; | ||
| 676 | /* Disable VGA */ | ||
| 677 | rv515_vga_render_disable(rdev); | ||
| 678 | /* Initialize scratch registers */ | ||
| 679 | radeon_scratch_init(rdev); | ||
| 680 | /* Initialize surface registers */ | ||
| 681 | radeon_surface_init(rdev); | ||
| 682 | /* TODO: disable VGA need to use VGA request */ | ||
| 683 | /* BIOS*/ | ||
| 684 | if (!radeon_get_bios(rdev)) { | ||
| 685 | if (ASIC_IS_AVIVO(rdev)) | ||
| 686 | return -EINVAL; | ||
| 687 | } | ||
| 688 | if (rdev->is_atom_bios) { | ||
| 689 | r = radeon_atombios_init(rdev); | ||
| 690 | if (r) | ||
| 691 | return r; | ||
| 692 | } else { | ||
| 693 | dev_err(rdev->dev, "Expecting atombios for RV515 GPU\n"); | ||
| 694 | return -EINVAL; | ||
| 695 | } | ||
| 696 | /* Reset gpu before posting otherwise ATOM will enter infinite loop */ | ||
| 697 | if (radeon_gpu_reset(rdev)) { | ||
| 698 | dev_warn(rdev->dev, | ||
| 699 | "GPU reset failed ! (0xE40=0x%08X, 0x7C0=0x%08X)\n", | ||
| 700 | RREG32(R_000E40_RBBM_STATUS), | ||
| 701 | RREG32(R_0007C0_CP_STAT)); | ||
| 702 | } | ||
| 703 | /* check if cards are posted or not */ | ||
| 704 | if (!radeon_card_posted(rdev) && rdev->bios) { | ||
| 705 | DRM_INFO("GPU not posted. posting now...\n"); | ||
| 706 | atom_asic_init(rdev->mode_info.atom_context); | ||
| 707 | } | ||
| 708 | /* Initialize clocks */ | ||
| 709 | radeon_get_clock_info(rdev->ddev); | ||
| 710 | /* Get vram informations */ | ||
| 711 | rs690_vram_info(rdev); | ||
| 712 | /* Initialize memory controller (also test AGP) */ | ||
| 713 | r = r420_mc_init(rdev); | ||
| 714 | if (r) | ||
| 715 | return r; | ||
| 716 | rv515_debugfs(rdev); | ||
| 717 | /* Fence driver */ | ||
| 718 | r = radeon_fence_driver_init(rdev); | ||
| 719 | if (r) | ||
| 720 | return r; | ||
| 721 | r = radeon_irq_kms_init(rdev); | ||
| 722 | if (r) | ||
| 723 | return r; | ||
| 724 | /* Memory manager */ | ||
| 725 | r = radeon_object_init(rdev); | ||
| 726 | if (r) | ||
| 727 | return r; | ||
| 728 | r = rs400_gart_init(rdev); | ||
| 729 | if (r) | ||
| 730 | return r; | ||
| 731 | rs600_set_safe_registers(rdev); | ||
| 732 | rdev->accel_working = true; | ||
| 733 | r = rs690_startup(rdev); | ||
| 734 | if (r) { | ||
| 735 | /* Somethings want wront with the accel init stop accel */ | ||
| 736 | dev_err(rdev->dev, "Disabling GPU acceleration\n"); | ||
| 737 | rs690_suspend(rdev); | ||
| 738 | r100_cp_fini(rdev); | ||
| 739 | r100_wb_fini(rdev); | ||
| 740 | r100_ib_fini(rdev); | ||
| 741 | rs400_gart_fini(rdev); | ||
| 742 | radeon_irq_kms_fini(rdev); | ||
| 743 | rdev->accel_working = false; | ||
| 744 | } | ||
| 745 | return 0; | ||
| 650 | } | 746 | } |
diff --git a/drivers/gpu/drm/radeon/rs690d.h b/drivers/gpu/drm/radeon/rs690d.h new file mode 100644 index 000000000000..62d31e7a897f --- /dev/null +++ b/drivers/gpu/drm/radeon/rs690d.h | |||
| @@ -0,0 +1,307 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2008 Advanced Micro Devices, Inc. | ||
| 3 | * Copyright 2008 Red Hat Inc. | ||
| 4 | * Copyright 2009 Jerome Glisse. | ||
| 5 | * | ||
| 6 | * Permission is hereby granted, free of charge, to any person obtaining a | ||
| 7 | * copy of this software and associated documentation files (the "Software"), | ||
| 8 | * to deal in the Software without restriction, including without limitation | ||
| 9 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 10 | * and/or sell copies of the Software, and to permit persons to whom the | ||
| 11 | * Software is furnished to do so, subject to the following conditions: | ||
| 12 | * | ||
| 13 | * The above copyright notice and this permission notice shall be included in | ||
| 14 | * all copies or substantial portions of the Software. | ||
| 15 | * | ||
| 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
| 19 | * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
| 20 | * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
| 21 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
| 22 | * OTHER DEALINGS IN THE SOFTWARE. | ||
| 23 | * | ||
| 24 | * Authors: Dave Airlie | ||
| 25 | * Alex Deucher | ||
| 26 | * Jerome Glisse | ||
| 27 | */ | ||
| 28 | #ifndef __RS690D_H__ | ||
| 29 | #define __RS690D_H__ | ||
| 30 | |||
| 31 | /* Registers */ | ||
| 32 | #define R_000078_MC_INDEX 0x000078 | ||
| 33 | #define S_000078_MC_IND_ADDR(x) (((x) & 0x1FF) << 0) | ||
| 34 | #define G_000078_MC_IND_ADDR(x) (((x) >> 0) & 0x1FF) | ||
| 35 | #define C_000078_MC_IND_ADDR 0xFFFFFE00 | ||
| 36 | #define S_000078_MC_IND_WR_EN(x) (((x) & 0x1) << 9) | ||
| 37 | #define G_000078_MC_IND_WR_EN(x) (((x) >> 9) & 0x1) | ||
| 38 | #define C_000078_MC_IND_WR_EN 0xFFFFFDFF | ||
| 39 | #define R_00007C_MC_DATA 0x00007C | ||
| 40 | #define S_00007C_MC_DATA(x) (((x) & 0xFFFFFFFF) << 0) | ||
| 41 | #define G_00007C_MC_DATA(x) (((x) >> 0) & 0xFFFFFFFF) | ||
| 42 | #define C_00007C_MC_DATA 0x00000000 | ||
| 43 | #define R_0000F8_CONFIG_MEMSIZE 0x0000F8 | ||
| 44 | #define S_0000F8_CONFIG_MEMSIZE(x) (((x) & 0xFFFFFFFF) << 0) | ||
| 45 | #define G_0000F8_CONFIG_MEMSIZE(x) (((x) >> 0) & 0xFFFFFFFF) | ||
| 46 | #define C_0000F8_CONFIG_MEMSIZE 0x00000000 | ||
| 47 | #define R_000134_HDP_FB_LOCATION 0x000134 | ||
| 48 | #define S_000134_HDP_FB_START(x) (((x) & 0xFFFF) << 0) | ||
| 49 | #define G_000134_HDP_FB_START(x) (((x) >> 0) & 0xFFFF) | ||
| 50 | #define C_000134_HDP_FB_START 0xFFFF0000 | ||
| 51 | #define R_0007C0_CP_STAT 0x0007C0 | ||
| 52 | #define S_0007C0_MRU_BUSY(x) (((x) & 0x1) << 0) | ||
| 53 | #define G_0007C0_MRU_BUSY(x) (((x) >> 0) & 0x1) | ||
| 54 | #define C_0007C0_MRU_BUSY 0xFFFFFFFE | ||
| 55 | #define S_0007C0_MWU_BUSY(x) (((x) & 0x1) << 1) | ||
| 56 | #define G_0007C0_MWU_BUSY(x) (((x) >> 1) & 0x1) | ||
| 57 | #define C_0007C0_MWU_BUSY 0xFFFFFFFD | ||
| 58 | #define S_0007C0_RSIU_BUSY(x) (((x) & 0x1) << 2) | ||
| 59 | #define G_0007C0_RSIU_BUSY(x) (((x) >> 2) & 0x1) | ||
| 60 | #define C_0007C0_RSIU_BUSY 0xFFFFFFFB | ||
| 61 | #define S_0007C0_RCIU_BUSY(x) (((x) & 0x1) << 3) | ||
| 62 | #define G_0007C0_RCIU_BUSY(x) (((x) >> 3) & 0x1) | ||
| 63 | #define C_0007C0_RCIU_BUSY 0xFFFFFFF7 | ||
| 64 | #define S_0007C0_CSF_PRIMARY_BUSY(x) (((x) & 0x1) << 9) | ||
| 65 | #define G_0007C0_CSF_PRIMARY_BUSY(x) (((x) >> 9) & 0x1) | ||
| 66 | #define C_0007C0_CSF_PRIMARY_BUSY 0xFFFFFDFF | ||
| 67 | #define S_0007C0_CSF_INDIRECT_BUSY(x) (((x) & 0x1) << 10) | ||
| 68 | #define G_0007C0_CSF_INDIRECT_BUSY(x) (((x) >> 10) & 0x1) | ||
| 69 | #define C_0007C0_CSF_INDIRECT_BUSY 0xFFFFFBFF | ||
| 70 | #define S_0007C0_CSQ_PRIMARY_BUSY(x) (((x) & 0x1) << 11) | ||
| 71 | #define G_0007C0_CSQ_PRIMARY_BUSY(x) (((x) >> 11) & 0x1) | ||
| 72 | #define C_0007C0_CSQ_PRIMARY_BUSY 0xFFFFF7FF | ||
| 73 | #define S_0007C0_CSQ_INDIRECT_BUSY(x) (((x) & 0x1) << 12) | ||
| 74 | #define G_0007C0_CSQ_INDIRECT_BUSY(x) (((x) >> 12) & 0x1) | ||
| 75 | #define C_0007C0_CSQ_INDIRECT_BUSY 0xFFFFEFFF | ||
| 76 | #define S_0007C0_CSI_BUSY(x) (((x) & 0x1) << 13) | ||
| 77 | #define G_0007C0_CSI_BUSY(x) (((x) >> 13) & 0x1) | ||
| 78 | #define C_0007C0_CSI_BUSY 0xFFFFDFFF | ||
| 79 | #define S_0007C0_CSF_INDIRECT2_BUSY(x) (((x) & 0x1) << 14) | ||
| 80 | #define G_0007C0_CSF_INDIRECT2_BUSY(x) (((x) >> 14) & 0x1) | ||
| 81 | #define C_0007C0_CSF_INDIRECT2_BUSY 0xFFFFBFFF | ||
| 82 | #define S_0007C0_CSQ_INDIRECT2_BUSY(x) (((x) & 0x1) << 15) | ||
| 83 | #define G_0007C0_CSQ_INDIRECT2_BUSY(x) (((x) >> 15) & 0x1) | ||
| 84 | #define C_0007C0_CSQ_INDIRECT2_BUSY 0xFFFF7FFF | ||
| 85 | #define S_0007C0_GUIDMA_BUSY(x) (((x) & 0x1) << 28) | ||
| 86 | #define G_0007C0_GUIDMA_BUSY(x) (((x) >> 28) & 0x1) | ||
| 87 | #define C_0007C0_GUIDMA_BUSY 0xEFFFFFFF | ||
| 88 | #define S_0007C0_VIDDMA_BUSY(x) (((x) & 0x1) << 29) | ||
| 89 | #define G_0007C0_VIDDMA_BUSY(x) (((x) >> 29) & 0x1) | ||
| 90 | #define C_0007C0_VIDDMA_BUSY 0xDFFFFFFF | ||
| 91 | #define S_0007C0_CMDSTRM_BUSY(x) (((x) & 0x1) << 30) | ||
| 92 | #define G_0007C0_CMDSTRM_BUSY(x) (((x) >> 30) & 0x1) | ||
| 93 | #define C_0007C0_CMDSTRM_BUSY 0xBFFFFFFF | ||
| 94 | #define S_0007C0_CP_BUSY(x) (((x) & 0x1) << 31) | ||
| 95 | #define G_0007C0_CP_BUSY(x) (((x) >> 31) & 0x1) | ||
| 96 | #define C_0007C0_CP_BUSY 0x7FFFFFFF | ||
| 97 | #define R_000E40_RBBM_STATUS 0x000E40 | ||
| 98 | #define S_000E40_CMDFIFO_AVAIL(x) (((x) & 0x7F) << 0) | ||
| 99 | #define G_000E40_CMDFIFO_AVAIL(x) (((x) >> 0) & 0x7F) | ||
| 100 | #define C_000E40_CMDFIFO_AVAIL 0xFFFFFF80 | ||
| 101 | #define S_000E40_HIRQ_ON_RBB(x) (((x) & 0x1) << 8) | ||
| 102 | #define G_000E40_HIRQ_ON_RBB(x) (((x) >> 8) & 0x1) | ||
| 103 | #define C_000E40_HIRQ_ON_RBB 0xFFFFFEFF | ||
| 104 | #define S_000E40_CPRQ_ON_RBB(x) (((x) & 0x1) << 9) | ||
| 105 | #define G_000E40_CPRQ_ON_RBB(x) (((x) >> 9) & 0x1) | ||
| 106 | #define C_000E40_CPRQ_ON_RBB 0xFFFFFDFF | ||
| 107 | #define S_000E40_CFRQ_ON_RBB(x) (((x) & 0x1) << 10) | ||
| 108 | #define G_000E40_CFRQ_ON_RBB(x) (((x) >> 10) & 0x1) | ||
| 109 | #define C_000E40_CFRQ_ON_RBB 0xFFFFFBFF | ||
| 110 | #define S_000E40_HIRQ_IN_RTBUF(x) (((x) & 0x1) << 11) | ||
| 111 | #define G_000E40_HIRQ_IN_RTBUF(x) (((x) >> 11) & 0x1) | ||
| 112 | #define C_000E40_HIRQ_IN_RTBUF 0xFFFFF7FF | ||
| 113 | #define S_000E40_CPRQ_IN_RTBUF(x) (((x) & 0x1) << 12) | ||
| 114 | #define G_000E40_CPRQ_IN_RTBUF(x) (((x) >> 12) & 0x1) | ||
| 115 | #define C_000E40_CPRQ_IN_RTBUF 0xFFFFEFFF | ||
| 116 | #define S_000E40_CFRQ_IN_RTBUF(x) (((x) & 0x1) << 13) | ||
| 117 | #define G_000E40_CFRQ_IN_RTBUF(x) (((x) >> 13) & 0x1) | ||
| 118 | #define C_000E40_CFRQ_IN_RTBUF 0xFFFFDFFF | ||
| 119 | #define S_000E40_CF_PIPE_BUSY(x) (((x) & 0x1) << 14) | ||
| 120 | #define G_000E40_CF_PIPE_BUSY(x) (((x) >> 14) & 0x1) | ||
| 121 | #define C_000E40_CF_PIPE_BUSY 0xFFFFBFFF | ||
| 122 | #define S_000E40_ENG_EV_BUSY(x) (((x) & 0x1) << 15) | ||
| 123 | #define G_000E40_ENG_EV_BUSY(x) (((x) >> 15) & 0x1) | ||
| 124 | #define C_000E40_ENG_EV_BUSY 0xFFFF7FFF | ||
| 125 | #define S_000E40_CP_CMDSTRM_BUSY(x) (((x) & 0x1) << 16) | ||
| 126 | #define G_000E40_CP_CMDSTRM_BUSY(x) (((x) >> 16) & 0x1) | ||
| 127 | #define C_000E40_CP_CMDSTRM_BUSY 0xFFFEFFFF | ||
| 128 | #define S_000E40_E2_BUSY(x) (((x) & 0x1) << 17) | ||
| 129 | #define G_000E40_E2_BUSY(x) (((x) >> 17) & 0x1) | ||
| 130 | #define C_000E40_E2_BUSY 0xFFFDFFFF | ||
| 131 | #define S_000E40_RB2D_BUSY(x) (((x) & 0x1) << 18) | ||
| 132 | #define G_000E40_RB2D_BUSY(x) (((x) >> 18) & 0x1) | ||
| 133 | #define C_000E40_RB2D_BUSY 0xFFFBFFFF | ||
| 134 | #define S_000E40_RB3D_BUSY(x) (((x) & 0x1) << 19) | ||
| 135 | #define G_000E40_RB3D_BUSY(x) (((x) >> 19) & 0x1) | ||
| 136 | #define C_000E40_RB3D_BUSY 0xFFF7FFFF | ||
| 137 | #define S_000E40_VAP_BUSY(x) (((x) & 0x1) << 20) | ||
| 138 | #define G_000E40_VAP_BUSY(x) (((x) >> 20) & 0x1) | ||
| 139 | #define C_000E40_VAP_BUSY 0xFFEFFFFF | ||
| 140 | #define S_000E40_RE_BUSY(x) (((x) & 0x1) << 21) | ||
| 141 | #define G_000E40_RE_BUSY(x) (((x) >> 21) & 0x1) | ||
| 142 | #define C_000E40_RE_BUSY 0xFFDFFFFF | ||
| 143 | #define S_000E40_TAM_BUSY(x) (((x) & 0x1) << 22) | ||
| 144 | #define G_000E40_TAM_BUSY(x) (((x) >> 22) & 0x1) | ||
| 145 | #define C_000E40_TAM_BUSY 0xFFBFFFFF | ||
| 146 | #define S_000E40_TDM_BUSY(x) (((x) & 0x1) << 23) | ||
| 147 | #define G_000E40_TDM_BUSY(x) (((x) >> 23) & 0x1) | ||
| 148 | #define C_000E40_TDM_BUSY 0xFF7FFFFF | ||
| 149 | #define S_000E40_PB_BUSY(x) (((x) & 0x1) << 24) | ||
| 150 | #define G_000E40_PB_BUSY(x) (((x) >> 24) & 0x1) | ||
| 151 | #define C_000E40_PB_BUSY 0xFEFFFFFF | ||
| 152 | #define S_000E40_TIM_BUSY(x) (((x) & 0x1) << 25) | ||
| 153 | #define G_000E40_TIM_BUSY(x) (((x) >> 25) & 0x1) | ||
| 154 | #define C_000E40_TIM_BUSY 0xFDFFFFFF | ||
| 155 | #define S_000E40_GA_BUSY(x) (((x) & 0x1) << 26) | ||
| 156 | #define G_000E40_GA_BUSY(x) (((x) >> 26) & 0x1) | ||
| 157 | #define C_000E40_GA_BUSY 0xFBFFFFFF | ||
| 158 | #define S_000E40_CBA2D_BUSY(x) (((x) & 0x1) << 27) | ||
| 159 | #define G_000E40_CBA2D_BUSY(x) (((x) >> 27) & 0x1) | ||
| 160 | #define C_000E40_CBA2D_BUSY 0xF7FFFFFF | ||
| 161 | #define S_000E40_GUI_ACTIVE(x) (((x) & 0x1) << 31) | ||
| 162 | #define G_000E40_GUI_ACTIVE(x) (((x) >> 31) & 0x1) | ||
| 163 | #define C_000E40_GUI_ACTIVE 0x7FFFFFFF | ||
| 164 | #define R_006520_DC_LB_MEMORY_SPLIT 0x006520 | ||
| 165 | #define S_006520_DC_LB_MEMORY_SPLIT(x) (((x) & 0x3) << 0) | ||
| 166 | #define G_006520_DC_LB_MEMORY_SPLIT(x) (((x) >> 0) & 0x3) | ||
| 167 | #define C_006520_DC_LB_MEMORY_SPLIT 0xFFFFFFFC | ||
| 168 | #define S_006520_DC_LB_MEMORY_SPLIT_MODE(x) (((x) & 0x1) << 2) | ||
| 169 | #define G_006520_DC_LB_MEMORY_SPLIT_MODE(x) (((x) >> 2) & 0x1) | ||
| 170 | #define C_006520_DC_LB_MEMORY_SPLIT_MODE 0xFFFFFFFB | ||
| 171 | #define V_006520_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF 0 | ||
| 172 | #define V_006520_DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q 1 | ||
| 173 | #define V_006520_DC_LB_MEMORY_SPLIT_D1_ONLY 2 | ||
| 174 | #define V_006520_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q 3 | ||
| 175 | #define S_006520_DC_LB_DISP1_END_ADR(x) (((x) & 0x7FF) << 4) | ||
| 176 | #define G_006520_DC_LB_DISP1_END_ADR(x) (((x) >> 4) & 0x7FF) | ||
| 177 | #define C_006520_DC_LB_DISP1_END_ADR 0xFFFF800F | ||
| 178 | #define R_006548_D1MODE_PRIORITY_A_CNT 0x006548 | ||
| 179 | #define S_006548_D1MODE_PRIORITY_MARK_A(x) (((x) & 0x7FFF) << 0) | ||
| 180 | #define G_006548_D1MODE_PRIORITY_MARK_A(x) (((x) >> 0) & 0x7FFF) | ||
| 181 | #define C_006548_D1MODE_PRIORITY_MARK_A 0xFFFF8000 | ||
| 182 | #define S_006548_D1MODE_PRIORITY_A_OFF(x) (((x) & 0x1) << 16) | ||
| 183 | #define G_006548_D1MODE_PRIORITY_A_OFF(x) (((x) >> 16) & 0x1) | ||
| 184 | #define C_006548_D1MODE_PRIORITY_A_OFF 0xFFFEFFFF | ||
| 185 | #define S_006548_D1MODE_PRIORITY_A_FORCE_MASK(x) (((x) & 0x1) << 24) | ||
| 186 | #define G_006548_D1MODE_PRIORITY_A_FORCE_MASK(x) (((x) >> 24) & 0x1) | ||
| 187 | #define C_006548_D1MODE_PRIORITY_A_FORCE_MASK 0xFEFFFFFF | ||
| 188 | #define R_00654C_D1MODE_PRIORITY_B_CNT 0x00654C | ||
| 189 | #define S_00654C_D1MODE_PRIORITY_MARK_B(x) (((x) & 0x7FFF) << 0) | ||
| 190 | #define G_00654C_D1MODE_PRIORITY_MARK_B(x) (((x) >> 0) & 0x7FFF) | ||
| 191 | #define C_00654C_D1MODE_PRIORITY_MARK_B 0xFFFF8000 | ||
| 192 | #define S_00654C_D1MODE_PRIORITY_B_OFF(x) (((x) & 0x1) << 16) | ||
| 193 | #define G_00654C_D1MODE_PRIORITY_B_OFF(x) (((x) >> 16) & 0x1) | ||
| 194 | #define C_00654C_D1MODE_PRIORITY_B_OFF 0xFFFEFFFF | ||
| 195 | #define S_00654C_D1MODE_PRIORITY_B_ALWAYS_ON(x) (((x) & 0x1) << 20) | ||
| 196 | #define G_00654C_D1MODE_PRIORITY_B_ALWAYS_ON(x) (((x) >> 20) & 0x1) | ||
| 197 | #define C_00654C_D1MODE_PRIORITY_B_ALWAYS_ON 0xFFEFFFFF | ||
| 198 | #define S_00654C_D1MODE_PRIORITY_B_FORCE_MASK(x) (((x) & 0x1) << 24) | ||
| 199 | #define G_00654C_D1MODE_PRIORITY_B_FORCE_MASK(x) (((x) >> 24) & 0x1) | ||
| 200 | #define C_00654C_D1MODE_PRIORITY_B_FORCE_MASK 0xFEFFFFFF | ||
| 201 | #define R_006C9C_DCP_CONTROL 0x006C9C | ||
| 202 | #define R_006D48_D2MODE_PRIORITY_A_CNT 0x006D48 | ||
| 203 | #define S_006D48_D2MODE_PRIORITY_MARK_A(x) (((x) & 0x7FFF) << 0) | ||
| 204 | #define G_006D48_D2MODE_PRIORITY_MARK_A(x) (((x) >> 0) & 0x7FFF) | ||
| 205 | #define C_006D48_D2MODE_PRIORITY_MARK_A 0xFFFF8000 | ||
| 206 | #define S_006D48_D2MODE_PRIORITY_A_OFF(x) (((x) & 0x1) << 16) | ||
| 207 | #define G_006D48_D2MODE_PRIORITY_A_OFF(x) (((x) >> 16) & 0x1) | ||
| 208 | #define C_006D48_D2MODE_PRIORITY_A_OFF 0xFFFEFFFF | ||
| 209 | #define S_006D48_D2MODE_PRIORITY_A_ALWAYS_ON(x) (((x) & 0x1) << 20) | ||
| 210 | #define G_006D48_D2MODE_PRIORITY_A_ALWAYS_ON(x) (((x) >> 20) & 0x1) | ||
| 211 | #define C_006D48_D2MODE_PRIORITY_A_ALWAYS_ON 0xFFEFFFFF | ||
| 212 | #define S_006D48_D2MODE_PRIORITY_A_FORCE_MASK(x) (((x) & 0x1) << 24) | ||
| 213 | #define G_006D48_D2MODE_PRIORITY_A_FORCE_MASK(x) (((x) >> 24) & 0x1) | ||
| 214 | #define C_006D48_D2MODE_PRIORITY_A_FORCE_MASK 0xFEFFFFFF | ||
| 215 | #define R_006D4C_D2MODE_PRIORITY_B_CNT 0x006D4C | ||
| 216 | #define S_006D4C_D2MODE_PRIORITY_MARK_B(x) (((x) & 0x7FFF) << 0) | ||
| 217 | #define G_006D4C_D2MODE_PRIORITY_MARK_B(x) (((x) >> 0) & 0x7FFF) | ||
| 218 | #define C_006D4C_D2MODE_PRIORITY_MARK_B 0xFFFF8000 | ||
| 219 | #define S_006D4C_D2MODE_PRIORITY_B_OFF(x) (((x) & 0x1) << 16) | ||
| 220 | #define G_006D4C_D2MODE_PRIORITY_B_OFF(x) (((x) >> 16) & 0x1) | ||
| 221 | #define C_006D4C_D2MODE_PRIORITY_B_OFF 0xFFFEFFFF | ||
| 222 | #define S_006D4C_D2MODE_PRIORITY_B_ALWAYS_ON(x) (((x) & 0x1) << 20) | ||
| 223 | #define G_006D4C_D2MODE_PRIORITY_B_ALWAYS_ON(x) (((x) >> 20) & 0x1) | ||
| 224 | #define C_006D4C_D2MODE_PRIORITY_B_ALWAYS_ON 0xFFEFFFFF | ||
| 225 | #define S_006D4C_D2MODE_PRIORITY_B_FORCE_MASK(x) (((x) & 0x1) << 24) | ||
| 226 | #define G_006D4C_D2MODE_PRIORITY_B_FORCE_MASK(x) (((x) >> 24) & 0x1) | ||
| 227 | #define C_006D4C_D2MODE_PRIORITY_B_FORCE_MASK 0xFEFFFFFF | ||
| 228 | #define R_006D58_LB_MAX_REQ_OUTSTANDING 0x006D58 | ||
| 229 | #define S_006D58_LB_D1_MAX_REQ_OUTSTANDING(x) (((x) & 0xF) << 0) | ||
| 230 | #define G_006D58_LB_D1_MAX_REQ_OUTSTANDING(x) (((x) >> 0) & 0xF) | ||
| 231 | #define C_006D58_LB_D1_MAX_REQ_OUTSTANDING 0xFFFFFFF0 | ||
| 232 | #define S_006D58_LB_D2_MAX_REQ_OUTSTANDING(x) (((x) & 0xF) << 16) | ||
| 233 | #define G_006D58_LB_D2_MAX_REQ_OUTSTANDING(x) (((x) >> 16) & 0xF) | ||
| 234 | #define C_006D58_LB_D2_MAX_REQ_OUTSTANDING 0xFFF0FFFF | ||
| 235 | |||
| 236 | |||
| 237 | #define R_000090_MC_SYSTEM_STATUS 0x000090 | ||
| 238 | #define S_000090_MC_SYSTEM_IDLE(x) (((x) & 0x1) << 0) | ||
| 239 | #define G_000090_MC_SYSTEM_IDLE(x) (((x) >> 0) & 0x1) | ||
| 240 | #define C_000090_MC_SYSTEM_IDLE 0xFFFFFFFE | ||
| 241 | #define S_000090_MC_SEQUENCER_IDLE(x) (((x) & 0x1) << 1) | ||
| 242 | #define G_000090_MC_SEQUENCER_IDLE(x) (((x) >> 1) & 0x1) | ||
| 243 | #define C_000090_MC_SEQUENCER_IDLE 0xFFFFFFFD | ||
| 244 | #define S_000090_MC_ARBITER_IDLE(x) (((x) & 0x1) << 2) | ||
| 245 | #define G_000090_MC_ARBITER_IDLE(x) (((x) >> 2) & 0x1) | ||
| 246 | #define C_000090_MC_ARBITER_IDLE 0xFFFFFFFB | ||
| 247 | #define S_000090_MC_SELECT_PM(x) (((x) & 0x1) << 3) | ||
| 248 | #define G_000090_MC_SELECT_PM(x) (((x) >> 3) & 0x1) | ||
| 249 | #define C_000090_MC_SELECT_PM 0xFFFFFFF7 | ||
| 250 | #define S_000090_RESERVED4(x) (((x) & 0xF) << 4) | ||
| 251 | #define G_000090_RESERVED4(x) (((x) >> 4) & 0xF) | ||
| 252 | #define C_000090_RESERVED4 0xFFFFFF0F | ||
| 253 | #define S_000090_RESERVED8(x) (((x) & 0xF) << 8) | ||
| 254 | #define G_000090_RESERVED8(x) (((x) >> 8) & 0xF) | ||
| 255 | #define C_000090_RESERVED8 0xFFFFF0FF | ||
| 256 | #define S_000090_RESERVED12(x) (((x) & 0xF) << 12) | ||
| 257 | #define G_000090_RESERVED12(x) (((x) >> 12) & 0xF) | ||
| 258 | #define C_000090_RESERVED12 0xFFFF0FFF | ||
| 259 | #define S_000090_MCA_INIT_EXECUTED(x) (((x) & 0x1) << 16) | ||
| 260 | #define G_000090_MCA_INIT_EXECUTED(x) (((x) >> 16) & 0x1) | ||
| 261 | #define C_000090_MCA_INIT_EXECUTED 0xFFFEFFFF | ||
| 262 | #define S_000090_MCA_IDLE(x) (((x) & 0x1) << 17) | ||
| 263 | #define G_000090_MCA_IDLE(x) (((x) >> 17) & 0x1) | ||
| 264 | #define C_000090_MCA_IDLE 0xFFFDFFFF | ||
| 265 | #define S_000090_MCA_SEQ_IDLE(x) (((x) & 0x1) << 18) | ||
| 266 | #define G_000090_MCA_SEQ_IDLE(x) (((x) >> 18) & 0x1) | ||
| 267 | #define C_000090_MCA_SEQ_IDLE 0xFFFBFFFF | ||
| 268 | #define S_000090_MCA_ARB_IDLE(x) (((x) & 0x1) << 19) | ||
| 269 | #define G_000090_MCA_ARB_IDLE(x) (((x) >> 19) & 0x1) | ||
| 270 | #define C_000090_MCA_ARB_IDLE 0xFFF7FFFF | ||
| 271 | #define S_000090_RESERVED20(x) (((x) & 0xFFF) << 20) | ||
| 272 | #define G_000090_RESERVED20(x) (((x) >> 20) & 0xFFF) | ||
| 273 | #define C_000090_RESERVED20 0x000FFFFF | ||
| 274 | #define R_000100_MCCFG_FB_LOCATION 0x000100 | ||
| 275 | #define S_000100_MC_FB_START(x) (((x) & 0xFFFF) << 0) | ||
| 276 | #define G_000100_MC_FB_START(x) (((x) >> 0) & 0xFFFF) | ||
| 277 | #define C_000100_MC_FB_START 0xFFFF0000 | ||
| 278 | #define S_000100_MC_FB_TOP(x) (((x) & 0xFFFF) << 16) | ||
| 279 | #define G_000100_MC_FB_TOP(x) (((x) >> 16) & 0xFFFF) | ||
| 280 | #define C_000100_MC_FB_TOP 0x0000FFFF | ||
| 281 | #define R_000104_MC_INIT_MISC_LAT_TIMER 0x000104 | ||
| 282 | #define S_000104_MC_CPR_INIT_LAT(x) (((x) & 0xF) << 0) | ||
| 283 | #define G_000104_MC_CPR_INIT_LAT(x) (((x) >> 0) & 0xF) | ||
| 284 | #define C_000104_MC_CPR_INIT_LAT 0xFFFFFFF0 | ||
| 285 | #define S_000104_MC_VF_INIT_LAT(x) (((x) & 0xF) << 4) | ||
| 286 | #define G_000104_MC_VF_INIT_LAT(x) (((x) >> 4) & 0xF) | ||
| 287 | #define C_000104_MC_VF_INIT_LAT 0xFFFFFF0F | ||
| 288 | #define S_000104_MC_DISP0R_INIT_LAT(x) (((x) & 0xF) << 8) | ||
| 289 | #define G_000104_MC_DISP0R_INIT_LAT(x) (((x) >> 8) & 0xF) | ||
| 290 | #define C_000104_MC_DISP0R_INIT_LAT 0xFFFFF0FF | ||
| 291 | #define S_000104_MC_DISP1R_INIT_LAT(x) (((x) & 0xF) << 12) | ||
| 292 | #define G_000104_MC_DISP1R_INIT_LAT(x) (((x) >> 12) & 0xF) | ||
| 293 | #define C_000104_MC_DISP1R_INIT_LAT 0xFFFF0FFF | ||
| 294 | #define S_000104_MC_FIXED_INIT_LAT(x) (((x) & 0xF) << 16) | ||
| 295 | #define G_000104_MC_FIXED_INIT_LAT(x) (((x) >> 16) & 0xF) | ||
| 296 | #define C_000104_MC_FIXED_INIT_LAT 0xFFF0FFFF | ||
| 297 | #define S_000104_MC_E2R_INIT_LAT(x) (((x) & 0xF) << 20) | ||
| 298 | #define G_000104_MC_E2R_INIT_LAT(x) (((x) >> 20) & 0xF) | ||
| 299 | #define C_000104_MC_E2R_INIT_LAT 0xFF0FFFFF | ||
| 300 | #define S_000104_SAME_PAGE_PRIO(x) (((x) & 0xF) << 24) | ||
| 301 | #define G_000104_SAME_PAGE_PRIO(x) (((x) >> 24) & 0xF) | ||
| 302 | #define C_000104_SAME_PAGE_PRIO 0xF0FFFFFF | ||
| 303 | #define S_000104_MC_GLOBW_INIT_LAT(x) (((x) & 0xF) << 28) | ||
| 304 | #define G_000104_MC_GLOBW_INIT_LAT(x) (((x) >> 28) & 0xF) | ||
| 305 | #define C_000104_MC_GLOBW_INIT_LAT 0x0FFFFFFF | ||
| 306 | |||
| 307 | #endif | ||
diff --git a/drivers/gpu/drm/radeon/rs690r.h b/drivers/gpu/drm/radeon/rs690r.h deleted file mode 100644 index c0d9faa2175b..000000000000 --- a/drivers/gpu/drm/radeon/rs690r.h +++ /dev/null | |||
| @@ -1,99 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2008 Advanced Micro Devices, Inc. | ||
| 3 | * Copyright 2008 Red Hat Inc. | ||
| 4 | * Copyright 2009 Jerome Glisse. | ||
| 5 | * | ||
| 6 | * Permission is hereby granted, free of charge, to any person obtaining a | ||
| 7 | * copy of this software and associated documentation files (the "Software"), | ||
| 8 | * to deal in the Software without restriction, including without limitation | ||
| 9 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 10 | * and/or sell copies of the Software, and to permit persons to whom the | ||
| 11 | * Software is furnished to do so, subject to the following conditions: | ||
| 12 | * | ||
| 13 | * The above copyright notice and this permission notice shall be included in | ||
| 14 | * all copies or substantial portions of the Software. | ||
| 15 | * | ||
| 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
| 19 | * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
| 20 | * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
| 21 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
| 22 | * OTHER DEALINGS IN THE SOFTWARE. | ||
| 23 | * | ||
| 24 | * Authors: Dave Airlie | ||
| 25 | * Alex Deucher | ||
| 26 | * Jerome Glisse | ||
| 27 | */ | ||
| 28 | #ifndef RS690R_H | ||
| 29 | #define RS690R_H | ||
| 30 | |||
| 31 | /* RS690/RS740 registers */ | ||
| 32 | #define MC_INDEX 0x0078 | ||
| 33 | # define MC_INDEX_MASK 0x1FF | ||
| 34 | # define MC_INDEX_WR_EN (1 << 9) | ||
| 35 | # define MC_INDEX_WR_ACK 0x7F | ||
| 36 | #define MC_DATA 0x007C | ||
| 37 | #define HDP_FB_LOCATION 0x0134 | ||
| 38 | #define DC_LB_MEMORY_SPLIT 0x6520 | ||
| 39 | #define DC_LB_MEMORY_SPLIT_MASK 0x00000003 | ||
| 40 | #define DC_LB_MEMORY_SPLIT_SHIFT 0 | ||
| 41 | #define DC_LB_MEMORY_SPLIT_D1HALF_D2HALF 0 | ||
| 42 | #define DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q 1 | ||
| 43 | #define DC_LB_MEMORY_SPLIT_D1_ONLY 2 | ||
| 44 | #define DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q 3 | ||
| 45 | #define DC_LB_MEMORY_SPLIT_SHIFT_MODE (1 << 2) | ||
| 46 | #define DC_LB_DISP1_END_ADR_SHIFT 4 | ||
| 47 | #define DC_LB_DISP1_END_ADR_MASK 0x00007FF0 | ||
| 48 | #define D1MODE_PRIORITY_A_CNT 0x6548 | ||
| 49 | #define MODE_PRIORITY_MARK_MASK 0x00007FFF | ||
| 50 | #define MODE_PRIORITY_OFF (1 << 16) | ||
| 51 | #define MODE_PRIORITY_ALWAYS_ON (1 << 20) | ||
| 52 | #define MODE_PRIORITY_FORCE_MASK (1 << 24) | ||
| 53 | #define D1MODE_PRIORITY_B_CNT 0x654C | ||
| 54 | #define LB_MAX_REQ_OUTSTANDING 0x6D58 | ||
| 55 | #define LB_D1_MAX_REQ_OUTSTANDING_MASK 0x0000000F | ||
| 56 | #define LB_D1_MAX_REQ_OUTSTANDING_SHIFT 0 | ||
| 57 | #define LB_D2_MAX_REQ_OUTSTANDING_MASK 0x000F0000 | ||
| 58 | #define LB_D2_MAX_REQ_OUTSTANDING_SHIFT 16 | ||
| 59 | #define DCP_CONTROL 0x6C9C | ||
| 60 | #define D2MODE_PRIORITY_A_CNT 0x6D48 | ||
| 61 | #define D2MODE_PRIORITY_B_CNT 0x6D4C | ||
| 62 | |||
| 63 | /* MC indirect registers */ | ||
| 64 | #define MC_STATUS_IDLE (1 << 0) | ||
| 65 | #define MC_MISC_CNTL 0x18 | ||
| 66 | #define DISABLE_GTW (1 << 1) | ||
| 67 | #define GART_INDEX_REG_EN (1 << 12) | ||
| 68 | #define BLOCK_GFX_D3_EN (1 << 14) | ||
| 69 | #define GART_FEATURE_ID 0x2B | ||
| 70 | #define HANG_EN (1 << 11) | ||
| 71 | #define TLB_ENABLE (1 << 18) | ||
| 72 | #define P2P_ENABLE (1 << 19) | ||
| 73 | #define GTW_LAC_EN (1 << 25) | ||
| 74 | #define LEVEL2_GART (0 << 30) | ||
| 75 | #define LEVEL1_GART (1 << 30) | ||
| 76 | #define PDC_EN (1 << 31) | ||
| 77 | #define GART_BASE 0x2C | ||
| 78 | #define GART_CACHE_CNTRL 0x2E | ||
| 79 | # define GART_CACHE_INVALIDATE (1 << 0) | ||
| 80 | #define MC_STATUS 0x90 | ||
| 81 | #define MCCFG_FB_LOCATION 0x100 | ||
| 82 | #define MC_FB_START_MASK 0x0000FFFF | ||
| 83 | #define MC_FB_START_SHIFT 0 | ||
| 84 | #define MC_FB_TOP_MASK 0xFFFF0000 | ||
| 85 | #define MC_FB_TOP_SHIFT 16 | ||
| 86 | #define MCCFG_AGP_LOCATION 0x101 | ||
| 87 | #define MC_AGP_START_MASK 0x0000FFFF | ||
| 88 | #define MC_AGP_START_SHIFT 0 | ||
| 89 | #define MC_AGP_TOP_MASK 0xFFFF0000 | ||
| 90 | #define MC_AGP_TOP_SHIFT 16 | ||
| 91 | #define MCCFG_AGP_BASE 0x102 | ||
| 92 | #define MCCFG_AGP_BASE_2 0x103 | ||
| 93 | #define MC_INIT_MISC_LAT_TIMER 0x104 | ||
| 94 | #define MC_DISP0R_INIT_LAT_SHIFT 8 | ||
| 95 | #define MC_DISP0R_INIT_LAT_MASK 0x00000F00 | ||
| 96 | #define MC_DISP1R_INIT_LAT_SHIFT 12 | ||
| 97 | #define MC_DISP1R_INIT_LAT_MASK 0x0000F000 | ||
| 98 | |||
| 99 | #endif | ||
