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 <[EMAIL PROTECTED]>
----------------------------------------------------------------------------------------------
--- 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: pdc2027x_056.patch
Description: Binary data

Reply via email to