diff --git a/drivers/power/bq25980_mmi_iio/bq25980_mmi_iio.c b/drivers/power/bq25980_mmi_iio/bq25980_mmi_iio.c index 2217caefb772..71337d95383e 100644 --- a/drivers/power/bq25980_mmi_iio/bq25980_mmi_iio.c +++ b/drivers/power/bq25980_mmi_iio/bq25980_mmi_iio.c @@ -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 diff --git a/drivers/power/mmi_discrete_turbo_charger/mmi_charger_core_iio.h b/drivers/power/mmi_discrete_turbo_charger/mmi_charger_core_iio.h index 04ab85240b4c..f7e4e87c7351 100644 --- a/drivers/power/mmi_discrete_turbo_charger/mmi_charger_core_iio.h +++ b/drivers/power/mmi_discrete_turbo_charger/mmi_charger_core_iio.h @@ -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", }; diff --git a/drivers/power/mmi_discrete_turbo_charger/mmi_cp_charger.c b/drivers/power/mmi_discrete_turbo_charger/mmi_cp_charger.c index e8f62cdf3532..221aac43d804 100644 --- a/drivers/power/mmi_discrete_turbo_charger/mmi_cp_charger.c +++ b/drivers/power/mmi_discrete_turbo_charger/mmi_cp_charger.c @@ -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; }