Re: [PATCH 1/2] Add virtual battery driver
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
>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
>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/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
>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
>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
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
>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