Lines Matching defs:charger

2  * Battery charger driver for TI BQ24735
32 #include <linux/power/bq24735-charger.h>
47 struct power_supply *charger;
108 static int bq24735_config_charger(struct bq24735 *charger)
110 struct bq24735_platform *pdata = charger->pdata;
120 ret = bq24735_write_word(charger->client,
123 dev_err(&charger->client->dev,
124 "Failed to write charger current : %d\n",
133 ret = bq24735_write_word(charger->client,
136 dev_err(&charger->client->dev,
137 "Failed to write charger voltage : %d\n",
146 ret = bq24735_write_word(charger->client,
149 dev_err(&charger->client->dev,
159 static inline int bq24735_enable_charging(struct bq24735 *charger)
163 if (charger->pdata->ext_control)
166 ret = bq24735_config_charger(charger);
170 return bq24735_update_word(charger->client, BQ24735_CHG_OPT,
174 static inline int bq24735_disable_charging(struct bq24735 *charger)
176 if (charger->pdata->ext_control)
179 return bq24735_update_word(charger->client, BQ24735_CHG_OPT,
184 static bool bq24735_charger_is_present(struct bq24735 *charger)
186 if (charger->status_gpio) {
187 return !gpiod_get_value_cansleep(charger->status_gpio);
191 ac = bq24735_read_word(charger->client, BQ24735_CHG_OPT);
193 dev_dbg(&charger->client->dev,
194 "Failed to read charger options : %d\n",
204 static int bq24735_charger_is_charging(struct bq24735 *charger)
208 if (!bq24735_charger_is_present(charger))
211 ret = bq24735_read_word(charger->client, BQ24735_CHG_OPT);
218 static void bq24735_update(struct bq24735 *charger)
220 mutex_lock(&charger->lock);
222 if (charger->charging && bq24735_charger_is_present(charger))
223 bq24735_enable_charging(charger);
225 bq24735_disable_charging(charger);
227 mutex_unlock(&charger->lock);
229 power_supply_changed(charger->charger);
235 struct bq24735 *charger = to_bq24735(psy);
237 bq24735_update(charger);
244 struct bq24735 *charger = container_of(work, struct bq24735, poll.work);
246 bq24735_update(charger);
248 schedule_delayed_work(&charger->poll,
249 msecs_to_jiffies(charger->poll_interval));
256 struct bq24735 *charger = to_bq24735(psy);
260 val->intval = bq24735_charger_is_present(charger) ? 1 : 0;
263 switch (bq24735_charger_is_charging(charger)) {
286 struct bq24735 *charger = to_bq24735(psy);
293 mutex_lock(&charger->lock);
294 charger->charging = true;
295 ret = bq24735_enable_charging(charger);
296 mutex_unlock(&charger->lock);
302 mutex_lock(&charger->lock);
303 charger->charging = false;
304 ret = bq24735_disable_charging(charger);
305 mutex_unlock(&charger->lock);
356 struct bq24735 *charger;
361 charger = devm_kzalloc(&client->dev, sizeof(*charger), GFP_KERNEL);
362 if (!charger)
365 mutex_init(&charger->lock);
366 charger->charging = true;
367 charger->pdata = client->dev.platform_data;
369 if (IS_ENABLED(CONFIG_OF) && !charger->pdata && client->dev.of_node)
370 charger->pdata = bq24735_parse_dt_data(client);
372 if (!charger->pdata) {
377 name = (char *)charger->pdata->name;
388 charger->client = client;
390 supply_desc = &charger->charger_desc;
401 psy_cfg.supplied_to = charger->pdata->supplied_to;
402 psy_cfg.num_supplicants = charger->pdata->num_supplicants;
404 psy_cfg.drv_data = charger;
406 i2c_set_clientdata(client, charger);
408 charger->status_gpio = devm_gpiod_get_optional(&client->dev,
411 if (IS_ERR(charger->status_gpio)) {
412 ret = PTR_ERR(charger->status_gpio);
417 if (bq24735_charger_is_present(charger)) {
439 ret = bq24735_enable_charging(charger);
446 charger->charger = devm_power_supply_register(&client->dev, supply_desc,
448 if (IS_ERR(charger->charger)) {
449 ret = PTR_ERR(charger->charger);
462 charger->charger);
471 &charger->poll_interval);
474 if (!charger->poll_interval)
477 INIT_DELAYED_WORK(&charger->poll, bq24735_poll);
478 schedule_delayed_work(&charger->poll,
479 msecs_to_jiffies(charger->poll_interval));
487 struct bq24735 *charger = i2c_get_clientdata(client);
489 if (charger->poll_interval)
490 cancel_delayed_work_sync(&charger->poll);
496 { "bq24735-charger", 0 },
509 .name = "bq24735-charger",