コード例 #1
0
static int tegra_power_get_property(struct power_supply *psy,
	enum power_supply_property psp, union power_supply_propval *val)
{
	NvCharger_Type charger = 0;
	NvOdmBatteryAcLineStatus status = NvOdmBatteryAcLine_Offline;

	/* Need to find out the way which tell the charger source */

	switch (psp) {

	case POWER_SUPPLY_PROP_ONLINE:
		if (!NvOdmBatteryGetAcLineStatus(batt_dev->hOdmBattDev,
			&status))
			return -ENODEV;

		if (status == NvOdmBatteryAcLine_Offline) {
			batt_dev->ac_status = NV_FALSE;
		}
		else if (status == NvOdmBatteryAcLine_Online) {
			batt_dev->ac_status = NV_TRUE;
			charger = NvCharger_Type_AC;
		}
		else
			batt_dev->ac_status = NV_FALSE;

		if (psy->type == POWER_SUPPLY_TYPE_MAINS)
			val->intval = (charger == NvCharger_Type_AC);
		//else if (psy->type == POWER_SUPPLY_TYPE_USB) //
		//	val->intval = (charger == NvCharger_Type_USB);
		else
			val->intval = 0;

		break;

	default:
		return -EINVAL;
	}
	return 0;
}
コード例 #2
0
static int tegra_power_get_property(struct power_supply *psy,
	enum power_supply_property psp, union power_supply_propval *val)
{
	switch (psp) {
	case POWER_SUPPLY_PROP_ONLINE:
		if (psy->type == POWER_SUPPLY_TYPE_MAINS) {
			NvOdmBatteryAcLineStatus status;
			if (!NvOdmBatteryGetAcLineStatus(batt_dev->hOdmBattDev,
				&status))
				return -ENODEV;

			val->intval = (status == NvOdmBatteryAcLine_Online); 
		}
		else {
			printk(KERN_INFO "Only AC mains is used as external power\n");
		}
		break;
	default:
		return -EINVAL;
	}
	return 0;
}