static int cn_get_property(struct power_supply *psy, enum power_supply_property psp, union power_supply_propval *val) { int16_t reg; uint result_uv; struct cn_chip *chip = container_of(psy, struct cn_chip, cn_psy); switch (psp) { case POWER_SUPPLY_PROP_VIRT_CURRENT_NOW: cn_read_wrapper(chip, (u8 *)®, BMS1_VSENSE_AVG_DATA0, 2); result_uv = convert_vsense_to_uv(chip, reg); val->intval = (int)(result_uv * RATIO_TO_MICRO_A); break; case POWER_SUPPLY_PROP_VIRT_ENABLE_BMS: val->intval = chip->bms_enabled; break; default: return -EINVAL; } return 0; }
static int cn_get_property(struct power_supply *psy, enum power_supply_property psp, union power_supply_propval *val) { int16_t reg; uint result_uv; struct cn_chip *chip = container_of(psy, struct cn_chip, cn_psy); switch (psp) { case POWER_SUPPLY_PROP_CURRENT_NOW: cn_read_wrapper(chip, (u8 *)®, BMS1_VSENSE_AVG_DATA0, 2); result_uv = convert_vsense_to_uv(chip, reg); val->intval = (int)result_uv; break; case POWER_SUPPLY_PROP_PRESENT: cn_read_wrapper(chip, (u8 *)®, BMS_EN_CTL, 1); val->intval = !!(reg | BMS_EN_MASK); break; default: return -EINVAL; } return 0; }