137 lines
3.9 KiB
Diff
137 lines
3.9 KiB
Diff
|
From d869fe11c6acbc3466abcdae741376b2c71bca69 Mon Sep 17 00:00:00 2001
|
||
|
From: Holger Freyther <zecke@openmoko.org>
|
||
|
Date: Wed, 2 Jul 2008 22:44:59 +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 4d19dae..8a27925 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 c87e26d..4855d5a 100644
|
||
|
--- a/drivers/power/bq27000_battery.c
|
||
|
+++ b/drivers/power/bq27000_battery.c
|
||
|
@@ -330,6 +330,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.5
|
||
|
|