aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-27 17:29:03 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-11-27 17:29:03 -0500
commit7749c902592f610dc448830210174ab922f54be9 (patch)
treeaad9430a5d5ff71b68b4f798859a5ac98143d005 /drivers
parent2ea0718884c520f85c869c3bfef57477316ea91f (diff)
parent6413f08666830afec21e41e50c28a2c5105ede69 (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/Kconfig47
-rw-r--r--drivers/ide/Makefile2
-rw-r--r--drivers/ide/cris/ide-cris.c7
-rw-r--r--drivers/ide/ide-dma.c1
-rw-r--r--drivers/ide/ide-iops.c13
-rw-r--r--drivers/ide/ide-probe.c32
-rw-r--r--drivers/ide/legacy/ali14xx.c7
-rw-r--r--drivers/ide/legacy/macide.c2
-rw-r--r--drivers/ide/legacy/q40ide.c2
-rw-r--r--drivers/ide/pci/aec62xx.c11
-rw-r--r--drivers/ide/pci/alim15x3.c5
-rw-r--r--drivers/ide/pci/piix.c1
-rw-r--r--drivers/ide/pci/siimage.c45
-rw-r--r--drivers/ide/pci/sis5513.c1
-rw-r--r--drivers/ide/pci/trm290.c3
-rw-r--r--drivers/ide/ppc/pmac.c2
-rw-r--r--drivers/scsi/ide-scsi.c22
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
314config IDE_GENERIC 314config 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
485config BLK_DEV_AMD74XX 484config 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
886config 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
896config 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
904choice
905 prompt "IDE reset pin"
906 depends on ETRAX_IDE && ETRAX_ARCH_V10
907 default ETRAX_IDE_PB7_RESET
908
909config ETRAX_IDE_PB7_RESET
910 bool "Port_PB_Bit_7"
911 help
912 IDE reset on pin 7 on port B
913
914config ETRAX_IDE_G27_RESET
915 bool "Port_G_Bit_27"
916 help
917 IDE reset on pin 27 on port G
918
919endchoice
920
921config 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
886config BLK_DEV_GAYLE 929config 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
964config BLK_DEV_MPC8xx_IDE 1007config 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
39ide-core-$(CONFIG_BLK_DEV_IDE_PMAC) += ppc/pmac.o 39ide-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/
42ide-core-$(CONFIG_H8300) += h8300/ide-h8300.o 42ide-core-$(CONFIG_IDE_H8300) += h8300/ide-h8300.o
43 43
44obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o 44obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o
45obj-$(CONFIG_IDE_GENERIC) += ide-generic.o 45obj-$(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 */
309void ide_fix_driveid (struct hd_driveid *id) 306void 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);
592static const struct drive_list_entry ivb_list[] = { 589static 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)
756int ide_config_drive_speed(ide_drive_t *drive, u8 speed) 756int 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
645static int wait_hwif_ready(ide_hwif_t *hwif) 645static 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 }
679out:
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
56static int ports[ALI_NUM_PORTS] __initdata = {0x074, 0x0f4, 0x034, 0x0e4}; 56static const int ports[ALI_NUM_PORTS] __initdata =
57 { 0x074, 0x0f4, 0x034, 0x0e4 };
57 58
58/* register initialization data */ 59/* register initialization data */
59typedef struct { u8 reg, data; } RegInitializer; 60typedef struct { u8 reg, data; } RegInitializer;
60 61
61static RegInitializer initData[] __initdata = { 62static 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 */
179static int __init initRegisters (void) { 180static 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
84void macide_init(void) 84void __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
114void q40ide_init(void) 114void __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
278static const struct pci_device_id aec62xx_pci_tbl[] = { 287static 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
470static 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 */
246static void __devinit init_hwif_trm290(ide_hwif_t *hwif) 243static 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
245static 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
255static int idescsi_check_condition(ide_drive_t *drive, struct request *failed_command) 245static 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