diff options
author | David Woodhouse <dwmw2@infradead.org> | 2007-10-13 09:43:54 -0400 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2007-10-13 09:43:54 -0400 |
commit | b160292cc216a50fd0cd386b0bda2cd48352c73b (patch) | |
tree | ef07cf98f91353ee4c9ec1e1ca7a2a5d9d4b538a /drivers/ata | |
parent | b37bde147890c8fea8369a5a4e230dabdea4ebfb (diff) | |
parent | bbf25010f1a6b761914430f5fca081ec8c7accd1 (diff) |
Merge Linux 2.6.23
Diffstat (limited to 'drivers/ata')
39 files changed, 233 insertions, 76 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 06f212ff2b4f..c16820325d7b 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -418,10 +418,12 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
418 | 418 | ||
419 | /* ATI */ | 419 | /* ATI */ |
420 | { PCI_VDEVICE(ATI, 0x4380), board_ahci_sb600 }, /* ATI SB600 */ | 420 | { PCI_VDEVICE(ATI, 0x4380), board_ahci_sb600 }, /* ATI SB600 */ |
421 | { PCI_VDEVICE(ATI, 0x4390), board_ahci_sb600 }, /* ATI SB700 IDE */ | 421 | { PCI_VDEVICE(ATI, 0x4390), board_ahci_sb600 }, /* ATI SB700/800 */ |
422 | { PCI_VDEVICE(ATI, 0x4391), board_ahci_sb600 }, /* ATI SB700 AHCI */ | 422 | { PCI_VDEVICE(ATI, 0x4391), board_ahci_sb600 }, /* ATI SB700/800 */ |
423 | { PCI_VDEVICE(ATI, 0x4392), board_ahci_sb600 }, /* ATI SB700 nraid5 */ | 423 | { PCI_VDEVICE(ATI, 0x4392), board_ahci_sb600 }, /* ATI SB700/800 */ |
424 | { PCI_VDEVICE(ATI, 0x4393), board_ahci_sb600 }, /* ATI SB700 raid5 */ | 424 | { PCI_VDEVICE(ATI, 0x4393), board_ahci_sb600 }, /* ATI SB700/800 */ |
425 | { PCI_VDEVICE(ATI, 0x4394), board_ahci_sb600 }, /* ATI SB700/800 */ | ||
426 | { PCI_VDEVICE(ATI, 0x4395), board_ahci_sb600 }, /* ATI SB700/800 */ | ||
425 | 427 | ||
426 | /* VIA */ | 428 | /* VIA */ |
427 | { PCI_VDEVICE(VIA, 0x3349), board_ahci_vt8251 }, /* VIA VT8251 */ | 429 | { PCI_VDEVICE(VIA, 0x3349), board_ahci_vt8251 }, /* VIA VT8251 */ |
diff --git a/drivers/ata/ata_generic.c b/drivers/ata/ata_generic.c index 430fcf4f9ef3..945466954724 100644 --- a/drivers/ata/ata_generic.c +++ b/drivers/ata/ata_generic.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include <linux/libata.h> | 26 | #include <linux/libata.h> |
27 | 27 | ||
28 | #define DRV_NAME "ata_generic" | 28 | #define DRV_NAME "ata_generic" |
29 | #define DRV_VERSION "0.2.12" | 29 | #define DRV_VERSION "0.2.13" |
30 | 30 | ||
31 | /* | 31 | /* |
32 | * A generic parallel ATA driver using libata | 32 | * A generic parallel ATA driver using libata |
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c index 071d274afaab..6996eb5b7506 100644 --- a/drivers/ata/ata_piix.c +++ b/drivers/ata/ata_piix.c | |||
@@ -94,7 +94,7 @@ | |||
94 | #include <linux/dmi.h> | 94 | #include <linux/dmi.h> |
95 | 95 | ||
96 | #define DRV_NAME "ata_piix" | 96 | #define DRV_NAME "ata_piix" |
97 | #define DRV_VERSION "2.11" | 97 | #define DRV_VERSION "2.12" |
98 | 98 | ||
99 | enum { | 99 | enum { |
100 | PIIX_IOCFG = 0x54, /* IDE I/O configuration register */ | 100 | PIIX_IOCFG = 0x54, /* IDE I/O configuration register */ |
@@ -130,6 +130,7 @@ enum { | |||
130 | ich6m_sata_ahci = 8, | 130 | ich6m_sata_ahci = 8, |
131 | ich8_sata_ahci = 9, | 131 | ich8_sata_ahci = 9, |
132 | piix_pata_mwdma = 10, /* PIIX3 MWDMA only */ | 132 | piix_pata_mwdma = 10, /* PIIX3 MWDMA only */ |
133 | tolapai_sata_ahci = 11, | ||
133 | 134 | ||
134 | /* constants for mapping table */ | 135 | /* constants for mapping table */ |
135 | P0 = 0, /* port 0 */ | 136 | P0 = 0, /* port 0 */ |
@@ -253,6 +254,8 @@ static const struct pci_device_id piix_pci_tbl[] = { | |||
253 | { 0x8086, 0x292d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci }, | 254 | { 0x8086, 0x292d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci }, |
254 | /* SATA Controller IDE (ICH9M) */ | 255 | /* SATA Controller IDE (ICH9M) */ |
255 | { 0x8086, 0x292e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci }, | 256 | { 0x8086, 0x292e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata_ahci }, |
257 | /* SATA Controller IDE (Tolapai) */ | ||
258 | { 0x8086, 0x5028, PCI_ANY_ID, PCI_ANY_ID, 0, 0, tolapai_sata_ahci }, | ||
256 | 259 | ||
257 | { } /* terminate list */ | 260 | { } /* terminate list */ |
258 | }; | 261 | }; |
@@ -441,12 +444,25 @@ static const struct piix_map_db ich8_map_db = { | |||
441 | }, | 444 | }, |
442 | }; | 445 | }; |
443 | 446 | ||
447 | static const struct piix_map_db tolapai_map_db = { | ||
448 | .mask = 0x3, | ||
449 | .port_enable = 0x3, | ||
450 | .map = { | ||
451 | /* PM PS SM SS MAP */ | ||
452 | { P0, NA, P1, NA }, /* 00b */ | ||
453 | { RV, RV, RV, RV }, /* 01b */ | ||
454 | { RV, RV, RV, RV }, /* 10b */ | ||
455 | { RV, RV, RV, RV }, | ||
456 | }, | ||
457 | }; | ||
458 | |||
444 | static const struct piix_map_db *piix_map_db_table[] = { | 459 | static const struct piix_map_db *piix_map_db_table[] = { |
445 | [ich5_sata] = &ich5_map_db, | 460 | [ich5_sata] = &ich5_map_db, |
446 | [ich6_sata] = &ich6_map_db, | 461 | [ich6_sata] = &ich6_map_db, |
447 | [ich6_sata_ahci] = &ich6_map_db, | 462 | [ich6_sata_ahci] = &ich6_map_db, |
448 | [ich6m_sata_ahci] = &ich6m_map_db, | 463 | [ich6m_sata_ahci] = &ich6m_map_db, |
449 | [ich8_sata_ahci] = &ich8_map_db, | 464 | [ich8_sata_ahci] = &ich8_map_db, |
465 | [tolapai_sata_ahci] = &tolapai_map_db, | ||
450 | }; | 466 | }; |
451 | 467 | ||
452 | static struct ata_port_info piix_port_info[] = { | 468 | static struct ata_port_info piix_port_info[] = { |
@@ -560,6 +576,17 @@ static struct ata_port_info piix_port_info[] = { | |||
560 | .mwdma_mask = 0x06, /* mwdma1-2 ?? CHECK 0 should be ok but slow */ | 576 | .mwdma_mask = 0x06, /* mwdma1-2 ?? CHECK 0 should be ok but slow */ |
561 | .port_ops = &piix_pata_ops, | 577 | .port_ops = &piix_pata_ops, |
562 | }, | 578 | }, |
579 | |||
580 | /* tolapai_sata_ahci: 11: */ | ||
581 | { | ||
582 | .sht = &piix_sht, | ||
583 | .flags = PIIX_SATA_FLAGS | PIIX_FLAG_SCR | | ||
584 | PIIX_FLAG_AHCI, | ||
585 | .pio_mask = 0x1f, /* pio0-4 */ | ||
586 | .mwdma_mask = 0x07, /* mwdma0-2 */ | ||
587 | .udma_mask = ATA_UDMA6, | ||
588 | .port_ops = &piix_sata_ops, | ||
589 | }, | ||
563 | }; | 590 | }; |
564 | 591 | ||
565 | static struct pci_bits piix_enable_bits[] = { | 592 | static struct pci_bits piix_enable_bits[] = { |
@@ -894,6 +921,13 @@ static int piix_broken_suspend(void) | |||
894 | { | 921 | { |
895 | static struct dmi_system_id sysids[] = { | 922 | static struct dmi_system_id sysids[] = { |
896 | { | 923 | { |
924 | .ident = "TECRA M3", | ||
925 | .matches = { | ||
926 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
927 | DMI_MATCH(DMI_PRODUCT_NAME, "TECRA M3"), | ||
928 | }, | ||
929 | }, | ||
930 | { | ||
897 | .ident = "TECRA M5", | 931 | .ident = "TECRA M5", |
898 | .matches = { | 932 | .matches = { |
899 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | 933 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), |
@@ -908,6 +942,13 @@ static int piix_broken_suspend(void) | |||
908 | }, | 942 | }, |
909 | }, | 943 | }, |
910 | { | 944 | { |
945 | .ident = "Satellite U200", | ||
946 | .matches = { | ||
947 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
948 | DMI_MATCH(DMI_PRODUCT_NAME, "Satellite U200"), | ||
949 | }, | ||
950 | }, | ||
951 | { | ||
911 | .ident = "Satellite U205", | 952 | .ident = "Satellite U205", |
912 | .matches = { | 953 | .matches = { |
913 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | 954 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), |
@@ -921,7 +962,8 @@ static int piix_broken_suspend(void) | |||
921 | DMI_MATCH(DMI_PRODUCT_NAME, "PORTEGE M500"), | 962 | DMI_MATCH(DMI_PRODUCT_NAME, "PORTEGE M500"), |
922 | }, | 963 | }, |
923 | }, | 964 | }, |
924 | { } | 965 | |
966 | { } /* terminate list */ | ||
925 | }; | 967 | }; |
926 | static const char *oemstrs[] = { | 968 | static const char *oemstrs[] = { |
927 | "Tecra M3,", | 969 | "Tecra M3,", |
@@ -1139,6 +1181,41 @@ static void __devinit piix_init_sata_map(struct pci_dev *pdev, | |||
1139 | hpriv->map = map; | 1181 | hpriv->map = map; |
1140 | } | 1182 | } |
1141 | 1183 | ||
1184 | static void piix_iocfg_bit18_quirk(struct pci_dev *pdev) | ||
1185 | { | ||
1186 | static struct dmi_system_id sysids[] = { | ||
1187 | { | ||
1188 | /* Clevo M570U sets IOCFG bit 18 if the cdrom | ||
1189 | * isn't used to boot the system which | ||
1190 | * disables the channel. | ||
1191 | */ | ||
1192 | .ident = "M570U", | ||
1193 | .matches = { | ||
1194 | DMI_MATCH(DMI_SYS_VENDOR, "Clevo Co."), | ||
1195 | DMI_MATCH(DMI_PRODUCT_NAME, "M570U"), | ||
1196 | }, | ||
1197 | }, | ||
1198 | |||
1199 | { } /* terminate list */ | ||
1200 | }; | ||
1201 | u32 iocfg; | ||
1202 | |||
1203 | if (!dmi_check_system(sysids)) | ||
1204 | return; | ||
1205 | |||
1206 | /* The datasheet says that bit 18 is NOOP but certain systems | ||
1207 | * seem to use it to disable a channel. Clear the bit on the | ||
1208 | * affected systems. | ||
1209 | */ | ||
1210 | pci_read_config_dword(pdev, PIIX_IOCFG, &iocfg); | ||
1211 | if (iocfg & (1 << 18)) { | ||
1212 | dev_printk(KERN_INFO, &pdev->dev, | ||
1213 | "applying IOCFG bit18 quirk\n"); | ||
1214 | iocfg &= ~(1 << 18); | ||
1215 | pci_write_config_dword(pdev, PIIX_IOCFG, iocfg); | ||
1216 | } | ||
1217 | } | ||
1218 | |||
1142 | /** | 1219 | /** |
1143 | * piix_init_one - Register PIIX ATA PCI device with kernel services | 1220 | * piix_init_one - Register PIIX ATA PCI device with kernel services |
1144 | * @pdev: PCI device to register | 1221 | * @pdev: PCI device to register |
@@ -1200,6 +1277,9 @@ static int piix_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) | |||
1200 | piix_map_db_table[ent->driver_data]); | 1277 | piix_map_db_table[ent->driver_data]); |
1201 | } | 1278 | } |
1202 | 1279 | ||
1280 | /* apply IOCFG bit18 quirk */ | ||
1281 | piix_iocfg_bit18_quirk(pdev); | ||
1282 | |||
1203 | /* On ICH5, some BIOSen disable the interrupt using the | 1283 | /* On ICH5, some BIOSen disable the interrupt using the |
1204 | * PCI_COMMAND_INTX_DISABLE bit added in PCI 2.3. | 1284 | * PCI_COMMAND_INTX_DISABLE bit added in PCI 2.3. |
1205 | * On ICH6, this bit has the same effect, but only when | 1285 | * On ICH6, this bit has the same effect, but only when |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 99d4fbffb0df..772be09b4689 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -1911,8 +1911,9 @@ int ata_dev_configure(struct ata_device *dev) | |||
1911 | dev->flags |= ATA_DFLAG_FLUSH_EXT; | 1911 | dev->flags |= ATA_DFLAG_FLUSH_EXT; |
1912 | } | 1912 | } |
1913 | 1913 | ||
1914 | if (ata_id_hpa_enabled(dev->id)) | 1914 | if (!(dev->horkage & ATA_HORKAGE_BROKEN_HPA) && |
1915 | dev->n_sectors = ata_hpa_resize(dev); | 1915 | ata_id_hpa_enabled(dev->id)) |
1916 | dev->n_sectors = ata_hpa_resize(dev); | ||
1916 | 1917 | ||
1917 | /* config NCQ */ | 1918 | /* config NCQ */ |
1918 | ata_dev_config_ncq(dev, ncq_desc, sizeof(ncq_desc)); | 1919 | ata_dev_config_ncq(dev, ncq_desc, sizeof(ncq_desc)); |
@@ -3700,11 +3701,16 @@ int ata_dev_revalidate(struct ata_device *dev, unsigned int readid_flags) | |||
3700 | goto fail; | 3701 | goto fail; |
3701 | 3702 | ||
3702 | /* verify n_sectors hasn't changed */ | 3703 | /* verify n_sectors hasn't changed */ |
3703 | if (dev->class == ATA_DEV_ATA && dev->n_sectors != n_sectors) { | 3704 | if (dev->class == ATA_DEV_ATA && n_sectors && |
3705 | dev->n_sectors != n_sectors) { | ||
3704 | ata_dev_printk(dev, KERN_INFO, "n_sectors mismatch " | 3706 | ata_dev_printk(dev, KERN_INFO, "n_sectors mismatch " |
3705 | "%llu != %llu\n", | 3707 | "%llu != %llu\n", |
3706 | (unsigned long long)n_sectors, | 3708 | (unsigned long long)n_sectors, |
3707 | (unsigned long long)dev->n_sectors); | 3709 | (unsigned long long)dev->n_sectors); |
3710 | |||
3711 | /* restore original n_sectors */ | ||
3712 | dev->n_sectors = n_sectors; | ||
3713 | |||
3708 | rc = -ENODEV; | 3714 | rc = -ENODEV; |
3709 | goto fail; | 3715 | goto fail; |
3710 | } | 3716 | } |
@@ -3772,6 +3778,9 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { | |||
3772 | { "Maxtor 6L250S0", "BANC1G10", ATA_HORKAGE_NONCQ }, | 3778 | { "Maxtor 6L250S0", "BANC1G10", ATA_HORKAGE_NONCQ }, |
3773 | { "Maxtor 6B200M0", "BANC1BM0", ATA_HORKAGE_NONCQ }, | 3779 | { "Maxtor 6B200M0", "BANC1BM0", ATA_HORKAGE_NONCQ }, |
3774 | { "Maxtor 6B200M0", "BANC1B10", ATA_HORKAGE_NONCQ }, | 3780 | { "Maxtor 6B200M0", "BANC1B10", ATA_HORKAGE_NONCQ }, |
3781 | { "Maxtor 7B250S0", "BANC1B70", ATA_HORKAGE_NONCQ, }, | ||
3782 | { "Maxtor 7B300S0", "BANC1B70", ATA_HORKAGE_NONCQ }, | ||
3783 | { "Maxtor 7V300F0", "VA111630", ATA_HORKAGE_NONCQ }, | ||
3775 | { "HITACHI HDS7250SASUN500G 0621KTAWSD", "K2AOAJ0AHITACHI", | 3784 | { "HITACHI HDS7250SASUN500G 0621KTAWSD", "K2AOAJ0AHITACHI", |
3776 | ATA_HORKAGE_NONCQ }, | 3785 | ATA_HORKAGE_NONCQ }, |
3777 | /* NCQ hard hangs device under heavier load, needs hard power cycle */ | 3786 | /* NCQ hard hangs device under heavier load, needs hard power cycle */ |
@@ -3788,9 +3797,14 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { | |||
3788 | { "WDC WD740ADFD-00NLR1", NULL, ATA_HORKAGE_NONCQ, }, | 3797 | { "WDC WD740ADFD-00NLR1", NULL, ATA_HORKAGE_NONCQ, }, |
3789 | { "FUJITSU MHV2080BH", "00840028", ATA_HORKAGE_NONCQ, }, | 3798 | { "FUJITSU MHV2080BH", "00840028", ATA_HORKAGE_NONCQ, }, |
3790 | { "ST9160821AS", "3.CLF", ATA_HORKAGE_NONCQ, }, | 3799 | { "ST9160821AS", "3.CLF", ATA_HORKAGE_NONCQ, }, |
3800 | { "ST3160812AS", "3.AD", ATA_HORKAGE_NONCQ, }, | ||
3791 | { "SAMSUNG HD401LJ", "ZZ100-15", ATA_HORKAGE_NONCQ, }, | 3801 | { "SAMSUNG HD401LJ", "ZZ100-15", ATA_HORKAGE_NONCQ, }, |
3792 | 3802 | ||
3793 | /* Devices with NCQ limits */ | 3803 | /* devices which puke on READ_NATIVE_MAX */ |
3804 | { "HDS724040KLSA80", "KFAOA20N", ATA_HORKAGE_BROKEN_HPA, }, | ||
3805 | { "WDC WD3200JD-00KLB0", "WD-WCAMR1130137", ATA_HORKAGE_BROKEN_HPA }, | ||
3806 | { "WDC WD2500JD-00HBB0", "WD-WMAL71490727", ATA_HORKAGE_BROKEN_HPA }, | ||
3807 | { "MAXTOR 6L080L4", "A93.0500", ATA_HORKAGE_BROKEN_HPA }, | ||
3794 | 3808 | ||
3795 | /* End Marker */ | 3809 | /* End Marker */ |
3796 | { } | 3810 | { } |
@@ -3980,6 +3994,11 @@ static unsigned int ata_dev_init_params(struct ata_device *dev, | |||
3980 | tf.device |= (heads - 1) & 0x0f; /* max head = num. of heads - 1 */ | 3994 | tf.device |= (heads - 1) & 0x0f; /* max head = num. of heads - 1 */ |
3981 | 3995 | ||
3982 | err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0); | 3996 | err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0); |
3997 | /* A clean abort indicates an original or just out of spec drive | ||
3998 | and we should continue as we issue the setup based on the | ||
3999 | drive reported working geometry */ | ||
4000 | if (err_mask == AC_ERR_DEV && (tf.feature & ATA_ABORTED)) | ||
4001 | err_mask = 0; | ||
3983 | 4002 | ||
3984 | DPRINTK("EXIT, err_mask=%x\n", err_mask); | 4003 | DPRINTK("EXIT, err_mask=%x\n", err_mask); |
3985 | return err_mask; | 4004 | return err_mask; |
@@ -6020,6 +6039,7 @@ void ata_dev_init(struct ata_device *dev) | |||
6020 | */ | 6039 | */ |
6021 | spin_lock_irqsave(ap->lock, flags); | 6040 | spin_lock_irqsave(ap->lock, flags); |
6022 | dev->flags &= ~ATA_DFLAG_INIT_MASK; | 6041 | dev->flags &= ~ATA_DFLAG_INIT_MASK; |
6042 | dev->horkage = 0; | ||
6023 | spin_unlock_irqrestore(ap->lock, flags); | 6043 | spin_unlock_irqrestore(ap->lock, flags); |
6024 | 6044 | ||
6025 | memset((void *)dev + ATA_DEVICE_CLEAR_OFFSET, 0, | 6045 | memset((void *)dev + ATA_DEVICE_CLEAR_OFFSET, 0, |
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 1cce2198baaf..8023167bbbeb 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c | |||
@@ -297,7 +297,7 @@ void ata_bmdma_start (struct ata_queued_cmd *qc) | |||
297 | dmactl = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); | 297 | dmactl = ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); |
298 | iowrite8(dmactl | ATA_DMA_START, ap->ioaddr.bmdma_addr + ATA_DMA_CMD); | 298 | iowrite8(dmactl | ATA_DMA_START, ap->ioaddr.bmdma_addr + ATA_DMA_CMD); |
299 | 299 | ||
300 | /* Strictly, one may wish to issue a readb() here, to | 300 | /* Strictly, one may wish to issue an ioread8() here, to |
301 | * flush the mmio write. However, control also passes | 301 | * flush the mmio write. However, control also passes |
302 | * to the hardware at this point, and it will interrupt | 302 | * to the hardware at this point, and it will interrupt |
303 | * us when we are to resume control. So, in effect, | 303 | * us when we are to resume control. So, in effect, |
@@ -307,6 +307,9 @@ void ata_bmdma_start (struct ata_queued_cmd *qc) | |||
307 | * is expected, so I think it is best to not add a readb() | 307 | * is expected, so I think it is best to not add a readb() |
308 | * without first all the MMIO ATA cards/mobos. | 308 | * without first all the MMIO ATA cards/mobos. |
309 | * Or maybe I'm just being paranoid. | 309 | * Or maybe I'm just being paranoid. |
310 | * | ||
311 | * FIXME: The posting of this write means I/O starts are | ||
312 | * unneccessarily delayed for MMIO | ||
310 | */ | 313 | */ |
311 | } | 314 | } |
312 | 315 | ||
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c index e8a28e94fe47..71bdc3b3189c 100644 --- a/drivers/ata/pata_ali.c +++ b/drivers/ata/pata_ali.c | |||
@@ -34,7 +34,7 @@ | |||
34 | #include <linux/dmi.h> | 34 | #include <linux/dmi.h> |
35 | 35 | ||
36 | #define DRV_NAME "pata_ali" | 36 | #define DRV_NAME "pata_ali" |
37 | #define DRV_VERSION "0.7.4" | 37 | #define DRV_VERSION "0.7.5" |
38 | 38 | ||
39 | /* | 39 | /* |
40 | * Cable special cases | 40 | * Cable special cases |
@@ -48,6 +48,13 @@ static struct dmi_system_id cable_dmi_table[] = { | |||
48 | DMI_MATCH(DMI_BOARD_VERSION, "OmniBook N32N-736"), | 48 | DMI_MATCH(DMI_BOARD_VERSION, "OmniBook N32N-736"), |
49 | }, | 49 | }, |
50 | }, | 50 | }, |
51 | { | ||
52 | .ident = "Toshiba Satelite S1800-814", | ||
53 | .matches = { | ||
54 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
55 | DMI_MATCH(DMI_PRODUCT_NAME, "S1800-814"), | ||
56 | }, | ||
57 | }, | ||
51 | { } | 58 | { } |
52 | }; | 59 | }; |
53 | 60 | ||
diff --git a/drivers/ata/pata_amd.c b/drivers/ata/pata_amd.c index b09facad63e1..04048fcf6305 100644 --- a/drivers/ata/pata_amd.c +++ b/drivers/ata/pata_amd.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include <linux/libata.h> | 25 | #include <linux/libata.h> |
26 | 26 | ||
27 | #define DRV_NAME "pata_amd" | 27 | #define DRV_NAME "pata_amd" |
28 | #define DRV_VERSION "0.3.8" | 28 | #define DRV_VERSION "0.3.9" |
29 | 29 | ||
30 | /** | 30 | /** |
31 | * timing_setup - shared timing computation and load | 31 | * timing_setup - shared timing computation and load |
diff --git a/drivers/ata/pata_atiixp.c b/drivers/ata/pata_atiixp.c index 80509be49e7a..86f85a2cab7e 100644 --- a/drivers/ata/pata_atiixp.c +++ b/drivers/ata/pata_atiixp.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <linux/libata.h> | 22 | #include <linux/libata.h> |
23 | 23 | ||
24 | #define DRV_NAME "pata_atiixp" | 24 | #define DRV_NAME "pata_atiixp" |
25 | #define DRV_VERSION "0.4.5" | 25 | #define DRV_VERSION "0.4.6" |
26 | 26 | ||
27 | enum { | 27 | enum { |
28 | ATIIXP_IDE_PIO_TIMING = 0x40, | 28 | ATIIXP_IDE_PIO_TIMING = 0x40, |
diff --git a/drivers/ata/pata_cs5520.c b/drivers/ata/pata_cs5520.c index 7dc76e71bd55..e2459088cdcd 100644 --- a/drivers/ata/pata_cs5520.c +++ b/drivers/ata/pata_cs5520.c | |||
@@ -41,7 +41,7 @@ | |||
41 | #include <linux/libata.h> | 41 | #include <linux/libata.h> |
42 | 42 | ||
43 | #define DRV_NAME "pata_cs5520" | 43 | #define DRV_NAME "pata_cs5520" |
44 | #define DRV_VERSION "0.6.5" | 44 | #define DRV_VERSION "0.6.6" |
45 | 45 | ||
46 | struct pio_clocks | 46 | struct pio_clocks |
47 | { | 47 | { |
diff --git a/drivers/ata/pata_cs5530.c b/drivers/ata/pata_cs5530.c index 68f150a1e2f4..c6066aa43ec8 100644 --- a/drivers/ata/pata_cs5530.c +++ b/drivers/ata/pata_cs5530.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #include <linux/dmi.h> | 35 | #include <linux/dmi.h> |
36 | 36 | ||
37 | #define DRV_NAME "pata_cs5530" | 37 | #define DRV_NAME "pata_cs5530" |
38 | #define DRV_VERSION "0.7.3" | 38 | #define DRV_VERSION "0.7.4" |
39 | 39 | ||
40 | static void __iomem *cs5530_port_base(struct ata_port *ap) | 40 | static void __iomem *cs5530_port_base(struct ata_port *ap) |
41 | { | 41 | { |
diff --git a/drivers/ata/pata_isapnp.c b/drivers/ata/pata_isapnp.c index 91a396fa5b20..9e553c54203a 100644 --- a/drivers/ata/pata_isapnp.c +++ b/drivers/ata/pata_isapnp.c | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <linux/libata.h> | 17 | #include <linux/libata.h> |
18 | 18 | ||
19 | #define DRV_NAME "pata_isapnp" | 19 | #define DRV_NAME "pata_isapnp" |
20 | #define DRV_VERSION "0.2.1" | 20 | #define DRV_VERSION "0.2.2" |
21 | 21 | ||
22 | static struct scsi_host_template isapnp_sht = { | 22 | static struct scsi_host_template isapnp_sht = { |
23 | .module = THIS_MODULE, | 23 | .module = THIS_MODULE, |
diff --git a/drivers/ata/pata_it821x.c b/drivers/ata/pata_it821x.c index 430673be1df7..5d8b91e70ecd 100644 --- a/drivers/ata/pata_it821x.c +++ b/drivers/ata/pata_it821x.c | |||
@@ -80,7 +80,7 @@ | |||
80 | 80 | ||
81 | 81 | ||
82 | #define DRV_NAME "pata_it821x" | 82 | #define DRV_NAME "pata_it821x" |
83 | #define DRV_VERSION "0.3.7" | 83 | #define DRV_VERSION "0.3.8" |
84 | 84 | ||
85 | struct it821x_dev | 85 | struct it821x_dev |
86 | { | 86 | { |
@@ -533,6 +533,10 @@ static int it821x_check_atapi_dma(struct ata_queued_cmd *qc) | |||
533 | struct ata_port *ap = qc->ap; | 533 | struct ata_port *ap = qc->ap; |
534 | struct it821x_dev *itdev = ap->private_data; | 534 | struct it821x_dev *itdev = ap->private_data; |
535 | 535 | ||
536 | /* Only use dma for transfers to/from the media. */ | ||
537 | if (qc->nbytes < 2048) | ||
538 | return -EOPNOTSUPP; | ||
539 | |||
536 | /* No ATAPI DMA in smart mode */ | 540 | /* No ATAPI DMA in smart mode */ |
537 | if (itdev->smart) | 541 | if (itdev->smart) |
538 | return -EOPNOTSUPP; | 542 | return -EOPNOTSUPP; |
@@ -587,7 +591,7 @@ static int it821x_port_start(struct ata_port *ap) | |||
587 | itdev->want[1][1] = ATA_ANY; | 591 | itdev->want[1][1] = ATA_ANY; |
588 | itdev->last_device = -1; | 592 | itdev->last_device = -1; |
589 | 593 | ||
590 | if (pdev->revision == 0x11) { | 594 | if (pdev->revision == 0x10) { |
591 | itdev->timing10 = 1; | 595 | itdev->timing10 = 1; |
592 | /* Need to disable ATAPI DMA for this case */ | 596 | /* Need to disable ATAPI DMA for this case */ |
593 | if (!itdev->smart) | 597 | if (!itdev->smart) |
diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c index 4ca7fd6118d5..5dea3584c6c2 100644 --- a/drivers/ata/pata_ixp4xx_cf.c +++ b/drivers/ata/pata_ixp4xx_cf.c | |||
@@ -189,6 +189,9 @@ static __devinit int ixp4xx_pata_probe(struct platform_device *pdev) | |||
189 | data->cs0 = devm_ioremap(&pdev->dev, cs0->start, 0x1000); | 189 | data->cs0 = devm_ioremap(&pdev->dev, cs0->start, 0x1000); |
190 | data->cs1 = devm_ioremap(&pdev->dev, cs1->start, 0x1000); | 190 | data->cs1 = devm_ioremap(&pdev->dev, cs1->start, 0x1000); |
191 | 191 | ||
192 | if (!data->cs0 || !data->cs1) | ||
193 | return -ENOMEM; | ||
194 | |||
192 | irq = platform_get_irq(pdev, 0); | 195 | irq = platform_get_irq(pdev, 0); |
193 | if (irq) | 196 | if (irq) |
194 | set_irq_type(irq, IRQT_RISING); | 197 | set_irq_type(irq, IRQT_RISING); |
diff --git a/drivers/ata/pata_marvell.c b/drivers/ata/pata_marvell.c index 87594c04d3a3..b45506f1ef73 100644 --- a/drivers/ata/pata_marvell.c +++ b/drivers/ata/pata_marvell.c | |||
@@ -44,10 +44,10 @@ static int marvell_pre_reset(struct ata_port *ap, unsigned long deadline) | |||
44 | return -ENOMEM; | 44 | return -ENOMEM; |
45 | printk("BAR5:"); | 45 | printk("BAR5:"); |
46 | for(i = 0; i <= 0x0F; i++) | 46 | for(i = 0; i <= 0x0F; i++) |
47 | printk("%02X:%02X ", i, readb(barp + i)); | 47 | printk("%02X:%02X ", i, ioread8(barp + i)); |
48 | printk("\n"); | 48 | printk("\n"); |
49 | 49 | ||
50 | devices = readl(barp + 0x0C); | 50 | devices = ioread32(barp + 0x0C); |
51 | pci_iounmap(pdev, barp); | 51 | pci_iounmap(pdev, barp); |
52 | 52 | ||
53 | if ((pdev->device == 0x6145) && (ap->port_no == 0) && | 53 | if ((pdev->device == 0x6145) && (ap->port_no == 0) && |
@@ -192,6 +192,8 @@ static int marvell_init_one (struct pci_dev *pdev, const struct pci_device_id *i | |||
192 | 192 | ||
193 | static const struct pci_device_id marvell_pci_tbl[] = { | 193 | static const struct pci_device_id marvell_pci_tbl[] = { |
194 | { PCI_DEVICE(0x11AB, 0x6101), }, | 194 | { PCI_DEVICE(0x11AB, 0x6101), }, |
195 | { PCI_DEVICE(0x11AB, 0x6121), }, | ||
196 | { PCI_DEVICE(0x11AB, 0x6123), }, | ||
195 | { PCI_DEVICE(0x11AB, 0x6145), }, | 197 | { PCI_DEVICE(0x11AB, 0x6145), }, |
196 | { } /* terminate list */ | 198 | { } /* terminate list */ |
197 | }; | 199 | }; |
diff --git a/drivers/ata/pata_mpc52xx.c b/drivers/ata/pata_mpc52xx.c index 182e83c9047b..099f4cdc4cd9 100644 --- a/drivers/ata/pata_mpc52xx.c +++ b/drivers/ata/pata_mpc52xx.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | 25 | ||
26 | #define DRV_NAME "mpc52xx_ata" | 26 | #define DRV_NAME "mpc52xx_ata" |
27 | #define DRV_VERSION "0.1.0ac2" | 27 | #define DRV_VERSION "0.1.2" |
28 | 28 | ||
29 | 29 | ||
30 | /* Private structures used by the driver */ | 30 | /* Private structures used by the driver */ |
diff --git a/drivers/ata/pata_pcmcia.c b/drivers/ata/pata_pcmcia.c index 6da23feed039..0f2b027624d6 100644 --- a/drivers/ata/pata_pcmcia.c +++ b/drivers/ata/pata_pcmcia.c | |||
@@ -42,7 +42,7 @@ | |||
42 | 42 | ||
43 | 43 | ||
44 | #define DRV_NAME "pata_pcmcia" | 44 | #define DRV_NAME "pata_pcmcia" |
45 | #define DRV_VERSION "0.3.1" | 45 | #define DRV_VERSION "0.3.2" |
46 | 46 | ||
47 | /* | 47 | /* |
48 | * Private data structure to glue stuff together | 48 | * Private data structure to glue stuff together |
diff --git a/drivers/ata/pata_pdc2027x.c b/drivers/ata/pata_pdc2027x.c index 69a5aa4949f5..bb64a986e8f5 100644 --- a/drivers/ata/pata_pdc2027x.c +++ b/drivers/ata/pata_pdc2027x.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #include <linux/libata.h> | 35 | #include <linux/libata.h> |
36 | 36 | ||
37 | #define DRV_NAME "pata_pdc2027x" | 37 | #define DRV_NAME "pata_pdc2027x" |
38 | #define DRV_VERSION "0.9" | 38 | #define DRV_VERSION "1.0" |
39 | #undef PDC_DEBUG | 39 | #undef PDC_DEBUG |
40 | 40 | ||
41 | #ifdef PDC_DEBUG | 41 | #ifdef PDC_DEBUG |
@@ -563,13 +563,13 @@ static long pdc_read_counter(struct ata_host *host) | |||
563 | u32 bccrl, bccrh, bccrlv, bccrhv; | 563 | u32 bccrl, bccrh, bccrlv, bccrhv; |
564 | 564 | ||
565 | retry: | 565 | retry: |
566 | bccrl = readl(mmio_base + PDC_BYTE_COUNT) & 0xffff; | 566 | bccrl = readl(mmio_base + PDC_BYTE_COUNT) & 0x7fff; |
567 | bccrh = readl(mmio_base + PDC_BYTE_COUNT + 0x100) & 0xffff; | 567 | bccrh = readl(mmio_base + PDC_BYTE_COUNT + 0x100) & 0x7fff; |
568 | rmb(); | 568 | rmb(); |
569 | 569 | ||
570 | /* Read the counter values again for verification */ | 570 | /* Read the counter values again for verification */ |
571 | bccrlv = readl(mmio_base + PDC_BYTE_COUNT) & 0xffff; | 571 | bccrlv = readl(mmio_base + PDC_BYTE_COUNT) & 0x7fff; |
572 | bccrhv = readl(mmio_base + PDC_BYTE_COUNT + 0x100) & 0xffff; | 572 | bccrhv = readl(mmio_base + PDC_BYTE_COUNT + 0x100) & 0x7fff; |
573 | rmb(); | 573 | rmb(); |
574 | 574 | ||
575 | counter = (bccrh << 15) | bccrl; | 575 | counter = (bccrh << 15) | bccrl; |
@@ -692,16 +692,16 @@ static long pdc_detect_pll_input_clock(struct ata_host *host) | |||
692 | struct timeval start_time, end_time; | 692 | struct timeval start_time, end_time; |
693 | long pll_clock, usec_elapsed; | 693 | long pll_clock, usec_elapsed; |
694 | 694 | ||
695 | /* Read current counter value */ | ||
696 | start_count = pdc_read_counter(host); | ||
697 | do_gettimeofday(&start_time); | ||
698 | |||
699 | /* Start the test mode */ | 695 | /* Start the test mode */ |
700 | scr = readl(mmio_base + PDC_SYS_CTL); | 696 | scr = readl(mmio_base + PDC_SYS_CTL); |
701 | PDPRINTK("scr[%X]\n", scr); | 697 | PDPRINTK("scr[%X]\n", scr); |
702 | writel(scr | (0x01 << 14), mmio_base + PDC_SYS_CTL); | 698 | writel(scr | (0x01 << 14), mmio_base + PDC_SYS_CTL); |
703 | readl(mmio_base + PDC_SYS_CTL); /* flush */ | 699 | readl(mmio_base + PDC_SYS_CTL); /* flush */ |
704 | 700 | ||
701 | /* Read current counter value */ | ||
702 | start_count = pdc_read_counter(host); | ||
703 | do_gettimeofday(&start_time); | ||
704 | |||
705 | /* Let the counter run for 100 ms. */ | 705 | /* Let the counter run for 100 ms. */ |
706 | mdelay(100); | 706 | mdelay(100); |
707 | 707 | ||
@@ -719,7 +719,7 @@ static long pdc_detect_pll_input_clock(struct ata_host *host) | |||
719 | usec_elapsed = (end_time.tv_sec - start_time.tv_sec) * 1000000 + | 719 | usec_elapsed = (end_time.tv_sec - start_time.tv_sec) * 1000000 + |
720 | (end_time.tv_usec - start_time.tv_usec); | 720 | (end_time.tv_usec - start_time.tv_usec); |
721 | 721 | ||
722 | pll_clock = (start_count - end_count) / 100 * | 722 | pll_clock = ((start_count - end_count) & 0x3fffffff) / 100 * |
723 | (100000000 / usec_elapsed); | 723 | (100000000 / usec_elapsed); |
724 | 724 | ||
725 | PDPRINTK("start[%ld] end[%ld] \n", start_count, end_count); | 725 | PDPRINTK("start[%ld] end[%ld] \n", start_count, end_count); |
diff --git a/drivers/ata/pata_platform.c b/drivers/ata/pata_platform.c index a909f793ffc1..5086d03f2d7c 100644 --- a/drivers/ata/pata_platform.c +++ b/drivers/ata/pata_platform.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <linux/pata_platform.h> | 22 | #include <linux/pata_platform.h> |
23 | 23 | ||
24 | #define DRV_NAME "pata_platform" | 24 | #define DRV_NAME "pata_platform" |
25 | #define DRV_VERSION "1.0" | 25 | #define DRV_VERSION "1.1" |
26 | 26 | ||
27 | static int pio_mask = 1; | 27 | static int pio_mask = 1; |
28 | 28 | ||
diff --git a/drivers/ata/pata_sc1200.c b/drivers/ata/pata_sc1200.c index b8b2d11e4180..5edf67b1f3bf 100644 --- a/drivers/ata/pata_sc1200.c +++ b/drivers/ata/pata_sc1200.c | |||
@@ -40,7 +40,7 @@ | |||
40 | #include <linux/libata.h> | 40 | #include <linux/libata.h> |
41 | 41 | ||
42 | #define DRV_NAME "sc1200" | 42 | #define DRV_NAME "sc1200" |
43 | #define DRV_VERSION "0.2.5" | 43 | #define DRV_VERSION "0.2.6" |
44 | 44 | ||
45 | #define SC1200_REV_A 0x00 | 45 | #define SC1200_REV_A 0x00 |
46 | #define SC1200_REV_B1 0x01 | 46 | #define SC1200_REV_B1 0x01 |
diff --git a/drivers/ata/pata_scc.c b/drivers/ata/pata_scc.c index 36cdbd2b0bd5..2d048ef25a5a 100644 --- a/drivers/ata/pata_scc.c +++ b/drivers/ata/pata_scc.c | |||
@@ -43,7 +43,7 @@ | |||
43 | #include <linux/libata.h> | 43 | #include <linux/libata.h> |
44 | 44 | ||
45 | #define DRV_NAME "pata_scc" | 45 | #define DRV_NAME "pata_scc" |
46 | #define DRV_VERSION "0.2" | 46 | #define DRV_VERSION "0.3" |
47 | 47 | ||
48 | #define PCI_DEVICE_ID_TOSHIBA_SCC_ATA 0x01b4 | 48 | #define PCI_DEVICE_ID_TOSHIBA_SCC_ATA 0x01b4 |
49 | 49 | ||
diff --git a/drivers/ata/pata_serverworks.c b/drivers/ata/pata_serverworks.c index 89691541fe59..0faf99c8f13e 100644 --- a/drivers/ata/pata_serverworks.c +++ b/drivers/ata/pata_serverworks.c | |||
@@ -41,7 +41,7 @@ | |||
41 | #include <linux/libata.h> | 41 | #include <linux/libata.h> |
42 | 42 | ||
43 | #define DRV_NAME "pata_serverworks" | 43 | #define DRV_NAME "pata_serverworks" |
44 | #define DRV_VERSION "0.4.1" | 44 | #define DRV_VERSION "0.4.2" |
45 | 45 | ||
46 | #define SVWKS_CSB5_REVISION_NEW 0x92 /* min PCI_REVISION_ID for UDMA5 (A2.0) */ | 46 | #define SVWKS_CSB5_REVISION_NEW 0x92 /* min PCI_REVISION_ID for UDMA5 (A2.0) */ |
47 | #define SVWKS_CSB6_REVISION 0xa0 /* min PCI_REVISION_ID for UDMA4 (A1.0) */ | 47 | #define SVWKS_CSB6_REVISION 0xa0 /* min PCI_REVISION_ID for UDMA4 (A1.0) */ |
diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c index b0cd52d6e3fb..40395804a66f 100644 --- a/drivers/ata/pata_sil680.c +++ b/drivers/ata/pata_sil680.c | |||
@@ -33,7 +33,7 @@ | |||
33 | #include <linux/libata.h> | 33 | #include <linux/libata.h> |
34 | 34 | ||
35 | #define DRV_NAME "pata_sil680" | 35 | #define DRV_NAME "pata_sil680" |
36 | #define DRV_VERSION "0.4.6" | 36 | #define DRV_VERSION "0.4.7" |
37 | 37 | ||
38 | #define SIL680_MMIO_BAR 5 | 38 | #define SIL680_MMIO_BAR 5 |
39 | 39 | ||
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c index 66bd0e83ac07..cce2834b2b60 100644 --- a/drivers/ata/pata_sis.c +++ b/drivers/ata/pata_sis.c | |||
@@ -54,6 +54,7 @@ struct sis_laptop { | |||
54 | static const struct sis_laptop sis_laptop[] = { | 54 | static const struct sis_laptop sis_laptop[] = { |
55 | /* devid, subvendor, subdev */ | 55 | /* devid, subvendor, subdev */ |
56 | { 0x5513, 0x1043, 0x1107 }, /* ASUS A6K */ | 56 | { 0x5513, 0x1043, 0x1107 }, /* ASUS A6K */ |
57 | { 0x5513, 0x1734, 0x105F }, /* FSC Amilo A1630 */ | ||
57 | /* end marker */ | 58 | /* end marker */ |
58 | { 0, } | 59 | { 0, } |
59 | }; | 60 | }; |
@@ -374,8 +375,9 @@ static void sis_66_set_dmamode (struct ata_port *ap, struct ata_device *adev) | |||
374 | int drive_pci = sis_old_port_base(adev); | 375 | int drive_pci = sis_old_port_base(adev); |
375 | u16 timing; | 376 | u16 timing; |
376 | 377 | ||
378 | /* MWDMA 0-2 and UDMA 0-5 */ | ||
377 | const u16 mwdma_bits[] = { 0x008, 0x302, 0x301 }; | 379 | const u16 mwdma_bits[] = { 0x008, 0x302, 0x301 }; |
378 | const u16 udma_bits[] = { 0xF000, 0xD000, 0xB000, 0xA000, 0x9000}; | 380 | const u16 udma_bits[] = { 0xF000, 0xD000, 0xB000, 0xA000, 0x9000, 0x8000 }; |
379 | 381 | ||
380 | pci_read_config_word(pdev, drive_pci, &timing); | 382 | pci_read_config_word(pdev, drive_pci, &timing); |
381 | 383 | ||
diff --git a/drivers/ata/pata_sl82c105.c b/drivers/ata/pata_sl82c105.c index 8c2813aa6cdb..c0f43bb25956 100644 --- a/drivers/ata/pata_sl82c105.c +++ b/drivers/ata/pata_sl82c105.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #include <linux/libata.h> | 26 | #include <linux/libata.h> |
27 | 27 | ||
28 | #define DRV_NAME "pata_sl82c105" | 28 | #define DRV_NAME "pata_sl82c105" |
29 | #define DRV_VERSION "0.3.1" | 29 | #define DRV_VERSION "0.3.2" |
30 | 30 | ||
31 | enum { | 31 | enum { |
32 | /* | 32 | /* |
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c index f645fe22cd1e..636c4f1a0b24 100644 --- a/drivers/ata/pata_via.c +++ b/drivers/ata/pata_via.c | |||
@@ -63,7 +63,7 @@ | |||
63 | #include <linux/dmi.h> | 63 | #include <linux/dmi.h> |
64 | 64 | ||
65 | #define DRV_NAME "pata_via" | 65 | #define DRV_NAME "pata_via" |
66 | #define DRV_VERSION "0.3.1" | 66 | #define DRV_VERSION "0.3.2" |
67 | 67 | ||
68 | /* | 68 | /* |
69 | * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx | 69 | * The following comes directly from Vojtech Pavlik's ide/pci/via82cxxx |
@@ -97,6 +97,7 @@ static const struct via_isa_bridge { | |||
97 | u8 rev_max; | 97 | u8 rev_max; |
98 | u16 flags; | 98 | u16 flags; |
99 | } via_isa_bridges[] = { | 99 | } via_isa_bridges[] = { |
100 | { "vx800", PCI_DEVICE_ID_VIA_VX800, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, | ||
100 | { "vt8237s", PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, | 101 | { "vt8237s", PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, |
101 | { "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, | 102 | { "vt8251", PCI_DEVICE_ID_VIA_8251, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, |
102 | { "cx700", PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, | 103 | { "cx700", PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }, |
@@ -144,6 +145,9 @@ static int via_cable_override(struct pci_dev *pdev) | |||
144 | /* Systems by DMI */ | 145 | /* Systems by DMI */ |
145 | if (dmi_check_system(cable_dmi_table)) | 146 | if (dmi_check_system(cable_dmi_table)) |
146 | return 1; | 147 | return 1; |
148 | /* Arima W730-K8/Targa Visionary 811/... */ | ||
149 | if (pdev->subsystem_vendor == 0x161F && pdev->subsystem_device == 0x2032) | ||
150 | return 1; | ||
147 | return 0; | 151 | return 0; |
148 | } | 152 | } |
149 | 153 | ||
@@ -240,7 +244,6 @@ static void via_do_set_mode(struct ata_port *ap, struct ata_device *adev, int mo | |||
240 | int ut; | 244 | int ut; |
241 | int offset = 3 - (2*ap->port_no) - adev->devno; | 245 | int offset = 3 - (2*ap->port_no) - adev->devno; |
242 | 246 | ||
243 | |||
244 | /* Calculate the timing values we require */ | 247 | /* Calculate the timing values we require */ |
245 | ata_timing_compute(adev, mode, &t, T, UT); | 248 | ata_timing_compute(adev, mode, &t, T, UT); |
246 | 249 | ||
@@ -287,9 +290,17 @@ static void via_do_set_mode(struct ata_port *ap, struct ata_device *adev, int mo | |||
287 | ut = t.udma ? (0xe0 | (FIT(t.udma, 2, 9) - 2)) : 0x07; | 290 | ut = t.udma ? (0xe0 | (FIT(t.udma, 2, 9) - 2)) : 0x07; |
288 | break; | 291 | break; |
289 | } | 292 | } |
293 | |||
290 | /* Set UDMA unless device is not UDMA capable */ | 294 | /* Set UDMA unless device is not UDMA capable */ |
291 | if (udma_type) | 295 | if (udma_type) { |
292 | pci_write_config_byte(pdev, 0x50 + offset, ut); | 296 | u8 cable80_status; |
297 | |||
298 | /* Get 80-wire cable detection bit */ | ||
299 | pci_read_config_byte(pdev, 0x50 + offset, &cable80_status); | ||
300 | cable80_status &= 0x10; | ||
301 | |||
302 | pci_write_config_byte(pdev, 0x50 + offset, ut | cable80_status); | ||
303 | } | ||
293 | } | 304 | } |
294 | 305 | ||
295 | static void via_set_piomode(struct ata_port *ap, struct ata_device *adev) | 306 | static void via_set_piomode(struct ata_port *ap, struct ata_device *adev) |
diff --git a/drivers/ata/pdc_adma.c b/drivers/ata/pdc_adma.c index bec1de594de8..5c79271401af 100644 --- a/drivers/ata/pdc_adma.c +++ b/drivers/ata/pdc_adma.c | |||
@@ -44,7 +44,7 @@ | |||
44 | #include <linux/libata.h> | 44 | #include <linux/libata.h> |
45 | 45 | ||
46 | #define DRV_NAME "pdc_adma" | 46 | #define DRV_NAME "pdc_adma" |
47 | #define DRV_VERSION "0.06" | 47 | #define DRV_VERSION "1.0" |
48 | 48 | ||
49 | /* macro to calculate base address for ATA regs */ | 49 | /* macro to calculate base address for ATA regs */ |
50 | #define ADMA_ATA_REGS(base,port_no) ((base) + ((port_no) * 0x40)) | 50 | #define ADMA_ATA_REGS(base,port_no) ((base) + ((port_no) * 0x40)) |
diff --git a/drivers/ata/sata_inic162x.c b/drivers/ata/sata_inic162x.c index a9c948d7604a..fdbed8ecdfc2 100644 --- a/drivers/ata/sata_inic162x.c +++ b/drivers/ata/sata_inic162x.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <scsi/scsi_device.h> | 28 | #include <scsi/scsi_device.h> |
29 | 29 | ||
30 | #define DRV_NAME "sata_inic162x" | 30 | #define DRV_NAME "sata_inic162x" |
31 | #define DRV_VERSION "0.2" | 31 | #define DRV_VERSION "0.3" |
32 | 32 | ||
33 | enum { | 33 | enum { |
34 | MMIO_BAR = 5, | 34 | MMIO_BAR = 5, |
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index 3acf65e75eb2..cb7dec97fee6 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
@@ -72,7 +72,7 @@ | |||
72 | #include <linux/libata.h> | 72 | #include <linux/libata.h> |
73 | 73 | ||
74 | #define DRV_NAME "sata_mv" | 74 | #define DRV_NAME "sata_mv" |
75 | #define DRV_VERSION "0.81" | 75 | #define DRV_VERSION "1.0" |
76 | 76 | ||
77 | enum { | 77 | enum { |
78 | /* BAR's are enumerated in terms of pci_resource_start() terms */ | 78 | /* BAR's are enumerated in terms of pci_resource_start() terms */ |
@@ -313,7 +313,10 @@ enum { | |||
313 | #define IS_GEN_IIE(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_IIE) | 313 | #define IS_GEN_IIE(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_IIE) |
314 | 314 | ||
315 | enum { | 315 | enum { |
316 | MV_DMA_BOUNDARY = 0xffffffffU, | 316 | /* DMA boundary 0xffff is required by the s/g splitting |
317 | * we need on /length/ in mv_fill-sg(). | ||
318 | */ | ||
319 | MV_DMA_BOUNDARY = 0xffffU, | ||
317 | 320 | ||
318 | /* mask of register bits containing lower 32 bits | 321 | /* mask of register bits containing lower 32 bits |
319 | * of EDMA request queue DMA address | 322 | * of EDMA request queue DMA address |
@@ -448,7 +451,7 @@ static struct scsi_host_template mv5_sht = { | |||
448 | .queuecommand = ata_scsi_queuecmd, | 451 | .queuecommand = ata_scsi_queuecmd, |
449 | .can_queue = ATA_DEF_QUEUE, | 452 | .can_queue = ATA_DEF_QUEUE, |
450 | .this_id = ATA_SHT_THIS_ID, | 453 | .this_id = ATA_SHT_THIS_ID, |
451 | .sg_tablesize = MV_MAX_SG_CT, | 454 | .sg_tablesize = MV_MAX_SG_CT / 2, |
452 | .cmd_per_lun = ATA_SHT_CMD_PER_LUN, | 455 | .cmd_per_lun = ATA_SHT_CMD_PER_LUN, |
453 | .emulated = ATA_SHT_EMULATED, | 456 | .emulated = ATA_SHT_EMULATED, |
454 | .use_clustering = 1, | 457 | .use_clustering = 1, |
@@ -466,7 +469,7 @@ static struct scsi_host_template mv6_sht = { | |||
466 | .queuecommand = ata_scsi_queuecmd, | 469 | .queuecommand = ata_scsi_queuecmd, |
467 | .can_queue = ATA_DEF_QUEUE, | 470 | .can_queue = ATA_DEF_QUEUE, |
468 | .this_id = ATA_SHT_THIS_ID, | 471 | .this_id = ATA_SHT_THIS_ID, |
469 | .sg_tablesize = MV_MAX_SG_CT, | 472 | .sg_tablesize = MV_MAX_SG_CT / 2, |
470 | .cmd_per_lun = ATA_SHT_CMD_PER_LUN, | 473 | .cmd_per_lun = ATA_SHT_CMD_PER_LUN, |
471 | .emulated = ATA_SHT_EMULATED, | 474 | .emulated = ATA_SHT_EMULATED, |
472 | .use_clustering = 1, | 475 | .use_clustering = 1, |
@@ -1139,15 +1142,27 @@ static unsigned int mv_fill_sg(struct ata_queued_cmd *qc) | |||
1139 | dma_addr_t addr = sg_dma_address(sg); | 1142 | dma_addr_t addr = sg_dma_address(sg); |
1140 | u32 sg_len = sg_dma_len(sg); | 1143 | u32 sg_len = sg_dma_len(sg); |
1141 | 1144 | ||
1142 | mv_sg->addr = cpu_to_le32(addr & 0xffffffff); | 1145 | while (sg_len) { |
1143 | mv_sg->addr_hi = cpu_to_le32((addr >> 16) >> 16); | 1146 | u32 offset = addr & 0xffff; |
1144 | mv_sg->flags_size = cpu_to_le32(sg_len & 0xffff); | 1147 | u32 len = sg_len; |
1148 | |||
1149 | if ((offset + sg_len > 0x10000)) | ||
1150 | len = 0x10000 - offset; | ||
1151 | |||
1152 | mv_sg->addr = cpu_to_le32(addr & 0xffffffff); | ||
1153 | mv_sg->addr_hi = cpu_to_le32((addr >> 16) >> 16); | ||
1154 | mv_sg->flags_size = cpu_to_le32(len); | ||
1145 | 1155 | ||
1146 | if (ata_sg_is_last(sg, qc)) | 1156 | sg_len -= len; |
1147 | mv_sg->flags_size |= cpu_to_le32(EPRD_FLAG_END_OF_TBL); | 1157 | addr += len; |
1158 | |||
1159 | if (!sg_len && ata_sg_is_last(sg, qc)) | ||
1160 | mv_sg->flags_size |= cpu_to_le32(EPRD_FLAG_END_OF_TBL); | ||
1161 | |||
1162 | mv_sg++; | ||
1163 | n_sg++; | ||
1164 | } | ||
1148 | 1165 | ||
1149 | mv_sg++; | ||
1150 | n_sg++; | ||
1151 | } | 1166 | } |
1152 | 1167 | ||
1153 | return n_sg; | 1168 | return n_sg; |
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c index 0b58c4df6fd2..40dc73139858 100644 --- a/drivers/ata/sata_nv.c +++ b/drivers/ata/sata_nv.c | |||
@@ -49,7 +49,7 @@ | |||
49 | #include <linux/libata.h> | 49 | #include <linux/libata.h> |
50 | 50 | ||
51 | #define DRV_NAME "sata_nv" | 51 | #define DRV_NAME "sata_nv" |
52 | #define DRV_VERSION "3.4" | 52 | #define DRV_VERSION "3.5" |
53 | 53 | ||
54 | #define NV_ADMA_DMA_BOUNDARY 0xffffffffUL | 54 | #define NV_ADMA_DMA_BOUNDARY 0xffffffffUL |
55 | 55 | ||
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c index d39ebc23c4a9..25698cf0dce0 100644 --- a/drivers/ata/sata_promise.c +++ b/drivers/ata/sata_promise.c | |||
@@ -45,7 +45,7 @@ | |||
45 | #include "sata_promise.h" | 45 | #include "sata_promise.h" |
46 | 46 | ||
47 | #define DRV_NAME "sata_promise" | 47 | #define DRV_NAME "sata_promise" |
48 | #define DRV_VERSION "2.09" | 48 | #define DRV_VERSION "2.10" |
49 | 49 | ||
50 | enum { | 50 | enum { |
51 | PDC_MAX_PORTS = 4, | 51 | PDC_MAX_PORTS = 4, |
@@ -328,8 +328,8 @@ static const struct pci_device_id pdc_ata_pci_tbl[] = { | |||
328 | 328 | ||
329 | { PCI_VDEVICE(PROMISE, 0x3318), board_20319 }, | 329 | { PCI_VDEVICE(PROMISE, 0x3318), board_20319 }, |
330 | { PCI_VDEVICE(PROMISE, 0x3319), board_20319 }, | 330 | { PCI_VDEVICE(PROMISE, 0x3319), board_20319 }, |
331 | { PCI_VDEVICE(PROMISE, 0x3515), board_20319 }, | 331 | { PCI_VDEVICE(PROMISE, 0x3515), board_40518 }, |
332 | { PCI_VDEVICE(PROMISE, 0x3519), board_20319 }, | 332 | { PCI_VDEVICE(PROMISE, 0x3519), board_40518 }, |
333 | { PCI_VDEVICE(PROMISE, 0x3d17), board_40518 }, | 333 | { PCI_VDEVICE(PROMISE, 0x3d17), board_40518 }, |
334 | { PCI_VDEVICE(PROMISE, 0x3d18), board_40518 }, | 334 | { PCI_VDEVICE(PROMISE, 0x3d18), board_40518 }, |
335 | 335 | ||
diff --git a/drivers/ata/sata_qstor.c b/drivers/ata/sata_qstor.c index c8f9242e7f44..5e1dfdda698f 100644 --- a/drivers/ata/sata_qstor.c +++ b/drivers/ata/sata_qstor.c | |||
@@ -39,7 +39,7 @@ | |||
39 | #include <linux/libata.h> | 39 | #include <linux/libata.h> |
40 | 40 | ||
41 | #define DRV_NAME "sata_qstor" | 41 | #define DRV_NAME "sata_qstor" |
42 | #define DRV_VERSION "0.08" | 42 | #define DRV_VERSION "0.09" |
43 | 43 | ||
44 | enum { | 44 | enum { |
45 | QS_MMIO_BAR = 4, | 45 | QS_MMIO_BAR = 4, |
diff --git a/drivers/ata/sata_sil.c b/drivers/ata/sata_sil.c index db6763758952..8c72e714b456 100644 --- a/drivers/ata/sata_sil.c +++ b/drivers/ata/sata_sil.c | |||
@@ -46,7 +46,7 @@ | |||
46 | #include <linux/libata.h> | 46 | #include <linux/libata.h> |
47 | 47 | ||
48 | #define DRV_NAME "sata_sil" | 48 | #define DRV_NAME "sata_sil" |
49 | #define DRV_VERSION "2.2" | 49 | #define DRV_VERSION "2.3" |
50 | 50 | ||
51 | enum { | 51 | enum { |
52 | SIL_MMIO_BAR = 5, | 52 | SIL_MMIO_BAR = 5, |
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index 46fbbe7f121c..233e88693395 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c | |||
@@ -30,7 +30,7 @@ | |||
30 | #include <linux/libata.h> | 30 | #include <linux/libata.h> |
31 | 31 | ||
32 | #define DRV_NAME "sata_sil24" | 32 | #define DRV_NAME "sata_sil24" |
33 | #define DRV_VERSION "0.9" | 33 | #define DRV_VERSION "1.0" |
34 | 34 | ||
35 | /* | 35 | /* |
36 | * Port request block (PRB) 32 bytes | 36 | * Port request block (PRB) 32 bytes |
@@ -888,6 +888,16 @@ static inline void sil24_host_intr(struct ata_port *ap) | |||
888 | u32 slot_stat, qc_active; | 888 | u32 slot_stat, qc_active; |
889 | int rc; | 889 | int rc; |
890 | 890 | ||
891 | /* If PCIX_IRQ_WOC, there's an inherent race window between | ||
892 | * clearing IRQ pending status and reading PORT_SLOT_STAT | ||
893 | * which may cause spurious interrupts afterwards. This is | ||
894 | * unavoidable and much better than losing interrupts which | ||
895 | * happens if IRQ pending is cleared after reading | ||
896 | * PORT_SLOT_STAT. | ||
897 | */ | ||
898 | if (ap->flags & SIL24_FLAG_PCIX_IRQ_WOC) | ||
899 | writel(PORT_IRQ_COMPLETE, port + PORT_IRQ_STAT); | ||
900 | |||
891 | slot_stat = readl(port + PORT_SLOT_STAT); | 901 | slot_stat = readl(port + PORT_SLOT_STAT); |
892 | 902 | ||
893 | if (unlikely(slot_stat & HOST_SSTAT_ATTN)) { | 903 | if (unlikely(slot_stat & HOST_SSTAT_ATTN)) { |
@@ -895,9 +905,6 @@ static inline void sil24_host_intr(struct ata_port *ap) | |||
895 | return; | 905 | return; |
896 | } | 906 | } |
897 | 907 | ||
898 | if (ap->flags & SIL24_FLAG_PCIX_IRQ_WOC) | ||
899 | writel(PORT_IRQ_COMPLETE, port + PORT_IRQ_STAT); | ||
900 | |||
901 | qc_active = slot_stat & ~HOST_SSTAT_ATTN; | 908 | qc_active = slot_stat & ~HOST_SSTAT_ATTN; |
902 | rc = ata_qc_complete_multiple(ap, qc_active, sil24_finish_qc); | 909 | rc = ata_qc_complete_multiple(ap, qc_active, sil24_finish_qc); |
903 | if (rc > 0) | 910 | if (rc > 0) |
@@ -910,7 +917,8 @@ static inline void sil24_host_intr(struct ata_port *ap) | |||
910 | return; | 917 | return; |
911 | } | 918 | } |
912 | 919 | ||
913 | if (ata_ratelimit()) | 920 | /* spurious interrupts are expected if PCIX_IRQ_WOC */ |
921 | if (!(ap->flags & SIL24_FLAG_PCIX_IRQ_WOC) && ata_ratelimit()) | ||
914 | ata_port_printk(ap, KERN_INFO, "spurious interrupt " | 922 | ata_port_printk(ap, KERN_INFO, "spurious interrupt " |
915 | "(slot_stat 0x%x active_tag %d sactive 0x%x)\n", | 923 | "(slot_stat 0x%x active_tag %d sactive 0x%x)\n", |
916 | slot_stat, ap->active_tag, ap->sactive); | 924 | slot_stat, ap->active_tag, ap->sactive); |
diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c index 31a2f55aae66..41c1d6e8f1fe 100644 --- a/drivers/ata/sata_sis.c +++ b/drivers/ata/sata_sis.c | |||
@@ -43,7 +43,7 @@ | |||
43 | #include "sis.h" | 43 | #include "sis.h" |
44 | 44 | ||
45 | #define DRV_NAME "sata_sis" | 45 | #define DRV_NAME "sata_sis" |
46 | #define DRV_VERSION "0.8" | 46 | #define DRV_VERSION "1.0" |
47 | 47 | ||
48 | enum { | 48 | enum { |
49 | sis_180 = 0, | 49 | sis_180 = 0, |
diff --git a/drivers/ata/sata_svw.c b/drivers/ata/sata_svw.c index 92e877075037..d9678e7bc3a9 100644 --- a/drivers/ata/sata_svw.c +++ b/drivers/ata/sata_svw.c | |||
@@ -53,7 +53,7 @@ | |||
53 | #endif /* CONFIG_PPC_OF */ | 53 | #endif /* CONFIG_PPC_OF */ |
54 | 54 | ||
55 | #define DRV_NAME "sata_svw" | 55 | #define DRV_NAME "sata_svw" |
56 | #define DRV_VERSION "2.2" | 56 | #define DRV_VERSION "2.3" |
57 | 57 | ||
58 | enum { | 58 | enum { |
59 | /* ap->flags bits */ | 59 | /* ap->flags bits */ |
diff --git a/drivers/ata/sata_sx4.c b/drivers/ata/sata_sx4.c index 5193bd8647ba..97aefdd87be4 100644 --- a/drivers/ata/sata_sx4.c +++ b/drivers/ata/sata_sx4.c | |||
@@ -92,7 +92,7 @@ | |||
92 | #include "sata_promise.h" | 92 | #include "sata_promise.h" |
93 | 93 | ||
94 | #define DRV_NAME "sata_sx4" | 94 | #define DRV_NAME "sata_sx4" |
95 | #define DRV_VERSION "0.11" | 95 | #define DRV_VERSION "0.12" |
96 | 96 | ||
97 | 97 | ||
98 | enum { | 98 | enum { |
diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c index 78c28512f01c..e6b8b45279af 100644 --- a/drivers/ata/sata_uli.c +++ b/drivers/ata/sata_uli.c | |||
@@ -36,7 +36,7 @@ | |||
36 | #include <linux/libata.h> | 36 | #include <linux/libata.h> |
37 | 37 | ||
38 | #define DRV_NAME "sata_uli" | 38 | #define DRV_NAME "sata_uli" |
39 | #define DRV_VERSION "1.2" | 39 | #define DRV_VERSION "1.3" |
40 | 40 | ||
41 | enum { | 41 | enum { |
42 | uli_5289 = 0, | 42 | uli_5289 = 0, |
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c index 86b7bfc17324..57fd30de8f0d 100644 --- a/drivers/ata/sata_via.c +++ b/drivers/ata/sata_via.c | |||
@@ -46,7 +46,7 @@ | |||
46 | #include <linux/libata.h> | 46 | #include <linux/libata.h> |
47 | 47 | ||
48 | #define DRV_NAME "sata_via" | 48 | #define DRV_NAME "sata_via" |
49 | #define DRV_VERSION "2.2" | 49 | #define DRV_VERSION "2.3" |
50 | 50 | ||
51 | enum board_ids_enum { | 51 | enum board_ids_enum { |
52 | vt6420, | 52 | vt6420, |
@@ -371,7 +371,7 @@ static void vt6421_set_dma_mode(struct ata_port *ap, struct ata_device *adev) | |||
371 | { | 371 | { |
372 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 372 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
373 | static const u8 udma_bits[] = { 0xEE, 0xE8, 0xE6, 0xE4, 0xE2, 0xE1, 0xE0, 0xE0 }; | 373 | static const u8 udma_bits[] = { 0xEE, 0xE8, 0xE6, 0xE4, 0xE2, 0xE1, 0xE0, 0xE0 }; |
374 | pci_write_config_byte(pdev, PATA_UDMA_TIMING, udma_bits[adev->pio_mode - XFER_UDMA_0]); | 374 | pci_write_config_byte(pdev, PATA_UDMA_TIMING, udma_bits[adev->dma_mode - XFER_UDMA_0]); |
375 | } | 375 | } |
376 | 376 | ||
377 | static const unsigned int svia_bar_sizes[] = { | 377 | static const unsigned int svia_bar_sizes[] = { |
diff --git a/drivers/ata/sata_vsc.c b/drivers/ata/sata_vsc.c index 24344d0d0575..1920915dfa2c 100644 --- a/drivers/ata/sata_vsc.c +++ b/drivers/ata/sata_vsc.c | |||
@@ -47,7 +47,7 @@ | |||
47 | #include <linux/libata.h> | 47 | #include <linux/libata.h> |
48 | 48 | ||
49 | #define DRV_NAME "sata_vsc" | 49 | #define DRV_NAME "sata_vsc" |
50 | #define DRV_VERSION "2.2" | 50 | #define DRV_VERSION "2.3" |
51 | 51 | ||
52 | enum { | 52 | enum { |
53 | VSC_MMIO_BAR = 0, | 53 | VSC_MMIO_BAR = 0, |