/** *structab8500_fg_parameters-Fuelgaugealgorithmparameters,inseconds *ifnotspecified *@recovery_sleep_timer:Timebetweenmeasurementswhilerecovering *@recovery_total_time:Totalrecoverytime *@init_timer:Measurementintervalduringstartup *@init_discard_time:Timewediscardvoltagemeasurementatstartup *@init_total_time:Totalinittimeduringstartup *@high_curr_time:Timecurrenthastobehightogotorecovery *@accu_charging:FGaccumulationtimewhilecharging *@accu_high_curr_ua:FGaccumulationtimeinhighcurrentmode *@high_curr_threshold_ua:Highcurrentthreshold,inuA *@lowbat_threshold_uv:Lowbatterythreshold,inuV *@battok_falling_th_sel0ThresholdinmVforbattOksignalsel0 *Resolutionin50mVstep. *@battok_raising_th_sel1ThresholdinmVforbattOksignalsel1 *Resolutionin50mVstep. *@user_cap_limitCapacityreportedfromusermustbewithinthis *limittobeconsideredassane,inpercentage *points. *@maint_thresThisisthethresholdwherewestopreporting *batteryfullwhileinmaintenance,inpercent *@pcut_enable:Enablepowercutfeatureinab8505 *@pcut_max_time:Maxtimethreshold *@pcut_flag_time:Flagtimethreshold *@pcut_max_restart:Maxnumberofrestarts *@pcut_debounce_time:Setsbatterydebouncetime
*/ struct ab8500_fg_parameters { int recovery_sleep_timer; int recovery_total_time; int init_timer; int init_discard_time; int init_total_time; int high_curr_time; int accu_charging; int accu_high_curr; int high_curr_threshold_ua; int lowbat_threshold_uv; int battok_falling_th_sel0; int battok_raising_th_sel1; int user_cap_limit; int maint_thres; bool pcut_enable;
u8 pcut_max_time;
u8 pcut_flag_time;
u8 pcut_max_restart;
u8 pcut_debounce_time;
};
/** *structab8500_charger_maximization-structusedbytheboardconfig. *@use_maxi:Enablemaximizationforthisbatterytype *@maxi_chg_curr_ua:Maximumchargercurrentallowedinmicroampere *@maxi_wait_cycles:cyclestowaitbeforesettingchargercurrent *@charger_curr_step_ua:deltabetweentwochargercurrentsettings(uA)
*/ struct ab8500_maxim_parameters { bool ena_maxi; int chg_curr_ua; int wait_cycles; int charger_curr_step_ua;
};
/** *structab8500_bm_capacity_levels-ab8500capacityleveldata *@critical:criticalcapacitylevelinpercent *@low:lowcapacitylevelinpercent *@normal:normalcapacitylevelinpercent *@high:highcapacitylevelinpercent *@full:fullcapacitylevelinpercent
*/ struct ab8500_bm_capacity_levels { int critical; int low; int normal; int high; int full;
};
/** *structab8500_bm_charger_parameters-Chargerspecificparameters *@usb_volt_max_uv:maximumallowedUSBchargervoltageinuV *@usb_curr_max_ua:maximumallowedUSBchargercurrentinuA *@ac_volt_max_uv:maximumallowedACchargervoltageinuV *@ac_curr_max_ua:maximumallowedACchargercurrentinuA
*/ struct ab8500_bm_charger_parameters { int usb_volt_max_uv; int usb_curr_max_ua; int ac_volt_max_uv; int ac_curr_max_ua;
};
/** *structab8500_bm_data-ab8500batterymanagementdata *@bibatteryinfofromdevicetree *@temp_nowpresentbatterytemperature *@temp_interval_chgtemperaturemeasurementintervalinswhencharging *@temp_interval_nochgtemperaturemeasurementintervalinswhennotcharging *@main_safety_tmr_hsafetytimerformaincharger *@usb_safety_tmr_hsafetytimerforusbcharger *@bkup_bat_vvoltagewhichwechargethebackupbatterywith *@bkup_bat_icurrentwhichwechargethebackupbatterywith *@capacity_scalingindicateswhethercapacityscalingistobeused *@chg_unknown_batflagtoenablechargingofunknownbatteries *@enable_overshootflagtoenableVBATovershootcontrol *@auto_trigflagtoenableautoadctrigger *@fg_resresistanceofFGresistorin0.1mOhm *@interval_chargingchargealgcycleperiodtimewhencharging(sec) *@interval_not_chargingchargealgcycleperiodtimewhennotcharging(sec) *@temp_hysteresistemperaturehysteresis *@maximaximizationparameters *@cap_levelscapacityinpercentforthedifferentcapacitylevels *@chg_paramschargerparameters *@fg_paramsfuelgaugeparameters
*/ struct ab8500_bm_data { struct power_supply_battery_info *bi; int temp_now; int temp_interval_chg; int temp_interval_nochg; int main_safety_tmr_h; int usb_safety_tmr_h; int bkup_bat_v; int bkup_bat_i; bool capacity_scaling; bool chg_unknown_bat; bool enable_overshoot; bool auto_trig; int fg_res; int interval_charging; int interval_not_charging; int temp_hysteresis; conststruct ab8500_maxim_parameters *maxi; conststruct ab8500_bm_capacity_levels *cap_levels; conststruct ab8500_bm_charger_parameters *chg_params; conststruct ab8500_fg_parameters *fg_params;
};
/* Forward declaration */ struct ab8500_fg;
externstruct ab8500_bm_data ab8500_bm_data;
void ab8500_charger_usb_state_changed(u8 bm_usb_state, u16 mA); struct ab8500_fg *ab8500_fg_get(void); int ab8500_fg_inst_curr_blocking(struct ab8500_fg *dev); int ab8500_fg_inst_curr_start(struct ab8500_fg *di); int ab8500_fg_inst_curr_finalize(struct ab8500_fg *di, int *res); int ab8500_fg_inst_curr_started(struct ab8500_fg *di); int ab8500_fg_inst_curr_done(struct ab8500_fg *di); int ab8500_bm_of_probe(struct power_supply *psy, struct ab8500_bm_data *bm); void ab8500_bm_of_remove(struct power_supply *psy, struct ab8500_bm_data *bm);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.