summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@nuts.ninka.net>2003-05-05 17:34:39 -0700
committerDavid S. Miller <davem@nuts.ninka.net>2003-05-05 17:34:39 -0700
commitdf608e6ae34d6599ac10cf582f19161e0efdb2ad (patch)
tree5220fe69ab91cc6fd1b69dd7705668d516308240
parentd210257e8b4184e3014f4afcedb185d3aa685b27 (diff)
[SPARC64]: Only use power interrupt when button property exists.
-rw-r--r--arch/sparc64/kernel/power.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/sparc64/kernel/power.c b/arch/sparc64/kernel/power.c
index 862fa9d6ba61..93132adbec08 100644
--- a/arch/sparc64/kernel/power.c
+++ b/arch/sparc64/kernel/power.c
@@ -84,6 +84,16 @@ again:
return 0;
}
+static int __init has_button_interrupt(struct linux_ebus_device *edev)
+{
+ if (edev->irqs[0] == PCI_IRQ_NONE)
+ return 0;
+ if (!prom_node_has_property(edev->prom_node, "button"))
+ return 0;
+
+ return 1;
+}
+
void __init power_init(void)
{
struct linux_ebus *ebus;
@@ -106,7 +116,7 @@ found:
power_reg = (unsigned long)ioremap(edev->resource[0].start, 0x4);
printk("power: Control reg at %016lx ... ", power_reg);
poweroff_method = machine_halt; /* able to use the standard halt */
- if (edev->irqs[0] != PCI_IRQ_NONE) {
+ if (has_button_interrupt(edev)) {
if (kernel_thread(powerd, 0, CLONE_FS) < 0) {
printk("Failed to start power daemon.\n");
return;