Add id check for charging profile

This commit is contained in:
Christoffer Sandberg 2022-11-21 14:47:55 +01:00
parent d6f32f7270
commit 97ddaed782
No known key found for this signature in database
GPG key ID: BF563F71B6C7A96D
2 changed files with 18 additions and 1 deletions

View file

@ -69,6 +69,7 @@ struct uniwill_device_features_t {
bool uniwill_profile_v1_three_profs; bool uniwill_profile_v1_three_profs;
bool uniwill_profile_v1_three_profs_leds_only; bool uniwill_profile_v1_three_profs_leds_only;
bool uniwill_has_charging_prio; bool uniwill_has_charging_prio;
bool uniwill_has_charging_profile;
}; };
u32 uniwill_add_interface(struct uniwill_interface_t *new_interface); u32 uniwill_add_interface(struct uniwill_interface_t *new_interface);

View file

@ -842,6 +842,20 @@ static int uw_get_charging_profile(u8 *charging_profile)
return result; return result;
} }
static int uw_has_charging_profile(bool *status)
{
u8 data;
int result;
result = uniwill_read_ec_ram(0x078e, &data);
if (data & (1 << 3))
*status = true;
else
*status = false;
return result;
}
struct char_to_u8_t { struct char_to_u8_t {
char* descriptor; char* descriptor;
u8 value; u8 value;
@ -1089,6 +1103,7 @@ struct uniwill_device_features_t *uniwill_get_device_features(void)
uw_feats->uniwill_profile_v1_three_profs; uw_feats->uniwill_profile_v1_three_profs;
uw_has_charging_priority(&uw_feats->uniwill_has_charging_prio); uw_has_charging_priority(&uw_feats->uniwill_has_charging_prio);
uw_has_charging_profile(&uw_feats->uniwill_has_charging_profile);
return uw_feats; return uw_feats;
} }
@ -1132,6 +1147,7 @@ static int uniwill_keyboard_probe(struct platform_device *dev)
if (uw_feats->uniwill_has_charging_prio) if (uw_feats->uniwill_has_charging_prio)
uw_charging_prio_loaded = sysfs_create_group(&dev->dev.kobj, &uw_charging_prio_attr_group) == 0; uw_charging_prio_loaded = sysfs_create_group(&dev->dev.kobj, &uw_charging_prio_attr_group) == 0;
if (uw_feats->uniwill_has_charging_prio)
uw_charging_profile_loaded = sysfs_create_group(&dev->dev.kobj, &uw_charging_profile_attr_group) == 0; uw_charging_profile_loaded = sysfs_create_group(&dev->dev.kobj, &uw_charging_profile_attr_group) == 0;
return 0; return 0;