linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mikael Pettersson <mikpe@it.uu.se>
To: jeff@garzik.org
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH libata #promise-sata-pata] sata_promise: 2037x PATAPI support
Date: Sun, 7 Jan 2007 23:39:45 +0100 (MET)	[thread overview]
Message-ID: <200701072239.l07Mdju7028895@harpo.it.uu.se> (raw)

On Sat, 6 Jan 2007 21:32:03 +0100 (MET), Mikael Pettersson wrote:
>This patch adds ATAPI support for the PATA port on Promise 2037x chips.
>It depends on the common sata_promise ATAPI support patch.
>
>First-generation chips don't support ATAPI on their SATA ports, so
>the patch removes ATA_FLAG_NO_ATAPI from the 2037x common host flags,
>and adds it back via the _port_flags[] entries for the SATA ports.

Update: SATAPI works on first-generation chips, but only in PIO mode.

To verify that DMA doesn't work I also tried Promise's pdc-ultra
driver for their first-generation chips. It doesn't want to support
ATAPI without an explicit option. Enabling that option makes it
recognise ATAPI devices, but even a simple "eject" command triggers
command timeouts and eventually a kernel oops due to the NMI watchdog.
So I'm fairly sure that DMA simply doesn't work.

This patch enables ATAPI on 20319 and 2037x chips, but forces SATA
ports to always use PIO. As a side-effect, ATAPI support is now free
of any dependencies on the #promise-sata-pata branch.

Signed-off-by: Mikael Pettersson <mikpe@it.uu.se>

--- linux-2.6.20-rc4/drivers/ata/sata_promise.c.~1~	2007-01-07 22:58:01.000000000 +0100
+++ linux-2.6.20-rc4/drivers/ata/sata_promise.c	2007-01-07 23:06:22.000000000 +0100
@@ -197,7 +197,7 @@ static const struct ata_port_info pdc_po
 	/* board_20319 */
 	{
 		.sht		= &pdc_ata_sht,
-		.flags		= PDC_COMMON_FLAGS | ATA_FLAG_NO_ATAPI | ATA_FLAG_SATA,
+		.flags		= PDC_COMMON_FLAGS | ATA_FLAG_SATA,
 		.pio_mask	= 0x1f, /* pio0-4 */
 		.mwdma_mask	= 0x07, /* mwdma0-2 */
 		.udma_mask	= 0x7f, /* udma0-6 ; FIXME */
@@ -789,8 +789,14 @@ static void pdc_exec_command_mmio(struct
 static int pdc_check_atapi_dma(struct ata_queued_cmd *qc)
 {
 	u8 *scsicmd = qc->scsicmd->cmnd;
+	struct ata_port *ap = qc->ap;
+	struct pdc_host_priv *hp = ap->host->private_data;
 	int pio = 1; /* atapi dma off by default */
 
+	/* First generation chips cannot use ATAPI DMA on SATA ports */
+	if (!(hp->flags & PDC_FLAG_GEN_II) && sata_scr_valid(ap))
+		return 1;
+
 	/* Whitelist commands that may use DMA. */
 	switch (scsicmd[0]) {
 	case WRITE_12:
@@ -996,10 +1002,6 @@ static int pdc_ata_init_one (struct pci_
        			probe_ent->n_ports = 2;
 		probe_ent->_port_flags[0] = ATA_FLAG_SATA;
 		probe_ent->_port_flags[1] = ATA_FLAG_SATA;
-		if (board_idx == board_2037x) {
-			probe_ent->_port_flags[0] |= ATA_FLAG_NO_ATAPI;
-			probe_ent->_port_flags[1] |= ATA_FLAG_NO_ATAPI;
-		}
 		break;
 	case board_20619:
 		probe_ent->n_ports = 4;

             reply	other threads:[~2007-01-07 22:39 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-07 22:39 Mikael Pettersson [this message]
2007-01-08  1:47 ` [PATCH libata #promise-sata-pata] sata_promise: 2037x PATAPI support Jeff Garzik
2007-01-08 10:30   ` Alan
  -- strict thread matches above, loose matches on Subject: below --
2007-01-08  8:08 Mikael Pettersson
2007-01-06 20:32 Mikael Pettersson

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=200701072239.l07Mdju7028895@harpo.it.uu.se \
    --to=mikpe@it.uu.se \
    --cc=jeff@garzik.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).