aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.26/1199-From-5718bde77ed1a75e0fd2cdf5e099e66121d10c0a-Mon-Se.patch
blob: 456c0b193143fb985d671c7a911d1e20c2569c9a (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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
From 76e50bb39e4362b6c073cfea8bd323f6fe146119 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 5718bde77ed1a75e0fd2cdf5e099e66121d10c0a Mon Sep 17 00:00:00 2001
 Subject: [PATCH] [battery] Make the bq27000 send an uevent when the charging state possible changed
      Remove the todo entries from the pcf50633, make the mach-gta02
      call the bq27000 driver from the pmu callback.

---
 arch/arm/mach-s3c2440/mach-gta02.c |   36 +++++++++++++++++++-----------------
 drivers/i2c/chips/pcf50633.c       |    4 ----
 drivers/power/bq27000_battery.c    |   11 +++++++++++
 include/linux/bq27000_battery.h    |    2 ++
 4 files changed, 32 insertions(+), 21 deletions(-)

diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
index afe8039..e66498b 100644
--- a/arch/arm/mach-s3c2440/mach-gta02.c
+++ b/arch/arm/mach-s3c2440/mach-gta02.c
@@ -450,6 +450,24 @@ static struct s3c2410_uartcfg gta02_uartcfgs[] = {
 
 };
 
+/* BQ27000 Battery */
+
+struct bq27000_platform_data bq27000_pdata = {
+	.name = "bat",
+	.rsense_mohms = 20,
+	.hdq_read = gta02hdq_read,
+	.hdq_write = gta02hdq_write,
+	.hdq_initialized = gta02hdq_initialized,
+};
+
+struct platform_device bq27000_battery_device = {
+	.name 		= "bq27000-battery",
+	.dev = {
+		.platform_data = &bq27000_pdata,
+	},
+};
+
+
 /* PMU driver info */
 
 static int pmu_callback(struct device *dev, unsigned int feature,
@@ -482,6 +500,7 @@ static int pmu_callback(struct device *dev, unsigned int feature,
 		break;
 	}
 
+	bq27000_charging_state_change(&bq27000_battery_device);
 	return 0;
 }
 
@@ -740,23 +759,6 @@ struct platform_device gta02_hdq_device = {
 };
 #endif
 
-/* BQ27000 Battery */
-
-struct bq27000_platform_data bq27000_pdata = {
-	.name = "bat",
-	.rsense_mohms = 20,
-	.hdq_read = gta02hdq_read,
-	.hdq_write = gta02hdq_write,
-	.hdq_initialized = gta02hdq_initialized,
-};
-
-struct platform_device bq27000_battery_device = {
-	.name 		= "bq27000-battery",
-	.dev = {
-		.platform_data = &bq27000_pdata,
-	},
-};
-
 
 /* NOR Flash */
 
diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c
index 62bd2d5..4be6cd3 100644
--- a/drivers/i2c/chips/pcf50633.c
+++ b/drivers/i2c/chips/pcf50633.c
@@ -888,8 +888,6 @@ static void pcf50633_work(struct work_struct *work)
 		if (pcf->pdata->cb)
 			pcf->pdata->cb(&pcf->client.dev,
 				       PCF50633_FEAT_MBC, PMU_EVT_INSERT);
-		/* FIXME: signal this to userspace */
-		//kobject_uevent( ,KOBJ_ADD);
 	}
 	if (pcfirq[0] & PCF50633_INT1_ADPREM) {
 		/* Charger removed */
@@ -900,8 +898,6 @@ static void pcf50633_work(struct work_struct *work)
 		if (pcf->pdata->cb)
 			pcf->pdata->cb(&pcf->client.dev,
 				       PCF50633_FEAT_MBC, PMU_EVT_REMOVE);
-		/* FIXME: signal this to userspace */
-		//kobject_uevent( ,KOBJ_ADD);
 	}
 	if (pcfirq[0] & PCF50633_INT1_USBINS) {
 		DEBUGPC("USBINS ");
diff --git a/drivers/power/bq27000_battery.c b/drivers/power/bq27000_battery.c
index 652a9fa..5598568 100644
--- a/drivers/power/bq27000_battery.c
+++ b/drivers/power/bq27000_battery.c
@@ -329,6 +329,17 @@ static int bq27000_battery_remove(struct platform_device *pdev)
 	return 0;
 }
 
+void bq27000_charging_state_change(struct platform_device *pdev)
+{
+	struct bq27000_device_info *di = platform_get_drvdata(pdev);
+
+	if (!di)
+	    return;
+
+	power_supply_changed(&di->bat);
+}
+EXPORT_SYMBOL_GPL(bq27000_charging_state_change);
+
 #ifdef CONFIG_PM
 
 static int bq27000_battery_suspend(struct platform_device *pdev,
diff --git a/include/linux/bq27000_battery.h b/include/linux/bq27000_battery.h
index 36b4f20..fed4287 100644
--- a/include/linux/bq27000_battery.h
+++ b/include/linux/bq27000_battery.h
@@ -1,6 +1,8 @@
 #ifndef __BQ27000_BATTERY_H__
 #define __BQ27000_BATTERY_H__
 
+void bq27000_charging_state_change(struct platform_device *pdev);
+
 struct bq27000_platform_data {
 	const char 	*name;
 	int		rsense_mohms;
-- 
1.5.6.3