aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJesse Barnes <jbarnes@hobbes.lan>2008-06-12 15:06:58 -0400
committerJesse Barnes <jbarnes@virtuousgeek.org>2008-06-12 15:06:58 -0400
commit53eb2fbeb9e68e1a9a23945de8450999c46270ce (patch)
tree3c50f8690f63b53b3cffbcc226cbbe3c8c6de753 /drivers
parent8344b568f5bdc7ee1bba909de3294c6348c36056 (diff)
parent0e6859d49ff194e01afc229c996e3aefca1a0539 (diff)
Merge branch 'suspend' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 into linux-next
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/sleep/main.c39
-rw-r--r--drivers/ide/Kconfig1
-rw-r--r--drivers/ide/arm/bast-ide.c1
-rw-r--r--drivers/ide/arm/ide_arm.c1
-rw-r--r--drivers/ide/arm/palm_bk3710.c3
-rw-r--r--drivers/ide/ide-generic.c1
-rw-r--r--drivers/ide/ide-pnp.c1
-rw-r--r--drivers/ide/ide-probe.c6
-rw-r--r--drivers/ide/ide-proc.c1
-rw-r--r--drivers/ide/legacy/buddha.c2
-rw-r--r--drivers/ide/legacy/falconide.c2
-rw-r--r--drivers/ide/legacy/gayle.c6
-rw-r--r--drivers/ide/legacy/macide.c2
-rw-r--r--drivers/ide/legacy/q40ide.c2
-rw-r--r--drivers/ide/pci/cmd640.c2
-rw-r--r--drivers/ide/pci/delkin_cb.c28
-rw-r--r--drivers/ide/pci/sis5513.c5
-rw-r--r--drivers/ide/ppc/mpc8xx.c4
-rw-r--r--drivers/pci/pci-acpi.c6
-rw-r--r--drivers/pci/pci.c4
-rw-r--r--drivers/pci/pci.h3
-rw-r--r--drivers/pnp/pnpacpi/core.c4
-rw-r--r--drivers/s390/char/sclp_vt220.c1
-rw-r--r--drivers/s390/char/tape_3590.c2
-rw-r--r--drivers/s390/cio/blacklist.c6
-rw-r--r--drivers/s390/cio/cio.c20
26 files changed, 70 insertions, 83 deletions
diff --git a/drivers/acpi/sleep/main.c b/drivers/acpi/sleep/main.c
index c3b0cd88d09f..0f2caea2fc83 100644
--- a/drivers/acpi/sleep/main.c
+++ b/drivers/acpi/sleep/main.c
@@ -62,8 +62,6 @@ static u32 acpi_suspend_states[] = {
62 [PM_SUSPEND_MAX] = ACPI_STATE_S5 62 [PM_SUSPEND_MAX] = ACPI_STATE_S5
63}; 63};
64 64
65static int init_8259A_after_S1;
66
67/** 65/**
68 * acpi_suspend_begin - Set the target system sleep state to the state 66 * acpi_suspend_begin - Set the target system sleep state to the state
69 * associated with given @pm_state, if supported. 67 * associated with given @pm_state, if supported.
@@ -186,13 +184,6 @@ static void acpi_suspend_finish(void)
186 acpi_set_firmware_waking_vector((acpi_physical_address) 0); 184 acpi_set_firmware_waking_vector((acpi_physical_address) 0);
187 185
188 acpi_target_sleep_state = ACPI_STATE_S0; 186 acpi_target_sleep_state = ACPI_STATE_S0;
189
190#ifdef CONFIG_X86
191 if (init_8259A_after_S1) {
192 printk("Broken toshiba laptop -> kicking interrupts\n");
193 init_8259A(0);
194 }
195#endif
196} 187}
197 188
198/** 189/**
@@ -232,26 +223,6 @@ static struct platform_suspend_ops acpi_suspend_ops = {
232 .finish = acpi_suspend_finish, 223 .finish = acpi_suspend_finish,
233 .end = acpi_suspend_end, 224 .end = acpi_suspend_end,
234}; 225};
235
236/*
237 * Toshiba fails to preserve interrupts over S1, reinitialization
238 * of 8259 is needed after S1 resume.
239 */
240static int __init init_ints_after_s1(const struct dmi_system_id *d)
241{
242 printk(KERN_WARNING "%s with broken S1 detected.\n", d->ident);
243 init_8259A_after_S1 = 1;
244 return 0;
245}
246
247static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
248 {
249 .callback = init_ints_after_s1,
250 .ident = "Toshiba Satellite 4030cdt",
251 .matches = {DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),},
252 },
253 {},
254};
255#endif /* CONFIG_SUSPEND */ 226#endif /* CONFIG_SUSPEND */
256 227
257#ifdef CONFIG_HIBERNATION 228#ifdef CONFIG_HIBERNATION
@@ -369,8 +340,8 @@ int acpi_suspend(u32 acpi_state)
369/** 340/**
370 * acpi_pm_device_sleep_state - return preferred power state of ACPI device 341 * acpi_pm_device_sleep_state - return preferred power state of ACPI device
371 * in the system sleep state given by %acpi_target_sleep_state 342 * in the system sleep state given by %acpi_target_sleep_state
372 * @dev: device to examine 343 * @dev: device to examine; its driver model wakeup flags control
373 * @wake: if set, the device should be able to wake up the system 344 * whether it should be able to wake up the system
374 * @d_min_p: used to store the upper limit of allowed states range 345 * @d_min_p: used to store the upper limit of allowed states range
375 * Return value: preferred power state of the device on success, -ENODEV on 346 * Return value: preferred power state of the device on success, -ENODEV on
376 * failure (ie. if there's no 'struct acpi_device' for @dev) 347 * failure (ie. if there's no 'struct acpi_device' for @dev)
@@ -388,7 +359,7 @@ int acpi_suspend(u32 acpi_state)
388 * via @wake. 359 * via @wake.
389 */ 360 */
390 361
391int acpi_pm_device_sleep_state(struct device *dev, int wake, int *d_min_p) 362int acpi_pm_device_sleep_state(struct device *dev, int *d_min_p)
392{ 363{
393 acpi_handle handle = DEVICE_ACPI_HANDLE(dev); 364 acpi_handle handle = DEVICE_ACPI_HANDLE(dev);
394 struct acpi_device *adev; 365 struct acpi_device *adev;
@@ -427,7 +398,7 @@ int acpi_pm_device_sleep_state(struct device *dev, int wake, int *d_min_p)
427 * can wake the system. _S0W may be valid, too. 398 * can wake the system. _S0W may be valid, too.
428 */ 399 */
429 if (acpi_target_sleep_state == ACPI_STATE_S0 || 400 if (acpi_target_sleep_state == ACPI_STATE_S0 ||
430 (wake && adev->wakeup.state.enabled && 401 (device_may_wakeup(dev) && adev->wakeup.state.enabled &&
431 adev->wakeup.sleep_state <= acpi_target_sleep_state)) { 402 adev->wakeup.sleep_state <= acpi_target_sleep_state)) {
432 acpi_status status; 403 acpi_status status;
433 404
@@ -473,8 +444,6 @@ int __init acpi_sleep_init(void)
473 u8 type_a, type_b; 444 u8 type_a, type_b;
474#ifdef CONFIG_SUSPEND 445#ifdef CONFIG_SUSPEND
475 int i = 0; 446 int i = 0;
476
477 dmi_check_system(acpisleep_dmi_table);
478#endif 447#endif
479 448
480 if (acpi_disabled) 449 if (acpi_disabled)
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index b4f3aefa12b6..1607536ff5fb 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -1028,6 +1028,7 @@ endif
1028 1028
1029config BLK_DEV_HD_ONLY 1029config BLK_DEV_HD_ONLY
1030 bool "Old hard disk (MFM/RLL/IDE) driver" 1030 bool "Old hard disk (MFM/RLL/IDE) driver"
1031 depends on !ARM || ARCH_RPC || ARCH_SHARK || BROKEN
1031 help 1032 help
1032 There are two drivers for MFM/RLL/IDE hard disks. Most people use 1033 There are two drivers for MFM/RLL/IDE hard disks. Most people use
1033 the newer enhanced driver, but this old one is still around for two 1034 the newer enhanced driver, but this old one is still around for two
diff --git a/drivers/ide/arm/bast-ide.c b/drivers/ide/arm/bast-ide.c
index 713cef20622e..8e8c28104b45 100644
--- a/drivers/ide/arm/bast-ide.c
+++ b/drivers/ide/arm/bast-ide.c
@@ -42,6 +42,7 @@ static int __init bastide_register(unsigned int base, unsigned int aux, int irq)
42 42
43 hw.io_ports.ctl_addr = aux + (6 * 0x20); 43 hw.io_ports.ctl_addr = aux + (6 * 0x20);
44 hw.irq = irq; 44 hw.irq = irq;
45 hw.chipset = ide_generic;
45 46
46 hwif = ide_find_port(); 47 hwif = ide_find_port();
47 if (hwif == NULL) 48 if (hwif == NULL)
diff --git a/drivers/ide/arm/ide_arm.c b/drivers/ide/arm/ide_arm.c
index 4263ffd4ab20..2f311da4c963 100644
--- a/drivers/ide/arm/ide_arm.c
+++ b/drivers/ide/arm/ide_arm.c
@@ -49,6 +49,7 @@ static int __init ide_arm_init(void)
49 memset(&hw, 0, sizeof(hw)); 49 memset(&hw, 0, sizeof(hw));
50 ide_std_init_ports(&hw, base, ctl); 50 ide_std_init_ports(&hw, base, ctl);
51 hw.irq = IDE_ARM_IRQ; 51 hw.irq = IDE_ARM_IRQ;
52 hw.chipset = ide_generic;
52 53
53 hwif = ide_find_port(); 54 hwif = ide_find_port();
54 if (hwif) { 55 if (hwif) {
diff --git a/drivers/ide/arm/palm_bk3710.c b/drivers/ide/arm/palm_bk3710.c
index 96378ebfb31f..d024ac8fad14 100644
--- a/drivers/ide/arm/palm_bk3710.c
+++ b/drivers/ide/arm/palm_bk3710.c
@@ -409,9 +409,6 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
409 409
410 ide_device_add(idx, &palm_bk3710_port_info); 410 ide_device_add(idx, &palm_bk3710_port_info);
411 411
412 if (!hwif->present)
413 goto out;
414
415 return 0; 412 return 0;
416out: 413out:
417 printk(KERN_WARNING "Palm Chip BK3710 IDE Register Fail\n"); 414 printk(KERN_WARNING "Palm Chip BK3710 IDE Register Fail\n");
diff --git a/drivers/ide/ide-generic.c b/drivers/ide/ide-generic.c
index a6073e248f45..9134488ac043 100644
--- a/drivers/ide/ide-generic.c
+++ b/drivers/ide/ide-generic.c
@@ -125,6 +125,7 @@ static int __init ide_generic_init(void)
125 memset(&hw, 0, sizeof(hw)); 125 memset(&hw, 0, sizeof(hw));
126 ide_std_init_ports(&hw, io_addr, io_addr + 0x206); 126 ide_std_init_ports(&hw, io_addr, io_addr + 0x206);
127 hw.irq = ide_default_irq(io_addr); 127 hw.irq = ide_default_irq(io_addr);
128 hw.chipset = ide_generic;
128 ide_init_port_hw(hwif, &hw); 129 ide_init_port_hw(hwif, &hw);
129 130
130 idx[i] = i; 131 idx[i] = i;
diff --git a/drivers/ide/ide-pnp.c b/drivers/ide/ide-pnp.c
index 6a8953f68e9f..adbd01784162 100644
--- a/drivers/ide/ide-pnp.c
+++ b/drivers/ide/ide-pnp.c
@@ -55,6 +55,7 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
55 memset(&hw, 0, sizeof(hw)); 55 memset(&hw, 0, sizeof(hw));
56 ide_std_init_ports(&hw, base, ctl); 56 ide_std_init_ports(&hw, base, ctl);
57 hw.irq = pnp_irq(dev, 0); 57 hw.irq = pnp_irq(dev, 0);
58 hw.chipset = ide_generic;
58 59
59 hwif = ide_find_port(); 60 hwif = ide_find_port();
60 if (hwif) { 61 if (hwif) {
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 655ec7ef568a..380fa0c8cc84 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -1333,8 +1333,7 @@ static void ide_port_init_devices(ide_hwif_t *hwif)
1333static void ide_init_port(ide_hwif_t *hwif, unsigned int port, 1333static void ide_init_port(ide_hwif_t *hwif, unsigned int port,
1334 const struct ide_port_info *d) 1334 const struct ide_port_info *d)
1335{ 1335{
1336 if (d->chipset != ide_etrax100) 1336 hwif->channel = port;
1337 hwif->channel = port;
1338 1337
1339 if (d->chipset) 1338 if (d->chipset)
1340 hwif->chipset = d->chipset; 1339 hwif->chipset = d->chipset;
@@ -1519,7 +1518,7 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d)
1519 continue; 1518 continue;
1520 } 1519 }
1521 1520
1522 if (d->chipset != ide_etrax100 && (i & 1) && mate) { 1521 if ((i & 1) && mate) {
1523 hwif->mate = mate; 1522 hwif->mate = mate;
1524 mate->mate = hwif; 1523 mate->mate = hwif;
1525 } 1524 }
@@ -1665,6 +1664,7 @@ static void ide_legacy_init_one(u8 *idx, hw_regs_t *hw, u8 port_no,
1665 1664
1666 ide_std_init_ports(hw, base, ctl); 1665 ide_std_init_ports(hw, base, ctl);
1667 hw->irq = irq; 1666 hw->irq = irq;
1667 hw->chipset = d->chipset;
1668 1668
1669 hwif = ide_find_port_slot(d); 1669 hwif = ide_find_port_slot(d);
1670 if (hwif) { 1670 if (hwif) {
diff --git a/drivers/ide/ide-proc.c b/drivers/ide/ide-proc.c
index 8d6ad812a014..55ec7f798772 100644
--- a/drivers/ide/ide-proc.c
+++ b/drivers/ide/ide-proc.c
@@ -63,7 +63,6 @@ static int proc_ide_read_imodel
63 case ide_pmac: name = "mac-io"; break; 63 case ide_pmac: name = "mac-io"; break;
64 case ide_au1xxx: name = "au1xxx"; break; 64 case ide_au1xxx: name = "au1xxx"; break;
65 case ide_palm3710: name = "palm3710"; break; 65 case ide_palm3710: name = "palm3710"; break;
66 case ide_etrax100: name = "etrax100"; break;
67 case ide_acorn: name = "acorn"; break; 66 case ide_acorn: name = "acorn"; break;
68 default: name = "(unknown)"; break; 67 default: name = "(unknown)"; break;
69 } 68 }
diff --git a/drivers/ide/legacy/buddha.c b/drivers/ide/legacy/buddha.c
index 5c730e4dd735..9a1d27ef3f8a 100644
--- a/drivers/ide/legacy/buddha.c
+++ b/drivers/ide/legacy/buddha.c
@@ -138,6 +138,8 @@ static void __init buddha_setup_ports(hw_regs_t *hw, unsigned long base,
138 138
139 hw->irq = IRQ_AMIGA_PORTS; 139 hw->irq = IRQ_AMIGA_PORTS;
140 hw->ack_intr = ack_intr; 140 hw->ack_intr = ack_intr;
141
142 hw->chipset = ide_generic;
141} 143}
142 144
143 /* 145 /*
diff --git a/drivers/ide/legacy/falconide.c b/drivers/ide/legacy/falconide.c
index 9e449a0c623f..af11028b4794 100644
--- a/drivers/ide/legacy/falconide.c
+++ b/drivers/ide/legacy/falconide.c
@@ -81,6 +81,8 @@ static void __init falconide_setup_ports(hw_regs_t *hw)
81 81
82 hw->irq = IRQ_MFP_IDE; 82 hw->irq = IRQ_MFP_IDE;
83 hw->ack_intr = NULL; 83 hw->ack_intr = NULL;
84
85 hw->chipset = ide_generic;
84} 86}
85 87
86 /* 88 /*
diff --git a/drivers/ide/legacy/gayle.c b/drivers/ide/legacy/gayle.c
index a9c2593a898c..fed7d812761c 100644
--- a/drivers/ide/legacy/gayle.c
+++ b/drivers/ide/legacy/gayle.c
@@ -16,6 +16,7 @@
16#include <linux/ide.h> 16#include <linux/ide.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/zorro.h> 18#include <linux/zorro.h>
19#include <linux/module.h>
19 20
20#include <asm/setup.h> 21#include <asm/setup.h>
21#include <asm/amigahw.h> 22#include <asm/amigahw.h>
@@ -62,7 +63,10 @@
62 GAYLE_NUM_HWIFS-1) 63 GAYLE_NUM_HWIFS-1)
63#define GAYLE_HAS_CONTROL_REG (!ide_doubler) 64#define GAYLE_HAS_CONTROL_REG (!ide_doubler)
64#define GAYLE_IDEREG_SIZE (ide_doubler ? 0x1000 : 0x2000) 65#define GAYLE_IDEREG_SIZE (ide_doubler ? 0x1000 : 0x2000)
66
65int ide_doubler = 0; /* support IDE doublers? */ 67int ide_doubler = 0; /* support IDE doublers? */
68EXPORT_SYMBOL_GPL(ide_doubler);
69
66module_param_named(doubler, ide_doubler, bool, 0); 70module_param_named(doubler, ide_doubler, bool, 0);
67MODULE_PARM_DESC(doubler, "enable support for IDE doublers"); 71MODULE_PARM_DESC(doubler, "enable support for IDE doublers");
68#endif /* CONFIG_BLK_DEV_IDEDOUBLER */ 72#endif /* CONFIG_BLK_DEV_IDEDOUBLER */
@@ -112,6 +116,8 @@ static void __init gayle_setup_ports(hw_regs_t *hw, unsigned long base,
112 116
113 hw->irq = IRQ_AMIGA_PORTS; 117 hw->irq = IRQ_AMIGA_PORTS;
114 hw->ack_intr = ack_intr; 118 hw->ack_intr = ack_intr;
119
120 hw->chipset = ide_generic;
115} 121}
116 122
117 /* 123 /*
diff --git a/drivers/ide/legacy/macide.c b/drivers/ide/legacy/macide.c
index caa2632dd08e..2e84290d0bcc 100644
--- a/drivers/ide/legacy/macide.c
+++ b/drivers/ide/legacy/macide.c
@@ -78,6 +78,8 @@ static void __init macide_setup_ports(hw_regs_t *hw, unsigned long base,
78 78
79 hw->irq = irq; 79 hw->irq = irq;
80 hw->ack_intr = ack_intr; 80 hw->ack_intr = ack_intr;
81
82 hw->chipset = ide_generic;
81} 83}
82 84
83static const char *mac_ide_name[] = 85static const char *mac_ide_name[] =
diff --git a/drivers/ide/legacy/q40ide.c b/drivers/ide/legacy/q40ide.c
index 6f535d00e638..8ff6e2d20834 100644
--- a/drivers/ide/legacy/q40ide.c
+++ b/drivers/ide/legacy/q40ide.c
@@ -70,6 +70,8 @@ static void q40_ide_setup_ports(hw_regs_t *hw, unsigned long base,
70 70
71 hw->irq = irq; 71 hw->irq = irq;
72 hw->ack_intr = ack_intr; 72 hw->ack_intr = ack_intr;
73
74 hw->chipset = ide_generic;
73} 75}
74 76
75static void q40ide_input_data(ide_drive_t *drive, struct request *rq, 77static void q40ide_input_data(ide_drive_t *drive, struct request *rq,
diff --git a/drivers/ide/pci/cmd640.c b/drivers/ide/pci/cmd640.c
index aaf38109eaec..b38a1980dcd5 100644
--- a/drivers/ide/pci/cmd640.c
+++ b/drivers/ide/pci/cmd640.c
@@ -747,9 +747,11 @@ static int __init cmd640x_init(void)
747 747
748 ide_std_init_ports(&hw[0], 0x1f0, 0x3f6); 748 ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
749 hw[0].irq = 14; 749 hw[0].irq = 14;
750 hw[0].chipset = ide_cmd640;
750 751
751 ide_std_init_ports(&hw[1], 0x170, 0x376); 752 ide_std_init_ports(&hw[1], 0x170, 0x376);
752 hw[1].irq = 15; 753 hw[1].irq = 15;
754 hw[1].chipset = ide_cmd640;
753 755
754 printk(KERN_INFO "cmd640: buggy cmd640%c interface on %s, config=0x%02x" 756 printk(KERN_INFO "cmd640: buggy cmd640%c interface on %s, config=0x%02x"
755 "\n", 'a' + cmd640_chip_version - 1, bus_type, cfr); 757 "\n", 'a' + cmd640_chip_version - 1, bus_type, cfr);
diff --git a/drivers/ide/pci/delkin_cb.c b/drivers/ide/pci/delkin_cb.c
index b9e457996d0e..af0f30051d5a 100644
--- a/drivers/ide/pci/delkin_cb.c
+++ b/drivers/ide/pci/delkin_cb.c
@@ -47,13 +47,18 @@ static const struct ide_port_ops delkin_cb_port_ops = {
47 .quirkproc = ide_undecoded_slave, 47 .quirkproc = ide_undecoded_slave,
48}; 48};
49 49
50static const struct ide_port_info delkin_cb_port_info = {
51 .port_ops = &delkin_cb_port_ops,
52 .host_flags = IDE_HFLAG_IO_32BIT | IDE_HFLAG_UNMASK_IRQS |
53 IDE_HFLAG_NO_DMA,
54};
55
50static int __devinit 56static int __devinit
51delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id) 57delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
52{ 58{
53 unsigned long base; 59 unsigned long base;
54 hw_regs_t hw; 60 hw_regs_t hw;
55 ide_hwif_t *hwif = NULL; 61 ide_hwif_t *hwif = NULL;
56 ide_drive_t *drive;
57 int i, rc; 62 int i, rc;
58 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; 63 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
59 64
@@ -79,6 +84,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
79 memset(&hw, 0, sizeof(hw)); 84 memset(&hw, 0, sizeof(hw));
80 ide_std_init_ports(&hw, base + 0x10, base + 0x1e); 85 ide_std_init_ports(&hw, base + 0x10, base + 0x1e);
81 hw.irq = dev->irq; 86 hw.irq = dev->irq;
87 hw.dev = &dev->dev;
82 hw.chipset = ide_pci; /* this enables IRQ sharing */ 88 hw.chipset = ide_pci; /* this enables IRQ sharing */
83 89
84 hwif = ide_find_port(); 90 hwif = ide_find_port();
@@ -89,26 +95,16 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
89 95
90 ide_init_port_data(hwif, i); 96 ide_init_port_data(hwif, i);
91 ide_init_port_hw(hwif, &hw); 97 ide_init_port_hw(hwif, &hw);
92 hwif->port_ops = &delkin_cb_port_ops;
93 98
94 idx[0] = i; 99 idx[0] = i;
95 100
96 ide_device_add(idx, NULL); 101 ide_device_add(idx, &delkin_cb_port_info);
97
98 if (!hwif->present)
99 goto out_disable;
100 102
101 pci_set_drvdata(dev, hwif); 103 pci_set_drvdata(dev, hwif);
102 hwif->dev = &dev->dev; 104
103 drive = &hwif->drives[0];
104 if (drive->present) {
105 drive->io_32bit = 1;
106 drive->unmask = 1;
107 }
108 return 0; 105 return 0;
109 106
110out_disable: 107out_disable:
111 printk(KERN_ERR "delkin_cb: no IDE devices found\n");
112 pci_release_regions(dev); 108 pci_release_regions(dev);
113 pci_disable_device(dev); 109 pci_disable_device(dev);
114 return -ENODEV; 110 return -ENODEV;
@@ -139,14 +135,12 @@ static struct pci_driver driver = {
139 .remove = delkin_cb_remove, 135 .remove = delkin_cb_remove,
140}; 136};
141 137
142static int 138static int __init delkin_cb_init(void)
143delkin_cb_init (void)
144{ 139{
145 return pci_register_driver(&driver); 140 return pci_register_driver(&driver);
146} 141}
147 142
148static void 143static void __exit delkin_cb_exit(void)
149delkin_cb_exit (void)
150{ 144{
151 pci_unregister_driver(&driver); 145 pci_unregister_driver(&driver);
152} 146}
diff --git a/drivers/ide/pci/sis5513.c b/drivers/ide/pci/sis5513.c
index 4b0b85d8faf5..e127eb25ab63 100644
--- a/drivers/ide/pci/sis5513.c
+++ b/drivers/ide/pci/sis5513.c
@@ -569,6 +569,11 @@ static int __devinit sis5513_init_one(struct pci_dev *dev, const struct pci_devi
569{ 569{
570 struct ide_port_info d = sis5513_chipset; 570 struct ide_port_info d = sis5513_chipset;
571 u8 udma_rates[] = { 0x00, 0x00, 0x07, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f }; 571 u8 udma_rates[] = { 0x00, 0x00, 0x07, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f };
572 int rc;
573
574 rc = pci_enable_device(dev);
575 if (rc)
576 return rc;
572 577
573 if (sis_find_family(dev) == 0) 578 if (sis_find_family(dev) == 0)
574 return -ENOTSUPP; 579 return -ENOTSUPP;
diff --git a/drivers/ide/ppc/mpc8xx.c b/drivers/ide/ppc/mpc8xx.c
index f0e638dcc3ab..236f9c38e519 100644
--- a/drivers/ide/ppc/mpc8xx.c
+++ b/drivers/ide/ppc/mpc8xx.c
@@ -303,6 +303,8 @@ static int __init m8xx_ide_init_ports(hw_regs_t *hw, unsigned long data_port)
303 pcmp->pcmc_per = 0x100000 >> (16 * _slot_); 303 pcmp->pcmc_per = 0x100000 >> (16 * _slot_);
304#endif /* CONFIG_IDE_8xx_PCCARD */ 304#endif /* CONFIG_IDE_8xx_PCCARD */
305 305
306 hw->chipset = ide_generic;
307
306 return 0; 308 return 0;
307} 309}
308#endif /* CONFIG_IDE_8xx_PCCARD || CONFIG_IDE_8xx_DIRECT */ 310#endif /* CONFIG_IDE_8xx_PCCARD || CONFIG_IDE_8xx_DIRECT */
@@ -377,6 +379,8 @@ static int __init m8xx_ide_init_ports(hw_regs_t *hw, unsigned long data_port)
377 ((immap_t *) IMAP_ADDR)->im_siu_conf.sc_siel |= 379 ((immap_t *) IMAP_ADDR)->im_siu_conf.sc_siel |=
378 (0x80000000 >> ioport_dsc[data_port].irq); 380 (0x80000000 >> ioport_dsc[data_port].irq);
379 381
382 hw->chipset = ide_generic;
383
380 return 0; 384 return 0;
381} 385}
382#endif /* CONFIG_IDE_8xx_DIRECT */ 386#endif /* CONFIG_IDE_8xx_DIRECT */
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
index 5f96b869a566..056ea80ee27a 100644
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -239,13 +239,11 @@ EXPORT_SYMBOL(pci_osc_control_set);
239 * choose highest power _SxD or any lower power 239 * choose highest power _SxD or any lower power
240 */ 240 */
241 241
242static pci_power_t acpi_pci_choose_state(struct pci_dev *pdev, 242static pci_power_t acpi_pci_choose_state(struct pci_dev *pdev)
243 pm_message_t state)
244{ 243{
245 int acpi_state; 244 int acpi_state;
246 245
247 acpi_state = acpi_pm_device_sleep_state(&pdev->dev, 246 acpi_state = acpi_pm_device_sleep_state(&pdev->dev, NULL);
248 device_may_wakeup(&pdev->dev), NULL);
249 if (acpi_state < 0) 247 if (acpi_state < 0)
250 return PCI_POWER_ERROR; 248 return PCI_POWER_ERROR;
251 249
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 15beaf48407f..7869f8f75c9e 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -506,7 +506,7 @@ pci_set_power_state(struct pci_dev *dev, pci_power_t state)
506 return 0; 506 return 0;
507} 507}
508 508
509pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); 509pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev);
510 510
511/** 511/**
512 * pci_choose_state - Choose the power state of a PCI device 512 * pci_choose_state - Choose the power state of a PCI device
@@ -526,7 +526,7 @@ pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state)
526 return PCI_D0; 526 return PCI_D0;
527 527
528 if (platform_pci_choose_state) { 528 if (platform_pci_choose_state) {
529 ret = platform_pci_choose_state(dev, state); 529 ret = platform_pci_choose_state(dev);
530 if (ret != PCI_POWER_ERROR) 530 if (ret != PCI_POWER_ERROR)
531 return ret; 531 return ret;
532 } 532 }
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index e1d7bbf079b4..e0eff35825a6 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -6,8 +6,7 @@ extern void pci_remove_sysfs_dev_files(struct pci_dev *pdev);
6extern void pci_cleanup_rom(struct pci_dev *dev); 6extern void pci_cleanup_rom(struct pci_dev *dev);
7 7
8/* Firmware callbacks */ 8/* Firmware callbacks */
9extern pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev, 9extern pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev);
10 pm_message_t state);
11extern int (*platform_pci_set_power_state)(struct pci_dev *dev, 10extern int (*platform_pci_set_power_state)(struct pci_dev *dev,
12 pci_power_t state); 11 pci_power_t state);
13 12
diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c
index 50902773beaf..c1b9ea34977b 100644
--- a/drivers/pnp/pnpacpi/core.c
+++ b/drivers/pnp/pnpacpi/core.c
@@ -117,9 +117,7 @@ static int pnpacpi_suspend(struct pnp_dev *dev, pm_message_t state)
117{ 117{
118 int power_state; 118 int power_state;
119 119
120 power_state = acpi_pm_device_sleep_state(&dev->dev, 120 power_state = acpi_pm_device_sleep_state(&dev->dev, NULL);
121 device_may_wakeup(&dev->dev),
122 NULL);
123 if (power_state < 0) 121 if (power_state < 0)
124 power_state = (state.event == PM_EVENT_ON) ? 122 power_state = (state.event == PM_EVENT_ON) ?
125 ACPI_STATE_D0 : ACPI_STATE_D3; 123 ACPI_STATE_D0 : ACPI_STATE_D3;
diff --git a/drivers/s390/char/sclp_vt220.c b/drivers/s390/char/sclp_vt220.c
index 62576af36f47..3e577f655b18 100644
--- a/drivers/s390/char/sclp_vt220.c
+++ b/drivers/s390/char/sclp_vt220.c
@@ -773,6 +773,7 @@ sclp_vt220_con_init(void)
773{ 773{
774 int rc; 774 int rc;
775 775
776 INIT_LIST_HEAD(&sclp_vt220_register.list);
776 if (!CONSOLE_IS_SCLP) 777 if (!CONSOLE_IS_SCLP)
777 return 0; 778 return 0;
778 rc = __sclp_vt220_init(); 779 rc = __sclp_vt220_init();
diff --git a/drivers/s390/char/tape_3590.c b/drivers/s390/char/tape_3590.c
index 8246ef3ab095..42ce7915fc5d 100644
--- a/drivers/s390/char/tape_3590.c
+++ b/drivers/s390/char/tape_3590.c
@@ -1598,7 +1598,7 @@ tape_3590_setup_device(struct tape_device *device)
1598 rc = tape_3590_read_dev_chars(device, rdc_data); 1598 rc = tape_3590_read_dev_chars(device, rdc_data);
1599 if (rc) { 1599 if (rc) {
1600 DBF_LH(3, "Read device characteristics failed!\n"); 1600 DBF_LH(3, "Read device characteristics failed!\n");
1601 goto fail_kmalloc; 1601 goto fail_rdc_data;
1602 } 1602 }
1603 rc = tape_std_assign(device); 1603 rc = tape_std_assign(device);
1604 if (rc) 1604 if (rc)
diff --git a/drivers/s390/cio/blacklist.c b/drivers/s390/cio/blacklist.c
index a4a5f2efea48..0bfcbbe375c4 100644
--- a/drivers/s390/cio/blacklist.c
+++ b/drivers/s390/cio/blacklist.c
@@ -97,8 +97,8 @@ static int pure_hex(char **cp, unsigned int *val, int min_digit,
97 return 0; 97 return 0;
98} 98}
99 99
100static int parse_busid(char *str, int *cssid, int *ssid, int *devno, 100static int parse_busid(char *str, unsigned int *cssid, unsigned int *ssid,
101 int msgtrigger) 101 unsigned int *devno, int msgtrigger)
102{ 102{
103 char *str_work; 103 char *str_work;
104 int val, rc, ret; 104 int val, rc, ret;
@@ -148,7 +148,7 @@ out:
148static int blacklist_parse_parameters(char *str, range_action action, 148static int blacklist_parse_parameters(char *str, range_action action,
149 int msgtrigger) 149 int msgtrigger)
150{ 150{
151 int from_cssid, to_cssid, from_ssid, to_ssid, from, to; 151 unsigned int from_cssid, to_cssid, from_ssid, to_ssid, from, to;
152 int rc, totalrc; 152 int rc, totalrc;
153 char *parm; 153 char *parm;
154 range_action ra; 154 range_action ra;
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index 82c6a2d45128..b32d7eb3d81a 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -576,12 +576,14 @@ cio_validate_subchannel (struct subchannel *sch, struct subchannel_id schid)
576 err = -ENODEV; 576 err = -ENODEV;
577 goto out; 577 goto out;
578 } 578 }
579 if (cio_is_console(sch->schid)) 579 if (cio_is_console(sch->schid)) {
580 sch->opm = 0xff; 580 sch->opm = 0xff;
581 else 581 sch->isc = 1;
582 } else {
582 sch->opm = chp_get_sch_opm(sch); 583 sch->opm = chp_get_sch_opm(sch);
584 sch->isc = 3;
585 }
583 sch->lpm = sch->schib.pmcw.pam & sch->opm; 586 sch->lpm = sch->schib.pmcw.pam & sch->opm;
584 sch->isc = 3;
585 587
586 CIO_MSG_EVENT(6, "Detected device %04x on subchannel 0.%x.%04X " 588 CIO_MSG_EVENT(6, "Detected device %04x on subchannel 0.%x.%04X "
587 "- PIM = %02X, PAM = %02X, POM = %02X\n", 589 "- PIM = %02X, PAM = %02X, POM = %02X\n",
@@ -704,9 +706,9 @@ void wait_cons_dev(void)
704 if (!console_subchannel_in_use) 706 if (!console_subchannel_in_use)
705 return; 707 return;
706 708
707 /* disable all but isc 7 (console device) */ 709 /* disable all but isc 1 (console device) */
708 __ctl_store (save_cr6, 6, 6); 710 __ctl_store (save_cr6, 6, 6);
709 cr6 = 0x01000000; 711 cr6 = 0x40000000;
710 __ctl_load (cr6, 6, 6); 712 __ctl_load (cr6, 6, 6);
711 713
712 do { 714 do {
@@ -788,11 +790,11 @@ cio_probe_console(void)
788 } 790 }
789 791
790 /* 792 /*
791 * enable console I/O-interrupt subclass 7 793 * enable console I/O-interrupt subclass 1
792 */ 794 */
793 ctl_set_bit(6, 24); 795 ctl_set_bit(6, 30);
794 console_subchannel.isc = 7; 796 console_subchannel.isc = 1;
795 console_subchannel.schib.pmcw.isc = 7; 797 console_subchannel.schib.pmcw.isc = 1;
796 console_subchannel.schib.pmcw.intparm = 798 console_subchannel.schib.pmcw.intparm =
797 (u32)(addr_t)&console_subchannel; 799 (u32)(addr_t)&console_subchannel;
798 ret = cio_modify(&console_subchannel); 800 ret = cio_modify(&console_subchannel);