Heh, this has stuff from a couple of private patches I never submitted.

Reviewed-by: Corbin Simpson <mostawesomed...@gmail.com>

On Thu, Feb 4, 2010 at 11:03 PM, Alex Deucher <alexdeuc...@gmail.com> wrote:
> >From 979e9e6ecb586e92b2354a5fe8d73f3d7bfa85b3 Mon Sep 17 00:00:00 2001
> From: Alex Deucher <alexdeuc...@gmail.com>
> Date: Fri, 5 Feb 2010 01:58:28 -0500
> Subject: [PATCH] drm/radeon/kms: clean up some low-hanging magic numbers
>
> Switch some magic numbers to their proper defines.
> The register header madness needs to be cleaned up
> at some point.
>
> Signed-off-by: Alex Deucher <alexdeuc...@gmail.com>
> ---
>  drivers/gpu/drm/radeon/r100.c |   12 ++++++------
>  drivers/gpu/drm/radeon/r300.c |   38 ++++++++++++++++++++------------------
>  drivers/gpu/drm/radeon/r420.c |   13 +++++++------
>  3 files changed, 33 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
> index 11c9a3f..33da89a 100644
> --- a/drivers/gpu/drm/radeon/r100.c
> +++ b/drivers/gpu/drm/radeon/r100.c
> @@ -360,8 +360,8 @@ void r100_fence_ring_emit(struct radeon_device *rdev,
>        /* Who ever call radeon_fence_emit should call ring_lock and ask
>         * for enough space (today caller are ib schedule and buffer move) */
>        /* Wait until IDLE & CLEAN */
> -       radeon_ring_write(rdev, PACKET0(0x1720, 0));
> -       radeon_ring_write(rdev, (1 << 16) | (1 << 17));
> +       radeon_ring_write(rdev, PACKET0(RADEON_WAIT_UNTIL, 0));
> +       radeon_ring_write(rdev, RADEON_WAIT_2D_IDLECLEAN | 
> RADEON_WAIT_3D_IDLECLEAN);
>        radeon_ring_write(rdev, PACKET0(RADEON_HOST_PATH_CNTL, 0));
>        radeon_ring_write(rdev, rdev->config.r100.hdp_cntl |
>                                RADEON_HDP_READ_BUFFER_INVALIDATE);
> @@ -1695,7 +1695,7 @@ int r100_gui_wait_for_idle(struct radeon_device *rdev)
>        }
>        for (i = 0; i < rdev->usec_timeout; i++) {
>                tmp = RREG32(RADEON_RBBM_STATUS);
> -               if (!(tmp & (1 << 31))) {
> +               if (!(tmp & RADEON_RBBM_ACTIVE)) {
>                        return 0;
>                }
>                DRM_UDELAY(1);
> @@ -1710,8 +1710,8 @@ int r100_mc_wait_for_idle(struct radeon_device *rdev)
>
>        for (i = 0; i < rdev->usec_timeout; i++) {
>                /* read MC_STATUS */
> -               tmp = RREG32(0x0150);
> -               if (tmp & (1 << 2)) {
> +               tmp = RREG32(RADEON_MC_STATUS);
> +               if (tmp & RADEON_MC_IDLE) {
>                        return 0;
>                }
>                DRM_UDELAY(1);
> @@ -1784,7 +1784,7 @@ int r100_gpu_reset(struct radeon_device *rdev)
>        }
>        /* Check if GPU is idle */
>        status = RREG32(RADEON_RBBM_STATUS);
> -       if (status & (1 << 31)) {
> +       if (status & RADEON_RBBM_ACTIVE) {
>                DRM_ERROR("Failed to reset GPU (RBBM_STATUS=0x%08X)\n", 
> status);
>                return -1;
>        }
> diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c
> index 0051d11..b888464 100644
> --- a/drivers/gpu/drm/radeon/r300.c
> +++ b/drivers/gpu/drm/radeon/r300.c
> @@ -174,18 +174,20 @@ void r300_fence_ring_emit(struct radeon_device *rdev,
>        /* Who ever call radeon_fence_emit should call ring_lock and ask
>         * for enough space (today caller are ib schedule and buffer move) */
>        /* Write SC register so SC & US assert idle */
> -       radeon_ring_write(rdev, PACKET0(0x43E0, 0));
> +       radeon_ring_write(rdev, PACKET0(R300_RE_SCISSORS_TL, 0));
>        radeon_ring_write(rdev, 0);
> -       radeon_ring_write(rdev, PACKET0(0x43E4, 0));
> +       radeon_ring_write(rdev, PACKET0(R300_RE_SCISSORS_BR, 0));
>        radeon_ring_write(rdev, 0);
>        /* Flush 3D cache */
> -       radeon_ring_write(rdev, PACKET0(0x4E4C, 0));
> -       radeon_ring_write(rdev, (2 << 0));
> -       radeon_ring_write(rdev, PACKET0(0x4F18, 0));
> -       radeon_ring_write(rdev, (1 << 0));
> +       radeon_ring_write(rdev, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
> +       radeon_ring_write(rdev, R300_RB3D_DC_FLUSH);
> +       radeon_ring_write(rdev, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0));
> +       radeon_ring_write(rdev, R300_ZC_FLUSH);
>        /* Wait until IDLE & CLEAN */
> -       radeon_ring_write(rdev, PACKET0(0x1720, 0));
> -       radeon_ring_write(rdev, (1 << 17) | (1 << 16)  | (1 << 9));
> +       radeon_ring_write(rdev, PACKET0(RADEON_WAIT_UNTIL, 0));
> +       radeon_ring_write(rdev, (RADEON_WAIT_3D_IDLECLEAN |
> +                                RADEON_WAIT_2D_IDLECLEAN |
> +                                RADEON_WAIT_DMA_GUI_IDLE));
>        radeon_ring_write(rdev, PACKET0(RADEON_HOST_PATH_CNTL, 0));
>        radeon_ring_write(rdev, rdev->config.r300.hdp_cntl |
>                                RADEON_HDP_READ_BUFFER_INVALIDATE);
> @@ -219,7 +221,7 @@ int r300_copy_dma(struct radeon_device *rdev,
>        }
>        /* Must wait for 2D idle & clean before DMA or hangs might happen */
>        radeon_ring_write(rdev, PACKET0(RADEON_WAIT_UNTIL, 0 ));
> -       radeon_ring_write(rdev, (1 << 16));
> +       radeon_ring_write(rdev, RADEON_WAIT_2D_IDLECLEAN);
>        for (i = 0; i < num_loops; i++) {
>                cur_size = size;
>                if (cur_size > 0x1FFFFF) {
> @@ -281,8 +283,8 @@ void r300_ring_start(struct radeon_device *rdev)
>        radeon_ring_write(rdev,
>                          RADEON_WAIT_2D_IDLECLEAN |
>                          RADEON_WAIT_3D_IDLECLEAN);
> -       radeon_ring_write(rdev, PACKET0(0x170C, 0));
> -       radeon_ring_write(rdev, 1 << 31);
> +       radeon_ring_write(rdev, PACKET0(R300_DST_PIPE_CONFIG, 0));
> +       radeon_ring_write(rdev, R300_PIPE_AUTO_CONFIG);
>        radeon_ring_write(rdev, PACKET0(R300_GB_SELECT, 0));
>        radeon_ring_write(rdev, 0);
>        radeon_ring_write(rdev, PACKET0(R300_GB_ENABLE, 0));
> @@ -349,8 +351,8 @@ int r300_mc_wait_for_idle(struct radeon_device *rdev)
>
>        for (i = 0; i < rdev->usec_timeout; i++) {
>                /* read MC_STATUS */
> -               tmp = RREG32(0x0150);
> -               if (tmp & (1 << 4)) {
> +               tmp = RREG32(RADEON_MC_STATUS);
> +               if (tmp & R300_MC_IDLE) {
>                        return 0;
>                }
>                DRM_UDELAY(1);
> @@ -395,8 +397,8 @@ void r300_gpu_init(struct radeon_device *rdev)
>                       "programming pipes. Bad things might happen.\n");
>        }
>
> -       tmp = RREG32(0x170C);
> -       WREG32(0x170C, tmp | (1 << 31));
> +       tmp = RREG32(R300_DST_PIPE_CONFIG);
> +       WREG32(R300_DST_PIPE_CONFIG, tmp | R300_PIPE_AUTO_CONFIG);
>
>        WREG32(R300_RB2D_DSTCACHE_MODE,
>               R300_DC_AUTOFLUSH_ENABLE |
> @@ -437,8 +439,8 @@ int r300_ga_reset(struct radeon_device *rdev)
>                        /* GA still busy soft reset it */
>                        WREG32(0x429C, 0x200);
>                        WREG32(R300_VAP_PVS_STATE_FLUSH_REG, 0);
> -                       WREG32(0x43E0, 0);
> -                       WREG32(0x43E4, 0);
> +                       WREG32(R300_RE_SCISSORS_TL, 0);
> +                       WREG32(R300_RE_SCISSORS_BR, 0);
>                        WREG32(0x24AC, 0);
>                }
>                /* Wait to prevent race in RBBM_STATUS */
> @@ -488,7 +490,7 @@ int r300_gpu_reset(struct radeon_device *rdev)
>        }
>        /* Check if GPU is idle */
>        status = RREG32(RADEON_RBBM_STATUS);
> -       if (status & (1 << 31)) {
> +       if (status & RADEON_RBBM_ACTIVE) {
>                DRM_ERROR("Failed to reset GPU (RBBM_STATUS=0x%08X)\n", 
> status);
>                return -1;
>        }
> diff --git a/drivers/gpu/drm/radeon/r420.c b/drivers/gpu/drm/radeon/r420.c
> index 4526faa..1e7ed37 100644
> --- a/drivers/gpu/drm/radeon/r420.c
> +++ b/drivers/gpu/drm/radeon/r420.c
> @@ -69,7 +69,8 @@ void r420_pipes_init(struct radeon_device *rdev)
>        unsigned num_pipes;
>
>        /* GA_ENHANCE workaround TCL deadlock issue */
> -       WREG32(0x4274, (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3));
> +       WREG32(R300_GA_ENHANCE, R300_GA_DEADLOCK_CNTL | R300_GA_FASTSYNC_CNTL 
> |
> +              (1 << 2) | (1 << 3));
>        /* add idle wait as per freedesktop.org bug 24041 */
>        if (r100_gui_wait_for_idle(rdev)) {
>                printk(KERN_WARNING "Failed to wait GUI idle while "
> @@ -97,17 +98,17 @@ void r420_pipes_init(struct radeon_device *rdev)
>                tmp = (7 << 1);
>                break;
>        }
> -       WREG32(0x42C8, (1 << num_pipes) - 1);
> +       WREG32(R500_SU_REG_DEST, (1 << num_pipes) - 1);
>        /* Sub pixel 1/12 so we can have 4K rendering according to doc */
> -       tmp |= (1 << 4) | (1 << 0);
> -       WREG32(0x4018, tmp);
> +       tmp |= R300_TILE_SIZE_16 | R300_ENABLE_TILING;
> +       WREG32(R300_GB_TILE_CONFIG, tmp);
>        if (r100_gui_wait_for_idle(rdev)) {
>                printk(KERN_WARNING "Failed to wait GUI idle while "
>                       "programming pipes. Bad things might happen.\n");
>        }
>
> -       tmp = RREG32(0x170C);
> -       WREG32(0x170C, tmp | (1 << 31));
> +       tmp = RREG32(R300_DST_PIPE_CONFIG);
> +       WREG32(R300_DST_PIPE_CONFIG, tmp | R300_PIPE_AUTO_CONFIG);
>
>        WREG32(R300_RB2D_DSTCACHE_MODE,
>               RREG32(R300_RB2D_DSTCACHE_MODE) |
> --
> 1.5.6.3
>
> ------------------------------------------------------------------------------
> The Planet: dedicated and managed hosting, cloud storage, colocation
> Stay online with enterprise data centers and the best network in the business
> Choose flexible plans and management services without long-term contracts
> Personal 24x7 support from experience hosting pros just a phone call away.
> http://p.sf.net/sfu/theplanet-com
> --
> _______________________________________________
> Dri-devel mailing list
> Dri-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/dri-devel
>
>



-- 
Only fools are easily impressed by what is only
barely beyond their reach. ~ Unknown

Corbin Simpson
<mostawesomed...@gmail.com>

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to