Commit c4582f9d authored by Rui Miguel Silva's avatar Rui Miguel Silva Committed by Greg Kroah-Hartman

greybus: power_supply: add callback to handle power supply changes

When checking for property changes we may need to act upon that change
besides reporting it using power_supply_changed. So, add a function that
will be call if the specific property changed.

As at it, adjust some indentation of the psy_props_changes array.
Signed-off-by: default avatarRui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 6198f892
......@@ -70,17 +70,22 @@ static unsigned int update_interval_max = 30 * HZ;
struct gb_power_supply_changes {
enum power_supply_property prop;
u32 tolerance_change;
void (*prop_changed)(struct gb_power_supply *gbpsy,
struct gb_power_supply_prop *prop);
};
static const struct gb_power_supply_changes psy_props_changes[] = {
{ .prop = GB_POWER_SUPPLY_PROP_STATUS,
.tolerance_change = 0,
{ .prop = GB_POWER_SUPPLY_PROP_STATUS,
.tolerance_change = 0,
.prop_changed = NULL,
},
{ .prop = GB_POWER_SUPPLY_PROP_TEMP,
.tolerance_change = 500,
{ .prop = GB_POWER_SUPPLY_PROP_TEMP,
.tolerance_change = 500,
.prop_changed = NULL,
},
{ .prop = GB_POWER_SUPPLY_PROP_ONLINE,
.tolerance_change = 0,
{ .prop = GB_POWER_SUPPLY_PROP_ONLINE,
.tolerance_change = 0,
.prop_changed = NULL,
},
};
......@@ -349,18 +354,25 @@ static void check_changed(struct gb_power_supply *gbpsy,
const struct gb_power_supply_changes *psyc;
int val = prop->val;
int prev_val = prop->previous_val;
bool changed = false;
int i;
for (i = 0; i < ARRAY_SIZE(psy_props_changes); i++) {
psyc = &psy_props_changes[i];
if (prop->prop == psyc->prop) {
if (!psyc->tolerance_change)
gbpsy->changed = true;
changed = true;
else if (val < prev_val &&
prev_val - val > psyc->tolerance_change)
gbpsy->changed = true;
changed = true;
else if (val > prev_val &&
val - prev_val > psyc->tolerance_change)
changed = true;
if (changed && psyc->prop_changed)
psyc->prop_changed(gbpsy, prop);
if (changed)
gbpsy->changed = true;
break;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment