linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] libata-dev-2.6: pdc2027x timing register fix for 100MHz adapters
@ 2005-02-02  9:01 Albert Lee
  2005-02-24  5:57 ` Albert Lee
  0 siblings, 1 reply; 5+ messages in thread
From: Albert Lee @ 2005-02-02  9:01 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: IDE Linux, Doug Maxey

[-- Attachment #1: Type: text/plain, Size: 2356 bytes --]

Hi Jeff,

  I did not get the pdc2027x timing registers right for the 100 MHz adapters.
For the 100MHz adapters, the hardware will automatically set the timing registers to the correct value.
No need to set the timing register by software table lookup.
(The values in the lookup table are for 133Mhz adapters, which are incorrect for 100MHz adapters.)

  Attached please find the patch against the libata-dev-2.6 tree for your review. Thanks.

Albert

Signed-off-by: Albert Lee <albertcc@tw.ibm.com>
----------------------------------------------------------------------------------------------
--- libata-dev-2.6/drivers/scsi/pata_pdc2027x.c 2005-02-02 16:08:39.000000000 +0800
+++ libata-dev-2.6-mod/drivers/scsi/pata_pdc2027x.c 2005-02-02 16:17:26.000000000 +0800
@@ -29,7 +29,7 @@
 #include <asm/io.h>
 
 #define DRV_NAME "pata_pdc2027x"
-#define DRV_VERSION "0.55"
+#define DRV_VERSION "0.56"
 #undef PDC_DEBUG
 
 #ifdef PDC_DEBUG
@@ -130,7 +130,32 @@
  .bios_param  = ata_std_bios_param,
 };
 
-static struct ata_port_operations pdc2027x_pata_ops = {
+static struct ata_port_operations pdc2027x_pata100_ops = {
+ .port_disable  = ata_port_disable,
+
+ .tf_load  = ata_tf_load,
+ .tf_read  = ata_tf_read,
+ .check_status  = ata_check_status,
+ .exec_command  = ata_exec_command,
+ .dev_select  = ata_std_dev_select,
+
+ .phy_reset  = pdc2027x_phy_reset,   
+
+ .check_atapi_dma = pdc2027x_check_atapi_dma,
+ .bmdma_setup  = ata_bmdma_setup,
+ .bmdma_start  = ata_bmdma_start,
+ .qc_prep  = ata_qc_prep,
+ .qc_issue  = ata_qc_issue_prot,
+ .eng_timeout  = ata_eng_timeout,
+
+ .irq_handler  = ata_interrupt,
+ .irq_clear  = ata_bmdma_irq_clear,
+
+ .port_start  = ata_port_start,
+ .port_stop  = ata_port_stop,
+};
+
+static struct ata_port_operations pdc2027x_pata133_ops = {
  .port_disable  = ata_port_disable,
  .set_piomode  = pdc2027x_set_piomode,   
  .set_dmamode  = pdc2027x_set_dmamode,  
@@ -167,7 +192,7 @@
   .pio_mask = 0x1f, /* pio0-4 */
   .mwdma_mask = 0x07, /* mwdma0-2 */
   .udma_mask = ATA_UDMA5, /* udma0-5 */
-  .port_ops = &pdc2027x_pata_ops,
+  .port_ops = &pdc2027x_pata100_ops,
  },
  /* PDC_UDMA_133 */
  {
@@ -177,7 +202,7 @@
   .pio_mask = 0x1f, /* pio0-4 */
   .mwdma_mask = 0x07, /* mwdma0-2 */
   .udma_mask = ATA_UDMA6, /* udma0-6 */
-  .port_ops = &pdc2027x_pata_ops,
+  .port_ops = &pdc2027x_pata133_ops,
  },
 };
 

[-- Attachment #2: pdc2027x_056.patch --]
[-- Type: application/octet-stream, Size: 1824 bytes --]

--- libata-dev-2.6/drivers/scsi/pata_pdc2027x.c	2005-02-02 16:08:39.000000000 +0800
+++ libata-dev-2.6-mod/drivers/scsi/pata_pdc2027x.c	2005-02-02 16:17:26.000000000 +0800
@@ -29,7 +29,7 @@
 #include <asm/io.h>
 
 #define DRV_NAME	"pata_pdc2027x"
-#define DRV_VERSION	"0.55"
+#define DRV_VERSION	"0.56"
 #undef PDC_DEBUG
 
 #ifdef PDC_DEBUG
@@ -130,7 +130,32 @@
 	.bios_param		= ata_std_bios_param,
 };
 
-static struct ata_port_operations pdc2027x_pata_ops = {
+static struct ata_port_operations pdc2027x_pata100_ops = {
+	.port_disable		= ata_port_disable,
+
+	.tf_load		= ata_tf_load,
+	.tf_read		= ata_tf_read,
+	.check_status		= ata_check_status,
+	.exec_command		= ata_exec_command,
+	.dev_select		= ata_std_dev_select,
+
+	.phy_reset		= pdc2027x_phy_reset,   
+
+	.check_atapi_dma	= pdc2027x_check_atapi_dma,
+	.bmdma_setup		= ata_bmdma_setup,
+	.bmdma_start		= ata_bmdma_start,
+	.qc_prep		= ata_qc_prep,
+	.qc_issue		= ata_qc_issue_prot,
+	.eng_timeout		= ata_eng_timeout,
+
+	.irq_handler		= ata_interrupt,
+	.irq_clear		= ata_bmdma_irq_clear,
+
+	.port_start		= ata_port_start,
+	.port_stop		= ata_port_stop,
+};
+
+static struct ata_port_operations pdc2027x_pata133_ops = {
 	.port_disable		= ata_port_disable,
 	.set_piomode		= pdc2027x_set_piomode,   
 	.set_dmamode		= pdc2027x_set_dmamode,  
@@ -167,7 +192,7 @@
 		.pio_mask	= 0x1f, /* pio0-4 */
 		.mwdma_mask	= 0x07, /* mwdma0-2 */
 		.udma_mask	= ATA_UDMA5, /* udma0-5 */
-		.port_ops	= &pdc2027x_pata_ops,
+		.port_ops	= &pdc2027x_pata100_ops,
 	},
 	/* PDC_UDMA_133 */
 	{
@@ -177,7 +202,7 @@
 		.pio_mask	= 0x1f, /* pio0-4 */
 		.mwdma_mask	= 0x07, /* mwdma0-2 */
 		.udma_mask	= ATA_UDMA6, /* udma0-6 */
-		.port_ops	= &pdc2027x_pata_ops,
+		.port_ops	= &pdc2027x_pata133_ops,
 	},
 };
 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-02-24  6:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-02-02  9:01 [PATCH] libata-dev-2.6: pdc2027x timing register fix for 100MHz adapters Albert Lee
2005-02-24  5:57 ` Albert Lee
2005-02-24  6:10   ` Jeff Garzik
2005-02-24  6:51     ` Albert Lee
2005-02-24  6:56   ` Jeff Garzik

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).