summaryrefslogtreecommitdiffstats
path: root/meta/recipes-bsp/apmd
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-bsp/apmd')
-rw-r--r--meta/recipes-bsp/apmd/apmd-3.2.2-14/apmd_proxy91
-rw-r--r--meta/recipes-bsp/apmd/apmd-3.2.2-14/apmd_proxy.conf16
-rw-r--r--meta/recipes-bsp/apmd/apmd-3.2.2-14/default8
-rwxr-xr-xmeta/recipes-bsp/apmd/apmd-3.2.2-14/init44
-rw-r--r--meta/recipes-bsp/apmd/apmd-3.2.2-14/libtool.patch29
-rw-r--r--meta/recipes-bsp/apmd/apmd-3.2.2-14/unlinux.patch21
-rw-r--r--meta/recipes-bsp/apmd/apmd-3.2.2-14/workaround.patch59
-rw-r--r--meta/recipes-bsp/apmd/apmd_3.2.2-14.bb63
8 files changed, 331 insertions, 0 deletions
diff --git a/meta/recipes-bsp/apmd/apmd-3.2.2-14/apmd_proxy b/meta/recipes-bsp/apmd/apmd-3.2.2-14/apmd_proxy
new file mode 100644
index 0000000000..c48ee4e5d5
--- /dev/null
+++ b/meta/recipes-bsp/apmd/apmd-3.2.2-14/apmd_proxy
@@ -0,0 +1,91 @@
1#!/bin/sh
2#
3# apmd_proxy - program dispatcher for APM daemon
4#
5# Written by Craig Markwardt (craigm@lheamail.gsfc.nasa.gov) 21 May 1999
6# Modified for Debian by Avery Pennarun
7#
8# This shell script is called by the APM daemon (apmd) when a power
9# management event occurs. Its first and second arguments describe the
10# event. For example, apmd will call "apmd_proxy suspend system" just
11# before the system is suspended.
12#
13# Here are the possible arguments:
14#
15# start - APM daemon has started
16# stop - APM daemon is shutting down
17# suspend critical - APM system indicates critical suspend (++)
18# suspend system - APM system has requested suspend mode
19# suspend user - User has requested suspend mode
20# standby system - APM system has requested standby mode
21# standby user - User has requested standby mode
22# resume suspend - System has resumed from suspend mode
23# resume standby - System has resumed from standby mode
24# resume critical - System has resumed from critical suspend
25# change battery - APM system reported low battery
26# change power - APM system reported AC/battery change
27# change time - APM system reported time change (*)
28# change capability - APM system reported config. change (+)
29#
30# (*) - APM daemon may be configured to not call these sequences
31# (+) - Available if APM kernel supports it.
32# (++) - "suspend critical" is never passed to apmd from the kernel,
33# so we will never see it here. Scripts that process "resume
34# critical" events need to take this into account.
35#
36# It is the proxy script's responsibility to examine the APM status
37# (via /proc/apm) or other status and to take appropriate actions.
38# For example, the script might unmount network drives before the
39# machine is suspended.
40#
41# In Debian, the usual way of adding functionality to the proxy is to
42# add a script to /etc/apm/event.d. This script will be called by
43# apmd_proxy (via run-parts) with the same arguments.
44#
45# If it is important that a certain set of script be run in a certain
46# order on suspend and in a different order on resume, then put all
47# the scripts in /etc/apm/scripts.d instead of /etc/apm/event.d and
48# symlink to these from /etc/apm/suspend.d, /etc/apm/resume.d and
49# /etc/apm/other.d using names whose lexicographical order is the same
50# as the desired order of execution.
51#
52# If the kernel's APM driver supports it, apmd_proxy can return a non-zero
53# exit status on suspend and standby events, indicating that the suspend
54# or standby event should be rejected.
55#
56# *******************************************************************
57
58set -e
59
60# The following doesn't yet work, because current kernels (up to at least
61# 2.4.20) do not support rejection of APM events. Supporting this would
62# require substantial modifications to the APM driver. We will re-enable
63# this feature if the driver is ever modified. -- cph@debian.org
64#
65#SUSPEND_ON_AC=false
66#[ -r /etc/apm/apmd_proxy.conf ] && . /etc/apm/apmd_proxy.conf
67#
68#if [ "${SUSPEND_ON_AC}" = "false" -a "${2}" = "system" ] \
69# && on_ac_power >/dev/null; then
70# # Reject system suspends and standbys if we are on AC power
71# exit 1 # Reject (NOTE kernel support must be enabled)
72#fi
73
74if [ "${1}" = "suspend" -o "${1}" = "standby" ]; then
75 run-parts -a "${1}" -a "${2}" /etc/apm/event.d
76 if [ -d /etc/apm/suspend.d ]; then
77 run-parts -a "${1}" -a "${2}" /etc/apm/suspend.d
78 fi
79elif [ "${1}" = "resume" ]; then
80 if [ -d /etc/apm/resume.d ]; then
81 run-parts -a "${1}" -a "${2}" /etc/apm/resume.d
82 fi
83 run-parts -a "${1}" -a "${2}" /etc/apm/event.d
84else
85 run-parts -a "${1}" -a "${2}" /etc/apm/event.d
86 if [ -d /etc/apm/other.d ]; then
87 run-parts -a "${1}" -a "${2}" /etc/apm/other.d
88 fi
89fi
90
91exit 0
diff --git a/meta/recipes-bsp/apmd/apmd-3.2.2-14/apmd_proxy.conf b/meta/recipes-bsp/apmd/apmd-3.2.2-14/apmd_proxy.conf
new file mode 100644
index 0000000000..751145c522
--- /dev/null
+++ b/meta/recipes-bsp/apmd/apmd-3.2.2-14/apmd_proxy.conf
@@ -0,0 +1,16 @@
1# /etc/apm/apmd_proxy.conf: configuration file for apmd.
2#
3# This file is managed by debconf when installing or reconfiguring the
4# package. It is generated by merging the answers gathered by debconf
5# into the template file "/usr/share/apmd/apmd_proxy.conf".
6
7# The following doesn't yet work, because current kernels (up to at least
8# 2.4.20) do not support rejection of APM events. Supporting this would
9# require substantial modifications to the APM driver. We will re-enable
10# this feature if the driver is ever modified. -- cph@debian.org
11#
12# Set the following to "false" if you want to reject system suspend or
13# system standby requests when the computer is running on AC power.
14# Otherwise set this to "true". Such requests are never rejected when
15# the computer is running on battery power.
16#SUSPEND_ON_AC=true
diff --git a/meta/recipes-bsp/apmd/apmd-3.2.2-14/default b/meta/recipes-bsp/apmd/apmd-3.2.2-14/default
new file mode 100644
index 0000000000..4b7965abf8
--- /dev/null
+++ b/meta/recipes-bsp/apmd/apmd-3.2.2-14/default
@@ -0,0 +1,8 @@
1#
2# Default for /etc/init.d/apmd
3#
4
5# As apmd can be called with arguments, we use the following variable
6# to store them, e.g., APMD="-w 5 -p 2".
7# See the manual page apmd(8) for details.
8APMD="--proxy-timeout 30"
diff --git a/meta/recipes-bsp/apmd/apmd-3.2.2-14/init b/meta/recipes-bsp/apmd/apmd-3.2.2-14/init
new file mode 100755
index 0000000000..268d4b26b7
--- /dev/null
+++ b/meta/recipes-bsp/apmd/apmd-3.2.2-14/init
@@ -0,0 +1,44 @@
1#!/bin/sh
2### BEGIN INIT INFO
3# Provides: apmd
4# Required-Start: $remote_fs
5# Required-Stop: $remote_fs
6# Default-Start: 2 3 4 5
7# Default-Stop: 0 1 6
8# Short-Description: Advanced Power Management daemon
9### END INIT INFO
10
11PATH=/bin:/usr/bin:/sbin:/usr/sbin
12
13[ -f /etc/default/rcS ] && . /etc/default/rcS
14[ -f /etc/default/apmd ] && . /etc/default/apmd
15
16case "$1" in
17 start)
18 echo -n "Starting advanced power management daemon: "
19 start-stop-daemon -S -x /usr/sbin/apmd -- \
20 -P /etc/apm/apmd_proxy $APMD
21 if [ $? = 0 ]; then
22 echo "apmd."
23 else
24 echo "(failed.)"
25 fi
26 ;;
27 stop)
28 echo -n "Stopping advanced power management daemon: "
29 start-stop-daemon -K \
30 -x /usr/sbin/apmd
31 echo "apmd."
32 ;;
33 restart|force-reload)
34 $0 stop
35 $0 start
36 exit
37 ;;
38 *)
39 echo "Usage: /etc/init.d/apmd {start|stop|restart|force-reload}"
40 exit 1
41 ;;
42esac
43
44exit 0
diff --git a/meta/recipes-bsp/apmd/apmd-3.2.2-14/libtool.patch b/meta/recipes-bsp/apmd/apmd-3.2.2-14/libtool.patch
new file mode 100644
index 0000000000..711e777084
--- /dev/null
+++ b/meta/recipes-bsp/apmd/apmd-3.2.2-14/libtool.patch
@@ -0,0 +1,29 @@
1# Add by RP to address "unable to infer tagged configuration" error:
2# commit 35de05e61b88c0808a5e885bb0efdf420555d5ad
3# Author: Richard Purdie <rpurdie@rpsys.net>
4# Date: Sun Jun 1 16:13:38 2008 +0000
5#
6# apmd: Use libtool --tag options to avoid problems with libtool 2.2.4 (from poky)
7#
8# However I didn't see same issue with current libtool-2.2.10. Also per my understanding,
9# the default tag, if not specified, falls back to CC. So disable it from patching, but
10# keep it here. If we encounter similar issue in the future, we could then push upstream
11#
12# Comment added by Kevin Tian <kevin.tian@intel.com>, 2010-07-16
13
14Index: apmd-3.2.2.orig/Makefile
15===================================================================
16--- apmd-3.2.2.orig.orig/Makefile 2004-01-04 08:13:18.000000000 +0000
17+++ apmd-3.2.2.orig/Makefile 2008-04-21 17:10:03.000000000 +0100
18@@ -58,9 +57,8 @@
19 #CFLAGS=-O3 -m486 -fomit-frame-pointer
20 #LDFLAGS=-s
21
22-LIBTOOL=libtool --quiet
23-LT_COMPILE = $(LIBTOOL) --mode=compile $(CC)
24-LT_LINK = $(LIBTOOL) --mode=link $(CC)
25+LT_COMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC)
26+LT_LINK = $(LIBTOOL) --tag=CC --mode=link $(CC)
27 LT_INSTALL = $(LIBTOOL) --mode=install install
28 LT_CLEAN = $(LIBTOOL) --mode=clean rm
29
diff --git a/meta/recipes-bsp/apmd/apmd-3.2.2-14/unlinux.patch b/meta/recipes-bsp/apmd/apmd-3.2.2-14/unlinux.patch
new file mode 100644
index 0000000000..c64e7df524
--- /dev/null
+++ b/meta/recipes-bsp/apmd/apmd-3.2.2-14/unlinux.patch
@@ -0,0 +1,21 @@
1# copy OE commit message here:
2# commit 9456cdc1cf43e3ba9e6d88c63560c1b6fdee4359
3# Author: Michael Krelin <hacker@klever.net>
4# Date: Tue May 29 12:27:45 2007 +0000
5#
6# apmd: prevent build from interferring with host kernel headers. Closes #1257
7#
8# comment added by Kevin Tian <kevin.tian@intel.com>, 2010-07-13
9
10--- apmd-3.2.2.orig/Makefile
11+++ apmd-3.2.2/Makefile
12@@ -43,8 +43,7 @@
13
14 CC=gcc
15 CFLAGS=-O -g
16-XTRACFLAGS=-Wall -pipe -I. -I/usr/src/linux/include -I/usr/X11R6/include \
17- -I/usr/src/linux-2.2/include -I /usr/src/linux-2.0/include \
18+XTRACFLAGS=-Wall -pipe -I. \
19 -DVERSION=\"$(VERSION)\" \
20 -DDEFAULT_PROXY_NAME=\"$(PROXY_DIR)/apmd_proxy\"
21 LDFLAGS=
diff --git a/meta/recipes-bsp/apmd/apmd-3.2.2-14/workaround.patch b/meta/recipes-bsp/apmd/apmd-3.2.2-14/workaround.patch
new file mode 100644
index 0000000000..d37380397c
--- /dev/null
+++ b/meta/recipes-bsp/apmd/apmd-3.2.2-14/workaround.patch
@@ -0,0 +1,59 @@
1# this workaround is there in OE since 2003. It looks to provide a workaround
2# allowing others sending SIGUSR1 to cause an apm suspend event. Disable it for
3# now.
4#
5# comment added by Kevin Tian <kevin.tian@intel.com>, 2010-07-13
6#
7# Patch managed by http://www.holgerschurig.de/patcher.html
8#
9
10--- apmd-3.2.2.orig/apmd.c~workaround.patch
11+++ apmd-3.2.2.orig/apmd.c
12@@ -158,6 +158,7 @@
13 static int quiet_bios_batlow; /* = 0 */
14 static int verbosity = DEFAULT_VERBOSITY;
15 static int warn_level = 10;
16+static int sleep_now = 0; /* ntp */
17
18 static uid_t apmd_uid = 0;
19 static int apmd_fd = -1;
20@@ -942,6 +943,12 @@
21 exit(0);
22 }
23
24+/* ntp */
25+static void sig_usr1(int sig)
26+{
27+ sleep_now = 1;
28+}
29+
30 int main(int argc, char **argv)
31 {
32 int c;
33@@ -1151,6 +1158,8 @@
34 openlog("apmd", (verbosity>=LOG_DEBUG)?LOG_PERROR:0 | LOG_PID | LOG_CONS, LOG_DAEMON);
35
36 /* Set up signal handler */
37+ if (signal(SIGUSR1, SIG_IGN) != SIG_IGN)
38+ signal(SIGUSR1, sig_usr1); /* ntp */
39 if (signal(SIGINT, SIG_IGN) != SIG_IGN)
40 signal(SIGINT, sig_handler);
41 if (signal(SIGQUIT, SIG_IGN) != SIG_IGN)
42@@ -1230,9 +1239,16 @@
43
44 for (;;)
45 {
46- int num_events = apm_get_events(apmd_fd, check_interval, events, MAX_EVENTS);
47+ int num_events;
48 int e, a;
49
50+ /* ntp */
51+ if (sleep_now) {
52+ sleep_now = 0;
53+ handle_event(APM_USER_SUSPEND, &apminfo);
54+ }
55+
56+ num_events = apm_get_events(apmd_fd, check_interval, events, MAX_EVENTS);
57 apm_read(&apminfo);
58
59 if (num_events == 0) {
diff --git a/meta/recipes-bsp/apmd/apmd_3.2.2-14.bb b/meta/recipes-bsp/apmd/apmd_3.2.2-14.bb
new file mode 100644
index 0000000000..2778cc69e8
--- /dev/null
+++ b/meta/recipes-bsp/apmd/apmd_3.2.2-14.bb
@@ -0,0 +1,63 @@
1DESCRIPTION = "Set of tools for managing notebook power consumption."
2SECTION = "base"
3PRIORITY = "required"
4LICENSE = "GPLv2+"
5LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
6 file://apm.h;firstline=6;endline=18;md5=c9a1f79036ab14aa157e15ed75ffd769"
7DEPENDS = "libtool-cross"
8PR = "r1"
9
10SRC_URI = "${DEBIAN_MIRROR}/main/a/apmd/apmd_3.2.2.orig.tar.gz \
11 ${DEBIAN_MIRROR}/main/a/apmd/apmd_${PV}.diff.gz \
12 file://libtool.patch \
13 file://unlinux.patch \
14 file://init \
15 file://default \
16 file://apmd_proxy \
17 file://apmd_proxy.conf"
18
19S = "${WORKDIR}/apmd-3.2.2.orig"
20
21inherit update-rc.d
22
23INITSCRIPT_NAME = "apmd"
24INITSCRIPT_PARAMS = "defaults"
25
26do_compile() {
27 # apmd doesn't use whole autotools. Just libtool for installation
28 oe_runmake "LIBTOOL=${STAGING_BINDIR_CROSS}/${TARGET_PREFIX}libtool" apm apmd
29}
30
31do_install() {
32 install -d ${D}${sysconfdir}
33 install -d ${D}${sysconfdir}/apm
34 install -d ${D}${sysconfdir}/apm/event.d
35 install -d ${D}${sysconfdir}/apm/other.d
36 install -d ${D}${sysconfdir}/apm/suspend.d
37 install -d ${D}${sysconfdir}/apm/resume.d
38 install -d ${D}${sysconfdir}/apm/scripts.d
39 install -d ${D}${sysconfdir}/default
40 install -d ${D}${sysconfdir}/init.d
41 install -d ${D}${sbindir}
42 install -d ${D}${bindir}
43 install -d ${D}${libdir}
44 install -d ${D}${datadir}/apmd
45 install -d ${D}${includedir}
46
47 install -m 4755 ${S}/.libs/apm ${D}${bindir}/apm
48 install -m 0755 ${S}/.libs/apmd ${D}${sbindir}/apmd
49 install -m 0755 ${WORKDIR}/apmd_proxy ${D}${sysconfdir}/apm/
50 install -m 0644 ${WORKDIR}/apmd_proxy.conf ${D}${datadir}/apmd/
51 install -m 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/apmd
52 oe_libinstall -so libapm ${D}${libdir}
53 install -m 0644 apm.h ${D}${includedir}
54
55 cat ${WORKDIR}/init | sed -e 's,/usr/sbin,${sbindir},g; s,/etc,${sysconfdir},g;' > ${D}${sysconfdir}/init.d/apmd
56 chmod 755 ${D}${sysconfdir}/init.d/apmd
57}
58
59PACKAGES =+ "libapm libapm-dev apm"
60
61FILES_libapm = "${libdir}/libapm.so.*"
62FILES_libapm-dev = "${libdir}/libapm.* ${includedir}"
63FILES_apm = "${bindir}/apm*"