On Tue, May 3, 2011 at 8:17 PM, Dave Airlie <airlied at gmail.com> wrote:
> From: Alex Deucher <alexdeucher at gmail.com>
>
> Out of the entire GART/VM subsystem, the hw designers changed
> the location of 3 regs.
>
> v2: airlied: add parameter for userspace to work from.
>
> Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
> Signed-off-by: Jerome Glisse <jglisse at redhat.com>
> Cc: stable at kernel.org
> Signed-off-by: Dave Airlie <airlied at redhat.com>

Looks good.

Signed-off-by: Alex Deucher <alexdeucher at gmail.com>

> ---
> ?drivers/gpu/drm/radeon/evergreen.c ?| ? 17 +++++++++--------
> ?drivers/gpu/drm/radeon/evergreend.h | ? ?5 +++++
> ?drivers/gpu/drm/radeon/radeon_kms.c | ? ?3 +++
> ?include/drm/radeon_drm.h ? ? ? ? ? ?| ? ?1 +
> ?4 files changed, 18 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreen.c 
> b/drivers/gpu/drm/radeon/evergreen.c
> index e9bc135..c20eac3 100644
> --- a/drivers/gpu/drm/radeon/evergreen.c
> +++ b/drivers/gpu/drm/radeon/evergreen.c
> @@ -862,9 +862,15 @@ int evergreen_pcie_gart_enable(struct radeon_device 
> *rdev)
> ? ? ? ? ? ? ? ?SYSTEM_ACCESS_MODE_NOT_IN_SYS |
> ? ? ? ? ? ? ? ?SYSTEM_APERTURE_UNMAPPED_ACCESS_PASS_THRU |
> ? ? ? ? ? ? ? ?EFFECTIVE_L1_TLB_SIZE(5) | EFFECTIVE_L1_QUEUE_SIZE(5);
> - ? ? ? WREG32(MC_VM_MD_L1_TLB0_CNTL, tmp);
> - ? ? ? WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp);
> - ? ? ? WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp);
> + ? ? ? if (rdev->flags & RADEON_IS_IGP) {
> + ? ? ? ? ? ? ? WREG32(FUS_MC_VM_MD_L1_TLB0_CNTL, tmp);
> + ? ? ? ? ? ? ? WREG32(FUS_MC_VM_MD_L1_TLB1_CNTL, tmp);
> + ? ? ? ? ? ? ? WREG32(FUS_MC_VM_MD_L1_TLB2_CNTL, tmp);
> + ? ? ? } else {
> + ? ? ? ? ? ? ? WREG32(MC_VM_MD_L1_TLB0_CNTL, tmp);
> + ? ? ? ? ? ? ? WREG32(MC_VM_MD_L1_TLB1_CNTL, tmp);
> + ? ? ? ? ? ? ? WREG32(MC_VM_MD_L1_TLB2_CNTL, tmp);
> + ? ? ? }
> ? ? ? ?WREG32(MC_VM_MB_L1_TLB0_CNTL, tmp);
> ? ? ? ?WREG32(MC_VM_MB_L1_TLB1_CNTL, tmp);
> ? ? ? ?WREG32(MC_VM_MB_L1_TLB2_CNTL, tmp);
> @@ -2923,11 +2929,6 @@ static int evergreen_startup(struct radeon_device 
> *rdev)
> ? ? ? ? ? ? ? ?rdev->asic->copy = NULL;
> ? ? ? ? ? ? ? ?dev_warn(rdev->dev, "failed blitter (%d) falling back to 
> memcpy\n", r);
> ? ? ? ?}
> - ? ? ? /* XXX: ontario has problems blitting to gart at the moment */
> - ? ? ? if (rdev->family == CHIP_PALM) {
> - ? ? ? ? ? ? ? rdev->asic->copy = NULL;
> - ? ? ? ? ? ? ? radeon_ttm_set_active_vram_size(rdev, 
> rdev->mc.visible_vram_size);
> - ? ? ? }
>
> ? ? ? ?/* allocate wb buffer */
> ? ? ? ?r = radeon_wb_init(rdev);
> diff --git a/drivers/gpu/drm/radeon/evergreend.h 
> b/drivers/gpu/drm/radeon/evergreend.h
> index 9aaa3f0..9453384 100644
> --- a/drivers/gpu/drm/radeon/evergreend.h
> +++ b/drivers/gpu/drm/radeon/evergreend.h
> @@ -221,6 +221,11 @@
> ?#define ? ? ? ?MC_VM_MD_L1_TLB0_CNTL ? ? ? ? ? ? ? ? ? ? ? ? ? 0x2654
> ?#define ? ? ? ?MC_VM_MD_L1_TLB1_CNTL ? ? ? ? ? ? ? ? ? ? ? ? ? 0x2658
> ?#define ? ? ? ?MC_VM_MD_L1_TLB2_CNTL ? ? ? ? ? ? ? ? ? ? ? ? ? 0x265C
> +
> +#define ? ? ? ?FUS_MC_VM_MD_L1_TLB0_CNTL ? ? ? ? ? ? ? ? ? ? ? 0x265C
> +#define ? ? ? ?FUS_MC_VM_MD_L1_TLB1_CNTL ? ? ? ? ? ? ? ? ? ? ? 0x2660
> +#define ? ? ? ?FUS_MC_VM_MD_L1_TLB2_CNTL ? ? ? ? ? ? ? ? ? ? ? 0x2664
> +
> ?#define ? ? ? ?MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR ? ? ? ? ? ? ?0x203C
> ?#define ? ? ? ?MC_VM_SYSTEM_APERTURE_HIGH_ADDR ? ? ? ? ? ? ? ? 0x2038
> ?#define ? ? ? ?MC_VM_SYSTEM_APERTURE_LOW_ADDR ? ? ? ? ? ? ? ? ?0x2034
> diff --git a/drivers/gpu/drm/radeon/radeon_kms.c 
> b/drivers/gpu/drm/radeon/radeon_kms.c
> index 871df03..bd58af6 100644
> --- a/drivers/gpu/drm/radeon/radeon_kms.c
> +++ b/drivers/gpu/drm/radeon/radeon_kms.c
> @@ -234,6 +234,9 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, 
> struct drm_file *filp)
> ? ? ? ? ? ? ? ? ? ? ? ?return -EINVAL;
> ? ? ? ? ? ? ? ?}
> ? ? ? ? ? ? ? ?break;
> + ? ? ? case RADEON_INFO_FUSION_GART_WORKING:
> + ? ? ? ? ? ? ? value = 1;
> + ? ? ? ? ? ? ? break;
> ? ? ? ?default:
> ? ? ? ? ? ? ? ?DRM_DEBUG_KMS("Invalid request %d\n", info->request);
> ? ? ? ? ? ? ? ?return -EINVAL;
> diff --git a/include/drm/radeon_drm.h b/include/drm/radeon_drm.h
> index 7aa5ddd..787f7b6 100644
> --- a/include/drm/radeon_drm.h
> +++ b/include/drm/radeon_drm.h
> @@ -910,6 +910,7 @@ struct drm_radeon_cs {
> ?#define RADEON_INFO_CLOCK_CRYSTAL_FREQ 0x09 /* clock crystal frequency */
> ?#define RADEON_INFO_NUM_BACKENDS ? ? ? 0x0a /* DB/backends for r600+ - need 
> for OQ */
> ?#define RADEON_INFO_NUM_TILE_PIPES ? ? 0x0b /* tile pipes for r600+ */
> +#define RADEON_INFO_FUSION_GART_WORKING ? ? ? ?0x0c /* fusion writes to GTT 
> were broken before this */
>
> ?struct drm_radeon_info {
> ? ? ? ?uint32_t ? ? ? ? ? ? ? ?request;
> --
> 1.7.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>

Reply via email to