Skip to content

Commit

Permalink
[MIPS] IP22: Add platform device for Indy volume buttons
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Thomas Bogendoerfer authored and Ralf Baechle committed Jul 15, 2008
1 parent efff4ae commit b03d7b1
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 49 deletions.
11 changes: 11 additions & 0 deletions arch/mips/sgi-ip22/ip22-platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
51 changes: 2 additions & 49 deletions arch/mips/sgi-ip22/ip22-reset.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand All @@ -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;
}
Expand Down

0 comments on commit b03d7b1

Please sign in to comment.