Ejemplo n.º 1
0
bool sec_hal_chg_get_property(struct sec_charger_info *charger,
                              enum power_supply_property psp,
                              union power_supply_propval *val)
{
    u8 data;

    switch (psp) {
    case POWER_SUPPLY_PROP_STATUS:
        val->intval = max14577_get_charging_status(charger);
        break;

    case POWER_SUPPLY_PROP_CHARGE_TYPE:
        if (charger->is_charging)
            val->intval = POWER_SUPPLY_CHARGE_TYPE_FAST;
        else
            val->intval = POWER_SUPPLY_CHARGE_TYPE_NONE;
        break;

    case POWER_SUPPLY_PROP_HEALTH:
        val->intval = max14577_get_charging_health(charger);
        break;
    case POWER_SUPPLY_PROP_ONLINE:
        val->intval = charger->cable_type;
        break;
    case POWER_SUPPLY_PROP_CURRENT_AVG:	/* charging current */
    /* calculated input current limit value */
    case POWER_SUPPLY_PROP_CURRENT_NOW:
        if (charger->charging_current) {
            max14577_read_reg(charger->client,
                              MAX14577_CHG_REG_CHG_CTRL4, &data);
            if (data & 0x10) /* enable fast charge current set */
                val->intval = (data & 0x0f) * 50 + 200;
            else
                val->intval = 90;
        } else
            val->intval = 0;

        dev_dbg(&charger->client->dev,
                "%s : set-current(%dmA), current now(%dmA)\n",
                __func__, charger->charging_current, val->intval);
        break;
    default:
        return false;
    }
    return true;
}
Ejemplo n.º 2
0
bool sec_hal_chg_get_property(struct sec_charger_info *charger,
			      enum power_supply_property psp,
			      union power_supply_propval *val)
{
	u8 data;

	switch (psp) {
	case POWER_SUPPLY_PROP_STATUS:
		val->intval = max14577_get_charging_status(charger);
		break;

	case POWER_SUPPLY_PROP_CHARGE_TYPE:
		if (charger->is_charging)
			val->intval = POWER_SUPPLY_CHARGE_TYPE_FAST;
		else
			val->intval = POWER_SUPPLY_CHARGE_TYPE_NONE;
		break;

	case POWER_SUPPLY_PROP_HEALTH:
		val->intval = max14577_get_charging_health(charger);
		break;
	case POWER_SUPPLY_PROP_ONLINE:
		val->intval = charger->cable_type;
		break;
	case POWER_SUPPLY_PROP_CURRENT_AVG:	/* charging current */
	/* calculated input current limit value */
	case POWER_SUPPLY_PROP_CURRENT_NOW:
		if (charger->charging_current) {
			max14577_read_reg(charger->client,
				MAX14577_CHG_REG_CHG_CTRL4, &data);
			if (data & 0x10) /* enable fast charge current set */
#if defined(max77836_charger)
				val->intval = (data & 0x0f) * 25 + 100;
#else
				val->intval = (data & 0x0f) * 50 + 200;
#endif
			else
				val->intval = 90;
		} else