diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2010-01-21 17:14:49 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-01-24 02:25:05 -0500 |
commit | 947bfc83043181e86e3e3134da158e479c9bcc51 (patch) | |
tree | d3a7111bf9d8e6dd55519d7a28762d0dffd581db /drivers | |
parent | 4eaeca33512b9774c25507b9a9bdcfe3791a5cc5 (diff) |
drm/radeon/kms/atom: atom parser fixes
Only reset the reg block on the initial execute
table call; nested calls require the reg block not be
reset on each call. Also reset the fb window and
io mode. This matches the upstream parser behavior.
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/radeon/atom.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/radeon/atom.c b/drivers/gpu/drm/radeon/atom.c index cf3126108a48..e3b44562d265 100644 --- a/drivers/gpu/drm/radeon/atom.c +++ b/drivers/gpu/drm/radeon/atom.c | |||
@@ -1122,8 +1122,6 @@ static void atom_execute_table_locked(struct atom_context *ctx, int index, uint3 | |||
1122 | 1122 | ||
1123 | SDEBUG(">> execute %04X (len %d, WS %d, PS %d)\n", base, len, ws, ps); | 1123 | SDEBUG(">> execute %04X (len %d, WS %d, PS %d)\n", base, len, ws, ps); |
1124 | 1124 | ||
1125 | /* reset reg block */ | ||
1126 | ctx->reg_block = 0; | ||
1127 | ectx.ctx = ctx; | 1125 | ectx.ctx = ctx; |
1128 | ectx.ps_shift = ps / 4; | 1126 | ectx.ps_shift = ps / 4; |
1129 | ectx.start = base; | 1127 | ectx.start = base; |
@@ -1160,6 +1158,12 @@ static void atom_execute_table_locked(struct atom_context *ctx, int index, uint3 | |||
1160 | void atom_execute_table(struct atom_context *ctx, int index, uint32_t * params) | 1158 | void atom_execute_table(struct atom_context *ctx, int index, uint32_t * params) |
1161 | { | 1159 | { |
1162 | mutex_lock(&ctx->mutex); | 1160 | mutex_lock(&ctx->mutex); |
1161 | /* reset reg block */ | ||
1162 | ctx->reg_block = 0; | ||
1163 | /* reset fb window */ | ||
1164 | ctx->fb_base = 0; | ||
1165 | /* reset io mode */ | ||
1166 | ctx->io_mode = ATOM_IO_MM; | ||
1163 | atom_execute_table_locked(ctx, index, params); | 1167 | atom_execute_table_locked(ctx, index, params); |
1164 | mutex_unlock(&ctx->mutex); | 1168 | mutex_unlock(&ctx->mutex); |
1165 | } | 1169 | } |