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

Commit b94b898f authored by Brandon Philips's avatar Brandon Philips Committed by Bartlomiej Zolnierkiewicz
Browse files

it821x: Add ultra_mask quirk for Vortex86SX

On Vortex86SX with IDE controller revision 0x11 ultra DMA must be
disabled. This patch was tested by DMP and seems to work.

It is a cleaned up version of their older Kernel patch: 
 http://www.dmp.com.tw/tech/vortex86sx/patch-2.6.24-DMP.gz



Tested-by: default avatarShawn Lin <shawn@dmp.com.tw>
Signed-off-by: default avatarBrandon Philips <bphilips@suse.de>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 9b896033
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -68,6 +68,8 @@

#define DRV_NAME "it821x"

#define QUIRK_VORTEX86 1

struct it821x_dev
{
	unsigned int smart:1,		/* Are we in smart raid mode */
@@ -79,6 +81,7 @@ struct it821x_dev
	u16	pio[2];			/* Cached PIO values */
	u16	mwdma[2];		/* Cached MWDMA values */
	u16	udma[2];		/* Cached UDMA values (per drive) */
	u16	quirks;
};

#define ATA_66		0
@@ -577,6 +580,12 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif)

	hwif->ultra_mask = ATA_UDMA6;
	hwif->mwdma_mask = ATA_MWDMA2;

	/* Vortex86SX quirk: prevent Ultra-DMA mode to fix BadCRC issue */
	if (idev->quirks & QUIRK_VORTEX86) {
		if (dev->revision == 0x11)
			hwif->ultra_mask = 0;
	}
}

static void it8212_disable_raid(struct pci_dev *dev)
@@ -649,6 +658,8 @@ static int __devinit it821x_init_one(struct pci_dev *dev, const struct pci_devic
		return -ENOMEM;
	}

	itdevs->quirks = id->driver_data;

	rc = ide_pci_init_one(dev, &it821x_chipset, itdevs);
	if (rc)
		kfree(itdevs);
@@ -668,6 +679,7 @@ static void __devexit it821x_remove(struct pci_dev *dev)
static const struct pci_device_id it821x_pci_tbl[] = {
	{ PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8211), 0 },
	{ PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8212), 0 },
	{ PCI_VDEVICE(RDC, PCI_DEVICE_ID_RDC_D1010), QUIRK_VORTEX86 },
	{ 0, },
};

+1 −0
Original line number Diff line number Diff line
@@ -2174,6 +2174,7 @@
#define PCI_DEVICE_ID_RDC_R6040		0x6040
#define PCI_DEVICE_ID_RDC_R6060		0x6060
#define PCI_DEVICE_ID_RDC_R6061		0x6061
#define PCI_DEVICE_ID_RDC_D1010		0x1010

#define PCI_VENDOR_ID_LENOVO		0x17aa