Commit 53eb2fbe authored by Jesse Barnes's avatar Jesse Barnes Committed by Jesse Barnes

Merge branch 'suspend' of...

Merge branch 'suspend' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 into linux-next
parents 8344b568 0e6859d4
...@@ -3658,13 +3658,6 @@ M: romieu@fr.zoreil.com ...@@ -3658,13 +3658,6 @@ M: romieu@fr.zoreil.com
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
S: Maintained S: Maintained
SIS 5513 IDE CONTROLLER DRIVER
P: Lionel Bouton
M: Lionel.Bouton@inet6.fr
W: http://inet6.dyn.dhs.org/sponsoring/sis5513/index.html
W: http://gyver.homeip.net/sis5513/index.html
S: Maintained
SIS 900/7016 FAST ETHERNET DRIVER SIS 900/7016 FAST ETHERNET DRIVER
P: Daniele Venzano P: Daniele Venzano
M: venza@brownhat.org M: venza@brownhat.org
......
...@@ -304,6 +304,7 @@ config ARCH_SPARSEMEM_ENABLE ...@@ -304,6 +304,7 @@ config ARCH_SPARSEMEM_ENABLE
def_bool y def_bool y
select SPARSEMEM_VMEMMAP_ENABLE select SPARSEMEM_VMEMMAP_ENABLE
select SPARSEMEM_VMEMMAP select SPARSEMEM_VMEMMAP
select SPARSEMEM_STATIC if !64BIT
config ARCH_SPARSEMEM_DEFAULT config ARCH_SPARSEMEM_DEFAULT
def_bool y def_bool y
......
...@@ -711,7 +711,7 @@ int __cpuinit __cpu_up(unsigned int cpu) ...@@ -711,7 +711,7 @@ int __cpuinit __cpu_up(unsigned int cpu)
memset(sf, 0, sizeof(struct stack_frame)); memset(sf, 0, sizeof(struct stack_frame));
sf->gprs[9] = (unsigned long) sf; sf->gprs[9] = (unsigned long) sf;
cpu_lowcore->save_area[15] = (unsigned long) sf; cpu_lowcore->save_area[15] = (unsigned long) sf;
__ctl_store(cpu_lowcore->cregs_save_area[0], 0, 15); __ctl_store(cpu_lowcore->cregs_save_area, 0, 15);
asm volatile( asm volatile(
" stam 0,15,0(%0)" " stam 0,15,0(%0)"
: : "a" (&cpu_lowcore->access_regs_save_area) : "memory"); : : "a" (&cpu_lowcore->access_regs_save_area) : "memory");
......
...@@ -236,7 +236,7 @@ static int insert_memory_segment(struct memory_segment *seg) ...@@ -236,7 +236,7 @@ static int insert_memory_segment(struct memory_segment *seg)
{ {
struct memory_segment *tmp; struct memory_segment *tmp;
if (seg->start + seg->size >= VMEM_MAX_PHYS || if (seg->start + seg->size > VMEM_MAX_PHYS ||
seg->start + seg->size < seg->start) seg->start + seg->size < seg->start)
return -ERANGE; return -ERANGE;
......
...@@ -62,8 +62,6 @@ static u32 acpi_suspend_states[] = { ...@@ -62,8 +62,6 @@ static u32 acpi_suspend_states[] = {
[PM_SUSPEND_MAX] = ACPI_STATE_S5 [PM_SUSPEND_MAX] = ACPI_STATE_S5
}; };
static int init_8259A_after_S1;
/** /**
* acpi_suspend_begin - Set the target system sleep state to the state * acpi_suspend_begin - Set the target system sleep state to the state
* associated with given @pm_state, if supported. * associated with given @pm_state, if supported.
...@@ -186,13 +184,6 @@ static void acpi_suspend_finish(void) ...@@ -186,13 +184,6 @@ static void acpi_suspend_finish(void)
acpi_set_firmware_waking_vector((acpi_physical_address) 0); acpi_set_firmware_waking_vector((acpi_physical_address) 0);
acpi_target_sleep_state = ACPI_STATE_S0; acpi_target_sleep_state = ACPI_STATE_S0;
#ifdef CONFIG_X86
if (init_8259A_after_S1) {
printk("Broken toshiba laptop -> kicking interrupts\n");
init_8259A(0);
}
#endif
} }
/** /**
...@@ -232,26 +223,6 @@ static struct platform_suspend_ops acpi_suspend_ops = { ...@@ -232,26 +223,6 @@ static struct platform_suspend_ops acpi_suspend_ops = {
.finish = acpi_suspend_finish, .finish = acpi_suspend_finish,
.end = acpi_suspend_end, .end = acpi_suspend_end,
}; };
/*
* Toshiba fails to preserve interrupts over S1, reinitialization
* of 8259 is needed after S1 resume.
*/
static int __init init_ints_after_s1(const struct dmi_system_id *d)
{
printk(KERN_WARNING "%s with broken S1 detected.\n", d->ident);
init_8259A_after_S1 = 1;
return 0;
}
static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
{
.callback = init_ints_after_s1,
.ident = "Toshiba Satellite 4030cdt",
.matches = {DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),},
},
{},
};
#endif /* CONFIG_SUSPEND */ #endif /* CONFIG_SUSPEND */
#ifdef CONFIG_HIBERNATION #ifdef CONFIG_HIBERNATION
...@@ -369,8 +340,8 @@ int acpi_suspend(u32 acpi_state) ...@@ -369,8 +340,8 @@ int acpi_suspend(u32 acpi_state)
/** /**
* acpi_pm_device_sleep_state - return preferred power state of ACPI device * acpi_pm_device_sleep_state - return preferred power state of ACPI device
* in the system sleep state given by %acpi_target_sleep_state * in the system sleep state given by %acpi_target_sleep_state
* @dev: device to examine * @dev: device to examine; its driver model wakeup flags control
* @wake: if set, the device should be able to wake up the system * whether it should be able to wake up the system
* @d_min_p: used to store the upper limit of allowed states range * @d_min_p: used to store the upper limit of allowed states range
* Return value: preferred power state of the device on success, -ENODEV on * Return value: preferred power state of the device on success, -ENODEV on
* failure (ie. if there's no 'struct acpi_device' for @dev) * failure (ie. if there's no 'struct acpi_device' for @dev)
...@@ -388,7 +359,7 @@ int acpi_suspend(u32 acpi_state) ...@@ -388,7 +359,7 @@ int acpi_suspend(u32 acpi_state)
* via @wake. * via @wake.
*/ */
int acpi_pm_device_sleep_state(struct device *dev, int wake, int *d_min_p) int acpi_pm_device_sleep_state(struct device *dev, int *d_min_p)
{ {
acpi_handle handle = DEVICE_ACPI_HANDLE(dev); acpi_handle handle = DEVICE_ACPI_HANDLE(dev);
struct acpi_device *adev; struct acpi_device *adev;
...@@ -427,7 +398,7 @@ int acpi_pm_device_sleep_state(struct device *dev, int wake, int *d_min_p) ...@@ -427,7 +398,7 @@ int acpi_pm_device_sleep_state(struct device *dev, int wake, int *d_min_p)
* can wake the system. _S0W may be valid, too. * can wake the system. _S0W may be valid, too.
*/ */
if (acpi_target_sleep_state == ACPI_STATE_S0 || if (acpi_target_sleep_state == ACPI_STATE_S0 ||
(wake && adev->wakeup.state.enabled && (device_may_wakeup(dev) && adev->wakeup.state.enabled &&
adev->wakeup.sleep_state <= acpi_target_sleep_state)) { adev->wakeup.sleep_state <= acpi_target_sleep_state)) {
acpi_status status; acpi_status status;
...@@ -473,8 +444,6 @@ int __init acpi_sleep_init(void) ...@@ -473,8 +444,6 @@ int __init acpi_sleep_init(void)
u8 type_a, type_b; u8 type_a, type_b;
#ifdef CONFIG_SUSPEND #ifdef CONFIG_SUSPEND
int i = 0; int i = 0;
dmi_check_system(acpisleep_dmi_table);
#endif #endif
if (acpi_disabled) if (acpi_disabled)
......
...@@ -1028,6 +1028,7 @@ endif ...@@ -1028,6 +1028,7 @@ endif
config BLK_DEV_HD_ONLY config BLK_DEV_HD_ONLY
bool "Old hard disk (MFM/RLL/IDE) driver" bool "Old hard disk (MFM/RLL/IDE) driver"
depends on !ARM || ARCH_RPC || ARCH_SHARK || BROKEN
help help
There are two drivers for MFM/RLL/IDE hard disks. Most people use There are two drivers for MFM/RLL/IDE hard disks. Most people use
the newer enhanced driver, but this old one is still around for two the newer enhanced driver, but this old one is still around for two
......
...@@ -42,6 +42,7 @@ static int __init bastide_register(unsigned int base, unsigned int aux, int irq) ...@@ -42,6 +42,7 @@ static int __init bastide_register(unsigned int base, unsigned int aux, int irq)
hw.io_ports.ctl_addr = aux + (6 * 0x20); hw.io_ports.ctl_addr = aux + (6 * 0x20);
hw.irq = irq; hw.irq = irq;
hw.chipset = ide_generic;
hwif = ide_find_port(); hwif = ide_find_port();
if (hwif == NULL) if (hwif == NULL)
......
...@@ -49,6 +49,7 @@ static int __init ide_arm_init(void) ...@@ -49,6 +49,7 @@ static int __init ide_arm_init(void)
memset(&hw, 0, sizeof(hw)); memset(&hw, 0, sizeof(hw));
ide_std_init_ports(&hw, base, ctl); ide_std_init_ports(&hw, base, ctl);
hw.irq = IDE_ARM_IRQ; hw.irq = IDE_ARM_IRQ;
hw.chipset = ide_generic;
hwif = ide_find_port(); hwif = ide_find_port();
if (hwif) { if (hwif) {
......
...@@ -409,9 +409,6 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev) ...@@ -409,9 +409,6 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
ide_device_add(idx, &palm_bk3710_port_info); ide_device_add(idx, &palm_bk3710_port_info);
if (!hwif->present)
goto out;
return 0; return 0;
out: out:
printk(KERN_WARNING "Palm Chip BK3710 IDE Register Fail\n"); printk(KERN_WARNING "Palm Chip BK3710 IDE Register Fail\n");
......
...@@ -125,6 +125,7 @@ static int __init ide_generic_init(void) ...@@ -125,6 +125,7 @@ static int __init ide_generic_init(void)
memset(&hw, 0, sizeof(hw)); memset(&hw, 0, sizeof(hw));
ide_std_init_ports(&hw, io_addr, io_addr + 0x206); ide_std_init_ports(&hw, io_addr, io_addr + 0x206);
hw.irq = ide_default_irq(io_addr); hw.irq = ide_default_irq(io_addr);
hw.chipset = ide_generic;
ide_init_port_hw(hwif, &hw); ide_init_port_hw(hwif, &hw);
idx[i] = i; idx[i] = i;
......
...@@ -55,6 +55,7 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) ...@@ -55,6 +55,7 @@ static int idepnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
memset(&hw, 0, sizeof(hw)); memset(&hw, 0, sizeof(hw));
ide_std_init_ports(&hw, base, ctl); ide_std_init_ports(&hw, base, ctl);
hw.irq = pnp_irq(dev, 0); hw.irq = pnp_irq(dev, 0);
hw.chipset = ide_generic;
hwif = ide_find_port(); hwif = ide_find_port();
if (hwif) { if (hwif) {
......
...@@ -1333,8 +1333,7 @@ static void ide_port_init_devices(ide_hwif_t *hwif) ...@@ -1333,8 +1333,7 @@ static void ide_port_init_devices(ide_hwif_t *hwif)
static void ide_init_port(ide_hwif_t *hwif, unsigned int port, static void ide_init_port(ide_hwif_t *hwif, unsigned int port,
const struct ide_port_info *d) const struct ide_port_info *d)
{ {
if (d->chipset != ide_etrax100) hwif->channel = port;
hwif->channel = port;
if (d->chipset) if (d->chipset)
hwif->chipset = d->chipset; hwif->chipset = d->chipset;
...@@ -1519,7 +1518,7 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d) ...@@ -1519,7 +1518,7 @@ int ide_device_add_all(u8 *idx, const struct ide_port_info *d)
continue; continue;
} }
if (d->chipset != ide_etrax100 && (i & 1) && mate) { if ((i & 1) && mate) {
hwif->mate = mate; hwif->mate = mate;
mate->mate = hwif; mate->mate = hwif;
} }
...@@ -1665,6 +1664,7 @@ static void ide_legacy_init_one(u8 *idx, hw_regs_t *hw, u8 port_no, ...@@ -1665,6 +1664,7 @@ static void ide_legacy_init_one(u8 *idx, hw_regs_t *hw, u8 port_no,
ide_std_init_ports(hw, base, ctl); ide_std_init_ports(hw, base, ctl);
hw->irq = irq; hw->irq = irq;
hw->chipset = d->chipset;
hwif = ide_find_port_slot(d); hwif = ide_find_port_slot(d);
if (hwif) { if (hwif) {
......
...@@ -63,7 +63,6 @@ static int proc_ide_read_imodel ...@@ -63,7 +63,6 @@ static int proc_ide_read_imodel
case ide_pmac: name = "mac-io"; break; case ide_pmac: name = "mac-io"; break;
case ide_au1xxx: name = "au1xxx"; break; case ide_au1xxx: name = "au1xxx"; break;
case ide_palm3710: name = "palm3710"; break; case ide_palm3710: name = "palm3710"; break;
case ide_etrax100: name = "etrax100"; break;
case ide_acorn: name = "acorn"; break; case ide_acorn: name = "acorn"; break;
default: name = "(unknown)"; break; default: name = "(unknown)"; break;
} }
......
...@@ -138,6 +138,8 @@ static void __init buddha_setup_ports(hw_regs_t *hw, unsigned long base, ...@@ -138,6 +138,8 @@ static void __init buddha_setup_ports(hw_regs_t *hw, unsigned long base,
hw->irq = IRQ_AMIGA_PORTS; hw->irq = IRQ_AMIGA_PORTS;
hw->ack_intr = ack_intr; hw->ack_intr = ack_intr;
hw->chipset = ide_generic;
} }
/* /*
......
...@@ -81,6 +81,8 @@ static void __init falconide_setup_ports(hw_regs_t *hw) ...@@ -81,6 +81,8 @@ static void __init falconide_setup_ports(hw_regs_t *hw)
hw->irq = IRQ_MFP_IDE; hw->irq = IRQ_MFP_IDE;
hw->ack_intr = NULL; hw->ack_intr = NULL;
hw->chipset = ide_generic;
} }
/* /*
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/ide.h> #include <linux/ide.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/zorro.h> #include <linux/zorro.h>
#include <linux/module.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/amigahw.h> #include <asm/amigahw.h>
...@@ -62,7 +63,10 @@ ...@@ -62,7 +63,10 @@
GAYLE_NUM_HWIFS-1) GAYLE_NUM_HWIFS-1)
#define GAYLE_HAS_CONTROL_REG (!ide_doubler) #define GAYLE_HAS_CONTROL_REG (!ide_doubler)
#define GAYLE_IDEREG_SIZE (ide_doubler ? 0x1000 : 0x2000) #define GAYLE_IDEREG_SIZE (ide_doubler ? 0x1000 : 0x2000)
int ide_doubler = 0; /* support IDE doublers? */ int ide_doubler = 0; /* support IDE doublers? */
EXPORT_SYMBOL_GPL(ide_doubler);
module_param_named(doubler, ide_doubler, bool, 0); module_param_named(doubler, ide_doubler, bool, 0);
MODULE_PARM_DESC(doubler, "enable support for IDE doublers"); MODULE_PARM_DESC(doubler, "enable support for IDE doublers");
#endif /* CONFIG_BLK_DEV_IDEDOUBLER */ #endif /* CONFIG_BLK_DEV_IDEDOUBLER */
...@@ -112,6 +116,8 @@ static void __init gayle_setup_ports(hw_regs_t *hw, unsigned long base, ...@@ -112,6 +116,8 @@ static void __init gayle_setup_ports(hw_regs_t *hw, unsigned long base,
hw->irq = IRQ_AMIGA_PORTS; hw->irq = IRQ_AMIGA_PORTS;
hw->ack_intr = ack_intr; hw->ack_intr = ack_intr;
hw->chipset = ide_generic;
} }
/* /*
......
...@@ -78,6 +78,8 @@ static void __init macide_setup_ports(hw_regs_t *hw, unsigned long base, ...@@ -78,6 +78,8 @@ static void __init macide_setup_ports(hw_regs_t *hw, unsigned long base,
hw->irq = irq; hw->irq = irq;
hw->ack_intr = ack_intr; hw->ack_intr = ack_intr;
hw->chipset = ide_generic;
} }
static const char *mac_ide_name[] = static const char *mac_ide_name[] =
......
...@@ -70,6 +70,8 @@ static void q40_ide_setup_ports(hw_regs_t *hw, unsigned long base, ...@@ -70,6 +70,8 @@ static void q40_ide_setup_ports(hw_regs_t *hw, unsigned long base,
hw->irq = irq; hw->irq = irq;
hw->ack_intr = ack_intr; hw->ack_intr = ack_intr;
hw->chipset = ide_generic;
} }
static void q40ide_input_data(ide_drive_t *drive, struct request *rq, static void q40ide_input_data(ide_drive_t *drive, struct request *rq,
......
...@@ -747,9 +747,11 @@ static int __init cmd640x_init(void) ...@@ -747,9 +747,11 @@ static int __init cmd640x_init(void)
ide_std_init_ports(&hw[0], 0x1f0, 0x3f6); ide_std_init_ports(&hw[0], 0x1f0, 0x3f6);
hw[0].irq = 14; hw[0].irq = 14;
hw[0].chipset = ide_cmd640;
ide_std_init_ports(&hw[1], 0x170, 0x376); ide_std_init_ports(&hw[1], 0x170, 0x376);
hw[1].irq = 15; hw[1].irq = 15;
hw[1].chipset = ide_cmd640;
printk(KERN_INFO "cmd640: buggy cmd640%c interface on %s, config=0x%02x" printk(KERN_INFO "cmd640: buggy cmd640%c interface on %s, config=0x%02x"
"\n", 'a' + cmd640_chip_version - 1, bus_type, cfr); "\n", 'a' + cmd640_chip_version - 1, bus_type, cfr);
......
...@@ -47,13 +47,18 @@ static const struct ide_port_ops delkin_cb_port_ops = { ...@@ -47,13 +47,18 @@ static const struct ide_port_ops delkin_cb_port_ops = {
.quirkproc = ide_undecoded_slave, .quirkproc = ide_undecoded_slave,
}; };
static const struct ide_port_info delkin_cb_port_info = {
.port_ops = &delkin_cb_port_ops,
.host_flags = IDE_HFLAG_IO_32BIT | IDE_HFLAG_UNMASK_IRQS |
IDE_HFLAG_NO_DMA,
};
static int __devinit static int __devinit
delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id) delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
{ {
unsigned long base; unsigned long base;
hw_regs_t hw; hw_regs_t hw;
ide_hwif_t *hwif = NULL; ide_hwif_t *hwif = NULL;
ide_drive_t *drive;
int i, rc; int i, rc;
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
...@@ -79,6 +84,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id) ...@@ -79,6 +84,7 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
memset(&hw, 0, sizeof(hw)); memset(&hw, 0, sizeof(hw));
ide_std_init_ports(&hw, base + 0x10, base + 0x1e); ide_std_init_ports(&hw, base + 0x10, base + 0x1e);
hw.irq = dev->irq; hw.irq = dev->irq;
hw.dev = &dev->dev;
hw.chipset = ide_pci; /* this enables IRQ sharing */ hw.chipset = ide_pci; /* this enables IRQ sharing */
hwif = ide_find_port(); hwif = ide_find_port();
...@@ -89,26 +95,16 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id) ...@@ -89,26 +95,16 @@ delkin_cb_probe (struct pci_dev *dev, const struct pci_device_id *id)
ide_init_port_data(hwif, i); ide_init_port_data(hwif, i);
ide_init_port_hw(hwif, &hw); ide_init_port_hw(hwif, &hw);
hwif->port_ops = &delkin_cb_port_ops;
idx[0] = i; idx[0] = i;
ide_device_add(idx, NULL); ide_device_add(idx, &delkin_cb_port_info);
if (!hwif->present)
goto out_disable;
pci_set_drvdata(dev, hwif); pci_set_drvdata(dev, hwif);
hwif->dev = &dev->dev;
drive = &hwif->drives[0];
if (drive->present) {
drive->io_32bit = 1;
drive->unmask = 1;
}
return 0; return 0;
out_disable: out_disable:
printk(KERN_ERR "delkin_cb: no IDE devices found\n");
pci_release_regions(dev); pci_release_regions(dev);
pci_disable_device(dev); pci_disable_device(dev);
return -ENODEV; return -ENODEV;
...@@ -139,14 +135,12 @@ static struct pci_driver driver = { ...@@ -139,14 +135,12 @@ static struct pci_driver driver = {
.remove = delkin_cb_remove, .remove = delkin_cb_remove,
}; };
static int static int __init delkin_cb_init(void)
delkin_cb_init (void)
{ {
return pci_register_driver(&driver); return pci_register_driver(&driver);
} }
static void static void __exit delkin_cb_exit(void)
delkin_cb_exit (void)
{ {
pci_unregister_driver(&driver); pci_unregister_driver(&driver);
} }
......
...@@ -569,6 +569,11 @@ static int __devinit sis5513_init_one(struct pci_dev *dev, const struct pci_devi ...@@ -569,6 +569,11 @@ static int __devinit sis5513_init_one(struct pci_dev *dev, const struct pci_devi
{ {
struct ide_port_info d = sis5513_chipset; struct ide_port_info d = sis5513_chipset;
u8 udma_rates[] = { 0x00, 0x00, 0x07, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f }; u8 udma_rates[] = { 0x00, 0x00, 0x07, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f };
int rc;
rc = pci_enable_device(dev);
if (rc)
return rc;
if (sis_find_family(dev) == 0) if (sis_find_family(dev) == 0)
return -ENOTSUPP; return -ENOTSUPP;
......
...@@ -303,6 +303,8 @@ static int __init m8xx_ide_init_ports(hw_regs_t *hw, unsigned long data_port) ...@@ -303,6 +303,8 @@ static int __init m8xx_ide_init_ports(hw_regs_t *hw, unsigned long data_port)
pcmp->pcmc_per = 0x100000 >> (16 * _slot_); pcmp->pcmc_per = 0x100000 >> (16 * _slot_);
#endif /* CONFIG_IDE_8xx_PCCARD */ #endif /* CONFIG_IDE_8xx_PCCARD */
hw->chipset = ide_generic;
return 0; return 0;
} }
#endif /* CONFIG_IDE_8xx_PCCARD || CONFIG_IDE_8xx_DIRECT */ #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,6 +379,8 @@ static int __init m8xx_ide_init_ports(hw_regs_t *hw, unsigned long data_port)
((immap_t *) IMAP_ADDR)->im_siu_conf.sc_siel |= ((immap_t *) IMAP_ADDR)->im_siu_conf.sc_siel |=
(0x80000000 >> ioport_dsc[data_port].irq); (0x80000000 >> ioport_dsc[data_port].irq);
hw->chipset = ide_generic;
return 0; return 0;
} }
#endif /* CONFIG_IDE_8xx_DIRECT */ #endif /* CONFIG_IDE_8xx_DIRECT */
......
...@@ -239,13 +239,11 @@ EXPORT_SYMBOL(pci_osc_control_set); ...@@ -239,13 +239,11 @@ EXPORT_SYMBOL(pci_osc_control_set);
* choose highest power _SxD or any lower power * choose highest power _SxD or any lower power
*/ */
static pci_power_t acpi_pci_choose_state(struct pci_dev *pdev, static pci_power_t acpi_pci_choose_state(struct pci_dev *pdev)
pm_message_t state)
{ {
int acpi_state; int acpi_state;
acpi_state = acpi_pm_device_sleep_state(&pdev->dev, acpi_state = acpi_pm_device_sleep_state(&pdev->dev, NULL);
device_may_wakeup(&pdev->dev), NULL);
if (acpi_state < 0) if (acpi_state < 0)
return PCI_POWER_ERROR; return PCI_POWER_ERROR;
......
...@@ -506,7 +506,7 @@ pci_set_power_state(struct pci_dev *dev, pci_power_t state) ...@@ -506,7 +506,7 @@ pci_set_power_state(struct pci_dev *dev, pci_power_t state)
return 0; return 0;
} }
pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev, pm_message_t state); pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev);
/** /**
* pci_choose_state - Choose the power state of a PCI device * 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,7 +526,7 @@ pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state)
return PCI_D0; return PCI_D0;
if (platform_pci_choose_state) { if (platform_pci_choose_state) {
ret = platform_pci_choose_state(dev, state); ret = platform_pci_choose_state(dev);
if (ret != PCI_POWER_ERROR) if (ret != PCI_POWER_ERROR)
return ret; return ret;
} }
......
...@@ -6,8 +6,7 @@ extern void pci_remove_sysfs_dev_files(struct pci_dev *pdev); ...@@ -6,8 +6,7 @@ extern void pci_remove_sysfs_dev_files(struct pci_dev *pdev);
extern void pci_cleanup_rom(struct pci_dev *dev); extern void pci_cleanup_rom(struct pci_dev *dev);
/* Firmware callbacks */ /* Firmware callbacks */
extern pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev, extern pci_power_t (*platform_pci_choose_state)(struct pci_dev *dev);
pm_message_t state);
extern int (*platform_pci_set_power_state)(struct pci_dev *dev, extern int (*platform_pci_set_power_state)(struct pci_dev *dev,
pci_power_t state); pci_power_t state);
......
...@@ -117,9 +117,7 @@ static int pnpacpi_suspend(struct pnp_dev *dev, pm_message_t state) ...@@ -117,9 +117,7 @@ static int pnpacpi_suspend(struct pnp_dev *dev, pm_message_t state)
{ {
int power_state; int power_state;
power_state = acpi_pm_device_sleep_state(&dev->dev, power_state = acpi_pm_device_sleep_state(&dev->dev, NULL);
device_may_wakeup(&dev->dev),
NULL);
if (power_state < 0) if (power_state < 0)
power_state = (state.event == PM_EVENT_ON) ? power_state = (state.event == PM_EVENT_ON) ?
ACPI_STATE_D0 : ACPI_STATE_D3; ACPI_STATE_D0 : ACPI_STATE_D3;
......
...@@ -773,6 +773,7 @@ sclp_vt220_con_init(void) ...@@ -773,6 +773,7 @@ sclp_vt220_con_init(void)
{ {
int rc; int rc;
INIT_LIST_HEAD(&sclp_vt220_register.list);
if (!CONSOLE_IS_SCLP) if (!CONSOLE_IS_SCLP)
return 0; return 0;
rc = __sclp_vt220_init(); rc = __sclp_vt220_init();
......
...@@ -1598,7 +1598,7 @@ tape_3590_setup_device(struct tape_device *device) ...@@ -1598,7 +1598,7 @@ tape_3590_setup_device(struct tape_device *device)
rc = tape_3590_read_dev_chars(device, rdc_data); rc = tape_3590_read_dev_chars(device, rdc_data);
if (rc) { if (rc) {
DBF_LH(3, "Read device characteristics failed!\n"); DBF_LH(3, "Read device characteristics failed!\n");
goto fail_kmalloc; goto fail_rdc_data;
} }
rc = tape_std_assign(device); rc = tape_std_assign(device);
if (rc) if (rc)
......
...@@ -97,8 +97,8 @@ static int pure_hex(char **cp, unsigned int *val, int min_digit, ...@@ -97,8 +97,8 @@ static int pure_hex(char **cp, unsigned int *val, int min_digit,
return 0; return 0;
} }
static int parse_busid(char *str, int *cssid, int *ssid, int *devno, static int parse_busid(char *str, unsigned int *cssid, unsigned int *ssid,
int msgtrigger) unsigned int *devno, int msgtrigger)
{ {
char *str_work; char *str_work;
int val, rc, ret; int val, rc, ret;
...@@ -148,7 +148,7 @@ static int parse_busid(char *str, int *cssid, int *ssid, int *devno, ...@@ -148,7 +148,7 @@ static int parse_busid(char *str, int *cssid, int *ssid, int *devno,
static int blacklist_parse_parameters(char *str, range_action action, static int blacklist_parse_parameters(char *str, range_action action,
int msgtrigger) int msgtrigger)
{ {
int from_cssid, to_cssid, from_ssid, to_ssid, from, to; unsigned int from_cssid, to_cssid, from_ssid, to_ssid, from, to;
int rc, totalrc; int rc, totalrc;
char *parm; char *parm;
range_action ra; range_action ra;
......
...@@ -576,12 +576,14 @@ cio_validate_subchannel (struct subchannel *sch, struct subchannel_id schid) ...@@ -576,12 +576,14 @@ cio_validate_subchannel (struct subchannel *sch, struct subchannel_id schid)
err = -ENODEV; err = -ENODEV;
goto out; goto out;
} }
if (cio_is_console(sch->schid)) if (cio_is_console(sch->schid)) {
sch->opm = 0xff; sch->opm = 0xff;
else sch->isc = 1;
} else {
sch->opm = chp_get_sch_opm(sch); sch->opm = chp_get_sch_opm(sch);
sch->isc = 3;
}
sch->lpm = sch->schib.pmcw.pam & sch->opm; sch->lpm = sch->schib.pmcw.pam & sch->opm;
sch->isc = 3;
CIO_MSG_EVENT(6, "Detected device %04x on subchannel 0.%x.%04X " CIO_MSG_EVENT(6, "Detected device %04x on subchannel 0.%x.%04X "
"- PIM = %02X, PAM = %02X, POM = %02X\n", "- PIM = %02X, PAM = %02X, POM = %02X\n",
...@@ -704,9 +706,9 @@ void wait_cons_dev(void) ...@@ -704,9 +706,9 @@ void wait_cons_dev(void)
if (!console_subchannel_in_use) if (!console_subchannel_in_use)
return; return;
/* disable all but isc 7 (console device) */ /* disable all but isc 1 (console device) */
__ctl_store (save_cr6, 6, 6); __ctl_store (save_cr6, 6, 6);
cr6 = 0x01000000; cr6 = 0x40000000;
__ctl_load (cr6, 6, 6); __ctl_load (cr6, 6, 6);
do { do {
...@@ -788,11 +790,11 @@ cio_probe_console(void) ...@@ -788,11 +790,11 @@ cio_probe_console(void)
} }
/* /*
* enable console I/O-interrupt subclass 7 * enable console I/O-interrupt subclass 1
*/ */
ctl_set_bit(6, 24); ctl_set_bit(6, 30);
console_subchannel.isc = 7; console_subchannel.isc = 1;
console_subchannel.schib.pmcw.isc = 7; console_subchannel.schib.pmcw.isc = 1;
console_subchannel.schib.pmcw.intparm = console_subchannel.schib.pmcw.intparm =
(u32)(addr_t)&console_subchannel; (u32)(addr_t)&console_subchannel;
ret = cio_modify(&console_subchannel); ret = cio_modify(&console_subchannel);
......
...@@ -376,9 +376,9 @@ acpi_handle acpi_get_pci_rootbridge_handle(unsigned int, unsigned int); ...@@ -376,9 +376,9 @@ acpi_handle acpi_get_pci_rootbridge_handle(unsigned int, unsigned int);
#define DEVICE_ACPI_HANDLE(dev) ((acpi_handle)((dev)->archdata.acpi_handle)) #define DEVICE_ACPI_HANDLE(dev) ((acpi_handle)((dev)->archdata.acpi_handle))
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
int acpi_pm_device_sleep_state(struct device *, int, int *); int acpi_pm_device_sleep_state(struct device *, int *);
#else /* !CONFIG_PM_SLEEP */ #else /* !CONFIG_PM_SLEEP */
static inline int acpi_pm_device_sleep_state(struct device *d, int w, int *p) static inline int acpi_pm_device_sleep_state(struct device *d, int *p)
{ {
if (p) if (p)
*p = ACPI_STATE_D0; *p = ACPI_STATE_D0;
......
...@@ -315,14 +315,14 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) ...@@ -315,14 +315,14 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
asm volatile( \ asm volatile( \
" lctlg %1,%2,0(%0)\n" \ " lctlg %1,%2,0(%0)\n" \
: : "a" (&array), "i" (low), "i" (high), \ : : "a" (&array), "i" (low), "i" (high), \
"m" (*(addrtype *)(array))); \ "m" (*(addrtype *)(&array))); \
}) })
#define __ctl_store(array, low, high) ({ \ #define __ctl_store(array, low, high) ({ \
typedef struct { char _[sizeof(array)]; } addrtype; \ typedef struct { char _[sizeof(array)]; } addrtype; \
asm volatile( \ asm volatile( \
" stctg %2,%3,0(%1)\n" \ " stctg %2,%3,0(%1)\n" \
: "=m" (*(addrtype *)(array)) \ : "=m" (*(addrtype *)(&array)) \
: "a" (&array), "i" (low), "i" (high)); \ : "a" (&array), "i" (low), "i" (high)); \
}) })
...@@ -333,14 +333,14 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) ...@@ -333,14 +333,14 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
asm volatile( \ asm volatile( \
" lctl %1,%2,0(%0)\n" \ " lctl %1,%2,0(%0)\n" \
: : "a" (&array), "i" (low), "i" (high), \ : : "a" (&array), "i" (low), "i" (high), \
"m" (*(addrtype *)(array))); \ "m" (*(addrtype *)(&array))); \
}) })
#define __ctl_store(array, low, high) ({ \ #define __ctl_store(array, low, high) ({ \
typedef struct { char _[sizeof(array)]; } addrtype; \ typedef struct { char _[sizeof(array)]; } addrtype; \
asm volatile( \ asm volatile( \
" stctl %2,%3,0(%1)\n" \ " stctl %2,%3,0(%1)\n" \
: "=m" (*(addrtype *)(array)) \ : "=m" (*(addrtype *)(&array)) \
: "a" (&array), "i" (low), "i" (high)); \ : "a" (&array), "i" (low), "i" (high)); \
}) })
......
...@@ -153,7 +153,7 @@ enum { ide_unknown, ide_generic, ide_pci, ...@@ -153,7 +153,7 @@ enum { ide_unknown, ide_generic, ide_pci,
ide_qd65xx, ide_umc8672, ide_ht6560b, ide_qd65xx, ide_umc8672, ide_ht6560b,
ide_rz1000, ide_trm290, ide_rz1000, ide_trm290,
ide_cmd646, ide_cy82c693, ide_4drives, ide_cmd646, ide_cy82c693, ide_4drives,
ide_pmac, ide_etrax100, ide_acorn, ide_pmac, ide_acorn,
ide_au1xxx, ide_palm3710 ide_au1xxx, ide_palm3710
}; };
......
...@@ -894,8 +894,6 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr) ...@@ -894,8 +894,6 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
if (!sfd) if (!sfd)
goto out_put_dentry; goto out_put_dentry;
err = -ENOMEM;
file = alloc_file(path.mnt, path.dentry, f_mode, &shm_file_operations); file = alloc_file(path.mnt, path.dentry, f_mode, &shm_file_operations);
if (!file) if (!file)
goto out_free; goto out_free;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment