cy82c693: correct DMA modes clipping
PATCH 4/13 cy82c693: correct DMA modes clipping
* Mask device DMA masks by ATA_{S,M}WDMA2 in cy82c693_ide_dma_on().
* Remove clipping of DMA modes by id->tDMA in cy82c693_dma_enable():
- id->tDMA may not be defined on newer devices
- id->vendor6/id->tDMA word is in LE endianness (cy82c693 seems to be Alpha specific though)
* Bump driver version.
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
--- drivers/ide/pci/cy82c693.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
drivers/ide/pci/cy82c693.c +6 -6
@@ -1,5 +1,5 @@/* -* linux/drivers/ide/pci/cy82c693.c Version 0.42 Oct 23, 2007 +* linux/drivers/ide/pci/cy82c693.c Version 0.43 Nov 7, 2007 * * Copyright (C) 1998-2000 Andreas S. Krebs ([email protected]), Maintainer * Copyright (C) 1998-2002 Andre Hedrick <[email protected]>, Integrator
@@ -182,10 +182,7 @@ static void cy82c693_dma_enable (ide_driif (mode>2 )/* make sure we set a valid mode */ mode =2 ; - -if (mode > drive->id->tDMA)/* to be absolutly sure we have a valid mode */ - mode = drive->id->tDMA; - + index = (HWIF (drive)->channel==0 ) ?CY82_INDEX_CHANNEL0 :CY82_INDEX_CHANNEL1 ;#if CY82C693_DEBUG_LOGS
@@ -250,7 +247,10 @@ static int cy82c693_ide_dma_on (ide_driv mmode = id->dma_mword & (id->dma_mword >>8 ); smode = id->dma_1word & (id->dma_1word >>8 ); - + + mmode &=ATA_MWDMA2 ; + smode &=ATA_SWDMA2 ; +if (mmode !=0 ) {/* enable multi */ cy82c693_dma_enable (drive, (mmode >>1 ),0 );
Quoted 10 lines · Bartlomiej Zolnierkiewicz
* Mask device DMA masks by ATA_{S,M}WDMA2 in
cy82c693_ide_dma_on().* Remove clipping of DMA modes by
id->tDMAincy82c693_dma_enable():
-id->tDMAmay not be defined on newer devices
- id->vendor6/id->tDMA word is in LE endianness (cy82c693 seems to be Alpha specific though)* Bump driver version.
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
Acked-by Sergei Shtylyov <[email protected]>
MBR, Sergei