[MIPS] IP22: Add platform device for Indy volume buttons
authorThomas Bogendoerfer <tsbogend@alpha.franken.de>
Fri, 11 Jul 2008 21:03:03 +0000 (23:03 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Tue, 15 Jul 2008 17:44:37 +0000 (18:44 +0100)
Create platform device for Indy volume buttons and remove button
handling from ip22-reset.c

Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/sgi-ip22/ip22-platform.c
arch/mips/sgi-ip22/ip22-reset.c

index d93d07a..fc6df96 100644 (file)
@@ -182,3 +182,14 @@ static int __init sgi_hal2_devinit(void)
 }
 
 device_initcall(sgi_hal2_devinit);
+
+static int __init sgi_button_devinit(void)
+{
+       if (ip22_is_fullhouse())
+               return 0; /* full house has no volume buttons */
+
+       return IS_ERR(platform_device_register_simple("sgiindybtns",
+                                                     -1, NULL, 0));
+}
+
+device_initcall(sgi_button_devinit);
index a435b31..4ad5c33 100644 (file)
@@ -39,7 +39,7 @@
 #define POWERDOWN_FREQ         (HZ / 4)
 #define PANIC_FREQ             (HZ / 8)
 
-static struct timer_list power_timer, blink_timer, debounce_timer, volume_timer;
+static struct timer_list power_timer, blink_timer, debounce_timer;
 
 #define MACHINE_PANICED                1
 #define MACHINE_SHUTTING_DOWN  2
@@ -139,36 +139,6 @@ static inline void power_button(void)
        add_timer(&power_timer);
 }
 
-void (*indy_volume_button)(int) = NULL;
-
-EXPORT_SYMBOL(indy_volume_button);
-
-static inline void volume_up_button(unsigned long data)
-{
-       del_timer(&volume_timer);
-
-       if (indy_volume_button)
-               indy_volume_button(1);
-
-       if (sgint->istat1 & SGINT_ISTAT1_PWR) {
-               volume_timer.expires = jiffies + (HZ / 100);
-               add_timer(&volume_timer);
-       }
-}
-
-static inline void volume_down_button(unsigned long data)
-{
-       del_timer(&volume_timer);
-
-       if (indy_volume_button)
-               indy_volume_button(-1);
-
-       if (sgint->istat1 & SGINT_ISTAT1_PWR) {
-               volume_timer.expires = jiffies + (HZ / 100);
-               add_timer(&volume_timer);
-       }
-}
-
 static irqreturn_t panel_int(int irq, void *dev_id)
 {
        unsigned int buttons;
@@ -190,25 +160,8 @@ static irqreturn_t panel_int(int irq, void *dev_id)
         * House. Only lowest 2 bits are used. Guiness uses upper four bits
         * for volume control". This is not true, all bits are pulled high
         * on fullhouse */
-       if (ip22_is_fullhouse() || !(buttons & SGIOC_PANEL_POWERINTR)) {
+       if (!(buttons & SGIOC_PANEL_POWERINTR))
                power_button();
-               return IRQ_HANDLED;
-       }
-       /* TODO: mute/unmute */
-       /* Volume up button was pressed */
-       if (!(buttons & SGIOC_PANEL_VOLUPINTR)) {
-               init_timer(&volume_timer);
-               volume_timer.function = volume_up_button;
-               volume_timer.expires = jiffies + (HZ / 100);
-               add_timer(&volume_timer);
-       }
-       /* Volume down button was pressed */
-       if (!(buttons & SGIOC_PANEL_VOLDNINTR)) {
-               init_timer(&volume_timer);
-               volume_timer.function = volume_down_button;
-               volume_timer.expires = jiffies + (HZ / 100);
-               add_timer(&volume_timer);
-       }
 
        return IRQ_HANDLED;
 }