charger: change the adc value unit and add slave iio

change the adc value unit for compatible with policy
and add slave iio in policy

Change-Id: I8e0ed26ec6be3589c37f9d1c3930ef8190f749ef
Signed-off-by: mahj8 <mahj8@motorola.com>
Reviewed-on: https://gerrit.mot.com/2232163
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Huosheng Liao <liaohs@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
mahj8 2022-04-02 16:52:35 +08:00 committed by chenyt17
parent 11a0f8b969
commit 01534cdfc6
3 changed files with 85 additions and 26 deletions

View file

@ -733,9 +733,9 @@ static int bq25980_get_adc_ibus(struct bq25980_device *bq)
ibus_adc = (ibus_adc_msb << 8) | ibus_adc_lsb;
if (ibus_adc_msb & BQ25980_ADC_POLARITY_BIT)
return ((ibus_adc ^ 0xffff) + 1) * bq->chip_info->adc_curr_step;
return (((ibus_adc ^ 0xffff) + 1) * bq->chip_info->adc_curr_step) /1000;//mA
return ibus_adc * bq->chip_info->adc_curr_step;
return (ibus_adc * bq->chip_info->adc_curr_step) /1000; //mA
}
static int bq25980_get_adc_vbus(struct bq25980_device *bq)
@ -754,7 +754,7 @@ static int bq25980_get_adc_vbus(struct bq25980_device *bq)
vbus_adc = (vbus_adc_msb << 8) | vbus_adc_lsb;
return bq->chip_info->adc_vbus_volt_offset + vbus_adc * bq->chip_info->adc_vbus_volt_step /10;
return (bq->chip_info->adc_vbus_volt_offset + vbus_adc * bq->chip_info->adc_vbus_volt_step /10) /1000;//mV
}
static int bq25980_get_ibat_adc(struct bq25980_device *bq)
@ -774,9 +774,9 @@ static int bq25980_get_ibat_adc(struct bq25980_device *bq)
ibat_adc = (ibat_adc_msb << 8) | ibat_adc_lsb;
if (ibat_adc_msb & BQ25980_ADC_POLARITY_BIT)
return ((ibat_adc ^ 0xffff) + 1) * BQ25960_ADC_CURR_STEP_uA;
return (((ibat_adc ^ 0xffff) + 1) * BQ25960_ADC_CURR_STEP_uA) /1000;//mA
return ibat_adc * BQ25960_ADC_CURR_STEP_uA;
return (ibat_adc * BQ25960_ADC_CURR_STEP_uA) /1000; //mA
}
static int bq25980_get_adc_vbat(struct bq25980_device *bq)
@ -795,7 +795,7 @@ static int bq25980_get_adc_vbat(struct bq25980_device *bq)
vsys_adc = (vsys_adc_msb << 8) | vsys_adc_lsb;
return vsys_adc * bq->chip_info->adc_vbat_volt_step / 10;
return (vsys_adc * bq->chip_info->adc_vbat_volt_step / 10) /1000;//mV
}
static int bq25980_get_state(struct bq25980_device *bq,
@ -1164,7 +1164,7 @@ static int bq25980_get_charger_property(struct power_supply *psy,
break;
*/
case POWER_SUPPLY_PROP_PRESENT:
val->intval = bq->usb_present;
val->intval = bq->state.online;
break;
// case POWER_SUPPLY_PROP_UPDATE_NOW:
// break;
@ -1264,8 +1264,8 @@ static enum power_supply_property bq25980_power_supply_props[] = {
//POWER_SUPPLY_PROP_CP_STATUS1,//
POWER_SUPPLY_PROP_PRESENT,
// POWER_SUPPLY_PROP_CHARGING_ENABLED,//undeclared identifier
POWER_SUPPLY_PROP_VOLTAGE_NOW,
POWER_SUPPLY_PROP_CURRENT_NOW,
// POWER_SUPPLY_PROP_VOLTAGE_NOW,
// POWER_SUPPLY_PROP_CURRENT_NOW,
//POWER_SUPPLY_PROP_INPUT_VOLTAGE_SETTLED,//undeclared identifier
//POWER_SUPPLY_PROP_INPUT_CURRENT_NOW, //undeclared identifier
//POWER_SUPPLY_PROP_CP_IRQ_STATUS,//undeclared identifier

View file

@ -49,6 +49,12 @@ enum mmi_charger_ext_iio_channels {
CP_INPUT_VOLTAGE_NOW,
CP_STATUS1,
CP_CLEAR_ERROR,
/*cp_slave*/
CP_SLAVE_ENABLE,
CP_SLAVE_INPUT_CURRENT_NOW,
CP_SLAVE_INPUT_VOLTAGE_NOW,
CP_SLAVE_STATUS1,
CP_SLAVE_CLEAR_ERROR,
/*mmi-smb5charger-iio*/
MMI_CP_ENABLE_STATUS,
MMI_USB_TERMINATION_ENABLED,
@ -78,6 +84,12 @@ static const char * const mmi_charger_ext_iio_chan_name[] = {
[CP_INPUT_VOLTAGE_NOW] = "cp_input_voltage_settled",
[CP_STATUS1] = "cp_status1",
[CP_CLEAR_ERROR] = "cp_clear_error",
/*cp_slave*/
[CP_SLAVE_ENABLE] = "cp_slave_enabled",
[CP_SLAVE_INPUT_CURRENT_NOW] = "cp_slave_input_current_now",
[CP_SLAVE_INPUT_VOLTAGE_NOW] = "cp_slave_input_voltage_settled",
[CP_SLAVE_STATUS1] = "cp_slave_status1",
[CP_SLAVE_CLEAR_ERROR] = "cp_slave_clear_error",
/*mmi-smb5charger-iio*/
[MMI_CP_ENABLE_STATUS] = "mmi_cp_enabled_status",
};

View file

@ -38,6 +38,14 @@
#include "mmi_charger_core.h"
#include "mmi_charger_core_iio.h"
static int is_cp_slave_pump(struct mmi_charger_device *chrg)
{
if (strcmp(chrg->name, "cp-slave") == 0)
return true;
else
return false;
}
static int cp_enable_charging(struct mmi_charger_device *chrg, bool en)
{
int rc;
@ -46,7 +54,10 @@ static int cp_enable_charging(struct mmi_charger_device *chrg, bool en)
if (!chip)
return -ENODEV;
rc = mmi_charger_write_iio_chan(chip, CP_ENABLE, en);
if (is_cp_slave_pump(chrg))
rc = mmi_charger_write_iio_chan(chip, CP_SLAVE_ENABLE, en);
else
rc = mmi_charger_write_iio_chan(chip, CP_ENABLE, en);
if (!rc) {
chrg->charger_enabled = !!en;
@ -70,7 +81,10 @@ static int cp_is_charging_enabled(struct mmi_charger_device *chrg, bool *en)
if (!chip)
return -ENODEV;
rc = mmi_charger_read_iio_chan(chip, CP_ENABLE, &value);
if (is_cp_slave_pump(chrg))
rc = mmi_charger_read_iio_chan(chip, CP_SLAVE_ENABLE, &value);
else
rc = mmi_charger_read_iio_chan(chip, CP_ENABLE, &value);
if (!rc) {
chrg->charger_enabled = !!value;
@ -105,7 +119,11 @@ static int cp_get_vbus(struct mmi_charger_device *chrg, u32 *mv)
if (!chip)
return -ENODEV;
rc = mmi_charger_read_iio_chan(chip, CP_INPUT_VOLTAGE_NOW, &val);
if (is_cp_slave_pump(chrg))
rc = mmi_charger_read_iio_chan(chip, CP_SLAVE_INPUT_VOLTAGE_NOW, &val);
else
rc = mmi_charger_read_iio_chan(chip, CP_INPUT_VOLTAGE_NOW, &val);
if (!rc)
*mv = val;
chrg_dev_info(chrg, "%s end, mv:%d\n",__func__,*mv);
@ -121,7 +139,10 @@ static int cp_get_input_current(struct mmi_charger_device *chrg, u32 *uA) //ibus
if (!chip)
return -ENODEV;
rc = mmi_charger_read_iio_chan(chip, CP_INPUT_CURRENT_NOW, &value);
if (is_cp_slave_pump(chrg))
rc = mmi_charger_read_iio_chan(chip, CP_SLAVE_INPUT_CURRENT_NOW, &value);
else
rc = mmi_charger_read_iio_chan(chip, CP_INPUT_CURRENT_NOW, &value);
if (!rc)
*uA = value;
@ -164,22 +185,40 @@ static int cp_update_charger_status(struct mmi_charger_device *chrg)
if (!rc)
chrg->charger_data.batt_temp = prop.intval;
rc = mmi_charger_read_iio_chan(chip, CP_INPUT_VOLTAGE_NOW, &prop.intval);
if (!rc)
chrg->charger_data.vbus_volt = prop.intval;
rc = mmi_charger_read_iio_chan(chip, CP_INPUT_CURRENT_NOW, &prop.intval);
if (!rc)
chrg->charger_data.ibus_curr = prop.intval;
rc = power_supply_get_property(chrg->chrg_psy,
POWER_SUPPLY_PROP_PRESENT, &prop);
if (!rc)
chrg->charger_data.vbus_pres = !!prop.intval;
rc = mmi_charger_read_iio_chan(chip, CP_ENABLE, &prop.intval);
if (!rc)
chrg->charger_enabled = !!prop.intval;
if (is_cp_slave_pump(chrg)) {
rc = mmi_charger_read_iio_chan(chip, CP_SLAVE_INPUT_VOLTAGE_NOW, &prop.intval);
if (!rc)
chrg->charger_data.vbus_volt = prop.intval;
rc = mmi_charger_read_iio_chan(chip, CP_SLAVE_INPUT_CURRENT_NOW, &prop.intval);
if (!rc)
chrg->charger_data.ibus_curr = prop.intval;
rc = mmi_charger_read_iio_chan(chip, CP_SLAVE_ENABLE, &prop.intval);
if (!rc)
chrg->charger_enabled = !!prop.intval;
} else {
rc = mmi_charger_read_iio_chan(chip, CP_INPUT_VOLTAGE_NOW, &prop.intval);
if (!rc)
chrg->charger_data.vbus_volt = prop.intval;
rc = mmi_charger_read_iio_chan(chip, CP_INPUT_CURRENT_NOW, &prop.intval);
if (!rc)
chrg->charger_data.ibus_curr = prop.intval;
rc = mmi_charger_read_iio_chan(chip, CP_ENABLE, &prop.intval);
if (!rc)
chrg->charger_enabled = !!prop.intval;
}
chrg_dev_info(chrg, "CP chrg: %s status update: --- info---\n",chrg->name);
chrg_dev_info(chrg, "vbatt %d\n", chrg->charger_data.vbatt_volt);
@ -202,7 +241,11 @@ static int cp_update_charger_error_status(struct mmi_charger_device *chrg)
if (!chip)
return -ENODEV;
rc = mmi_charger_read_iio_chan(chip, CP_STATUS1, &value);
if (is_cp_slave_pump(chrg))
rc = mmi_charger_read_iio_chan(chip, CP_SLAVE_STATUS1, &value);
else
rc = mmi_charger_read_iio_chan(chip, CP_STATUS1, &value);
if (!rc) {
chrg->charger_error.chrg_err_type = value;
}
@ -219,7 +262,11 @@ static int cp_clear_charger_error(struct mmi_charger_device *chrg)
if (!chip)
return -ENODEV;
rc = mmi_charger_write_iio_chan(chip, CP_CLEAR_ERROR, value);
if (is_cp_slave_pump(chrg))
rc = mmi_charger_write_iio_chan(chip, CP_SLAVE_CLEAR_ERROR, value);
else
rc = mmi_charger_write_iio_chan(chip, CP_CLEAR_ERROR, value);
chrg_dev_info(chrg, "%s end, status:%d\n",__func__,value);
return rc;
}