diff options
author | Michel Dänzer <daenzer@vmware.com> | 2009-06-23 16:12:54 +0200 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2009-06-24 16:10:56 +1000 |
commit | b1e3a6d1c4d0ac75ad8289bcfd69efcc9b1bc6e5 (patch) | |
tree | 0ab59565a3d511e61f71476f79ab9231d7d6fdf9 | |
parent | 696d4df1dbfe0b054e94c1990b49c1727ffc1ff0 (diff) | |
download | talos-obmc-linux-b1e3a6d1c4d0ac75ad8289bcfd69efcc9b1bc6e5.tar.gz talos-obmc-linux-b1e3a6d1c4d0ac75ad8289bcfd69efcc9b1bc6e5.zip |
drm/radeon: Clear surface registers at initialization time.
Some PowerMac firmwares set up a tiling surface at the beginning of VRAM
which messes us up otherwise.
Signed-off-by: Michel Dänzer <daenzer@vmware.com>
Signed-off-by: Dave Airlie <airlied@linux.ie>
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_device.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 3f48a57531b5..f97563db4e59 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -35,6 +35,23 @@ #include "atom.h" /* + * Clear GPU surface registers. + */ +static void radeon_surface_init(struct radeon_device *rdev) +{ + /* FIXME: check this out */ + if (rdev->family < CHIP_R600) { + int i; + + for (i = 0; i < 8; i++) { + WREG32(RADEON_SURFACE0_INFO + + i * (RADEON_SURFACE1_INFO - RADEON_SURFACE0_INFO), + 0); + } + } +} + +/* * GPU scratch registers helpers function. */ static void radeon_scratch_init(struct radeon_device *rdev) @@ -496,6 +513,9 @@ int radeon_device_init(struct radeon_device *rdev, radeon_errata(rdev); /* Initialize scratch registers */ radeon_scratch_init(rdev); + /* Initialize surface registers */ + radeon_surface_init(rdev); + /* TODO: disable VGA need to use VGA request */ /* BIOS*/ if (!radeon_get_bios(rdev)) { |