diff options
Diffstat (limited to 'drivers/ide')
| -rw-r--r-- | drivers/ide/Kconfig | 5 | ||||
| -rw-r--r-- | drivers/ide/falconide.c | 2 | ||||
| -rw-r--r-- | drivers/ide/ide-disk.c | 2 | ||||
| -rw-r--r-- | drivers/ide/ide-iops.c | 2 | ||||
| -rw-r--r-- | drivers/ide/ide-pm.c | 12 | ||||
| -rw-r--r-- | drivers/ide/ide-probe.c | 5 | ||||
| -rw-r--r-- | drivers/ide/it821x.c | 15 | ||||
| -rw-r--r-- | drivers/ide/palm_bk3710.c | 11 | ||||
| -rw-r--r-- | drivers/ide/sl82c105.c | 4 | ||||
| -rw-r--r-- | drivers/ide/tx4938ide.c | 1 | ||||
| -rw-r--r-- | drivers/ide/via82cxxx.c | 2 |
11 files changed, 34 insertions, 27 deletions
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig index 3f9503867e6b..b1c6f68d98ce 100644 --- a/drivers/ide/Kconfig +++ b/drivers/ide/Kconfig | |||
| @@ -701,11 +701,6 @@ config BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA | |||
| 701 | depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX | 701 | depends on SOC_AU1200 && BLK_DEV_IDE_AU1XXX |
| 702 | endchoice | 702 | endchoice |
| 703 | 703 | ||
| 704 | config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ | ||
| 705 | int "Maximum transfer size (KB) per request (up to 128)" | ||
| 706 | default "128" | ||
| 707 | depends on BLK_DEV_IDE_AU1XXX | ||
| 708 | |||
| 709 | config BLK_DEV_IDE_TX4938 | 704 | config BLK_DEV_IDE_TX4938 |
| 710 | tristate "TX4938 internal IDE support" | 705 | tristate "TX4938 internal IDE support" |
| 711 | depends on SOC_TX4938 | 706 | depends on SOC_TX4938 |
diff --git a/drivers/ide/falconide.c b/drivers/ide/falconide.c index a5ba820d69bb..a638e952d67a 100644 --- a/drivers/ide/falconide.c +++ b/drivers/ide/falconide.c | |||
| @@ -82,7 +82,7 @@ static const struct ide_tp_ops falconide_tp_ops = { | |||
| 82 | 82 | ||
| 83 | static const struct ide_port_info falconide_port_info = { | 83 | static const struct ide_port_info falconide_port_info = { |
| 84 | .tp_ops = &falconide_tp_ops, | 84 | .tp_ops = &falconide_tp_ops, |
| 85 | .host_flags = IDE_HFLAG_NO_DMA, | 85 | .host_flags = IDE_HFLAG_NO_DMA | IDE_HFLAG_SERIALIZE, |
| 86 | }; | 86 | }; |
| 87 | 87 | ||
| 88 | static void __init falconide_setup_ports(hw_regs_t *hw) | 88 | static void __init falconide_setup_ports(hw_regs_t *hw) |
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c index 4088a622873e..806760d24cef 100644 --- a/drivers/ide/ide-disk.c +++ b/drivers/ide/ide-disk.c | |||
| @@ -633,7 +633,7 @@ static void ide_disk_setup(ide_drive_t *drive) | |||
| 633 | printk(KERN_INFO "%s: max request size: %dKiB\n", drive->name, | 633 | printk(KERN_INFO "%s: max request size: %dKiB\n", drive->name, |
| 634 | q->max_sectors / 2); | 634 | q->max_sectors / 2); |
| 635 | 635 | ||
| 636 | if (ata_id_is_ssd(id) || ata_id_is_cfa(id)) | 636 | if (ata_id_is_ssd(id)) |
| 637 | queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q); | 637 | queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q); |
| 638 | 638 | ||
| 639 | /* calculate drive capacity, and select LBA if possible */ | 639 | /* calculate drive capacity, and select LBA if possible */ |
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index e728cfe7273f..753b92ebe0ae 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c | |||
| @@ -493,7 +493,7 @@ static int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad, unsigned long ti | |||
| 493 | stat = tp_ops->read_status(hwif); | 493 | stat = tp_ops->read_status(hwif); |
| 494 | 494 | ||
| 495 | if (stat & ATA_BUSY) { | 495 | if (stat & ATA_BUSY) { |
| 496 | local_irq_save(flags); | 496 | local_save_flags(flags); |
| 497 | local_irq_enable_in_hardirq(); | 497 | local_irq_enable_in_hardirq(); |
| 498 | timeout += jiffies; | 498 | timeout += jiffies; |
| 499 | while ((stat = tp_ops->read_status(hwif)) & ATA_BUSY) { | 499 | while ((stat = tp_ops->read_status(hwif)) & ATA_BUSY) { |
diff --git a/drivers/ide/ide-pm.c b/drivers/ide/ide-pm.c index 4b3bf6a06b70..60538d9c84ee 100644 --- a/drivers/ide/ide-pm.c +++ b/drivers/ide/ide-pm.c | |||
| @@ -186,12 +186,10 @@ void ide_complete_pm_request(ide_drive_t *drive, struct request *rq) | |||
| 186 | blk_pm_suspend_request(rq) ? "suspend" : "resume"); | 186 | blk_pm_suspend_request(rq) ? "suspend" : "resume"); |
| 187 | #endif | 187 | #endif |
| 188 | spin_lock_irqsave(q->queue_lock, flags); | 188 | spin_lock_irqsave(q->queue_lock, flags); |
| 189 | if (blk_pm_suspend_request(rq)) { | 189 | if (blk_pm_suspend_request(rq)) |
| 190 | blk_stop_queue(q); | 190 | blk_stop_queue(q); |
| 191 | } else { | 191 | else |
| 192 | drive->dev_flags &= ~IDE_DFLAG_BLOCKED; | 192 | drive->dev_flags &= ~IDE_DFLAG_BLOCKED; |
| 193 | blk_start_queue(q); | ||
| 194 | } | ||
| 195 | spin_unlock_irqrestore(q->queue_lock, flags); | 193 | spin_unlock_irqrestore(q->queue_lock, flags); |
| 196 | 194 | ||
| 197 | drive->hwif->rq = NULL; | 195 | drive->hwif->rq = NULL; |
| @@ -219,6 +217,8 @@ void ide_check_pm_state(ide_drive_t *drive, struct request *rq) | |||
| 219 | * point. | 217 | * point. |
| 220 | */ | 218 | */ |
| 221 | ide_hwif_t *hwif = drive->hwif; | 219 | ide_hwif_t *hwif = drive->hwif; |
| 220 | struct request_queue *q = drive->queue; | ||
| 221 | unsigned long flags; | ||
| 222 | int rc; | 222 | int rc; |
| 223 | #ifdef DEBUG_PM | 223 | #ifdef DEBUG_PM |
| 224 | printk("%s: Wakeup request inited, waiting for !BSY...\n", drive->name); | 224 | printk("%s: Wakeup request inited, waiting for !BSY...\n", drive->name); |
| @@ -231,5 +231,9 @@ void ide_check_pm_state(ide_drive_t *drive, struct request *rq) | |||
| 231 | rc = ide_wait_not_busy(hwif, 100000); | 231 | rc = ide_wait_not_busy(hwif, 100000); |
| 232 | if (rc) | 232 | if (rc) |
| 233 | printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name); | 233 | printk(KERN_WARNING "%s: drive not ready on wakeup\n", drive->name); |
| 234 | |||
| 235 | spin_lock_irqsave(q->queue_lock, flags); | ||
| 236 | blk_start_queue(q); | ||
| 237 | spin_unlock_irqrestore(q->queue_lock, flags); | ||
| 234 | } | 238 | } |
| 235 | } | 239 | } |
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 0ccbb4459fb9..0db1ed9f5fc2 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
| @@ -649,7 +649,8 @@ static int ide_register_port(ide_hwif_t *hwif) | |||
| 649 | /* register with global device tree */ | 649 | /* register with global device tree */ |
| 650 | dev_set_name(&hwif->gendev, hwif->name); | 650 | dev_set_name(&hwif->gendev, hwif->name); |
| 651 | hwif->gendev.driver_data = hwif; | 651 | hwif->gendev.driver_data = hwif; |
| 652 | hwif->gendev.parent = hwif->dev; | 652 | if (hwif->gendev.parent == NULL) |
| 653 | hwif->gendev.parent = hwif->dev; | ||
| 653 | hwif->gendev.release = hwif_release_dev; | 654 | hwif->gendev.release = hwif_release_dev; |
| 654 | 655 | ||
| 655 | ret = device_register(&hwif->gendev); | 656 | ret = device_register(&hwif->gendev); |
| @@ -796,7 +797,7 @@ static int ide_probe_port(ide_hwif_t *hwif) | |||
| 796 | if (irqd) | 797 | if (irqd) |
| 797 | disable_irq(hwif->irq); | 798 | disable_irq(hwif->irq); |
| 798 | 799 | ||
| 799 | local_irq_save(flags); | 800 | local_save_flags(flags); |
| 800 | local_irq_enable_in_hardirq(); | 801 | local_irq_enable_in_hardirq(); |
| 801 | 802 | ||
| 802 | if (ide_port_wait_ready(hwif) == -EBUSY) | 803 | if (ide_port_wait_ready(hwif) == -EBUSY) |
diff --git a/drivers/ide/it821x.c b/drivers/ide/it821x.c index 0be27ac1f077..e1c4f5437396 100644 --- a/drivers/ide/it821x.c +++ b/drivers/ide/it821x.c | |||
| @@ -68,6 +68,8 @@ | |||
| 68 | 68 | ||
| 69 | #define DRV_NAME "it821x" | 69 | #define DRV_NAME "it821x" |
| 70 | 70 | ||
| 71 | #define QUIRK_VORTEX86 1 | ||
| 72 | |||
| 71 | struct it821x_dev | 73 | struct it821x_dev |
| 72 | { | 74 | { |
| 73 | unsigned int smart:1, /* Are we in smart raid mode */ | 75 | unsigned int smart:1, /* Are we in smart raid mode */ |
| @@ -79,6 +81,7 @@ struct it821x_dev | |||
| 79 | u16 pio[2]; /* Cached PIO values */ | 81 | u16 pio[2]; /* Cached PIO values */ |
| 80 | u16 mwdma[2]; /* Cached MWDMA values */ | 82 | u16 mwdma[2]; /* Cached MWDMA values */ |
| 81 | u16 udma[2]; /* Cached UDMA values (per drive) */ | 83 | u16 udma[2]; /* Cached UDMA values (per drive) */ |
| 84 | u16 quirks; | ||
| 82 | }; | 85 | }; |
| 83 | 86 | ||
| 84 | #define ATA_66 0 | 87 | #define ATA_66 0 |
| @@ -557,8 +560,7 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif) | |||
| 557 | * this is necessary. | 560 | * this is necessary. |
| 558 | */ | 561 | */ |
| 559 | 562 | ||
| 560 | pci_read_config_byte(dev, 0x08, &conf); | 563 | if (dev->revision == 0x10) { |
| 561 | if (conf == 0x10) { | ||
| 562 | idev->timing10 = 1; | 564 | idev->timing10 = 1; |
| 563 | hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA; | 565 | hwif->host_flags |= IDE_HFLAG_NO_ATAPI_DMA; |
| 564 | if (idev->smart == 0) | 566 | if (idev->smart == 0) |
| @@ -577,6 +579,12 @@ static void __devinit init_hwif_it821x(ide_hwif_t *hwif) | |||
| 577 | 579 | ||
| 578 | hwif->ultra_mask = ATA_UDMA6; | 580 | hwif->ultra_mask = ATA_UDMA6; |
| 579 | hwif->mwdma_mask = ATA_MWDMA2; | 581 | hwif->mwdma_mask = ATA_MWDMA2; |
| 582 | |||
| 583 | /* Vortex86SX quirk: prevent Ultra-DMA mode to fix BadCRC issue */ | ||
| 584 | if (idev->quirks & QUIRK_VORTEX86) { | ||
| 585 | if (dev->revision == 0x11) | ||
| 586 | hwif->ultra_mask = 0; | ||
| 587 | } | ||
| 580 | } | 588 | } |
| 581 | 589 | ||
| 582 | static void it8212_disable_raid(struct pci_dev *dev) | 590 | static void it8212_disable_raid(struct pci_dev *dev) |
| @@ -649,6 +657,8 @@ static int __devinit it821x_init_one(struct pci_dev *dev, const struct pci_devic | |||
| 649 | return -ENOMEM; | 657 | return -ENOMEM; |
| 650 | } | 658 | } |
| 651 | 659 | ||
| 660 | itdevs->quirks = id->driver_data; | ||
| 661 | |||
| 652 | rc = ide_pci_init_one(dev, &it821x_chipset, itdevs); | 662 | rc = ide_pci_init_one(dev, &it821x_chipset, itdevs); |
| 653 | if (rc) | 663 | if (rc) |
| 654 | kfree(itdevs); | 664 | kfree(itdevs); |
| @@ -668,6 +678,7 @@ static void __devexit it821x_remove(struct pci_dev *dev) | |||
| 668 | static const struct pci_device_id it821x_pci_tbl[] = { | 678 | static const struct pci_device_id it821x_pci_tbl[] = { |
| 669 | { PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8211), 0 }, | 679 | { PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8211), 0 }, |
| 670 | { PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8212), 0 }, | 680 | { PCI_VDEVICE(ITE, PCI_DEVICE_ID_ITE_8212), 0 }, |
| 681 | { PCI_VDEVICE(RDC, PCI_DEVICE_ID_RDC_D1010), QUIRK_VORTEX86 }, | ||
| 671 | { 0, }, | 682 | { 0, }, |
| 672 | }; | 683 | }; |
| 673 | 684 | ||
diff --git a/drivers/ide/palm_bk3710.c b/drivers/ide/palm_bk3710.c index a7ac490c9ae3..f38aac78044c 100644 --- a/drivers/ide/palm_bk3710.c +++ b/drivers/ide/palm_bk3710.c | |||
| @@ -346,7 +346,8 @@ static int __init palm_bk3710_probe(struct platform_device *pdev) | |||
| 346 | { | 346 | { |
| 347 | struct clk *clk; | 347 | struct clk *clk; |
| 348 | struct resource *mem, *irq; | 348 | struct resource *mem, *irq; |
| 349 | unsigned long base, rate; | 349 | void __iomem *base; |
| 350 | unsigned long rate; | ||
| 350 | int i, rc; | 351 | int i, rc; |
| 351 | hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; | 352 | hw_regs_t hw, *hws[] = { &hw, NULL, NULL, NULL }; |
| 352 | 353 | ||
| @@ -382,11 +383,13 @@ static int __init palm_bk3710_probe(struct platform_device *pdev) | |||
| 382 | base = IO_ADDRESS(mem->start); | 383 | base = IO_ADDRESS(mem->start); |
| 383 | 384 | ||
| 384 | /* Configure the Palm Chip controller */ | 385 | /* Configure the Palm Chip controller */ |
| 385 | palm_bk3710_chipinit((void __iomem *)base); | 386 | palm_bk3710_chipinit(base); |
| 386 | 387 | ||
| 387 | for (i = 0; i < IDE_NR_PORTS - 2; i++) | 388 | for (i = 0; i < IDE_NR_PORTS - 2; i++) |
| 388 | hw.io_ports_array[i] = base + IDE_PALM_ATA_PRI_REG_OFFSET + i; | 389 | hw.io_ports_array[i] = (unsigned long) |
| 389 | hw.io_ports.ctl_addr = base + IDE_PALM_ATA_PRI_CTL_OFFSET; | 390 | (base + IDE_PALM_ATA_PRI_REG_OFFSET + i); |
| 391 | hw.io_ports.ctl_addr = (unsigned long) | ||
| 392 | (base + IDE_PALM_ATA_PRI_CTL_OFFSET); | ||
| 390 | hw.irq = irq->start; | 393 | hw.irq = irq->start; |
| 391 | hw.dev = &pdev->dev; | 394 | hw.dev = &pdev->dev; |
| 392 | hw.chipset = ide_palm3710; | 395 | hw.chipset = ide_palm3710; |
diff --git a/drivers/ide/sl82c105.c b/drivers/ide/sl82c105.c index 48cc748c5043..6297956507c0 100644 --- a/drivers/ide/sl82c105.c +++ b/drivers/ide/sl82c105.c | |||
| @@ -310,10 +310,6 @@ static const struct ide_port_info sl82c105_chipset __devinitdata = { | |||
| 310 | .dma_ops = &sl82c105_dma_ops, | 310 | .dma_ops = &sl82c105_dma_ops, |
| 311 | .host_flags = IDE_HFLAG_IO_32BIT | | 311 | .host_flags = IDE_HFLAG_IO_32BIT | |
| 312 | IDE_HFLAG_UNMASK_IRQS | | 312 | IDE_HFLAG_UNMASK_IRQS | |
| 313 | /* FIXME: check for Compatibility mode in generic IDE PCI code */ | ||
| 314 | #if defined(CONFIG_LOPEC) || defined(CONFIG_SANDPOINT) | ||
| 315 | IDE_HFLAG_FORCE_LEGACY_IRQS | | ||
| 316 | #endif | ||
| 317 | IDE_HFLAG_SERIALIZE_DMA | | 313 | IDE_HFLAG_SERIALIZE_DMA | |
| 318 | IDE_HFLAG_NO_AUTODMA, | 314 | IDE_HFLAG_NO_AUTODMA, |
| 319 | .pio_mask = ATA_PIO5, | 315 | .pio_mask = ATA_PIO5, |
diff --git a/drivers/ide/tx4938ide.c b/drivers/ide/tx4938ide.c index b4ef218072cd..d9095345f7ca 100644 --- a/drivers/ide/tx4938ide.c +++ b/drivers/ide/tx4938ide.c | |||
| @@ -202,7 +202,6 @@ static const struct ide_tp_ops tx4938ide_tp_ops = { | |||
| 202 | .exec_command = ide_exec_command, | 202 | .exec_command = ide_exec_command, |
| 203 | .read_status = ide_read_status, | 203 | .read_status = ide_read_status, |
| 204 | .read_altstatus = ide_read_altstatus, | 204 | .read_altstatus = ide_read_altstatus, |
| 205 | .read_sff_dma_status = ide_read_sff_dma_status, | ||
| 206 | 205 | ||
| 207 | .set_irq = ide_set_irq, | 206 | .set_irq = ide_set_irq, |
| 208 | 207 | ||
diff --git a/drivers/ide/via82cxxx.c b/drivers/ide/via82cxxx.c index fecc0e03c3fc..703c3eeb20a8 100644 --- a/drivers/ide/via82cxxx.c +++ b/drivers/ide/via82cxxx.c | |||
| @@ -432,8 +432,6 @@ static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_i | |||
| 432 | if (via_clock < 20000 || via_clock > 50000) { | 432 | if (via_clock < 20000 || via_clock > 50000) { |
| 433 | printk(KERN_WARNING DRV_NAME ": User given PCI clock speed " | 433 | printk(KERN_WARNING DRV_NAME ": User given PCI clock speed " |
| 434 | "impossible (%d), using 33 MHz instead.\n", via_clock); | 434 | "impossible (%d), using 33 MHz instead.\n", via_clock); |
| 435 | printk(KERN_WARNING DRV_NAME ": Use ide0=ata66 if you want " | ||
| 436 | "to assume 80-wire cable.\n"); | ||
| 437 | via_clock = 33333; | 435 | via_clock = 33333; |
| 438 | } | 436 | } |
| 439 | 437 | ||
