Re: [PATCH 1/2] Add virtual battery driver

2011-02-24 Thread sola
2011/2/24 john stultz :
> 1) Your patch was whitespace corrupted. While it was correctly sent
> inline, the patch was word-wrapped.  I was able to fix this, but most
> upstream maintainers won't take the time, so you'll want to fix this in
> the future when sending patches. It looks from the mailheaders that you
> were using gmail to send the patch?   You might look at the wiki page
> here for help setting up git-send-email:
> https://wiki.linaro.org/Mentoring/Git/GitSendEmail

I'm using Gmail.
I'll check the wiki.


> 2) After applying the patch and trying a test build, I saw the following
> warning:
> drivers/power/virtual_battery.c: In function 'map_get_value':
> drivers/power/virtual_battery.c:180: warning: the frame size of 4096
> bytes is larger than 1024 bytes

I'm sorry.
I was not fixed the warning.

Patch confirmed.
[PATCH] power: Fixup stack usage in vritual battery driver
Thank you.


Regards,
Akihiro

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH 2/2] virtual battery driver changed for linux kernel 2.6.37 or later

2011-02-22 Thread sola
>From 8eab2223b35024e56fd8868626b2fc1958eada47 Mon Sep 17 00:00:00 2001
From: Akihiro MAEDA 
Date: Sat, 19 Feb 2011 02:44:31 +0900
Subject: [PATCH 2/2] virtual battery driver changed for linux kernel
2.6.37 or later

This patch adds virtual battery driver.
This is based on
git://git.linaro.org/people/jstultz/linux.git dev/linaro.android

Signed-off-by: Akihiro MAEDA 
---
 drivers/power/virtual_battery.c |   53 ++
 1 files changed, 42 insertions(+), 11 deletions(-)

diff --git a/drivers/power/virtual_battery.c b/drivers/power/virtual_battery.c
index 9e455ad..e4fa9e5 100644
--- a/drivers/power/virtual_battery.c
+++ b/drivers/power/virtual_battery.c
@@ -5,6 +5,7 @@
  *
  * Copyright (C) 2008 Pylone, Inc.
  * Author: Masashi YOKOTA 
+ * Modified by: Akihiro MAEDA 
  *
  * This software is licensed under the terms of the GNU General Public
  * License version 2, as published by the Free Software Foundation, and
@@ -190,7 +191,7 @@ static const char * map_get_key(struct
battery_property_map * map, int value, co
return def_key;
 }

-static int param_set_ac_status(const char *key, struct kernel_param *kp)
+static int param_set_ac_status(const char *key, const struct kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s, key=%s\n", __func__, kp->name, 
key);
ac_status = map_get_value( map_ac_online, key, ac_status);
@@ -198,14 +199,14 @@ static int param_set_ac_status(const char *key,
struct kernel_param *kp)
return 0;
 }

-static int param_get_ac_status(char *buffer, struct kernel_param *kp)
+static int param_get_ac_status(char *buffer, const struct kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s\n", __func__, kp->name);
strcpy(buffer, map_get_key( map_ac_online, ac_status, "unknown"));
return strlen(buffer);
 }

-static int param_set_battery_status(const char *key, struct kernel_param *kp)
+static int param_set_battery_status(const char *key, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s, key=%s.\n", __func__, kp->name, 
key);
battery_status = map_get_value( map_status, key, battery_status);
@@ -213,14 +214,14 @@ static int param_set_battery_status(const char
*key, struct kernel_param *kp)
return 0;
 }

-static int param_get_battery_status(char *buffer, struct kernel_param *kp)
+static int param_get_battery_status(char *buffer, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s\n", __func__, kp->name);
strcpy(buffer, map_get_key( map_status, battery_status, "unknown"));
return strlen(buffer);
 }

-static int param_set_battery_health(const char *key, struct kernel_param *kp)
+static int param_set_battery_health(const char *key, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s, key=%s\n", __func__, kp->name, 
key);
battery_health = map_get_value( map_health, key, battery_health);
@@ -228,14 +229,14 @@ static int param_set_battery_health(const char
*key, struct kernel_param *kp)
return 0;
 }

-static int param_get_battery_health(char *buffer, struct kernel_param *kp)
+static int param_get_battery_health(char *buffer, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s\n", __func__, kp->name);
strcpy(buffer, map_get_key( map_health, battery_health, "unknown"));
return strlen(buffer);
 }

