Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d83fca58 authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

sis5513: clear prefetch and postwrite for ATAPI devices



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

Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 1c54a93d
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
/*
 * 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 <andre@linux-ide.org>
 * Copyright (C) 2002		Lionel Bouton <Lionel.Bouton@inet6.fr>, Maintainer
@@ -522,20 +522,19 @@ static void sis_program_timings(ide_drive_t *drive, const u8 mode)
		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);
}