diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-27 17:29:03 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-27 17:29:03 -0500 |
commit | 7749c902592f610dc448830210174ab922f54be9 (patch) | |
tree | aad9430a5d5ff71b68b4f798859a5ac98143d005 /drivers | |
parent | 2ea0718884c520f85c869c3bfef57477316ea91f (diff) | |
parent | 6413f08666830afec21e41e50c28a2c5105ede69 (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:
ide-scsi: use print_hex_dump from <linux/kernel.h>
ide: More TSST drives with broken cable detection
ali14xx: constify __initdata
ide: remove bogus ide_fix_driveid() comment
trm290: remove bogus init_hwif_trm290() comment
piix: add HP compaq laptop to short cable list
alim15x3: add Mitac 8317 and derivatives to ali_cable_override()
ide: add TORiSAN model: CD-ROM CDR_U200 fw: 1.09 to DMA blacklist
amd74xx: arm hack
drivers/ide: Add missing "space"
ide-cris: don't override ide_register_hw() result
ide: move CONFIG_IDE_ETRAX to drivers/ide/Kconfig
ide: add CONFIG_IDE_H8300 config option
ide/Kconfig: fix mpc8xx host driver dependencies
macide/q40ide: add missing __init tag to {macide,q40ide}_init()
aec62xx: Fix kernel oops in driver's probe function
ide: skip ide_wait_not_busy() on noprobe-disks
siimage: remove resetproc() method
ide: don't set PIO mode on pre-EIDE drives
sis5513.c: Add Packard Bell EasyNote K5305 to laptops
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ide/Kconfig | 47 | ||||
-rw-r--r-- | drivers/ide/Makefile | 2 | ||||
-rw-r--r-- | drivers/ide/cris/ide-cris.c | 7 | ||||
-rw-r--r-- | drivers/ide/ide-dma.c | 1 | ||||
-rw-r--r-- | drivers/ide/ide-iops.c | 13 | ||||
-rw-r--r-- | drivers/ide/ide-probe.c | 32 | ||||
-rw-r--r-- | drivers/ide/legacy/ali14xx.c | 7 | ||||
-rw-r--r-- | drivers/ide/legacy/macide.c | 2 | ||||
-rw-r--r-- | drivers/ide/legacy/q40ide.c | 2 | ||||
-rw-r--r-- | drivers/ide/pci/aec62xx.c | 11 | ||||
-rw-r--r-- | drivers/ide/pci/alim15x3.c | 5 | ||||
-rw-r--r-- | drivers/ide/pci/piix.c | 1 | ||||
-rw-r--r-- | drivers/ide/pci/siimage.c | 45 | ||||
-rw-r--r-- | drivers/ide/pci/sis5513.c | 1 | ||||
-rw-r--r-- | drivers/ide/pci/trm290.c | 3 | ||||
-rw-r--r-- | drivers/ide/ppc/pmac.c | 2 | ||||
-rw-r--r-- | drivers/scsi/ide-scsi.c | 22 |
17 files changed, 112 insertions, 91 deletions
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig index e445fe6e4ba9..45b22282f149 100644 --- a/drivers/ide/Kconfig +++ b/drivers/ide/Kconfig | |||
@@ -313,7 +313,6 @@ comment "IDE chipset support/bugfixes" | |||
313 | 313 | ||
314 | config IDE_GENERIC | 314 | config IDE_GENERIC |
315 | tristate "generic/default IDE chipset support" | 315 | tristate "generic/default IDE chipset support" |
316 | default H8300 | ||
317 | help | 316 | help |
318 | If unsure, say N. | 317 | If unsure, say N. |
319 | 318 | ||
@@ -484,6 +483,7 @@ config WDC_ALI15X3 | |||
484 | 483 | ||
485 | config BLK_DEV_AMD74XX | 484 | config BLK_DEV_AMD74XX |
486 | tristate "AMD and nVidia IDE support" | 485 | tristate "AMD and nVidia IDE support" |
486 | depends on !ARM | ||
487 | select BLK_DEV_IDEDMA_PCI | 487 | select BLK_DEV_IDEDMA_PCI |
488 | help | 488 | help |
489 | This driver adds explicit support for AMD-7xx and AMD-8111 chips | 489 | This driver adds explicit support for AMD-7xx and AMD-8111 chips |
@@ -883,6 +883,49 @@ config BLK_DEV_IDE_BAST | |||
883 | Say Y here if you want to support the onboard IDE channels on the | 883 | Say Y here if you want to support the onboard IDE channels on the |
884 | Simtec BAST or the Thorcom VR1000 | 884 | Simtec BAST or the Thorcom VR1000 |
885 | 885 | ||
886 | config ETRAX_IDE | ||
887 | bool "ETRAX IDE support" | ||
888 | depends on CRIS && BROKEN | ||
889 | select BLK_DEV_IDEDMA | ||
890 | select IDE_GENERIC | ||
891 | help | ||
892 | Enables the ETRAX IDE driver. | ||
893 | |||
894 | You can't use parallel ports or SCSI ports at the same time. | ||
895 | |||
896 | config ETRAX_IDE_DELAY | ||
897 | int "Delay for drives to regain consciousness" | ||
898 | depends on ETRAX_IDE && ETRAX_ARCH_V10 | ||
899 | default 15 | ||
900 | help | ||
901 | Number of seconds to wait for IDE drives to spin up after an IDE | ||
902 | reset. | ||
903 | |||
904 | choice | ||
905 | prompt "IDE reset pin" | ||
906 | depends on ETRAX_IDE && ETRAX_ARCH_V10 | ||
907 | default ETRAX_IDE_PB7_RESET | ||
908 | |||
909 | config ETRAX_IDE_PB7_RESET | ||
910 | bool "Port_PB_Bit_7" | ||
911 | help | ||
912 | IDE reset on pin 7 on port B | ||
913 | |||
914 | config ETRAX_IDE_G27_RESET | ||
915 | bool "Port_G_Bit_27" | ||
916 | help | ||
917 | IDE reset on pin 27 on port G | ||
918 | |||
919 | endchoice | ||
920 | |||
921 | config IDE_H8300 | ||
922 | bool "H8300 IDE support" | ||
923 | depends on H8300 | ||
924 | select IDE_GENERIC | ||
925 | default y | ||
926 | help | ||
927 | Enables the H8300 IDE driver. | ||
928 | |||
886 | config BLK_DEV_GAYLE | 929 | config BLK_DEV_GAYLE |
887 | bool "Amiga Gayle IDE interface support" | 930 | bool "Amiga Gayle IDE interface support" |
888 | depends on AMIGA | 931 | depends on AMIGA |
@@ -963,7 +1006,7 @@ config BLK_DEV_Q40IDE | |||
963 | 1006 | ||
964 | config BLK_DEV_MPC8xx_IDE | 1007 | config BLK_DEV_MPC8xx_IDE |
965 | bool "MPC8xx IDE support" | 1008 | bool "MPC8xx IDE support" |
966 | depends on 8xx && IDE=y && BLK_DEV_IDE=y && !PPC_MERGE | 1009 | depends on 8xx && (LWMON || IVMS8 || IVML24 || TQM8xxL) && IDE=y && BLK_DEV_IDE=y && !PPC_MERGE |
967 | select IDE_GENERIC | 1010 | select IDE_GENERIC |
968 | help | 1011 | help |
969 | This option provides support for IDE on Motorola MPC8xx Systems. | 1012 | This option provides support for IDE on Motorola MPC8xx Systems. |
diff --git a/drivers/ide/Makefile b/drivers/ide/Makefile index 75dc6969e0a7..b181fc672057 100644 --- a/drivers/ide/Makefile +++ b/drivers/ide/Makefile | |||
@@ -39,7 +39,7 @@ ide-core-$(CONFIG_BLK_DEV_MPC8xx_IDE) += ppc/mpc8xx.o | |||
39 | ide-core-$(CONFIG_BLK_DEV_IDE_PMAC) += ppc/pmac.o | 39 | ide-core-$(CONFIG_BLK_DEV_IDE_PMAC) += ppc/pmac.o |
40 | 40 | ||
41 | # built-in only drivers from h8300/ | 41 | # built-in only drivers from h8300/ |
42 | ide-core-$(CONFIG_H8300) += h8300/ide-h8300.o | 42 | ide-core-$(CONFIG_IDE_H8300) += h8300/ide-h8300.o |
43 | 43 | ||
44 | obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o | 44 | obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o |
45 | obj-$(CONFIG_IDE_GENERIC) += ide-generic.o | 45 | obj-$(CONFIG_IDE_GENERIC) += ide-generic.o |
diff --git a/drivers/ide/cris/ide-cris.c b/drivers/ide/cris/ide-cris.c index 7f5bc2ee6c7e..476e0d65ed43 100644 --- a/drivers/ide/cris/ide-cris.c +++ b/drivers/ide/cris/ide-cris.c | |||
@@ -773,15 +773,16 @@ init_e100_ide (void) | |||
773 | /* the IDE control register is at ATA address 6, with CS1 active instead of CS0 */ | 773 | /* the IDE control register is at ATA address 6, with CS1 active instead of CS0 */ |
774 | ide_offsets[IDE_CONTROL_OFFSET] = cris_ide_reg_addr(6, 1, 0); | 774 | ide_offsets[IDE_CONTROL_OFFSET] = cris_ide_reg_addr(6, 1, 0); |
775 | 775 | ||
776 | /* first fill in some stuff in the ide_hwifs fields */ | 776 | for (h = 0; h < 4; h++) { |
777 | ide_hwif_t *hwif = NULL; | ||
777 | 778 | ||
778 | for(h = 0; h < MAX_HWIFS; h++) { | ||
779 | ide_hwif_t *hwif = &ide_hwifs[h]; | ||
780 | ide_setup_ports(&hw, cris_ide_base_address(h), | 779 | ide_setup_ports(&hw, cris_ide_base_address(h), |
781 | ide_offsets, | 780 | ide_offsets, |
782 | 0, 0, cris_ide_ack_intr, | 781 | 0, 0, cris_ide_ack_intr, |
783 | ide_default_irq(0)); | 782 | ide_default_irq(0)); |
784 | ide_register_hw(&hw, NULL, 1, &hwif); | 783 | ide_register_hw(&hw, NULL, 1, &hwif); |
784 | if (hwif == NULL) | ||
785 | continue; | ||
785 | hwif->mmio = 1; | 786 | hwif->mmio = 1; |
786 | hwif->chipset = ide_etrax100; | 787 | hwif->chipset = ide_etrax100; |
787 | hwif->set_pio_mode = &cris_set_pio_mode; | 788 | hwif->set_pio_mode = &cris_set_pio_mode; |
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c index e3add70b9cd8..0d795a1678c7 100644 --- a/drivers/ide/ide-dma.c +++ b/drivers/ide/ide-dma.c | |||
@@ -130,6 +130,7 @@ static const struct drive_list_entry drive_blacklist [] = { | |||
130 | { "_NEC DV5800A", NULL }, | 130 | { "_NEC DV5800A", NULL }, |
131 | { "SAMSUNG CD-ROM SN-124", "N001" }, | 131 | { "SAMSUNG CD-ROM SN-124", "N001" }, |
132 | { "Seagate STT20000A", NULL }, | 132 | { "Seagate STT20000A", NULL }, |
133 | { "CD-ROM CDR_U200", "1.09" }, | ||
133 | { NULL , NULL } | 134 | { NULL , NULL } |
134 | 135 | ||
135 | }; | 136 | }; |
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index e17a9ee120ea..5c3256180ae5 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c | |||
@@ -303,9 +303,6 @@ void default_hwif_transport(ide_hwif_t *hwif) | |||
303 | hwif->atapi_output_bytes = atapi_output_bytes; | 303 | hwif->atapi_output_bytes = atapi_output_bytes; |
304 | } | 304 | } |
305 | 305 | ||
306 | /* | ||
307 | * Beginning of Taskfile OPCODE Library and feature sets. | ||
308 | */ | ||
309 | void ide_fix_driveid (struct hd_driveid *id) | 306 | void ide_fix_driveid (struct hd_driveid *id) |
310 | { | 307 | { |
311 | #ifndef __LITTLE_ENDIAN | 308 | #ifndef __LITTLE_ENDIAN |
@@ -592,6 +589,9 @@ EXPORT_SYMBOL_GPL(ide_in_drive_list); | |||
592 | static const struct drive_list_entry ivb_list[] = { | 589 | static const struct drive_list_entry ivb_list[] = { |
593 | { "QUANTUM FIREBALLlct10 05" , "A03.0900" }, | 590 | { "QUANTUM FIREBALLlct10 05" , "A03.0900" }, |
594 | { "TSSTcorp CDDVDW SH-S202J" , "SB00" }, | 591 | { "TSSTcorp CDDVDW SH-S202J" , "SB00" }, |
592 | { "TSSTcorp CDDVDW SH-S202J" , "SB01" }, | ||
593 | { "TSSTcorp CDDVDW SH-S202N" , "SB00" }, | ||
594 | { "TSSTcorp CDDVDW SH-S202N" , "SB01" }, | ||
595 | { NULL , NULL } | 595 | { NULL , NULL } |
596 | }; | 596 | }; |
597 | 597 | ||
@@ -756,7 +756,7 @@ int ide_driveid_update(ide_drive_t *drive) | |||
756 | int ide_config_drive_speed(ide_drive_t *drive, u8 speed) | 756 | int ide_config_drive_speed(ide_drive_t *drive, u8 speed) |
757 | { | 757 | { |
758 | ide_hwif_t *hwif = drive->hwif; | 758 | ide_hwif_t *hwif = drive->hwif; |
759 | int error; | 759 | int error = 0; |
760 | u8 stat; | 760 | u8 stat; |
761 | 761 | ||
762 | // while (HWGROUP(drive)->busy) | 762 | // while (HWGROUP(drive)->busy) |
@@ -767,6 +767,10 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed) | |||
767 | hwif->dma_host_off(drive); | 767 | hwif->dma_host_off(drive); |
768 | #endif | 768 | #endif |
769 | 769 | ||
770 | /* Skip setting PIO flow-control modes on pre-EIDE drives */ | ||
771 | if ((speed & 0xf8) == XFER_PIO_0 && !(drive->id->capability & 0x08)) | ||
772 | goto skip; | ||
773 | |||
770 | /* | 774 | /* |
771 | * Don't use ide_wait_cmd here - it will | 775 | * Don't use ide_wait_cmd here - it will |
772 | * attempt to set_geometry and recalibrate, | 776 | * attempt to set_geometry and recalibrate, |
@@ -814,6 +818,7 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed) | |||
814 | drive->id->dma_mword &= ~0x0F00; | 818 | drive->id->dma_mword &= ~0x0F00; |
815 | drive->id->dma_1word &= ~0x0F00; | 819 | drive->id->dma_1word &= ~0x0F00; |
816 | 820 | ||
821 | skip: | ||
817 | #ifdef CONFIG_BLK_DEV_IDEDMA | 822 | #ifdef CONFIG_BLK_DEV_IDEDMA |
818 | if (speed >= XFER_SW_DMA_0) | 823 | if (speed >= XFER_SW_DMA_0) |
819 | hwif->dma_host_on(drive); | 824 | hwif->dma_host_on(drive); |
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 56fb0b843429..ee848c705995 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
@@ -644,7 +644,7 @@ static void hwif_register (ide_hwif_t *hwif) | |||
644 | 644 | ||
645 | static int wait_hwif_ready(ide_hwif_t *hwif) | 645 | static int wait_hwif_ready(ide_hwif_t *hwif) |
646 | { | 646 | { |
647 | int rc; | 647 | int unit, rc; |
648 | 648 | ||
649 | printk(KERN_DEBUG "Probing IDE interface %s...\n", hwif->name); | 649 | printk(KERN_DEBUG "Probing IDE interface %s...\n", hwif->name); |
650 | 650 | ||
@@ -661,20 +661,26 @@ static int wait_hwif_ready(ide_hwif_t *hwif) | |||
661 | return rc; | 661 | return rc; |
662 | 662 | ||
663 | /* Now make sure both master & slave are ready */ | 663 | /* Now make sure both master & slave are ready */ |
664 | SELECT_DRIVE(&hwif->drives[0]); | 664 | for (unit = 0; unit < MAX_DRIVES; unit++) { |
665 | hwif->OUTB(8, hwif->io_ports[IDE_CONTROL_OFFSET]); | 665 | ide_drive_t *drive = &hwif->drives[unit]; |
666 | mdelay(2); | ||
667 | rc = ide_wait_not_busy(hwif, 35000); | ||
668 | if (rc) | ||
669 | return rc; | ||
670 | SELECT_DRIVE(&hwif->drives[1]); | ||
671 | hwif->OUTB(8, hwif->io_ports[IDE_CONTROL_OFFSET]); | ||
672 | mdelay(2); | ||
673 | rc = ide_wait_not_busy(hwif, 35000); | ||
674 | 666 | ||
667 | /* Ignore disks that we will not probe for later. */ | ||
668 | if (!drive->noprobe || drive->present) { | ||
669 | SELECT_DRIVE(drive); | ||
670 | hwif->OUTB(8, hwif->io_ports[IDE_CONTROL_OFFSET]); | ||
671 | mdelay(2); | ||
672 | rc = ide_wait_not_busy(hwif, 35000); | ||
673 | if (rc) | ||
674 | goto out; | ||
675 | } else | ||
676 | printk(KERN_DEBUG "%s: ide_wait_not_busy() skipped\n", | ||
677 | drive->name); | ||
678 | } | ||
679 | out: | ||
675 | /* Exit function with master reselected (let's be sane) */ | 680 | /* Exit function with master reselected (let's be sane) */ |
676 | SELECT_DRIVE(&hwif->drives[0]); | 681 | if (unit) |
677 | 682 | SELECT_DRIVE(&hwif->drives[0]); | |
683 | |||
678 | return rc; | 684 | return rc; |
679 | } | 685 | } |
680 | 686 | ||
diff --git a/drivers/ide/legacy/ali14xx.c b/drivers/ide/legacy/ali14xx.c index 10311ecc674a..38c3a6d63f30 100644 --- a/drivers/ide/legacy/ali14xx.c +++ b/drivers/ide/legacy/ali14xx.c | |||
@@ -53,12 +53,13 @@ | |||
53 | 53 | ||
54 | /* port addresses for auto-detection */ | 54 | /* port addresses for auto-detection */ |
55 | #define ALI_NUM_PORTS 4 | 55 | #define ALI_NUM_PORTS 4 |
56 | static int ports[ALI_NUM_PORTS] __initdata = {0x074, 0x0f4, 0x034, 0x0e4}; | 56 | static const int ports[ALI_NUM_PORTS] __initdata = |
57 | { 0x074, 0x0f4, 0x034, 0x0e4 }; | ||
57 | 58 | ||
58 | /* register initialization data */ | 59 | /* register initialization data */ |
59 | typedef struct { u8 reg, data; } RegInitializer; | 60 | typedef struct { u8 reg, data; } RegInitializer; |
60 | 61 | ||
61 | static RegInitializer initData[] __initdata = { | 62 | static const RegInitializer initData[] __initdata = { |
62 | {0x01, 0x0f}, {0x02, 0x00}, {0x03, 0x00}, {0x04, 0x00}, | 63 | {0x01, 0x0f}, {0x02, 0x00}, {0x03, 0x00}, {0x04, 0x00}, |
63 | {0x05, 0x00}, {0x06, 0x00}, {0x07, 0x2b}, {0x0a, 0x0f}, | 64 | {0x05, 0x00}, {0x06, 0x00}, {0x07, 0x2b}, {0x0a, 0x0f}, |
64 | {0x25, 0x00}, {0x26, 0x00}, {0x27, 0x00}, {0x28, 0x00}, | 65 | {0x25, 0x00}, {0x26, 0x00}, {0x27, 0x00}, {0x28, 0x00}, |
@@ -177,7 +178,7 @@ static int __init findPort (void) | |||
177 | * Initialize controller registers with default values. | 178 | * Initialize controller registers with default values. |
178 | */ | 179 | */ |
179 | static int __init initRegisters (void) { | 180 | static int __init initRegisters (void) { |
180 | RegInitializer *p; | 181 | const RegInitializer *p; |
181 | u8 t; | 182 | u8 t; |
182 | unsigned long flags; | 183 | unsigned long flags; |
183 | 184 | ||
diff --git a/drivers/ide/legacy/macide.c b/drivers/ide/legacy/macide.c index e87cd2f16430..5c6aa77c2370 100644 --- a/drivers/ide/legacy/macide.c +++ b/drivers/ide/legacy/macide.c | |||
@@ -81,7 +81,7 @@ int macide_ack_intr(ide_hwif_t* hwif) | |||
81 | * Probe for a Macintosh IDE interface | 81 | * Probe for a Macintosh IDE interface |
82 | */ | 82 | */ |
83 | 83 | ||
84 | void macide_init(void) | 84 | void __init macide_init(void) |
85 | { | 85 | { |
86 | hw_regs_t hw; | 86 | hw_regs_t hw; |
87 | ide_hwif_t *hwif; | 87 | ide_hwif_t *hwif; |
diff --git a/drivers/ide/legacy/q40ide.c b/drivers/ide/legacy/q40ide.c index a73db1bd482d..6ea46a6723e2 100644 --- a/drivers/ide/legacy/q40ide.c +++ b/drivers/ide/legacy/q40ide.c | |||
@@ -111,7 +111,7 @@ static const char *q40_ide_names[Q40IDE_NUM_HWIFS]={ | |||
111 | * Probe for Q40 IDE interfaces | 111 | * Probe for Q40 IDE interfaces |
112 | */ | 112 | */ |
113 | 113 | ||
114 | void q40ide_init(void) | 114 | void __init q40ide_init(void) |
115 | { | 115 | { |
116 | int i; | 116 | int i; |
117 | ide_hwif_t *hwif; | 117 | ide_hwif_t *hwif; |
diff --git a/drivers/ide/pci/aec62xx.c b/drivers/ide/pci/aec62xx.c index 19ec421f7b9f..44268504ae43 100644 --- a/drivers/ide/pci/aec62xx.c +++ b/drivers/ide/pci/aec62xx.c | |||
@@ -260,6 +260,11 @@ static int __devinit aec62xx_init_one(struct pci_dev *dev, const struct pci_devi | |||
260 | { | 260 | { |
261 | struct ide_port_info d; | 261 | struct ide_port_info d; |
262 | u8 idx = id->driver_data; | 262 | u8 idx = id->driver_data; |
263 | int err; | ||
264 | |||
265 | err = pci_enable_device(dev); | ||
266 | if (err) | ||
267 | return err; | ||
263 | 268 | ||
264 | d = aec62xx_chipsets[idx]; | 269 | d = aec62xx_chipsets[idx]; |
265 | 270 | ||
@@ -272,7 +277,11 @@ static int __devinit aec62xx_init_one(struct pci_dev *dev, const struct pci_devi | |||
272 | } | 277 | } |
273 | } | 278 | } |
274 | 279 | ||
275 | return ide_setup_pci_device(dev, &d); | 280 | err = ide_setup_pci_device(dev, &d); |
281 | if (err) | ||
282 | pci_disable_device(dev); | ||
283 | |||
284 | return err; | ||
276 | } | 285 | } |
277 | 286 | ||
278 | static const struct pci_device_id aec62xx_pci_tbl[] = { | 287 | static const struct pci_device_id aec62xx_pci_tbl[] = { |
diff --git a/drivers/ide/pci/alim15x3.c b/drivers/ide/pci/alim15x3.c index a607dd31a64c..ce293936af4b 100644 --- a/drivers/ide/pci/alim15x3.c +++ b/drivers/ide/pci/alim15x3.c | |||
@@ -603,6 +603,11 @@ static int ali_cable_override(struct pci_dev *pdev) | |||
603 | pdev->subsystem_device == 0x10AF) | 603 | pdev->subsystem_device == 0x10AF) |
604 | return 1; | 604 | return 1; |
605 | 605 | ||
606 | /* Mitac 8317 (Winbook-A) and relatives */ | ||
607 | if (pdev->subsystem_vendor == 0x1071 && | ||
608 | pdev->subsystem_device == 0x8317) | ||
609 | return 1; | ||
610 | |||
606 | /* Systems by DMI */ | 611 | /* Systems by DMI */ |
607 | if (dmi_check_system(cable_dmi_table)) | 612 | if (dmi_check_system(cable_dmi_table)) |
608 | return 1; | 613 | return 1; |
diff --git a/drivers/ide/pci/piix.c b/drivers/ide/pci/piix.c index 63625a0be712..27781d294cea 100644 --- a/drivers/ide/pci/piix.c +++ b/drivers/ide/pci/piix.c | |||
@@ -306,6 +306,7 @@ static const struct ich_laptop ich_laptop[] = { | |||
306 | { 0x27DF, 0x0005, 0x0280 }, /* ICH7 on Acer 5602WLMi */ | 306 | { 0x27DF, 0x0005, 0x0280 }, /* ICH7 on Acer 5602WLMi */ |
307 | { 0x27DF, 0x1025, 0x0110 }, /* ICH7 on Acer 3682WLMi */ | 307 | { 0x27DF, 0x1025, 0x0110 }, /* ICH7 on Acer 3682WLMi */ |
308 | { 0x27DF, 0x1043, 0x1267 }, /* ICH7 on Asus W5F */ | 308 | { 0x27DF, 0x1043, 0x1267 }, /* ICH7 on Asus W5F */ |
309 | { 0x27DF, 0x103C, 0x30A1 }, /* ICH7 on HP Compaq nc2400 */ | ||
309 | { 0x24CA, 0x1025, 0x0061 }, /* ICH4 on Acer Aspire 2023WLMi */ | 310 | { 0x24CA, 0x1025, 0x0061 }, /* ICH4 on Acer Aspire 2023WLMi */ |
310 | /* end marker */ | 311 | /* end marker */ |
311 | { 0, } | 312 | { 0, } |
diff --git a/drivers/ide/pci/siimage.c b/drivers/ide/pci/siimage.c index 6d99441c605b..5709c252543b 100644 --- a/drivers/ide/pci/siimage.c +++ b/drivers/ide/pci/siimage.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/drivers/ide/pci/siimage.c Version 1.18 Oct 18 2007 | 2 | * linux/drivers/ide/pci/siimage.c Version 1.19 Nov 16 2007 |
3 | * | 3 | * |
4 | * Copyright (C) 2001-2002 Andre Hedrick <andre@linux-ide.org> | 4 | * Copyright (C) 2001-2002 Andre Hedrick <andre@linux-ide.org> |
5 | * Copyright (C) 2003 Red Hat <alan@redhat.com> | 5 | * Copyright (C) 2003 Red Hat <alan@redhat.com> |
@@ -460,48 +460,6 @@ static void sil_sata_pre_reset(ide_drive_t *drive) | |||
460 | } | 460 | } |
461 | 461 | ||
462 | /** | 462 | /** |
463 | * siimage_reset - reset a device on an siimage controller | ||
464 | * @drive: drive to reset | ||
465 | * | ||
466 | * Perform a controller level reset fo the device. For | ||
467 | * SATA we must also check the PHY. | ||
468 | */ | ||
469 | |||
470 | static void siimage_reset (ide_drive_t *drive) | ||
471 | { | ||
472 | ide_hwif_t *hwif = HWIF(drive); | ||
473 | u8 reset = 0; | ||
474 | unsigned long addr = siimage_selreg(hwif, 0); | ||
475 | |||
476 | if (hwif->mmio) { | ||
477 | reset = hwif->INB(addr); | ||
478 | hwif->OUTB((reset|0x03), addr); | ||
479 | /* FIXME:posting */ | ||
480 | udelay(25); | ||
481 | hwif->OUTB(reset, addr); | ||
482 | (void) hwif->INB(addr); | ||
483 | } else { | ||
484 | pci_read_config_byte(hwif->pci_dev, addr, &reset); | ||
485 | pci_write_config_byte(hwif->pci_dev, addr, reset|0x03); | ||
486 | udelay(25); | ||
487 | pci_write_config_byte(hwif->pci_dev, addr, reset); | ||
488 | pci_read_config_byte(hwif->pci_dev, addr, &reset); | ||
489 | } | ||
490 | |||
491 | if (SATA_STATUS_REG) { | ||
492 | /* SATA_STATUS_REG is valid only when in MMIO mode */ | ||
493 | u32 sata_stat = readl((void __iomem *)SATA_STATUS_REG); | ||
494 | printk(KERN_WARNING "%s: reset phy, status=0x%08x, %s\n", | ||
495 | hwif->name, sata_stat, __FUNCTION__); | ||
496 | if (!(sata_stat)) { | ||
497 | printk(KERN_WARNING "%s: reset phy dead, status=0x%08x\n", | ||
498 | hwif->name, sata_stat); | ||
499 | drive->failures++; | ||
500 | } | ||
501 | } | ||
502 | } | ||
503 | |||
504 | /** | ||
505 | * proc_reports_siimage - add siimage controller to proc | 463 | * proc_reports_siimage - add siimage controller to proc |
506 | * @dev: PCI device | 464 | * @dev: PCI device |
507 | * @clocking: SCSC value | 465 | * @clocking: SCSC value |
@@ -857,7 +815,6 @@ static void __devinit init_hwif_siimage(ide_hwif_t *hwif) | |||
857 | { | 815 | { |
858 | u8 sata = is_sata(hwif); | 816 | u8 sata = is_sata(hwif); |
859 | 817 | ||
860 | hwif->resetproc = &siimage_reset; | ||
861 | hwif->set_pio_mode = &sil_set_pio_mode; | 818 | hwif->set_pio_mode = &sil_set_pio_mode; |
862 | hwif->set_dma_mode = &sil_set_dma_mode; | 819 | hwif->set_dma_mode = &sil_set_dma_mode; |
863 | 820 | ||
diff --git a/drivers/ide/pci/sis5513.c b/drivers/ide/pci/sis5513.c index f6e2ab3dd166..d90b42917775 100644 --- a/drivers/ide/pci/sis5513.c +++ b/drivers/ide/pci/sis5513.c | |||
@@ -526,6 +526,7 @@ static const struct sis_laptop sis_laptop[] = { | |||
526 | /* devid, subvendor, subdev */ | 526 | /* devid, subvendor, subdev */ |
527 | { 0x5513, 0x1043, 0x1107 }, /* ASUS A6K */ | 527 | { 0x5513, 0x1043, 0x1107 }, /* ASUS A6K */ |
528 | { 0x5513, 0x1734, 0x105f }, /* FSC Amilo A1630 */ | 528 | { 0x5513, 0x1734, 0x105f }, /* FSC Amilo A1630 */ |
529 | { 0x5513, 0x1071, 0x8640 }, /* EasyNote K5305 */ | ||
529 | /* end marker */ | 530 | /* end marker */ |
530 | { 0, } | 531 | { 0, } |
531 | }; | 532 | }; |
diff --git a/drivers/ide/pci/trm290.c b/drivers/ide/pci/trm290.c index 5011ba22e36c..0895e753a35d 100644 --- a/drivers/ide/pci/trm290.c +++ b/drivers/ide/pci/trm290.c | |||
@@ -240,9 +240,6 @@ static int trm290_ide_dma_test_irq (ide_drive_t *drive) | |||
240 | return (status == 0x00ff); | 240 | return (status == 0x00ff); |
241 | } | 241 | } |
242 | 242 | ||
243 | /* | ||
244 | * Invoked from ide-dma.c at boot time. | ||
245 | */ | ||
246 | static void __devinit init_hwif_trm290(ide_hwif_t *hwif) | 243 | static void __devinit init_hwif_trm290(ide_hwif_t *hwif) |
247 | { | 244 | { |
248 | unsigned int cfgbase = 0; | 245 | unsigned int cfgbase = 0; |
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c index 5afdfef7264c..7f7a59885777 100644 --- a/drivers/ide/ppc/pmac.c +++ b/drivers/ide/ppc/pmac.c | |||
@@ -1513,7 +1513,7 @@ pmac_ide_build_dmatable(ide_drive_t *drive, struct request *rq) | |||
1513 | 1513 | ||
1514 | if (pmif->broken_dma && cur_addr & (L1_CACHE_BYTES - 1)) { | 1514 | if (pmif->broken_dma && cur_addr & (L1_CACHE_BYTES - 1)) { |
1515 | if (pmif->broken_dma_warn == 0) { | 1515 | if (pmif->broken_dma_warn == 0) { |
1516 | printk(KERN_WARNING "%s: DMA on non aligned address," | 1516 | printk(KERN_WARNING "%s: DMA on non aligned address, " |
1517 | "switching to PIO on Ohare chipset\n", drive->name); | 1517 | "switching to PIO on Ohare chipset\n", drive->name); |
1518 | pmif->broken_dma_warn = 1; | 1518 | pmif->broken_dma_warn = 1; |
1519 | } | 1519 | } |
diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c index 8d0244c2e7d4..7a835a35f21d 100644 --- a/drivers/scsi/ide-scsi.c +++ b/drivers/scsi/ide-scsi.c | |||
@@ -242,16 +242,6 @@ static void idescsi_output_buffers (ide_drive_t *drive, idescsi_pc_t *pc, unsign | |||
242 | } | 242 | } |
243 | } | 243 | } |
244 | 244 | ||
245 | static void hexdump(u8 *x, int len) | ||
246 | { | ||
247 | int i; | ||
248 | |||
249 | printk("[ "); | ||
250 | for (i = 0; i < len; i++) | ||
251 | printk("%x ", x[i]); | ||
252 | printk("]\n"); | ||
253 | } | ||
254 | |||
255 | static int idescsi_check_condition(ide_drive_t *drive, struct request *failed_command) | 245 | static int idescsi_check_condition(ide_drive_t *drive, struct request *failed_command) |
256 | { | 246 | { |
257 | idescsi_scsi_t *scsi = drive_to_idescsi(drive); | 247 | idescsi_scsi_t *scsi = drive_to_idescsi(drive); |
@@ -282,7 +272,8 @@ static int idescsi_check_condition(ide_drive_t *drive, struct request *failed_co | |||
282 | pc->scsi_cmd = ((idescsi_pc_t *) failed_command->special)->scsi_cmd; | 272 | pc->scsi_cmd = ((idescsi_pc_t *) failed_command->special)->scsi_cmd; |
283 | if (test_bit(IDESCSI_LOG_CMD, &scsi->log)) { | 273 | if (test_bit(IDESCSI_LOG_CMD, &scsi->log)) { |
284 | printk ("ide-scsi: %s: queue cmd = ", drive->name); | 274 | printk ("ide-scsi: %s: queue cmd = ", drive->name); |
285 | hexdump(pc->c, 6); | 275 | print_hex_dump(KERN_CONT, "", DUMP_PREFIX_NONE, 16, 1, pc->c, |
276 | 6, 0); | ||
286 | } | 277 | } |
287 | rq->rq_disk = scsi->disk; | 278 | rq->rq_disk = scsi->disk; |
288 | return ide_do_drive_cmd(drive, rq, ide_preempt); | 279 | return ide_do_drive_cmd(drive, rq, ide_preempt); |
@@ -337,7 +328,8 @@ static int idescsi_end_request (ide_drive_t *drive, int uptodate, int nrsecs) | |||
337 | idescsi_pc_t *opc = (idescsi_pc_t *) rq->buffer; | 328 | idescsi_pc_t *opc = (idescsi_pc_t *) rq->buffer; |
338 | if (log) { | 329 | if (log) { |
339 | printk ("ide-scsi: %s: wrap up check %lu, rst = ", drive->name, opc->scsi_cmd->serial_number); | 330 | printk ("ide-scsi: %s: wrap up check %lu, rst = ", drive->name, opc->scsi_cmd->serial_number); |
340 | hexdump(pc->buffer,16); | 331 | print_hex_dump(KERN_CONT, "", DUMP_PREFIX_NONE, 16, 1, |
332 | pc->buffer, 16, 0); | ||
341 | } | 333 | } |
342 | memcpy((void *) opc->scsi_cmd->sense_buffer, pc->buffer, SCSI_SENSE_BUFFERSIZE); | 334 | memcpy((void *) opc->scsi_cmd->sense_buffer, pc->buffer, SCSI_SENSE_BUFFERSIZE); |
343 | kfree(pc->buffer); | 335 | kfree(pc->buffer); |
@@ -816,10 +808,12 @@ static int idescsi_queue (struct scsi_cmnd *cmd, | |||
816 | 808 | ||
817 | if (test_bit(IDESCSI_LOG_CMD, &scsi->log)) { | 809 | if (test_bit(IDESCSI_LOG_CMD, &scsi->log)) { |
818 | printk ("ide-scsi: %s: que %lu, cmd = ", drive->name, cmd->serial_number); | 810 | printk ("ide-scsi: %s: que %lu, cmd = ", drive->name, cmd->serial_number); |
819 | hexdump(cmd->cmnd, cmd->cmd_len); | 811 | print_hex_dump(KERN_CONT, "", DUMP_PREFIX_NONE, 16, 1, |
812 | cmd->cmnd, cmd->cmd_len, 0); | ||
820 | if (memcmp(pc->c, cmd->cmnd, cmd->cmd_len)) { | 813 | if (memcmp(pc->c, cmd->cmnd, cmd->cmd_len)) { |
821 | printk ("ide-scsi: %s: que %lu, tsl = ", drive->name, cmd->serial_number); | 814 | printk ("ide-scsi: %s: que %lu, tsl = ", drive->name, cmd->serial_number); |
822 | hexdump(pc->c, 12); | 815 | print_hex_dump(KERN_CONT, "", DUMP_PREFIX_NONE, 16, 1, |
816 | pc->c, 12, 0); | ||
823 | } | 817 | } |
824 | } | 818 | } |
825 | 819 | ||