-static int param_set_battery_present(const char *key, struct kernel_param *kp)
+static int param_set_battery_present(const char *key, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s, key=%s\n", __func__, kp->name, 
key);
battery_present = map_get_value( map_present, key, battery_present);
@@ -243,14 +244,14 @@ static int param_set_battery_present(const char
*key, struct kernel_param *kp)
return 0;
 }

-static int param_get_battery_present(char *buffer, struct kernel_param *kp)
+static int param_get_battery_present(char *buffer, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s\n", __func__, kp->name);
strcpy(buffer, map_get_key( map_present, battery_present, "unknown"));
return strlen(buffer);
 }

-static int param_set_battery_technology(const char *key, struct
kernel_param *kp)
+static int param_set_battery_technology(const char *key, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s, key=%s\n", __func__, kp->name, 
key);
battery_technology = map_get_value( map_technology, key, 
battery_technology);
@@ -258,14 +259,14 @@ static int param_set_battery_technology(const
char *key, struct kernel_param *kp
return 0;
 }

-static int param_get_battery_technology(char *buffer, struct kernel_param *kp)
+static int param_get_battery_technology(char *buffer, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s\n", __func__, kp->name);
strcpy(buffer, map_get_key( map_technology, battery_technol

[PATCH 1/2] Add virtual battery driver

2011-02-22 Thread sola
>From 7784102e184c134eaa11b5986f31c892748f1604 Mon Sep 17 00:00:00 2001
From: Masashi YOKOTA 
Date: Sat, 19 Feb 2011 02:40:56 +0900
Subject: [PATCH 1/2] Add virtual battery driver

This patch adds virtual battery driver.
This is based on
git://git.linaro.org/people/jstultz/linux.git dev/linaro.android

Signed-off-by: Akihiro MAEDA 
---
 drivers/power/Kconfig   |5 +
 drivers/power/Makefile  |1 +
 drivers/power/virtual_battery.c |  349 +++
 3 files changed, 355 insertions(+), 0 deletions(-)
 create mode 100644 drivers/power/virtual_battery.c

diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 60d83d9..7258bc9 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -185,4 +185,9 @@ config CHARGER_TWL4030
help
  Say Y here to enable support for TWL4030 Battery Charge Interface.

+config BATTERY_VIRTUAL
+   tristate "Virtual Battery Driver"
+   help
+ Say Y to include support for Virtual Battery.
+
 endif # POWER_SUPPLY
diff --git a/drivers/power/Makefile b/drivers/power/Makefile
index c75772e..71f8b36 100644
--- a/drivers/power/Makefile
+++ b/drivers/power/Makefile
@@ -32,3 +32,4 @@ obj-$(CONFIG_BATTERY_JZ4740)  += jz4740-battery.o
 obj-$(CONFIG_BATTERY_INTEL_MID)+= intel_mid_battery.o
 obj-$(CONFIG_CHARGER_ISP1704)  += isp1704_charger.o
 obj-$(CONFIG_CHARGER_TWL4030)  += twl4030_charger.o
+obj-$(CONFIG_BATTERY_VIRTUAL)  += virtual_battery.o
diff --git a/drivers/power/virtual_battery.c b/drivers/power/virtual_battery.c
new file mode 100644
index 000..9e455ad
--- /dev/null
+++ b/drivers/power/virtual_battery.c
@@ -0,0 +1,349 @@
+/*
+ * drivers/power/virtual_battery.c
+ *
+ * Virtual battery driver
+ *
+ * Copyright (C) 2008 Pylone, Inc.
+ * Author: Masashi YOKOTA 
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+
+/* module parameters */
+static int ac_status= 1; /* online */
+static int battery_status   = POWER_SUPPLY_STATUS_CHARGING;
+static int battery_health   = POWER_SUPPLY_HEALTH_GOOD;
+static int battery_present  = 1; /* true */
+static int battery_technology   = POWER_SUPPLY_TECHNOLOGY_LION;
+static int battery_capacity = 50;
+
+
+static struct platform_device *bat_pdev;
+
+static enum power_supply_property virtual_ac_props[] = {
+   POWER_SUPPLY_PROP_ONLINE,
+};
+
+static enum power_supply_property virtual_battery_props[] = {
+   POWER_SUPPLY_PROP_STATUS,
+   POWER_SUPPLY_PROP_HEALTH,
+   POWER_SUPPLY_PROP_PRESENT,
+   POWER_SUPPLY_PROP_TECHNOLOGY,
+   POWER_SUPPLY_PROP_CAPACITY,
+};
+
+static int virtual_ac_get_property(struct power_supply *psy,
+  enum power_supply_property psp,
+  union power_supply_propval *val)
+{
+   int ret = 0;
+
+   dev_dbg(&bat_pdev->dev, "%s: psp=%d\n", __func__, psp);
+   switch (psp) {
+   case POWER_SUPPLY_PROP_ONLINE:
+   val->intval = ac_status;
+   break;
+   default:
+   ret = -EINVAL;
+   break;
+   }
+   return ret;
+}
+
+static int virtual_battery_get_property(struct power_supply *psy,
+   enum power_supply_property psp,
+   union power_supply_propval *val)
+{
+   int ret = 0;
+
+   dev_dbg(&bat_pdev->dev, "%s: psp=%d\n", __func__, psp);
+   switch (psp) {
+   case POWER_SUPPLY_PROP_STATUS:
+   val->intval = battery_status;
+   break;
+   case POWER_SUPPLY_PROP_HEALTH:
+   val->intval = battery_health;
+   break;
+   case POWER_SUPPLY_PROP_PRESENT:
+   val->intval = battery_present;
+   break;
+   case POWER_SUPPLY_PROP_TECHNOLOGY:
+   val->intval = battery_technology;
+   break;
+   case POWER_SUPPLY_PROP_CAPACITY:
+   val->intval = battery_capacity;
+   break; default: ret = -EINVAL;
+   break;
+   }
+
+   return ret;
+}
+
+static struct power_supply power_supply_ac = {
+   .properties = virtual_ac_props,
+   .num_properties = ARRAY_SIZE(virtual_ac_props),
+   .get_property = virtual_ac_get_property,
+   .name = "ac",
+   .type = POWER_SUPPLY_TYPE_MAINS,
+};
+
+static struct power_supply power_supply_bat = {
+   .properties = virtual_battery_props,
+   .num_properti

Re: [linaro-android][PATCH 1/2] Add virtual battery driver

2011-02-19 Thread sola
2011/2/19 john stultz :
> Although I have one more concern: Since it wasn't in the last version of
> the patch, did you add Masashi YOKOTA's signed-off-by line?  If the
> original patch did not have his signed-off by line, you should not add
> it (and from my searching, it doesn't seem like it was originally made
> available as a patch, but as a driver tarball).

I added.
Signed-off-by: Masashi YOKOTA

After deleting the line, re-post patch?
When re-posting, Yokota added to CC.

Regards,
Akihiro

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[linaro-android][PATCH 2/2] virtual battery driver changed for linux kernel 2.6.37 or later

2011-02-18 Thread sola
>From 8eab2223b35024e56fd8868626b2fc1958eada47 Mon Sep 17 00:00:00 2001
From: Akihiro MAEDA 
Date: Sat, 19 Feb 2011 02:44:31 +0900
Subject: [PATCH 2/2] virtual battery driver changed for linux kernel
2.6.37 or later

This patch is virtual battery driver changed for linux kernel 2.6.37 or later.
This is based on
git://git.linaro.org/people/jstultz/linux.git dev/linaro.android

Signed-off-by: Akihiro MAEDA 
---
 drivers/power/virtual_battery.c |   53 ++
 1 files changed, 42 insertions(+), 11 deletions(-)

diff --git a/drivers/power/virtual_battery.c b/drivers/power/virtual_battery.c
index 9e455ad..e4fa9e5 100644
--- a/drivers/power/virtual_battery.c
+++ b/drivers/power/virtual_battery.c
@@ -5,6 +5,7 @@
  *
  * Copyright (C) 2008 Pylone, Inc.
  * Author: Masashi YOKOTA 
+ * Modified by: Akihiro MAEDA 
  *
  * This software is licensed under the terms of the GNU General Public
  * License version 2, as published by the Free Software Foundation, and
@@ -190,7 +191,7 @@ static const char * map_get_key(struct
battery_property_map * map, int value, co
return def_key;
 }

-static int param_set_ac_status(const char *key, struct kernel_param *kp)
+static int param_set_ac_status(const char *key, const struct kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s, key=%s\n", __func__, kp->name, 
key);
ac_status = map_get_value( map_ac_online, key, ac_status);
@@ -198,14 +199,14 @@ static int param_set_ac_status(const char *key,
struct kernel_param *kp)
return 0;
 }

-static int param_get_ac_status(char *buffer, struct kernel_param *kp)
+static int param_get_ac_status(char *buffer, const struct kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s\n", __func__, kp->name);
strcpy(buffer, map_get_key( map_ac_online, ac_status, "unknown"));
return strlen(buffer);
 }

-static int param_set_battery_status(const char *key, struct kernel_param *kp)
+static int param_set_battery_status(const char *key, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s, key=%s.\n", __func__, kp->name, 
key);
battery_status = map_get_value( map_status, key, battery_status);
@@ -213,14 +214,14 @@ static int param_set_battery_status(const char
*key, struct kernel_param *kp)
return 0;
 }

-static int param_get_battery_status(char *buffer, struct kernel_param *kp)
+static int param_get_battery_status(char *buffer, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s\n", __func__, kp->name);
strcpy(buffer, map_get_key( map_status, battery_status, "unknown"));
return strlen(buffer);
 }

-static int param_set_battery_health(const char *key, struct kernel_param *kp)
+static int param_set_battery_health(const char *key, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s, key=%s\n", __func__, kp->name, 
key);
battery_health = map_get_value( map_health, key, battery_health);
@@ -228,14 +229,14 @@ static int param_set_battery_health(const char
*key, struct kernel_param *kp)
return 0;
 }

-static int param_get_battery_health(char *buffer, struct kernel_param *kp)
+static int param_get_battery_health(char *buffer, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s\n", __func__, kp->name);
strcpy(buffer, map_get_key( map_health, battery_health, "unknown"));
return strlen(buffer);
 }

-static int param_set_battery_present(const char *key, struct kernel_param *kp)
+static int param_set_battery_present(const char *key, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s, key=%s\n", __func__, kp->name, 
key);
battery_present = map_get_value( map_present, key, battery_present);
@@ -243,14 +244,14 @@ static int param_set_battery_present(const char
*key, struct kernel_param *kp)
return 0;
 }

