summary refs log tree commit diff
path: root/drivers/gpu/drm/radeon/atom.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2009-11-12 15:53:44 +1000
committerDave Airlie <airlied@redhat.com>2009-11-24 13:02:07 +1000
commit23115b0592bde5da249fcbdad7714c1f96a8e5f5 (patch)
tree01567a364e6e1cd7a0996abbc43dda19c5c4713c /drivers/gpu/drm/radeon/atom.c
parentef63062716415d6e271815872b6c6654ffa9ac26 (diff)
downloadlinux-23115b0592bde5da249fcbdad7714c1f96a8e5f5.tar.gz
drm/radeon/kms: read back register before writing in IIO.
This fixes RH bugzilla #527874.

On resume the atom posting wasn't working, however vbe posting was
going fine, after 2 weeks over irc, and 8 hrs with the hardware,
I tracked it down to the memory device table and it access the MC
registers via IIO, it appears the rv515 atom iio table might not
be fully functional, so adding a readback before doing a write
either provides enough delay to make things resume correctly.

Thanks to Peng Huang at Red Hat for coming to Brisbane.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/atom.c')
-rw-r--r--drivers/gpu/drm/radeon/atom.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c
index 901befe03da2..d67c42555ab9 100644
--- a/drivers/gpu/drm/radeon/atom.c
+++ b/drivers/gpu/drm/radeon/atom.c
@@ -107,6 +107,7 @@ static uint32_t atom_iio_execute(struct atom_context *ctx, int base,
 			base += 3;
 			break;
 		case ATOM_IIO_WRITE:
+			(void)ctx->card->reg_read(ctx->card, CU16(base + 1));
 			ctx->card->reg_write(ctx->card, CU16(base + 1), temp);
 			base += 3;
 			break;