Lines Matching defs:charger

2  * Battery charger driver for TI BQ24735
32 #include <linux/power/bq24735-charger.h>
50 struct power_supply *charger;
111 static int bq24735_config_charger(struct bq24735 *charger)
113 struct bq24735_platform *pdata = charger->pdata;
123 ret = bq24735_write_word(charger->client,
126 dev_err(&charger->client->dev,
127 "Failed to write charger current : %d\n",
136 ret = bq24735_write_word(charger->client,
139 dev_err(&charger->client->dev,
140 "Failed to write charger voltage : %d\n",
149 ret = bq24735_write_word(charger->client,
152 dev_err(&charger->client->dev,
162 static inline int bq24735_enable_charging(struct bq24735 *charger)
166 if (charger->pdata->ext_control)
169 ret = bq24735_config_charger(charger);
173 return bq24735_update_word(charger->client, BQ24735_CHARGE_OPT,
177 static inline int bq24735_disable_charging(struct bq24735 *charger)
179 if (charger->pdata->ext_control)
182 return bq24735_update_word(charger->client, BQ24735_CHARGE_OPT,
187 static bool bq24735_charger_is_present(struct bq24735 *charger)
189 if (charger->status_gpio) {
190 return !gpiod_get_value_cansleep(charger->status_gpio);
194 ac = bq24735_read_word(charger->client, BQ24735_CHARGE_OPT);
196 dev_dbg(&charger->client->dev,
197 "Failed to read charger options : %d\n",
207 static int bq24735_charger_is_charging(struct bq24735 *charger)
211 if (!bq24735_charger_is_present(charger))
214 ret = bq24735_read_word(charger->client, BQ24735_CHARGE_OPT);
221 static void bq24735_update(struct bq24735 *charger)
223 mutex_lock(&charger->lock);
225 if (charger->charging && bq24735_charger_is_present(charger))
226 bq24735_enable_charging(charger);
228 bq24735_disable_charging(charger);
230 mutex_unlock(&charger->lock);
232 power_supply_changed(charger->charger);
238 struct bq24735 *charger = to_bq24735(psy);
240 bq24735_update(charger);
247 struct bq24735 *charger = container_of(work, struct bq24735, poll.work);
249 bq24735_update(charger);
251 schedule_delayed_work(&charger->poll,
252 msecs_to_jiffies(charger->poll_interval));
259 struct bq24735 *charger = to_bq24735(psy);
263 val->intval = bq24735_charger_is_present(charger) ? 1 : 0;
266 switch (bq24735_charger_is_charging(charger)) {
289 struct bq24735 *charger = to_bq24735(psy);
296 mutex_lock(&charger->lock);
297 charger->charging = true;
298 ret = bq24735_enable_charging(charger);
299 mutex_unlock(&charger->lock);
305 mutex_lock(&charger->lock);
306 charger->charging = false;
307 ret = bq24735_disable_charging(charger);
308 mutex_unlock(&charger->lock);
358 struct bq24735 *charger;
363 charger = devm_kzalloc(&client->dev, sizeof(*charger), GFP_KERNEL);
364 if (!charger)
367 mutex_init(&charger->lock);
368 charger->charging = true;
369 charger->pdata = client->dev.platform_data;
371 if (IS_ENABLED(CONFIG_OF) && !charger->pdata && client->dev.of_node)
372 charger->pdata = bq24735_parse_dt_data(client);
374 if (!charger->pdata) {
379 name = (char *)charger->pdata->name;
390 charger->client = client;
392 supply_desc = &charger->charger_desc;
403 psy_cfg.supplied_to = charger->pdata->supplied_to;
404 psy_cfg.num_supplicants = charger->pdata->num_supplicants;
406 psy_cfg.drv_data = charger;
408 i2c_set_clientdata(client, charger);
410 charger->status_gpio = devm_gpiod_get_optional(&client->dev,
413 if (IS_ERR(charger->status_gpio)) {
414 ret = PTR_ERR(charger->status_gpio);
419 if (bq24735_charger_is_present(charger)) {
441 ret = bq24735_enable_charging(charger);
448 charger->charger = devm_power_supply_register(&client->dev, supply_desc,
450 if (IS_ERR(charger->charger)) {
451 ret = PTR_ERR(charger->charger);
464 charger->charger);
473 &charger->poll_interval);
476 if (!charger->poll_interval)
479 ret = devm_delayed_work_autocancel(&client->dev, &charger->poll,
484 schedule_delayed_work(&charger->poll,
485 msecs_to_jiffies(charger->poll_interval));
492 { "bq24735-charger" },
505 .name = "bq24735-charger",