-static int param_get_battery_present(char *buffer, struct kernel_param *kp)
+static int param_get_battery_present(char *buffer, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s\n", __func__, kp->name);
strcpy(buffer, map_get_key( map_present, battery_present, "unknown"));
return strlen(buffer);
 }

-static int param_set_battery_technology(const char *key, struct
kernel_param *kp)
+static int param_set_battery_technology(const char *key, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s, key=%s\n", __func__, kp->name, 
key);
battery_technology = map_get_value( map_technology, key, 
battery_technology);
@@ -258,14 +259,14 @@ static int param_set_battery_technology(const
char *key, struct kernel_param *kp
return 0;
 }

-static int param_get_battery_technology(char *buffer, struct kernel_param *kp)
+static int param_get_battery_technology(char *buffer, const struct
kernel_param *kp)
 {
dev_dbg(&bat_pdev->dev, "%s: name=%s\n", __func__, kp->name);
strcpy(buffer, map_g

[linaro-android][PATCH 1/2] Add virtual battery driver

2011-02-18 Thread sola
>From 7784102e184c134eaa11b5986f31c892748f1604 Mon Sep 17 00:00:00 2001
From: Masashi YOKOTA 
Date: Sat, 19 Feb 2011 02:40:56 +0900
Subject: [PATCH 1/2] Add virtual battery driver

This patch adds virtual battery driver.
This is based on
git://git.linaro.org/people/jstultz/linux.git dev/linaro.android

Signed-off-by: Masashi YOKOTA
Signed-off-by: Akihiro MAEDA 
---
 drivers/power/Kconfig   |5 +
 drivers/power/Makefile  |1 +
 drivers/power/virtual_battery.c |  349 +++
 3 files changed, 355 insertions(+), 0 deletions(-)
 create mode 100644 drivers/power/virtual_battery.c

diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 60d83d9..7258bc9 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -185,4 +185,9 @@ config CHARGER_TWL4030
help
  Say Y here to enable support for TWL4030 Battery Charge Interface.

+config BATTERY_VIRTUAL
+   tristate "Virtual Battery Driver"
+   help
+ Say Y to include support for Virtual Battery.
+
 endif # POWER_SUPPLY
diff --git a/drivers/power/Makefile b/drivers/power/Makefile
index c75772e..71f8b36 100644
--- a/drivers/power/Makefile
+++ b/drivers/power/Makefile
@@ -32,3 +32,4 @@ obj-$(CONFIG_BATTERY_JZ4740)  += jz4740-battery.o
 obj-$(CONFIG_BATTERY_INTEL_MID)+= intel_mid_battery.o
 obj-$(CONFIG_CHARGER_ISP1704)  += isp1704_charger.o
 obj-$(CONFIG_CHARGER_TWL4030)  += twl4030_charger.o
+obj-$(CONFIG_BATTERY_VIRTUAL)  += virtual_battery.o
diff --git a/drivers/power/virtual_battery.c b/drivers/power/virtual_battery.c
new file mode 100644
index 000..9e455ad
--- /dev/null
+++ b/drivers/power/virtual_battery.c
@@ -0,0 +1,349 @@
+/*
+ * drivers/power/virtual_battery.c
+ *
+ * Virtual battery driver
+ *
+ * Copyright (C) 2008 Pylone, Inc.
+ * Author: Masashi YOKOTA 
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+
+/* module parameters */
+static int ac_status= 1; /* online */
+static int battery_status   = POWER_SUPPLY_STATUS_CHARGING;
+static int battery_health   = POWER_SUPPLY_HEALTH_GOOD;
+static int battery_present  = 1; /* true */
+static int battery_technology   = POWER_SUPPLY_TECHNOLOGY_LION;
+static int battery_capacity = 50;
+
+
+static struct platform_device *bat_pdev;
+
+static enum power_supply_property virtual_ac_props[] = {
+   POWER_SUPPLY_PROP_ONLINE,
+};
+
+static enum power_supply_property virtual_battery_props[] = {
+   POWER_SUPPLY_PROP_STATUS,
+   POWER_SUPPLY_PROP_HEALTH,
+   POWER_SUPPLY_PROP_PRESENT,
+   POWER_SUPPLY_PROP_TECHNOLOGY,
+   POWER_SUPPLY_PROP_CAPACITY,
+};
+
+static int virtual_ac_get_property(struct power_supply *psy,
+  enum power_supply_property psp,
+  union power_supply_propval *val)
+{
+   int ret = 0;
+
+   dev_dbg(&bat_pdev->dev, "%s: psp=%d\n", __func__, psp);
+   switch (psp) {
+   case POWER_SUPPLY_PROP_ONLINE:
+   val->intval = ac_status;
+   break;
+   default:
+   ret = -EINVAL;
+   break;
+   }
+   return ret;
+}
+
+static int virtual_battery_get_property(struct power_supply *psy,
+   enum power_supply_property psp,
+   union power_supply_propval *val)
+{
+   int ret = 0;
+
+   dev_dbg(&bat_pdev->dev, "%s: psp=%d\n", __func__, psp);
+   switch (psp) {
+   case POWER_SUPPLY_PROP_STATUS:
+   val->intval = battery_status;
+   break;
+   case POWER_SUPPLY_PROP_HEALTH:
+   val->intval = battery_health;
+   break;
+   case POWER_SUPPLY_PROP_PRESENT:
+   val->intval = battery_present;
+   break;
+   case POWER_SUPPLY_PROP_TECHNOLOGY:
+   val->intval = battery_technology;
+   break;
+   case POWER_SUPPLY_PROP_CAPACITY:
+   val->intval = battery_capacity;
+   break; default: ret = -EINVAL;
+   break;
+   }
+
+   return ret;
+}
+
+static struct power_supply power_supply_ac = {
+   .properties = virtual_ac_props,
+   .num_properties = ARRAY_SIZE(virtual_ac_props),
+   .get_property = virtual_ac_get_property,
+   .name = "ac",
+   .type = POWER_SUPPLY_TYPE_MAINS,
+};
+
+static struct power_supply power_supply_bat = {
+   .properties = virtual_batter

Re: [linaro-android][PATCH 1/1] Add virtual battery driver

2011-02-16 Thread sola
Thanks john.
I recreate the patch.
I'll post again.

Regards,
Akihiro

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[linaro-android][PATCH 1/1] Add virtual battery driver

2011-02-16 Thread sola
>From 494eb1f2bb56261815e4230e582d27311f32ae81 Mon Sep 17 00:00:00 2001
From: Akihiro MAEDA 
Date: Thu, 17 Feb 2011 07:16:37 +0900
Subject: [PATCH 1/1] Add virtual battery driver

This patch adds virtual battery driver.
This is based on
git://git.linaro.org/people/jstultz/linux.git dev/linaro.android

Signed-off-by: Akihiro MAEDA 
---
 drivers/power/Kconfig   |5 +
 drivers/power/Makefile  |1 +
 drivers/power/virtual_battery.c |  427 +++
 3 files changed, 433 insertions(+), 0 deletions(-)
 create mode 100644 drivers/power/virtual_battery.c

diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 60d83d9..7258bc9 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -185,4 +185,9 @@ config CHARGER_TWL4030
help
  Say Y here to enable support for TWL4030 Battery Charge Interface.

+config BATTERY_VIRTUAL
+   tristate "Virtual Battery Driver"
+   help
+ Say Y to include support for Virtual Battery.
+
 endif # POWER_SUPPLY
diff --git a/drivers/power/Makefile b/drivers/power/Makefile
index c75772e..71f8b36 100644
--- a/drivers/power/Makefile
+++ b/drivers/power/Makefile
@@ -32,3 +32,4 @@ obj-$(CONFIG_BATTERY_JZ4740)  += jz4740-battery.o
 obj-$(CONFIG_BATTERY_INTEL_MID)+= intel_mid_battery.o
 obj-$(CONFIG_CHARGER_ISP1704)  += isp1704_charger.o
 obj-$(CONFIG_CHARGER_TWL4030)  += twl4030_charger.o
+obj-$(CONFIG_BATTERY_VIRTUAL)  += virtual_battery.o
diff --git a/drivers/power/virtual_battery.c b/drivers/power/virtual_battery.c
new file mode 100644
index 000..a85baac
--- /dev/null
+++ b/drivers/power/virtual_battery.c
@@ -0,0 +1,427 @@
+/*
+ * drivers/power/virtual_battery.c
+ *
+ * Virtual battery driver
+ *
+ * Copyright (C) 2008 Pylone, Inc.
+ * Author: Masashi YOKOTA 
+ * Modified by: Akihiro MAEDA 
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+
+/* module parameters */
+static int ac_status= 1; /* online */
+static int battery_status   = POWER_SUPPLY_STATUS_CHARGING;
+static int battery_health   = POWER_SUPPLY_HEALTH_GOOD;
+static int battery_present  = 1; /* true */
+static int battery_technology   = POWER_SUPPLY_TECHNOLOGY_LION;
+static int battery_capacity = 50;
+
+
+static struct platform_device *bat_pdev;
+
+static enum power_supply_property virtual_ac_props[] = {
+   POWER_SUPPLY_PROP_ONLINE,
+};
+
+static enum power_supply_property virtual_battery_props[] = {
+   POWER_SUPPLY_PROP_STATUS,
+   POWER_SUPPLY_PROP_HEALTH,
+   POWER_SUPPLY_PROP_PRESENT,
+   POWER_SUPPLY_PROP_TECHNOLOGY,
+   POWER_SUPPLY_PROP_CAPACITY,
+};
+
+static int virtual_ac_get_property(struct power_supply *psy,
+  enum power_supply_property psp,
+  union power_supply_propval *val)
+{
+   int ret = 0;
+
+   dev_dbg(&bat_pdev->dev, "%s: psp=%d\n", __func__, psp);
+   switch (psp) {
+   case POWER_SUPPLY_PROP_ONLINE:
+   val->intval = ac_status;
+   break;
+   default:
+   ret = -EINVAL;
+   break;
+   }
+   return ret;
+}
+
+static int virtual_battery_get_property(struct power_supply *psy,
+   enum power_supply_property psp,
+   union power_supply_propval *val)
+{
+   int ret = 0;
+
+   dev_dbg(&bat_pdev->dev, "%s: psp=%d\n", __func__, psp);
+   switch (psp) {
+   case POWER_SUPPLY_PROP_STATUS:
+   val->intval = battery_status;
+   break;
+   case POWER_SUPPLY_PROP_HEALTH:
+   val->intval = battery_health;
+   break;
+   case POWER_SUPPLY_PROP_PRESENT:
+   val->intval = battery_present;
+   break;
+   case POWER_SUPPLY_PROP_TECHNOLOGY:
+   val->intval = battery_technology;
+   break;
+   case POWER_SUPPLY_PROP_CAPACITY:
+   val->intval = battery_capacity;
+   break; default: ret = -EINVAL;
+   break;
+   }
+
+   return ret;
+}
+
+static struct power_supply power_supply_ac = {
+   .properties = virtual_ac_props,
+   .num_properties = ARRAY_SIZE(virtual_ac_props),
+   .get_property = virtual_ac_get_property,
+   .name = "ac",
+   .type = POWER_SUPPLY_TYPE_MAINS,
+};
+
+static struct power_supply power_supply_bat = {
+   .properties = vi