All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bart Hartgers <bart.hartgers@gmail.com>
To: linux-kernel@vger.kernel.org, Jeff Garzik <jgarzik@pobox.com>
Cc: linux-ide@vger.kernel.org, Bart Hartgers <bart.hartgers@gmail.com>
Subject: [patch 1/2] sata_via: Correctly setup PIO/DMA for pata slave on vt6421.
Date: Sun, 17 Jan 2010 00:56:54 +0100	[thread overview]
Message-ID: <20100116235849.969478053@gmail.com> (raw)
In-Reply-To: 20100116235653.898098245@gmail.com

[-- Attachment #1: sata_via/vt6421-pata-slave.patch --]
[-- Type: text/plain, Size: 2077 bytes --]

Before only the timings for master were set. Datasheet can be found
here: ftp://ftp.vtbridge.org/Docs/Storage/DS_VT6421A_100_CCPL.PDF
Surprisingly, a slave drive works without this patch. According to the
datasheet, the controller by default derives the DMA mode from the 
Set Features command issued to a drive. Not sure about the PIO
timings, though. The real problem is that the timings for the master
effectively are the ones tuned for the slave. If these support
different UDMA-settings, there is trouble, especially when the slave
supports a higher UDMA than the master. 

Anyhow, using the same mechanism for both master and slave seems like 
a good idea.

Signed-off-by: Bart Hartgers <bart.hartgers@gmail.com>
---
Index: linux-2.6.33-rc4/drivers/ata/sata_via.c
===================================================================
--- linux-2.6.33-rc4.orig/drivers/ata/sata_via.c	2010-01-16 22:28:13.000000000 +0100
+++ linux-2.6.33-rc4/drivers/ata/sata_via.c	2010-01-16 22:29:30.000000000 +0100
@@ -44,7 +44,7 @@
 #include <linux/libata.h>
 
 #define DRV_NAME	"sata_via"
-#define DRV_VERSION	"2.4"
+#define DRV_VERSION	"2.5"
 
 /*
  * vt8251 is different from other sata controllers of VIA.  It has two
@@ -392,14 +392,16 @@ static void vt6421_set_pio_mode(struct a
 {
 	struct pci_dev *pdev = to_pci_dev(ap->host->dev);
 	static const u8 pio_bits[] = { 0xA8, 0x65, 0x65, 0x31, 0x20 };
-	pci_write_config_byte(pdev, PATA_PIO_TIMING, pio_bits[adev->pio_mode - XFER_PIO_0]);
+	pci_write_config_byte(pdev, PATA_PIO_TIMING - adev->devno,
+			      pio_bits[adev->pio_mode - XFER_PIO_0]);
 }
 
 static void vt6421_set_dma_mode(struct ata_port *ap, struct ata_device *adev)
 {
 	struct pci_dev *pdev = to_pci_dev(ap->host->dev);
 	static const u8 udma_bits[] = { 0xEE, 0xE8, 0xE6, 0xE4, 0xE2, 0xE1, 0xE0, 0xE0 };
-	pci_write_config_byte(pdev, PATA_UDMA_TIMING, udma_bits[adev->dma_mode - XFER_UDMA_0]);
+	pci_write_config_byte(pdev, PATA_UDMA_TIMING - adev->devno,
+			      udma_bits[adev->dma_mode - XFER_UDMA_0]);
 }
 
 static const unsigned int svia_bar_sizes[] = {

-- 

  reply	other threads:[~2010-01-16 23:58 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-16 23:56 [patch 0/2] sata_via: bugfixes for vt6420 and vt6421 Bart Hartgers
2010-01-16 23:56 ` Bart Hartgers [this message]
2010-01-20  3:33   ` [patch 1/2] sata_via: Correctly setup PIO/DMA for pata slave on vt6421 Tejun Heo
2010-01-20 19:35   ` Jeff Garzik
2010-01-16 23:56 ` [patch 2/2] sata_via: Delay on vt6420 when starting ATAPI DMA write Bart Hartgers
2010-01-20  3:30   ` Tejun Heo
2010-01-20  4:53     ` Robert Hancock
2010-01-20  6:33       ` Bart Hartgers
2010-01-20  6:33         ` Bart Hartgers
2010-01-20  6:54         ` Tejun Heo
2010-01-20 10:43           ` Bart Hartgers
2010-01-20 10:43             ` Bart Hartgers
2010-01-20  6:44     ` Bart Hartgers
2010-01-20  6:44       ` Bart Hartgers
2010-01-20  6:55       ` Tejun Heo
2010-02-13 22:47         ` Jeff Garzik
2010-02-14 11:20           ` Bart Hartgers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100116235849.969478053@gmail.com \
    --to=bart.hartgers@gmail.com \
    --cc=jgarzik@pobox.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.