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; }
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; }