summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2008-12-16 15:31:34 +1000
committerDave Airlie <airlied@redhat.com>2008-12-16 15:31:40 +1000
commit1431bc6900b0e0d7f486b5b3ba281873472b3fdc (patch)
tree683cb2c4a8381cb8f86d6c9d189558b36a2473b9 /src
parentf72367aff2d09161d30066a00673ba291b292a36 (diff)
atombios: fix issue with Clearing of MM_INDEX 0.
While playing with tv-out I discovered this issue with clearing the MM_INDEX register.
Diffstat (limited to 'src')
-rw-r--r--src/AtomBios/CD_Operations.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/AtomBios/CD_Operations.c b/src/AtomBios/CD_Operations.c
index 58c4ae9c..ff517465 100644
--- a/src/AtomBios/CD_Operations.c
+++ b/src/AtomBios/CD_Operations.c
@@ -618,7 +618,13 @@ VOID ProcessCompare(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
VOID ProcessClear(PARSER_TEMP_DATA STACK_BASED * pParserTempData)
{
pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData);
- pParserTempData->DestData32 &= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]);
+
+ if (pParserTempData->ParametersType.Destination == 0 &&
+ pParserTempData->Multipurpose.CurrentPort == ATI_RegsPort &&
+ pParserTempData->Index == 0) {
+ pParserTempData->DestData32 &= 0xffffffff;
+ } else
+ pParserTempData->DestData32 &= ~(AlignmentMask[pParserTempData->CD_Mask.SrcAlignment] << SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]);
PutDataFunctions[pParserTempData->ParametersType.Destination](pParserTempData);
}