static int max17047_set_property(struct power_supply *psy,
				enum power_supply_property psp,
				const union power_supply_propval *val)
{
	struct max17047_fuelgauge_data *fg_data = container_of(psy,
					  struct max17047_fuelgauge_data,
					  fuelgauge);

	switch (psp) {
	case POWER_SUPPLY_PROP_CAPACITY:
		max17047_reset_soc(fg_data->client);
		break;
	case POWER_SUPPLY_PROP_STATUS:
		if (val->intval != POWER_SUPPLY_STATUS_FULL)
			return -EINVAL;
		pr_info("%s: charger full state!\n", __func__);
		/* adjust full soc */
		max17047_adjust_fullsoc(fg_data->client);
		break;
	default:
		return -EINVAL;
	}

	return 0;
}
static int max17047_set_property(struct power_supply *psy,
				enum power_supply_property psp,
				const union power_supply_propval *val)
{
	struct max17047_fuelgauge_data *fuelgauge_data = container_of(psy,
					  struct max17047_fuelgauge_data,
					  fuelgauge);

	switch (psp) {
	case POWER_SUPPLY_PROP_CAPACITY:
		max17047_reset_soc(fuelgauge_data->client);
		break;
	default:
		return -EINVAL;
	}

	return 0;
}
Exemple #3
0
static int max17047_set_property(struct power_supply *psy,
				enum power_supply_property psp,
				const union power_supply_propval *val)
{
	struct max17047_fuelgauge_data *fg_data = container_of(psy,
					  struct max17047_fuelgauge_data,
					  fuelgauge);

	switch (psp) {
	case POWER_SUPPLY_PROP_CAPACITY:
		max17047_reset_soc(fg_data->client);
		break;
	case POWER_SUPPLY_PROP_STATUS:
		if (val->intval != POWER_SUPPLY_STATUS_FULL)
			return -EINVAL;
		pr_info("%s: charger full state!\n", __func__);
		/* adjust full soc */
		max17047_adjust_fullsoc(fg_data->client);
		break;
#if defined(CONFIG_MACH_GC1) || defined(CONFIG_MACH_GD2) || defined(CONFIG_GC2PD_LTE)
	case POWER_SUPPLY_PROP_RCOMP:
		if (fg_data->prev_status == val->intval) {
			pr_debug("%s: No rcomp change, prev(%d) = cur(%d)\n",
				__func__, fg_data->prev_status, val->intval);
		} else {
			if (val->intval == POWER_SUPPLY_STATUS_CHARGING)
				max17047_set_rcomp(fg_data->client, 1);
			else
				max17047_set_rcomp(fg_data->client, 0);
			max17047_get_rcomp(fg_data->client, val->intval);
			fg_data->prev_status = val->intval;
		}
		break;
#endif
	default:
		return -EINVAL;
	}

	return 0;
}