aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.26/1200-From-c221bb27c8e22daa451e26353140777223d397d2-Mon-Se.patch
blob: 3331ed8ab7889af59b3de77f6c3343748562d957 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
From 1e8163901ed89e4849a1c9e304d140e043cc2b9f Mon Sep 17 00:00:00 2001
From: Holger Freyther <zecke@openmoko.org>
Date: Fri, 25 Jul 2008 23:06:17 +0100
Subject: [PATCH] From c221bb27c8e22daa451e26353140777223d397d2 Mon Sep 17 00:00:00 2001
 Subject: [PATCH] [pcf50633] Report more events to userspace using the default callback

Signed-Off-By: Holger Freyther <zecke@openmoko.org>
---
 drivers/i2c/chips/pcf50633.c |   20 +++++++++++++++-----
 include/linux/pcf506xx.h     |    1 +
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c
index 4be6cd3..ead4273 100644
--- a/drivers/i2c/chips/pcf50633.c
+++ b/drivers/i2c/chips/pcf50633.c
@@ -1036,25 +1036,35 @@ static void pcf50633_work(struct work_struct *work)
 		 * this is really "battery not pulling current" -- it can
 		 * appear with no battery attached
 		 */
-		/* FIXME: signal this to userspace */
+		if (pcf->pdata->cb)
+			pcf->pdata->cb(&pcf->client.dev,
+				       PCF50633_FEAT_MBC, PMU_EVT_CHARGER_CHANGE);
 	}
 	if (pcfirq[2] & PCF50633_INT3_THLIMON) {
 		DEBUGPC("THLIMON ");
 		pcf->flags |= PCF50633_F_CHG_PROT;
-		/* FIXME: signal this to userspace */
+		if (pcf->pdata->cb)
+			pcf->pdata->cb(&pcf->client.dev,
+				       PCF50633_FEAT_MBC, PMU_EVT_CHARGER_CHANGE);
 	}
 	if (pcfirq[2] & PCF50633_INT3_THLIMOFF) {
 		DEBUGPC("THLIMOFF ");
 		pcf->flags &= ~PCF50633_F_CHG_PROT;
-		/* FIXME: signal this to userspace */
+		if (pcf->pdata->cb)
+			pcf->pdata->cb(&pcf->client.dev,
+				       PCF50633_FEAT_MBC, PMU_EVT_CHARGER_CHANGE);
 	}
 	if (pcfirq[2] & PCF50633_INT3_USBLIMON) {
 		DEBUGPC("USBLIMON ");
-		/* FIXME: signal this to userspace */
+		if (pcf->pdata->cb)
+			pcf->pdata->cb(&pcf->client.dev,
+				       PCF50633_FEAT_MBC, PMU_EVT_CHARGER_CHANGE);
 	}
 	if (pcfirq[2] & PCF50633_INT3_USBLIMOFF) {
 		DEBUGPC("USBLIMOFF ");
-		/* FIXME: signal this to userspace */
+		if (pcf->pdata->cb)
+			pcf->pdata->cb(&pcf->client.dev,
+				       PCF50633_FEAT_MBC, PMU_EVT_CHARGER_CHANGE);
 	}
 	if (pcfirq[2] & PCF50633_INT3_ADCRDY) {
 		/* ADC result ready */
diff --git a/include/linux/pcf506xx.h b/include/linux/pcf506xx.h
index a1365e0..459b160 100644
--- a/include/linux/pcf506xx.h
+++ b/include/linux/pcf506xx.h
@@ -23,6 +23,7 @@ enum pmu_event {
 #endif
 	PMU_EVT_CHARGER_ACTIVE,
 	PMU_EVT_CHARGER_IDLE,
+	PMU_EVT_CHARGER_CHANGE,
 	__NUM_PMU_EVTS
 };
 
-- 
1.5.6.3