test_power: Add VOLTAGE_NOW and BATTERY_TEMP properties
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Tue, 29 May 2012 09:37:44 +0000 (13:37 +0400)
committerAnton Vorontsov <cbouatmailru@gmail.com>
Thu, 21 Jun 2012 05:45:41 +0000 (22:45 -0700)
Emulate battery temperature (fixed to 26) and battery voltage (variable)
properties.

Signed-off-by: Dmitry Eremin-Solenikov <dmitry_eremin@mentor.com>
Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
drivers/power/test_power.c

index 99aec3b..b99a452 100644 (file)
@@ -28,6 +28,7 @@ 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 int battery_voltage             = 3300;
 
 static int test_power_get_ac_property(struct power_supply *psy,
                                      enum power_supply_property psp,
@@ -101,6 +102,12 @@ static int test_power_get_battery_property(struct power_supply *psy,
        case POWER_SUPPLY_PROP_TIME_TO_FULL_NOW:
                val->intval = 3600;
                break;
+       case POWER_SUPPLY_PROP_TEMP:
+               val->intval = 26;
+               break;
+       case POWER_SUPPLY_PROP_VOLTAGE_NOW:
+               val->intval = battery_voltage;
+               break;
        default:
                pr_info("%s: some properties deliberately report errors.\n",
                        __func__);
@@ -129,6 +136,8 @@ static enum power_supply_property test_power_battery_props[] = {
        POWER_SUPPLY_PROP_MODEL_NAME,
        POWER_SUPPLY_PROP_MANUFACTURER,
        POWER_SUPPLY_PROP_SERIAL_NUMBER,
+       POWER_SUPPLY_PROP_TEMP,
+       POWER_SUPPLY_PROP_VOLTAGE_NOW,
 };
 
 static char *test_power_ac_supplied_to[] = {
@@ -387,6 +396,21 @@ static int param_set_battery_capacity(const char *key,
 
 #define param_get_battery_capacity param_get_int
 
+static int param_set_battery_voltage(const char *key,
+                                       const struct kernel_param *kp)
+{
+       int tmp;
+
+       if (1 != sscanf(key, "%d", &tmp))
+               return -EINVAL;
+
+       battery_voltage = tmp;
+       power_supply_changed(&test_power_supplies[1]);
+       return 0;
+}
+
+#define param_get_battery_voltage param_get_int
+
 static struct kernel_param_ops param_ops_ac_online = {
        .set = param_set_ac_online,
        .get = param_get_ac_online,
@@ -422,6 +446,10 @@ static struct kernel_param_ops param_ops_battery_capacity = {
        .get = param_get_battery_capacity,
 };
 
+static struct kernel_param_ops param_ops_battery_voltage = {
+       .set = param_set_battery_voltage,
+       .get = param_get_battery_voltage,
+};
 
 #define param_check_ac_online(name, p) __param_check(name, p, void);
 #define param_check_usb_online(name, p) __param_check(name, p, void);
@@ -430,6 +458,7 @@ static struct kernel_param_ops param_ops_battery_capacity = {
 #define param_check_battery_technology(name, p) __param_check(name, p, void);
 #define param_check_battery_health(name, p) __param_check(name, p, void);
 #define param_check_battery_capacity(name, p) __param_check(name, p, void);
+#define param_check_battery_voltage(name, p) __param_check(name, p, void);
 
 
 module_param(ac_online, ac_online, 0644);
@@ -457,6 +486,8 @@ MODULE_PARM_DESC(battery_health,
 module_param(battery_capacity, battery_capacity, 0644);
 MODULE_PARM_DESC(battery_capacity, "battery capacity (percentage)");
 
+module_param(battery_voltage, battery_voltage, 0644);
+MODULE_PARM_DESC(battery_voltage, "battery voltage (millivolts)");
 
 MODULE_DESCRIPTION("Power supply driver for testing");
 MODULE_AUTHOR("Anton Vorontsov <cbouatmailru@gmail.com>");