/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (C) 2011 Samsung Electronics Co., Ltd. * MyungJoo.Ham <myungjoo.ham@samsung.com> * * Charger Manager. * This framework enables to control and multiple chargers and to * monitor charging even in the context of suspend-to-RAM with * an interface combining the chargers. *
**/
/** * struct charger_cable * @extcon_name: the name of extcon device. * @name: the name of the cable connector * @extcon_dev: the extcon device. * @wq: the workqueue to control charger according to the state of * charger cable. If charger cable is attached, enable charger. * But if charger cable is detached, disable charger. * @nb: the notifier block to receive changed state from EXTCON * (External Connector) when charger cable is attached/detached. * @attached: the state of charger cable. * true: the charger cable is attached * false: the charger cable is detached * @charger: the instance of struct charger_regulator. * @cm: the Charger Manager representing the battery.
*/ struct charger_cable { constchar *extcon_name; constchar *name; struct extcon_dev *extcon_dev;
u64 extcon_type;
/* The charger-manager use Extcon framework */ struct work_struct wq; struct notifier_block nb;
/* The state of charger cable */ bool attached;
struct charger_regulator *charger;
/* * Set min/max current of regulator to protect over-current issue * according to a kind of charger cable when cable is attached.
*/ int min_uA; int max_uA;
struct charger_manager *cm;
};
/** * struct charger_regulator * @regulator_name: the name of regulator for using charger. * @consumer: the regulator consumer for the charger. * @externally_control: * Set if the charger-manager cannot control charger, * the charger will be maintained with disabled state. * @cables: * the array of charger cables to enable/disable charger * and set current limit according to constraint data of * struct charger_cable if only charger cable included * in the array of charger cables is attached/detached. * @num_cables: the number of charger cables. * @attr_g: Attribute group for the charger(regulator) * @attr_name: "name" sysfs entry * @attr_state: "state" sysfs entry * @attr_externally_control: "externally_control" sysfs entry * @attrs: Arrays pointing to attr_name/state/externally_control for attr_g
*/ struct charger_regulator { /* The name of regulator for charging */ constchar *regulator_name; struct regulator *consumer;
/* charger never on when system is on */ int externally_control;
/* * Store constraint information related to current limit, * each cable have different condition for charging.
*/ struct charger_cable *cables; int num_cables;
/** * struct charger_desc * @psy_name: the name of power-supply-class for charger manager * @polling_mode: * Determine which polling mode will be used * @fullbatt_vchkdrop_uV: * Check voltage drop after the battery is fully charged. * If it has dropped more than fullbatt_vchkdrop_uV * CM will restart charging. * @fullbatt_uV: voltage in microvolt * If VBATT >= fullbatt_uV, it is assumed to be full. * @fullbatt_soc: state of Charge in % * If state of Charge >= fullbatt_soc, it is assumed to be full. * @fullbatt_full_capacity: full capacity measure * If full capacity of battery >= fullbatt_full_capacity, * it is assumed to be full. * @polling_interval_ms: interval in millisecond at which * charger manager will monitor battery health * @battery_present: * Specify where information for existence of battery can be obtained * @psy_charger_stat: the names of power-supply for chargers * @num_charger_regulator: the number of entries in charger_regulators * @charger_regulators: array of charger regulators * @psy_fuel_gauge: the name of power-supply for fuel gauge * @thermal_zone : the name of thermal zone for battery * @temp_min : Minimum battery temperature for charging. * @temp_max : Maximum battery temperature for charging. * @temp_diff : Temperature difference to restart charging. * @measure_battery_temp: * true: measure battery temperature * false: measure ambient temperature * @charging_max_duration_ms: Maximum possible duration for charging * If whole charging duration exceed 'charging_max_duration_ms', * cm stop charging. * @discharging_max_duration_ms: * Maximum possible duration for discharging with charger cable * after full-batt. If discharging duration exceed 'discharging * max_duration_ms', cm start charging.
*/ struct charger_desc { constchar *psy_name;
/** * struct charger_manager * @entry: entry for list * @dev: device pointer * @desc: instance of charger_desc * @fuel_gauge: power_supply for fuel gauge * @charger_stat: array of power_supply for chargers * @tzd_batt : thermal zone device for battery * @charger_enabled: the state of charger * @emergency_stop: * When setting true, stop charging * @psy_name_buf: the name of power-supply-class for charger manager * @charger_psy: power_supply for charger manager * @status_save_ext_pwr_inserted: * saved status of external power before entering suspend-to-RAM * @status_save_batt: * saved status of battery before entering suspend-to-RAM * @charging_start_time: saved start time of enabling charging * @charging_end_time: saved end time of disabling charging * @battery_status: Current battery status
*/ struct charger_manager { struct list_head entry; struct device *dev; struct charger_desc *desc;
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.