diff options
author | mirko <mirko@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-12-13 01:54:56 +0000 |
---|---|---|
committer | mirko <mirko@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-12-13 01:54:56 +0000 |
commit | a95f9f92e2953d5829a29e95644dc4c4bc93f590 (patch) | |
tree | 01f2bf78edb2e3bb1466df9bca72e068632d0e74 /target/linux/s3c24xx/patches-2.6.26/0057-fix-pcf50606-LOWBAT-kill-init.patch.patch | |
parent | 9fa649271dbc9c83417488203aeb1668a0238c54 (diff) |
change prefix for kernelpatchbase 2.6.26
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13619 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.26/0057-fix-pcf50606-LOWBAT-kill-init.patch.patch')
-rwxr-xr-x | target/linux/s3c24xx/patches-2.6.26/0057-fix-pcf50606-LOWBAT-kill-init.patch.patch | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.26/0057-fix-pcf50606-LOWBAT-kill-init.patch.patch b/target/linux/s3c24xx/patches-2.6.26/0057-fix-pcf50606-LOWBAT-kill-init.patch.patch deleted file mode 100755 index 13945f56b..000000000 --- a/target/linux/s3c24xx/patches-2.6.26/0057-fix-pcf50606-LOWBAT-kill-init.patch.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 835002d2e751c0d35b744ceec5bef726b9778b7b Mon Sep 17 00:00:00 2001 -From: mokopatches <mokopatches@openmoko.org> -Date: Fri, 25 Jul 2008 22:21:25 +0100 -Subject: [PATCH] fix-pcf50606-LOWBAT-kill-init.patch - ---- - drivers/i2c/chips/pcf50606.c | 53 ++++++++++++++++++++++++++++++++++++----- - 1 files changed, 46 insertions(+), 7 deletions(-) - -diff --git a/drivers/i2c/chips/pcf50606.c b/drivers/i2c/chips/pcf50606.c -index b530583..a1c92d3 100644 ---- a/drivers/i2c/chips/pcf50606.c -+++ b/drivers/i2c/chips/pcf50606.c -@@ -654,8 +654,20 @@ static void pcf50606_work(struct work_struct *work) - if (pcf->onkey_seconds >= - pcf->pdata->onkey_seconds_required) { - /* Ask init to do 'ctrlaltdel' */ -- DEBUGPC("SIGINT(init) "); -- kill_proc(1, SIGINT, 1); -+ /* -+ * currently Linux reacts badly to issuing a -+ * signal to PID #1 before init is started. -+ * What happens is that the next kernel thread -+ * to start, which is the JFFS2 Garbage -+ * collector in our case, gets the signal -+ * instead and proceeds to fail to fork -- -+ * which is very bad. Therefore we confirm -+ * PID #1 exists before issuing the signal -+ */ -+ if (find_task_by_pid(1)) { -+ kill_proc(1, SIGINT, 1); -+ DEBUGPC("SIGINT(init) "); -+ } - /* FIXME: what to do if userspace doesn't - * shut down? Do we want to force it? */ - } -@@ -749,11 +761,38 @@ static void pcf50606_work(struct work_struct *work) - } - /* FIXME: TSCPRES */ - if (pcfirq[2] & PCF50606_INT3_LOWBAT) { -- /* Really low battery voltage, we have 8 seconds left */ -- DEBUGPC("LOWBAT "); -- apm_queue_event(APM_LOW_BATTERY); -- DEBUGPC("SIGPWR(init) "); -- kill_proc(1, SIGPWR, 1); -+ if (__reg_read(pcf, PCF50606_REG_OOCS) & PCF50606_OOCS_EXTON) { -+ /* -+ * hey no need to freak out, we have some kind of -+ * valid charger power -+ */ -+ DEBUGPC("(NO)BAT "); -+ } else { -+ /* Really low battery voltage, we have 8 seconds left */ -+ DEBUGPC("LOWBAT "); -+ /* -+ * currently Linux reacts badly to issuing a signal to -+ * PID #1 before init is started. What happens is that -+ * the next kernel thread to start, which is the JFFS2 -+ * Garbage collector in our case, gets the signal -+ * instead and proceeds to fail to fork -- which is -+ * very bad. Therefore we confirm PID #1 exists -+ * before issuing SPIGPWR -+ */ -+ if (find_task_by_pid(1)) { -+ apm_queue_event(APM_LOW_BATTERY); -+ DEBUGPC("SIGPWR(init) "); -+ kill_proc(1, SIGPWR, 1); -+ } else -+ /* -+ * well, our situation is like this: we do not -+ * have any external power, we have a low -+ * battery and since PID #1 doesn't exist yet, -+ * we are early in the boot, likely before -+ * rootfs mount. We should just call it a day -+ */ -+ apm_queue_event(APM_CRITICAL_SUSPEND); -+ } - /* Tell PMU we are taking care of this */ - reg_set_bit_mask(pcf, PCF50606_REG_OOCC1, - PCF50606_OOCC1_TOTRST, --- -1.5.6.3 - |