mirror of
https://github.com/torvalds/linux.git
synced 2026-08-01 20:22:08 +02:00
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: Rui Miguel Silva <rui.silva@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
6198f892fa
commit
c4582f9d79
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user