Hi Tejun, On Mon, Sep 26, 2011 at 2:51 PM, Ming Lei <ming.lei@xxxxxxxxxxxxx> wrote: > Hi, > > On Sun, Sep 25, 2011 at 8:03 AM, Tejun Heo <htejun@xxxxxxxxx> wrote: >> Sure I can do that but it would be better if you can revise your >> patch. Please take a look at how different ops are mapped to >> different device IDs. You just need to create another variant to be >> mapped to the problematic device IDs. > > OK, I will do it. How about this one below? diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c index 43107e9..b35086b 100644 --- a/drivers/ata/ata_piix.c +++ b/drivers/ata/ata_piix.c @@ -147,6 +147,7 @@ enum piix_controller_ids { ich8m_apple_sata, /* locks up on second port enable */ tolapai_sata, piix_pata_vmw, /* PIIX4 for VMware, spurious DMA_ERR */ + ich8_sata_snb, }; struct piix_map_db { @@ -298,7 +299,7 @@ static const struct pci_device_id piix_pci_tbl[] = { /* SATA Controller IDE (PCH) */ { 0x8086, 0x3b2e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, /* SATA Controller IDE (CPT) */ - { 0x8086, 0x1c00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, + { 0x8086, 0x1c00, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_snb }, /* SATA Controller IDE (CPT) */ { 0x8086, 0x1c01, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, /* SATA Controller IDE (CPT) */ @@ -335,6 +336,11 @@ static struct scsi_host_template piix_sht = { ATA_BMDMA_SHT(DRV_NAME), }; +static struct ata_port_operations piix_sata_snb_ops = { + .inherits = &ata_bmdma_port_ops, + .sff_irq_check = piix_irq_check, +}; + static struct ata_port_operations piix_sata_ops = { .inherits = &ata_bmdma32_port_ops, .sff_irq_check = piix_irq_check, @@ -478,6 +484,7 @@ static const struct piix_map_db *piix_map_db_table[] = { [ich8_2port_sata] = &ich8_2port_map_db, [ich8m_apple_sata] = &ich8m_apple_map_db, [tolapai_sata] = &tolapai_map_db, + [ich8_sata_snb] = &ich8_map_db, }; static struct ata_port_info piix_port_info[] = { @@ -606,6 +613,15 @@ static struct ata_port_info piix_port_info[] = { .port_ops = &piix_vmw_ops, }, + [ich8_sata_snb] = + { + .flags = PIIX_SATA_FLAGS | PIIX_FLAG_SIDPR, + .pio_mask = ATA_PIO4, + .mwdma_mask = ATA_MWDMA2, + .udma_mask = ATA_UDMA6, + .port_ops = &piix_sata_snb_ops, + }, + }; static struct pci_bits piix_enable_bits[] = { thanks, -- Ming Lei -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html