You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
[MIPS] APM emu support
Signed-off-by: Rodolfo Giometti <giometti@linux.it> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
committed by
Ralf Baechle
parent
aa9772e330
commit
952fa954a6
@@ -1890,6 +1890,32 @@ config PM
|
|||||||
bool "Power Management support (EXPERIMENTAL)"
|
bool "Power Management support (EXPERIMENTAL)"
|
||||||
depends on EXPERIMENTAL && SOC_AU1X00
|
depends on EXPERIMENTAL && SOC_AU1X00
|
||||||
|
|
||||||
|
config APM
|
||||||
|
tristate "Advanced Power Management Emulation"
|
||||||
|
depends on PM
|
||||||
|
---help---
|
||||||
|
APM is a BIOS specification for saving power using several different
|
||||||
|
techniques. This is mostly useful for battery powered systems with
|
||||||
|
APM compliant BIOSes. If you say Y here, the system time will be
|
||||||
|
reset after a RESUME operation, the /proc/apm device will provide
|
||||||
|
battery status information, and user-space programs will receive
|
||||||
|
notification of APM "events" (e.g. battery status change).
|
||||||
|
|
||||||
|
In order to use APM, you will need supporting software. For location
|
||||||
|
and more information, read <file:Documentation/pm.txt> and the
|
||||||
|
Battery Powered Linux mini-HOWTO, available from
|
||||||
|
<http://www.tldp.org/docs.html#howto>.
|
||||||
|
|
||||||
|
This driver does not spin down disk drives (see the hdparm(8)
|
||||||
|
manpage ("man 8 hdparm") for that), and it doesn't turn off
|
||||||
|
VESA-compliant "green" monitors.
|
||||||
|
|
||||||
|
Generally, if you don't have a battery in your machine, there isn't
|
||||||
|
much point in using this driver and you should say N. If you get
|
||||||
|
random kernel OOPSes or reboots that don't seem to be related to
|
||||||
|
anything, try disabling/enabling this option (or disabling/enabling
|
||||||
|
APM in your BIOS).
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "net/Kconfig"
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \
|
|||||||
|
|
||||||
obj-$(CONFIG_MODULES) += mips_ksyms.o module.o
|
obj-$(CONFIG_MODULES) += mips_ksyms.o module.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_APM) += apm.o
|
||||||
|
|
||||||
obj-$(CONFIG_CPU_R3000) += r2300_fpu.o r2300_switch.o
|
obj-$(CONFIG_CPU_R3000) += r2300_fpu.o r2300_switch.o
|
||||||
obj-$(CONFIG_CPU_TX39XX) += r2300_fpu.o r2300_switch.o
|
obj-$(CONFIG_CPU_TX39XX) += r2300_fpu.o r2300_switch.o
|
||||||
obj-$(CONFIG_CPU_TX49XX) += r4k_fpu.o r4k_switch.o
|
obj-$(CONFIG_CPU_TX49XX) += r4k_fpu.o r4k_switch.o
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,65 @@
|
|||||||
|
/* -*- linux-c -*-
|
||||||
|
*
|
||||||
|
* (C) 2003 zecke@handhelds.org
|
||||||
|
*
|
||||||
|
* GPL version 2
|
||||||
|
*
|
||||||
|
* based on arch/arm/kernel/apm.c
|
||||||
|
* factor out the information needed by architectures to provide
|
||||||
|
* apm status
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef MIPS_ASM_SA1100_APM_H
|
||||||
|
#define MIPS_ASM_SA1100_APM_H
|
||||||
|
|
||||||
|
#include <linux/config.h>
|
||||||
|
#include <linux/apm_bios.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This structure gets filled in by the machine specific 'get_power_status'
|
||||||
|
* implementation. Any fields which are not set default to a safe value.
|
||||||
|
*/
|
||||||
|
struct apm_power_info {
|
||||||
|
unsigned char ac_line_status;
|
||||||
|
#define APM_AC_OFFLINE 0
|
||||||
|
#define APM_AC_ONLINE 1
|
||||||
|
#define APM_AC_BACKUP 2
|
||||||
|
#define APM_AC_UNKNOWN 0xff
|
||||||
|
|
||||||
|
unsigned char battery_status;
|
||||||
|
#define APM_BATTERY_STATUS_HIGH 0
|
||||||
|
#define APM_BATTERY_STATUS_LOW 1
|
||||||
|
#define APM_BATTERY_STATUS_CRITICAL 2
|
||||||
|
#define APM_BATTERY_STATUS_CHARGING 3
|
||||||
|
#define APM_BATTERY_STATUS_NOT_PRESENT 4
|
||||||
|
#define APM_BATTERY_STATUS_UNKNOWN 0xff
|
||||||
|
|
||||||
|
unsigned char battery_flag;
|
||||||
|
#define APM_BATTERY_FLAG_HIGH (1 << 0)
|
||||||
|
#define APM_BATTERY_FLAG_LOW (1 << 1)
|
||||||
|
#define APM_BATTERY_FLAG_CRITICAL (1 << 2)
|
||||||
|
#define APM_BATTERY_FLAG_CHARGING (1 << 3)
|
||||||
|
#define APM_BATTERY_FLAG_NOT_PRESENT (1 << 7)
|
||||||
|
#define APM_BATTERY_FLAG_UNKNOWN 0xff
|
||||||
|
|
||||||
|
int battery_life;
|
||||||
|
int time;
|
||||||
|
int units;
|
||||||
|
#define APM_UNITS_MINS 0
|
||||||
|
#define APM_UNITS_SECS 1
|
||||||
|
#define APM_UNITS_UNKNOWN -1
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This allows machines to provide their own "apm get power status" function.
|
||||||
|
*/
|
||||||
|
extern void (*apm_get_power_status)(struct apm_power_info *);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Queue an event (APM_SYS_SUSPEND or APM_CRITICAL_SUSPEND)
|
||||||
|
*/
|
||||||
|
void apm_queue_event(apm_event_t event);
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user