mirror of https://gitee.com/openkylin/linux.git
[MIPS] IP22: Add platform device for Indy volume buttons
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>
This commit is contained in:
parent
efff4ae259
commit
b03d7b18fd
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue