diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-14 17:29:34 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-14 17:29:34 -0400 |
commit | db973ffa11030e032acde47b4d6e958064311166 (patch) | |
tree | 912d103141f625e32ccda709a4b9a854e3a3e696 /drivers | |
parent | dd286422fefdcff784e8d336deeb88ce817e14db (diff) | |
parent | cafa027b8cc6f605ccebc43a960644307a12d8dd (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6:
cs5520: disable VDMA
ide/Kconfig: couple of fixes
alim15x3: remove WDC_ALI15X3 config option
alim15x3: add "wdc_udma" module parameter
alim15x3: remove stale warning about ATI RS100 northbridge
alim15x3: trivial cleanup for ali_set_pio_mode()
make ide-iops.c:SELECT_MASK() static
SWARM IDE: Fix up following changes to ide_hwif_t
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ide/Kconfig | 54 | ||||
-rw-r--r-- | drivers/ide/ide-iops.c | 2 | ||||
-rw-r--r-- | drivers/ide/mips/swarm.c | 16 | ||||
-rw-r--r-- | drivers/ide/pci/alim15x3.c | 42 | ||||
-rw-r--r-- | drivers/ide/pci/cs5520.c | 2 |
5 files changed, 35 insertions, 81 deletions
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig index f702f9152ce6..b4f3aefa12b6 100644 --- a/drivers/ide/Kconfig +++ b/drivers/ide/Kconfig | |||
@@ -1,8 +1,6 @@ | |||
1 | # | 1 | # |
2 | # IDE ATA ATAPI Block device driver configuration | 2 | # IDE ATA ATAPI Block device driver configuration |
3 | # | 3 | # |
4 | # Andre Hedrick <andre@linux-ide.org> | ||
5 | # | ||
6 | 4 | ||
7 | # Select HAVE_IDE if IDE is supported | 5 | # Select HAVE_IDE if IDE is supported |
8 | config HAVE_IDE | 6 | config HAVE_IDE |
@@ -335,7 +333,7 @@ config BLK_DEV_CMD640 | |||
335 | This driver will work automatically in PCI based systems (most new | 333 | This driver will work automatically in PCI based systems (most new |
336 | systems have PCI slots). But if your system uses VESA local bus | 334 | systems have PCI slots). But if your system uses VESA local bus |
337 | (VLB) instead of PCI, you must also supply a kernel boot parameter | 335 | (VLB) instead of PCI, you must also supply a kernel boot parameter |
338 | to enable the CMD640 bugfix/support: "ide0=cmd640_vlb". (Try "man | 336 | to enable the CMD640 bugfix/support: "cmd640.probe_vlb". (Try "man |
339 | bootparam" or see the documentation of your boot loader about how to | 337 | bootparam" or see the documentation of your boot loader about how to |
340 | pass options to the kernel.) | 338 | pass options to the kernel.) |
341 | 339 | ||
@@ -457,27 +455,11 @@ config BLK_DEV_ALI15X3 | |||
457 | onboard chipsets. It also tests for Simplex mode and enables | 455 | onboard chipsets. It also tests for Simplex mode and enables |
458 | normal dual channel support. | 456 | normal dual channel support. |
459 | 457 | ||
460 | If you say Y here, you also need to say Y to "Use DMA by default | 458 | Please read the comments at the top of |
461 | when available", above. Please read the comments at the top of | ||
462 | <file:drivers/ide/pci/alim15x3.c>. | 459 | <file:drivers/ide/pci/alim15x3.c>. |
463 | 460 | ||
464 | If unsure, say N. | 461 | If unsure, say N. |
465 | 462 | ||
466 | config WDC_ALI15X3 | ||
467 | bool "ALI M15x3 WDC support (DANGEROUS)" | ||
468 | depends on BLK_DEV_ALI15X3 | ||
469 | ---help--- | ||
470 | This allows for UltraDMA support for WDC drives that ignore CRC | ||
471 | checking. You are a fool for enabling this option, but there have | ||
472 | been requests. DO NOT COMPLAIN IF YOUR DRIVE HAS FS CORRUPTION, IF | ||
473 | YOU ENABLE THIS! No one will listen, just laugh for ignoring this | ||
474 | SERIOUS WARNING. | ||
475 | |||
476 | Using this option can allow WDC drives to run at ATA-4/5 transfer | ||
477 | rates with only an ATA-2 support structure. | ||
478 | |||
479 | SAY N! | ||
480 | |||
481 | config BLK_DEV_AMD74XX | 463 | config BLK_DEV_AMD74XX |
482 | tristate "AMD and nVidia IDE support" | 464 | tristate "AMD and nVidia IDE support" |
483 | depends on !ARM | 465 | depends on !ARM |
@@ -520,9 +502,6 @@ config BLK_DEV_CY82C693 | |||
520 | This driver adds detection and support for the CY82C693 chipset | 502 | This driver adds detection and support for the CY82C693 chipset |
521 | used on Digital's PC-Alpha 164SX boards. | 503 | used on Digital's PC-Alpha 164SX boards. |
522 | 504 | ||
523 | If you say Y here, you need to say Y to "Use DMA by default | ||
524 | when available" as well. | ||
525 | |||
526 | config BLK_DEV_CS5520 | 505 | config BLK_DEV_CS5520 |
527 | tristate "Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTAL)" | 506 | tristate "Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTAL)" |
528 | depends on EXPERIMENTAL | 507 | depends on EXPERIMENTAL |
@@ -613,13 +592,12 @@ config BLK_DEV_SC1200 | |||
613 | National SCx200 series of embedded x86 "Geode" systems. | 592 | National SCx200 series of embedded x86 "Geode" systems. |
614 | 593 | ||
615 | config BLK_DEV_PIIX | 594 | config BLK_DEV_PIIX |
616 | tristate "Intel PIIXn chipsets support" | 595 | tristate "Intel PIIX/ICH chipsets support" |
617 | select BLK_DEV_IDEDMA_PCI | 596 | select BLK_DEV_IDEDMA_PCI |
618 | help | 597 | help |
619 | This driver adds explicit support for Intel PIIX and ICH chips | 598 | This driver adds explicit support for Intel PIIX and ICH chips. |
620 | and also for the Efar Victory66 (slc90e66) chip. This allows | 599 | This allows the kernel to change PIO, DMA and UDMA speeds and to |
621 | the kernel to change PIO, DMA and UDMA speeds and to configure | 600 | configure the chip to optimum performance. |
622 | the chip to optimum performance. | ||
623 | 601 | ||
624 | config BLK_DEV_IT8213 | 602 | config BLK_DEV_IT8213 |
625 | tristate "IT8213 IDE support" | 603 | tristate "IT8213 IDE support" |
@@ -657,11 +635,7 @@ config BLK_DEV_PDC202XX_OLD | |||
657 | happen if the BIOS revisions of all installed cards (three-max) do | 635 | happen if the BIOS revisions of all installed cards (three-max) do |
658 | not match, the driver attempts to do dynamic tuning of the chipset | 636 | not match, the driver attempts to do dynamic tuning of the chipset |
659 | at boot-time for max-speed. Ultra33 BIOS 1.25 or newer is required | 637 | at boot-time for max-speed. Ultra33 BIOS 1.25 or newer is required |
660 | for more than one card. This card may require that you say Y to | 638 | for more than one card. |
661 | "Special UDMA Feature". | ||
662 | |||
663 | If you say Y here, you need to say Y to "Use DMA by default when | ||
664 | available" as well. | ||
665 | 639 | ||
666 | Please read the comments at the top of | 640 | Please read the comments at the top of |
667 | <file:drivers/ide/pci/pdc202xx_old.c>. | 641 | <file:drivers/ide/pci/pdc202xx_old.c>. |
@@ -710,9 +684,6 @@ config BLK_DEV_SIS5513 | |||
710 | ATA100: SiS635, SiS645, SiS650, SiS730, SiS735, SiS740, | 684 | ATA100: SiS635, SiS645, SiS650, SiS730, SiS735, SiS740, |
711 | SiS745, SiS750 | 685 | SiS745, SiS750 |
712 | 686 | ||
713 | If you say Y here, you need to say Y to "Use DMA by default when | ||
714 | available" as well. | ||
715 | |||
716 | Please read the comments at the top of <file:drivers/ide/pci/sis5513.c>. | 687 | Please read the comments at the top of <file:drivers/ide/pci/sis5513.c>. |
717 | 688 | ||
718 | config BLK_DEV_SL82C105 | 689 | config BLK_DEV_SL82C105 |
@@ -734,9 +705,6 @@ config BLK_DEV_SLC90E66 | |||
734 | and it will handle timing cycles. Since this is an improved | 705 | and it will handle timing cycles. Since this is an improved |
735 | look-a-like to the PIIX4 it should be a nice addition. | 706 | look-a-like to the PIIX4 it should be a nice addition. |
736 | 707 | ||
737 | If you say Y here, you need to say Y to "Use DMA by default when | ||
738 | available" as well. | ||
739 | |||
740 | Please read the comments at the top of | 708 | Please read the comments at the top of |
741 | <file:drivers/ide/pci/slc90e66.c>. | 709 | <file:drivers/ide/pci/slc90e66.c>. |
742 | 710 | ||
@@ -888,17 +856,17 @@ config BLK_DEV_IDEDOUBLER | |||
888 | bool "Amiga IDE Doubler support (EXPERIMENTAL)" | 856 | bool "Amiga IDE Doubler support (EXPERIMENTAL)" |
889 | depends on BLK_DEV_GAYLE && EXPERIMENTAL | 857 | depends on BLK_DEV_GAYLE && EXPERIMENTAL |
890 | ---help--- | 858 | ---help--- |
891 | This driver provides support for the so-called `IDE doublers' (made | 859 | This feature provides support for the so-called `IDE doublers' (made |
892 | by various manufacturers, e.g. Eyetech) that can be connected to | 860 | by various manufacturers, e.g. Eyetech) that can be connected to |
893 | the on-board IDE interface of some Amiga models. Using such an IDE | 861 | the on-board IDE interface of some Amiga models. Using such an IDE |
894 | doubler, you can connect up to four instead of two IDE devices to | 862 | doubler, you can connect up to four instead of two IDE devices to |
895 | the Amiga's on-board IDE interface. | 863 | the Amiga's on-board IDE interface. |
896 | 864 | ||
897 | Note that the normal Amiga Gayle IDE driver may not work correctly | 865 | Note that the normal Amiga Gayle IDE driver may not work correctly |
898 | if you have an IDE doubler and don't enable this driver! | 866 | if you have an IDE doubler and don't enable this feature! |
899 | 867 | ||
900 | Say Y if you have an IDE doubler. The driver is enabled at kernel | 868 | Say Y if you have an IDE doubler. The feature is enabled at kernel |
901 | runtime using the "ide=doubler" kernel boot parameter. | 869 | runtime using the "gayle.doubler" kernel boot parameter. |
902 | 870 | ||
903 | config BLK_DEV_BUDDHA | 871 | config BLK_DEV_BUDDHA |
904 | tristate "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)" | 872 | tristate "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)" |
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index 57d9a9a79a6f..0daf923541ff 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c | |||
@@ -95,7 +95,7 @@ void SELECT_DRIVE (ide_drive_t *drive) | |||
95 | hwif->OUTB(drive->select.all, hwif->io_ports.device_addr); | 95 | hwif->OUTB(drive->select.all, hwif->io_ports.device_addr); |
96 | } | 96 | } |
97 | 97 | ||
98 | void SELECT_MASK (ide_drive_t *drive, int mask) | 98 | static void SELECT_MASK(ide_drive_t *drive, int mask) |
99 | { | 99 | { |
100 | const struct ide_port_ops *port_ops = drive->hwif->port_ops; | 100 | const struct ide_port_ops *port_ops = drive->hwif->port_ops; |
101 | 101 | ||
diff --git a/drivers/ide/mips/swarm.c b/drivers/ide/mips/swarm.c index 712d17bdd470..52fee3d2771a 100644 --- a/drivers/ide/mips/swarm.c +++ b/drivers/ide/mips/swarm.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * Author: Manish Lachwani, mlachwani@mvista.com | 4 | * Author: Manish Lachwani, mlachwani@mvista.com |
5 | * Copyright (C) 2004 MIPS Technologies, Inc. All rights reserved. | 5 | * Copyright (C) 2004 MIPS Technologies, Inc. All rights reserved. |
6 | * Author: Maciej W. Rozycki <macro@mips.com> | 6 | * Author: Maciej W. Rozycki <macro@mips.com> |
7 | * Copyright (c) 2006 Maciej W. Rozycki | 7 | * Copyright (c) 2006, 2008 Maciej W. Rozycki |
8 | * | 8 | * |
9 | * This program is free software; you can redistribute it and/or | 9 | * This program is free software; you can redistribute it and/or |
10 | * modify it under the terms of the GNU General Public License | 10 | * modify it under the terms of the GNU General Public License |
@@ -70,8 +70,9 @@ static int __devinit swarm_ide_probe(struct device *dev) | |||
70 | ide_hwif_t *hwif; | 70 | ide_hwif_t *hwif; |
71 | u8 __iomem *base; | 71 | u8 __iomem *base; |
72 | phys_t offset, size; | 72 | phys_t offset, size; |
73 | hw_regs_t hw; | ||
73 | int i; | 74 | int i; |
74 | u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; | 75 | u8 idx[] = { 0xff, 0xff, 0xff, 0xff }; |
75 | 76 | ||
76 | if (!SIBYTE_HAVE_IDE) | 77 | if (!SIBYTE_HAVE_IDE) |
77 | return -ENODEV; | 78 | return -ENODEV; |
@@ -112,14 +113,15 @@ static int __devinit swarm_ide_probe(struct device *dev) | |||
112 | hwif->host_flags = IDE_HFLAG_MMIO; | 113 | hwif->host_flags = IDE_HFLAG_MMIO; |
113 | default_hwif_mmiops(hwif); | 114 | default_hwif_mmiops(hwif); |
114 | 115 | ||
115 | hwif->chipset = ide_generic; | ||
116 | |||
117 | for (i = 0; i <= 7; i++) | 116 | for (i = 0; i <= 7; i++) |
118 | hwif->io_ports_array[i] = | 117 | hw.io_ports_array[i] = |
119 | (unsigned long)(base + ((0x1f0 + i) << 5)); | 118 | (unsigned long)(base + ((0x1f0 + i) << 5)); |
120 | hwif->io_ports.ctl_addr = | 119 | hw.io_ports.ctl_addr = |
121 | (unsigned long)(base + (0x3f6 << 5)); | 120 | (unsigned long)(base + (0x3f6 << 5)); |
122 | hwif->irq = K_INT_GB_IDE; | 121 | hw.irq = K_INT_GB_IDE; |
122 | hw.chipset = ide_generic; | ||
123 | |||
124 | ide_init_port_hw(hwif, &hw); | ||
123 | 125 | ||
124 | idx[0] = hwif->index; | 126 | idx[0] = hwif->index; |
125 | 127 | ||
diff --git a/drivers/ide/pci/alim15x3.c b/drivers/ide/pci/alim15x3.c index c1922f9cfe80..f2129d5e07f2 100644 --- a/drivers/ide/pci/alim15x3.c +++ b/drivers/ide/pci/alim15x3.c | |||
@@ -39,6 +39,16 @@ | |||
39 | #include <asm/io.h> | 39 | #include <asm/io.h> |
40 | 40 | ||
41 | /* | 41 | /* |
42 | * Allow UDMA on M1543C-E chipset for WDC disks that ignore CRC checking | ||
43 | * (this is DANGEROUS and could result in data corruption). | ||
44 | */ | ||
45 | static int wdc_udma; | ||
46 | |||
47 | module_param(wdc_udma, bool, 0); | ||
48 | MODULE_PARM_DESC(wdc_udma, | ||
49 | "allow UDMA on M1543C-E chipset for WDC disks (DANGEROUS)"); | ||
50 | |||
51 | /* | ||
42 | * ALi devices are not plug in. Otherwise these static values would | 52 | * ALi devices are not plug in. Otherwise these static values would |
43 | * need to go. They ought to go away anyway | 53 | * need to go. They ought to go away anyway |
44 | */ | 54 | */ |
@@ -76,11 +86,6 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio) | |||
76 | a_clc = 0; | 86 | a_clc = 0; |
77 | c_time = ide_pio_timings[pio].cycle_time; | 87 | c_time = ide_pio_timings[pio].cycle_time; |
78 | 88 | ||
79 | #if 0 | ||
80 | if ((r_clc = ((c_time - s_time - a_time) * bus_speed + 999) / 1000) >= 16) | ||
81 | r_clc = 0; | ||
82 | #endif | ||
83 | |||
84 | if (!(r_clc = (c_time * bus_speed + 999) / 1000 - a_clc - s_clc)) { | 89 | if (!(r_clc = (c_time * bus_speed + 999) / 1000 - a_clc - s_clc)) { |
85 | r_clc = 1; | 90 | r_clc = 1; |
86 | } else { | 91 | } else { |
@@ -110,16 +115,6 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio) | |||
110 | pci_write_config_byte(dev, port, s_clc); | 115 | pci_write_config_byte(dev, port, s_clc); |
111 | pci_write_config_byte(dev, port+drive->select.b.unit+2, (a_clc << 4) | r_clc); | 116 | pci_write_config_byte(dev, port+drive->select.b.unit+2, (a_clc << 4) | r_clc); |
112 | local_irq_restore(flags); | 117 | local_irq_restore(flags); |
113 | |||
114 | /* | ||
115 | * setup active rec | ||
116 | * { 70, 165, 365 }, PIO Mode 0 | ||
117 | * { 50, 125, 208 }, PIO Mode 1 | ||
118 | * { 30, 100, 110 }, PIO Mode 2 | ||
119 | * { 30, 80, 70 }, PIO Mode 3 with IORDY | ||
120 | * { 25, 70, 25 }, PIO Mode 4 with IORDY ns | ||
121 | * { 20, 50, 30 } PIO Mode 5 with IORDY (nonstandard) | ||
122 | */ | ||
123 | } | 118 | } |
124 | 119 | ||
125 | /** | 120 | /** |
@@ -131,9 +126,7 @@ static void ali_set_pio_mode(ide_drive_t *drive, const u8 pio) | |||
131 | * The actual rules for the ALi are: | 126 | * The actual rules for the ALi are: |
132 | * No UDMA on revisions <= 0x20 | 127 | * No UDMA on revisions <= 0x20 |
133 | * Disk only for revisions < 0xC2 | 128 | * Disk only for revisions < 0xC2 |
134 | * Not WDC drives for revisions < 0xC2 | 129 | * Not WDC drives on M1543C-E (?) |
135 | * | ||
136 | * FIXME: WDC ifdef needs to die | ||
137 | */ | 130 | */ |
138 | 131 | ||
139 | static u8 ali_udma_filter(ide_drive_t *drive) | 132 | static u8 ali_udma_filter(ide_drive_t *drive) |
@@ -141,10 +134,9 @@ static u8 ali_udma_filter(ide_drive_t *drive) | |||
141 | if (m5229_revision > 0x20 && m5229_revision < 0xC2) { | 134 | if (m5229_revision > 0x20 && m5229_revision < 0xC2) { |
142 | if (drive->media != ide_disk) | 135 | if (drive->media != ide_disk) |
143 | return 0; | 136 | return 0; |
144 | #ifndef CONFIG_WDC_ALI15X3 | 137 | if (chip_is_1543c_e && strstr(drive->id->model, "WDC ") && |
145 | if (chip_is_1543c_e && strstr(drive->id->model, "WDC ")) | 138 | wdc_udma == 0) |
146 | return 0; | 139 | return 0; |
147 | #endif | ||
148 | } | 140 | } |
149 | 141 | ||
150 | return drive->hwif->ultra_mask; | 142 | return drive->hwif->ultra_mask; |
@@ -537,17 +529,9 @@ static const struct ide_port_info ali15x3_chipset __devinitdata = { | |||
537 | 529 | ||
538 | static int __devinit alim15x3_init_one(struct pci_dev *dev, const struct pci_device_id *id) | 530 | static int __devinit alim15x3_init_one(struct pci_dev *dev, const struct pci_device_id *id) |
539 | { | 531 | { |
540 | static struct pci_device_id ati_rs100[] = { | ||
541 | { PCI_DEVICE(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS100) }, | ||
542 | { }, | ||
543 | }; | ||
544 | |||
545 | struct ide_port_info d = ali15x3_chipset; | 532 | struct ide_port_info d = ali15x3_chipset; |
546 | u8 rev = dev->revision, idx = id->driver_data; | 533 | u8 rev = dev->revision, idx = id->driver_data; |
547 | 534 | ||
548 | if (pci_dev_present(ati_rs100)) | ||
549 | printk(KERN_WARNING "alim15x3: ATI Radeon IGP Northbridge is not yet fully tested.\n"); | ||
550 | |||
551 | /* don't use LBA48 DMA on ALi devices before rev 0xC5 */ | 535 | /* don't use LBA48 DMA on ALi devices before rev 0xC5 */ |
552 | if (rev <= 0xC4) | 536 | if (rev <= 0xC4) |
553 | d.host_flags |= IDE_HFLAG_NO_LBA48_DMA; | 537 | d.host_flags |= IDE_HFLAG_NO_LBA48_DMA; |
diff --git a/drivers/ide/pci/cs5520.c b/drivers/ide/pci/cs5520.c index 17669a434438..992b1cf8db69 100644 --- a/drivers/ide/pci/cs5520.c +++ b/drivers/ide/pci/cs5520.c | |||
@@ -119,6 +119,7 @@ static const struct ide_dma_ops cs5520_dma_ops = { | |||
119 | .dma_timeout = ide_dma_timeout, | 119 | .dma_timeout = ide_dma_timeout, |
120 | }; | 120 | }; |
121 | 121 | ||
122 | /* FIXME: VDMA is disabled because it caused system hangs */ | ||
122 | #define DECLARE_CS_DEV(name_str) \ | 123 | #define DECLARE_CS_DEV(name_str) \ |
123 | { \ | 124 | { \ |
124 | .name = name_str, \ | 125 | .name = name_str, \ |
@@ -126,7 +127,6 @@ static const struct ide_dma_ops cs5520_dma_ops = { | |||
126 | .dma_ops = &cs5520_dma_ops, \ | 127 | .dma_ops = &cs5520_dma_ops, \ |
127 | .host_flags = IDE_HFLAG_ISA_PORTS | \ | 128 | .host_flags = IDE_HFLAG_ISA_PORTS | \ |
128 | IDE_HFLAG_CS5520 | \ | 129 | IDE_HFLAG_CS5520 | \ |
129 | IDE_HFLAG_VDMA | \ | ||
130 | IDE_HFLAG_NO_ATAPI_DMA | \ | 130 | IDE_HFLAG_NO_ATAPI_DMA | \ |
131 | IDE_HFLAG_ABUSE_SET_DMA_MODE, \ | 131 | IDE_HFLAG_ABUSE_SET_DMA_MODE, \ |
132 | .pio_mask = ATA_PIO4, \ | 132 | .pio_mask = ATA_PIO4, \ |