-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MIPS: Yeeloong 2F: Add board specific suspend support
Lemote Loongson 2F family machines need an external interrupt to wake the system from the suspend mode. For YeeLoong 2F and Mengloong 2F setup the keyboard interrupt as the wakeup interrupt. The new Fuloong 2F and LingLoong 2F have a button to directly send an interrupt to the CPU so there is no need to setup an interrupt. Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com> Cc: linux-mips@linux-mips.org Cc: yanh@lemote.com Cc: huhb@lemote.com Cc: Wu Zhangjin <wuzhangjin@gmail.com> Cc: Len Brown <len.brown@intel.com> Cc: Rafael J. Wysocki <rjw@sisk.pl> Cc: linux-pm@lists.linux-foundation.org Patchwork: http://patchwork.linux-mips.org/patch/630/ Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
- Loading branch information
Wu Zhangjin
authored and
Ralf Baechle
committed
Dec 17, 2009
1 parent
f181bf6
commit a9e8641
Showing
2 changed files
with
79 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,3 +3,9 @@ | |
# | ||
|
||
obj-y += irq.o reset.o | ||
|
||
# | ||
# Suspend Support | ||
# | ||
|
||
obj-$(CONFIG_LOONGSON_SUSPEND) += pm.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
/* | ||
* Lemote loongson2f family machines' specific suspend support | ||
* | ||
* Copyright (C) 2009 Lemote Inc. | ||
* Author: Wu Zhangjin <wuzj@lemote.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 2 of the License, or | ||
* (at your option) any later version. | ||
*/ | ||
|
||
#include <linux/suspend.h> | ||
#include <linux/interrupt.h> | ||
#include <linux/pm.h> | ||
#include <linux/i8042.h> | ||
|
||
#include <asm/i8259.h> | ||
#include <asm/mipsregs.h> | ||
#include <asm/bootinfo.h> | ||
|
||
#include <loongson.h> | ||
|
||
#define I8042_KBD_IRQ 1 | ||
#define I8042_CTR_KBDINT 0x01 | ||
#define I8042_CTR_KBDDIS 0x10 | ||
|
||
static unsigned char i8042_ctr; | ||
|
||
static int i8042_enable_kbd_port(void) | ||
{ | ||
if (i8042_command(&i8042_ctr, I8042_CMD_CTL_RCTR)) { | ||
pr_err("i8042.c: Can't read CTR while enabling i8042 kbd port." | ||
"\n"); | ||
return -EIO; | ||
} | ||
|
||
i8042_ctr &= ~I8042_CTR_KBDDIS; | ||
i8042_ctr |= I8042_CTR_KBDINT; | ||
|
||
if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { | ||
i8042_ctr &= ~I8042_CTR_KBDINT; | ||
i8042_ctr |= I8042_CTR_KBDDIS; | ||
pr_err("i8042.c: Failed to enable KBD port.\n"); | ||
|
||
return -EIO; | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
/* | ||
* The i8042 is connnected to i8259A | ||
*/ | ||
void setup_wakeup_events(void) | ||
{ | ||
int irq_mask; | ||
|
||
switch (mips_machtype) { | ||
case MACH_LEMOTE_ML2F7: | ||
case MACH_LEMOTE_YL2F89: | ||
/* open the keyboard irq in i8259A */ | ||
outb((0xff & ~(1 << I8042_KBD_IRQ)), PIC_MASTER_IMR); | ||
irq_mask = inb(PIC_MASTER_IMR); | ||
|
||
/* enable keyboard port */ | ||
i8042_enable_kbd_port(); | ||
break; | ||
|
||
default: | ||
break; | ||
} | ||
} |