* [PATCH 1/4] pata_artop: Serializing support
@ 2009-03-24 10:19 Alan Cox
0 siblings, 0 replies; 3+ messages in thread
From: Alan Cox @ 2009-03-24 10:19 UTC (permalink / raw)
To: jeff, linux-kernel, linux-ide
From: Alan Cox <alan@redhat.com>
Enable both ports on the 6210 and serialize them
Signed-off-by: Alan Cox <alan@redhat.com>
---
block/blk-settings.c | 2 +-
drivers/ata/pata_artop.c | 33 +++++++++++++++++++++++++++------
2 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/block/blk-settings.c b/block/blk-settings.c
index 59fd05d..69c42ad 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -431,7 +431,7 @@ EXPORT_SYMBOL(blk_queue_segment_boundary);
*
* description:
* set required memory and length alignment for direct dma transactions.
- * this is used when buiding direct io requests for the queue.
+ * this is used when building direct io requests for the queue.
*
**/
void blk_queue_dma_alignment(struct request_queue *q, int mask)
diff --git a/drivers/ata/pata_artop.c b/drivers/ata/pata_artop.c
index 6b3092c..eee4287 100644
--- a/drivers/ata/pata_artop.c
+++ b/drivers/ata/pata_artop.c
@@ -12,7 +12,6 @@
* performance Alessandro Zummo <alessandro.zummo@towertech.it>
*
* TODO
- * 850 serialization once the core supports it
* Investigate no_dsc on 850R
* Clock detect
*/
@@ -29,7 +28,7 @@
#include <linux/ata.h>
#define DRV_NAME "pata_artop"
-#define DRV_VERSION "0.4.4"
+#define DRV_VERSION "0.4.5"
/*
* The ARTOP has 33 Mhz and "over clocked" timing tables. Until we
@@ -283,6 +282,31 @@ static void artop6260_set_dmamode (struct ata_port *ap, struct ata_device *adev)
pci_write_config_byte(pdev, 0x44 + ap->port_no, ultra);
}
+/**
+ * artop_6210_qc_defer - implement serialization
+ * @qc: command
+ *
+ * Issue commands per host on this chip.
+ */
+
+static int artop6210_qc_defer(struct ata_queued_cmd *qc)
+{
+ struct ata_host *host = qc->ap->host;
+ struct ata_port *alt = host->ports[1 ^ qc->ap->port_no];
+ int rc;
+
+ /* First apply the usual rules */
+ rc = ata_std_qc_defer(qc);
+ if (rc != 0)
+ return rc;
+
+ /* Now apply serialization rules. Only allow a command if the
+ other channel state machine is idle */
+ if (alt && alt->qc_active)
+ return ATA_DEFER_PORT;
+ return 0;
+}
+
static struct scsi_host_template artop_sht = {
ATA_BMDMA_SHT(DRV_NAME),
};
@@ -293,6 +317,7 @@ static struct ata_port_operations artop6210_ops = {
.set_piomode = artop6210_set_piomode,
.set_dmamode = artop6210_set_dmamode,
.prereset = artop6210_pre_reset,
+ .qc_defer = artop6210_qc_defer,
};
static struct ata_port_operations artop6260_ops = {
@@ -362,12 +387,8 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id)
if (id->driver_data == 0) { /* 6210 variant */
ppi[0] = &info_6210;
- ppi[1] = &ata_dummy_port_info;
/* BIOS may have left us in UDMA, clear it before libata probe */
pci_write_config_byte(pdev, 0x54, 0);
- /* For the moment (also lacks dsc) */
- printk(KERN_WARNING "ARTOP 6210 requires serialize functionality not yet supported by libata.\n");
- printk(KERN_WARNING "Secondary ATA ports will not be activated.\n");
}
else if (id->driver_data == 1) /* 6260 */
ppi[0] = &info_626x;
^ permalink raw reply related [flat|nested] 3+ messages in thread* [PATCH 0/4] libata patches for 2.6.30
@ 2009-03-24 10:21 Alan Cox
2009-03-24 10:21 ` [PATCH 1/4] pata_artop: Serializing support Alan Cox
0 siblings, 1 reply; 3+ messages in thread
From: Alan Cox @ 2009-03-24 10:21 UTC (permalink / raw)
To: jeff, linux-kernel, linux-ide
Just a small set but the libata stuff is fairly important
---
Alan Cox (4):
libata: Improve timeout handling
libata: Drain data on errors
pata_sc1200: Activate secondary channel
pata_artop: Serializing support
block/blk-settings.c | 2 -
drivers/ata/libata-eh.c | 19 ++++++++-
drivers/ata/libata-sff.c | 91 +++++++++++++++++++++++++++++++++++++++++++-
drivers/ata/pata_artop.c | 33 +++++++++++++---
drivers/ata/pata_isapnp.c | 12 +++++-
drivers/ata/pata_pcmcia.c | 34 ++++++++++++++++
drivers/ata/pata_sc1200.c | 29 +++++++++++++-
drivers/ata/pdc_adma.c | 2 +
drivers/ata/sata_mv.c | 2 +
drivers/ata/sata_nv.c | 1
drivers/ata/sata_promise.c | 2 +
drivers/ata/sata_qstor.c | 1
drivers/ata/sata_vsc.c | 3 +
include/linux/libata.h | 5 ++
14 files changed, 219 insertions(+), 17 deletions(-)
--
If this writing is visible please refill and remember to order a new box of
signature files from your supplier
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH 1/4] pata_artop: Serializing support
2009-03-24 10:21 [PATCH 0/4] libata patches for 2.6.30 Alan Cox
@ 2009-03-24 10:21 ` Alan Cox
2009-03-25 2:46 ` Jeff Garzik
0 siblings, 1 reply; 3+ messages in thread
From: Alan Cox @ 2009-03-24 10:21 UTC (permalink / raw)
To: jeff, linux-kernel, linux-ide
From: Alan Cox <alan@redhat.com>
Enable both ports on the 6210 and serialize them
Signed-off-by: Alan Cox <alan@redhat.com>
---
block/blk-settings.c | 2 +-
drivers/ata/pata_artop.c | 33 +++++++++++++++++++++++++++------
2 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/block/blk-settings.c b/block/blk-settings.c
index 59fd05d..69c42ad 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -431,7 +431,7 @@ EXPORT_SYMBOL(blk_queue_segment_boundary);
*
* description:
* set required memory and length alignment for direct dma transactions.
- * this is used when buiding direct io requests for the queue.
+ * this is used when building direct io requests for the queue.
*
**/
void blk_queue_dma_alignment(struct request_queue *q, int mask)
diff --git a/drivers/ata/pata_artop.c b/drivers/ata/pata_artop.c
index 6b3092c..eee4287 100644
--- a/drivers/ata/pata_artop.c
+++ b/drivers/ata/pata_artop.c
@@ -12,7 +12,6 @@
* performance Alessandro Zummo <alessandro.zummo@towertech.it>
*
* TODO
- * 850 serialization once the core supports it
* Investigate no_dsc on 850R
* Clock detect
*/
@@ -29,7 +28,7 @@
#include <linux/ata.h>
#define DRV_NAME "pata_artop"
-#define DRV_VERSION "0.4.4"
+#define DRV_VERSION "0.4.5"
/*
* The ARTOP has 33 Mhz and "over clocked" timing tables. Until we
@@ -283,6 +282,31 @@ static void artop6260_set_dmamode (struct ata_port *ap, struct ata_device *adev)
pci_write_config_byte(pdev, 0x44 + ap->port_no, ultra);
}
+/**
+ * artop_6210_qc_defer - implement serialization
+ * @qc: command
+ *
+ * Issue commands per host on this chip.
+ */
+
+static int artop6210_qc_defer(struct ata_queued_cmd *qc)
+{
+ struct ata_host *host = qc->ap->host;
+ struct ata_port *alt = host->ports[1 ^ qc->ap->port_no];
+ int rc;
+
+ /* First apply the usual rules */
+ rc = ata_std_qc_defer(qc);
+ if (rc != 0)
+ return rc;
+
+ /* Now apply serialization rules. Only allow a command if the
+ other channel state machine is idle */
+ if (alt && alt->qc_active)
+ return ATA_DEFER_PORT;
+ return 0;
+}
+
static struct scsi_host_template artop_sht = {
ATA_BMDMA_SHT(DRV_NAME),
};
@@ -293,6 +317,7 @@ static struct ata_port_operations artop6210_ops = {
.set_piomode = artop6210_set_piomode,
.set_dmamode = artop6210_set_dmamode,
.prereset = artop6210_pre_reset,
+ .qc_defer = artop6210_qc_defer,
};
static struct ata_port_operations artop6260_ops = {
@@ -362,12 +387,8 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id)
if (id->driver_data == 0) { /* 6210 variant */
ppi[0] = &info_6210;
- ppi[1] = &ata_dummy_port_info;
/* BIOS may have left us in UDMA, clear it before libata probe */
pci_write_config_byte(pdev, 0x54, 0);
- /* For the moment (also lacks dsc) */
- printk(KERN_WARNING "ARTOP 6210 requires serialize functionality not yet supported by libata.\n");
- printk(KERN_WARNING "Secondary ATA ports will not be activated.\n");
}
else if (id->driver_data == 1) /* 6260 */
ppi[0] = &info_626x;
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-03-25 2:46 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-24 10:19 [PATCH 1/4] pata_artop: Serializing support Alan Cox
-- strict thread matches above, loose matches on Subject: below --
2009-03-24 10:21 [PATCH 0/4] libata patches for 2.6.30 Alan Cox
2009-03-24 10:21 ` [PATCH 1/4] pata_artop: Serializing support Alan Cox
2009-03-25 2:46 ` Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox