Skip to contentSkip to conversation

sis5513: clear prefetch and postwrite for ATAPI devices

PATCH In review Bartlomiej Zolnierkiewicz 2 participants 2 messages Aug 9, 2007 – Sep 3, 2007 libata

lore
Share & tools
lore
#0 lore raw

PATCH 3/4 sis5513: clear prefetch and postwrite for ATAPI devices

Clear prefetch and postwrite for ATAPI devices instead of depending on BIOS.

---
 drivers/ide/pci/sis5513.c |   13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
drivers/ide/pci/sis5513.c +6 -7
Index: b/drivers/ide/pci/sis5513.c
===================================================================
@@ -1,5 +1,5 @@
 /*
- * linux/drivers/ide/pci/sis5513.c	Version 0.29	Aug 1, 2007
+ * linux/drivers/ide/pci/sis5513.c	Version 0.30	Aug 9, 2007
  *
  * Copyright (C) 1999-2000	Andre Hedrick <[email protected]>
  * Copyright (C) 2002		Lionel Bouton <[email protected]>, Maintainer
@@ -522,20 +522,19 @@ static void sis_program_timings(ide_driv
 		sis_ata133_program_timings(drive, mode);
 }
 
-/* Enables per-drive prefetch and postwrite */
 static void config_drive_art_rwp (ide_drive_t *drive)
 {
 	ide_hwif_t *hwif	= HWIF(drive);
 	struct pci_dev *dev	= hwif->pci_dev;
-
 	u8 reg4bh		= 0;
-	u8 rw_prefetch		= (0x11 << drive->dn);
+	u8 rw_prefetch		= 0;
 
-	if (drive->media != ide_disk)
-		return;
 	pci_read_config_byte(dev, 0x4b, &reg4bh);
 
-	if ((reg4bh & rw_prefetch) != rw_prefetch)
+	if (drive->media == ide_disk)
+		rw_prefetch = 0x11 << drive->dn;
+
+	if ((reg4bh & (0x11 << drive->dn)) != rw_prefetch)
 		pci_write_config_byte(dev, 0x4b, reg4bh|rw_prefetch);
 }
 
Acked-by on v1 3/4
#1 lore raw
Quoted 3 lines · Bartlomiej Zolnierkiewicz

Clear prefetch and postwrite for ATAPI devices instead of depending on BIOS.

drivers/ide/pci/sis5513.c line 2

Quoted 8 lines

Index: b/drivers/ide/pci/sis5513.c
===================================================================

drivers/ide/pci/sis5513.c +1 -1
@@ -1,5 +1,5 @@
 /*
- * linux/drivers/ide/pci/sis5513.c	Version 0.29	Aug 1, 2007
+ * linux/drivers/ide/pci/sis5513.c	Version 0.30	Aug 9, 2007

Oh, the driver turned 0.30! Insn't a time for party? ;-)

Quoted 14 lines
drivers/ide/pci/sis5513.c +1 -3
@@ -522,20 +522,19 @@ static void sis_program_timings(ide_driv
 		sis_ata133_program_timings(drive, mode);
 }
 
-/* Enables per-drive prefetch and postwrite */
 static void config_drive_art_rwp (ide_drive_t *drive)
 {
 	ide_hwif_t *hwif	= HWIF(drive);
 	struct pci_dev *dev	= hwif->pci_dev;
-
 	u8 reg4bh		= 0;
-	u8 rw_prefetch		= (0x11 << drive->dn);
+	u8 rw_prefetch		= 0;
 

drivers/ide/pci/sis5513.c static void sis_program_timings(ide_driv · line 538

Quoted 10 lines
drivers/ide/pci/sis5513.c +4 -3
-	if (drive->media != ide_disk)
-		return;
 	pci_read_config_byte(dev, 0x4b, &reg4bh);
 
-	if ((reg4bh & rw_prefetch) != rw_prefetch)
+	if (drive->media == ide_disk)
+		rw_prefetch = 0x11 << drive->dn;
+
+	if ((reg4bh & (0x11 << drive->dn)) != rw_prefetch)
 		pci_write_config_byte(dev, 0x4b, reg4bh|rw_prefetch);

... except of | operator's style. ;-)