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:
parent
11a0f8b969
commit
01534cdfc6
3 changed files with 85 additions and 26 deletions
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue