static int wm831x_bat_get_prop(struct power_supply *psy,
			       enum power_supply_property psp,
			       union power_supply_propval *val)
{
	struct wm831x_power *wm831x_power = dev_get_drvdata(psy->dev->parent);
	struct wm831x *wm831x = wm831x_power->wm831x;
	int ret = 0;

	switch (psp) {
	case POWER_SUPPLY_PROP_STATUS:
		ret = wm831x_bat_check_status(wm831x, &val->intval);
		break;
	case POWER_SUPPLY_PROP_ONLINE:
		ret = wm831x_power_check_online(wm831x, WM831X_PWR_SRC_BATT,
						val);
		break;
	case POWER_SUPPLY_PROP_VOLTAGE_NOW:
		ret = wm831x_power_read_voltage(wm831x, WM831X_AUX_BATT, val);
		break;
	case POWER_SUPPLY_PROP_HEALTH:
		ret = wm831x_bat_check_health(wm831x, &val->intval);
		break;
	case POWER_SUPPLY_PROP_CHARGE_TYPE:
		ret = wm831x_bat_check_type(wm831x, &val->intval);
		break;
	default:
		ret = -EINVAL;
		break;
	}

	return ret;
}
예제 #2
0
static int wm831x_bat_get_prop(struct power_supply *psy,
			       enum power_supply_property psp,
			       union power_supply_propval *val)
{
	struct wm831x_power *wm831x_power = dev_get_drvdata(psy->dev->parent);
	struct wm831x *wm831x = wm831x_power->wm831x;
	int  ret = 0;

	switch (psp) {
	case POWER_SUPPLY_PROP_STATUS:
		ret = wm831x_bat_check_status(wm831x, &val->intval);
		//val->intval = wm831x_power->batt_info.status;
		break;
	case POWER_SUPPLY_PROP_PRESENT:
	//case POWER_SUPPLY_PROP_ONLINE:
		//ret = wm831x_power_check_online(wm831x, WM831X_PWR_SRC_BATT, val);
		val->intval = wm831x_power->batt_info.online;
		break;
	case POWER_SUPPLY_PROP_VOLTAGE_NOW:
		//ret = wm831x_power_read_voltage(wm831x, WM831X_AUX_BATT, val);
		val->intval = wm831x_power->batt_info.voltage;//uV
		break;
	case POWER_SUPPLY_PROP_HEALTH:
		//ret = wm831x_bat_check_health(wm831x, &val->intval);
		val->intval = wm831x_power->batt_info.health;
		break;
	case POWER_SUPPLY_PROP_CHARGE_TYPE:
		ret = wm831x_bat_check_type(wm831x, &val->intval);
		break;
	case POWER_SUPPLY_PROP_CAPACITY:
		//ret = wm831x_power_read_voltage(wm831x, WM831X_AUX_BATT, val);
		//wm831x_batt_vol_level(wm831x_power, val->intval, &level);
		//val->intval = level;
		val->intval = wm831x_power->batt_info.level;
		break;
	case POWER_SUPPLY_PROP_TEMP:
		val->intval = 0;
		break;
	case POWER_SUPPLY_PROP_TECHNOLOGY:
		val->intval = POWER_SUPPLY_TECHNOLOGY_LION;
		break;
	default:
		ret = -EINVAL;
		break;
	}

	return ret;
}