Loading drivers/power/test_power.c +31 −0 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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__); Loading Loading @@ -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[] = { Loading Loading @@ -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, Loading Loading @@ -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); Loading @@ -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); Loading Loading @@ -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>"); Loading Loading
drivers/power/test_power.c +31 −0 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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__); Loading Loading @@ -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[] = { Loading Loading @@ -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, Loading Loading @@ -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); Loading @@ -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); Loading Loading @@ -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>"); Loading