Commit 6656b3fc authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  sata_via: apply magic FIFO fix to vt6420 too
parents 33e0d57f b1353e4f
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -538,7 +538,7 @@ static int vt8251_prepare_host(struct pci_dev *pdev, struct ata_host **r_host)
	return 0;
	return 0;
}
}


static void svia_configure(struct pci_dev *pdev)
static void svia_configure(struct pci_dev *pdev, int board_id)
{
{
	u8 tmp8;
	u8 tmp8;


@@ -577,7 +577,7 @@ static void svia_configure(struct pci_dev *pdev)
	}
	}


	/*
	/*
	 * vt6421 has problems talking to some drives.  The following
	 * vt6420/1 has problems talking to some drives.  The following
	 * is the fix from Joseph Chan <JosephChan@via.com.tw>.
	 * is the fix from Joseph Chan <JosephChan@via.com.tw>.
	 *
	 *
	 * When host issues HOLD, device may send up to 20DW of data
	 * When host issues HOLD, device may send up to 20DW of data
@@ -596,8 +596,9 @@ static void svia_configure(struct pci_dev *pdev)
	 *
	 *
	 * https://bugzilla.kernel.org/show_bug.cgi?id=15173
	 * https://bugzilla.kernel.org/show_bug.cgi?id=15173
	 * http://article.gmane.org/gmane.linux.ide/46352
	 * http://article.gmane.org/gmane.linux.ide/46352
	 * http://thread.gmane.org/gmane.linux.kernel/1062139
	 */
	 */
	if (pdev->device == 0x3249) {
	if (board_id == vt6420 || board_id == vt6421) {
		pci_read_config_byte(pdev, 0x52, &tmp8);
		pci_read_config_byte(pdev, 0x52, &tmp8);
		tmp8 |= 1 << 2;
		tmp8 |= 1 << 2;
		pci_write_config_byte(pdev, 0x52, tmp8);
		pci_write_config_byte(pdev, 0x52, tmp8);
@@ -652,7 +653,7 @@ static int svia_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
	if (rc)
	if (rc)
		return rc;
		return rc;


	svia_configure(pdev);
	svia_configure(pdev, board_id);


	pci_set_master(pdev);
	pci_set_master(pdev);
	return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
	return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,