Loading drivers/ata/pata_artop.c +27 −6 Original line number Diff line number Diff line Loading @@ -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 */ Loading @@ -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 Loading Loading @@ -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), }; Loading @@ -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 = { Loading Loading @@ -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; Loading Loading
drivers/ata/pata_artop.c +27 −6 Original line number Diff line number Diff line Loading @@ -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 */ Loading @@ -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 Loading Loading @@ -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), }; Loading @@ -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 = { Loading Loading @@ -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; Loading