Lines Matching +full:jz4740 +full:- +full:adc
4 * based on jz4740-battery.c
25 #include <linux/power/generic-adc-battery.h>
66 schedule_delayed_work(&adc_bat->bat_work, msecs_to_jiffies(0)); in gab_ext_power_changed()
84 * should correspond one-to-one with enum chan_type.
94 struct gab_platform_data *pdata = adc_bat->pdata; in gab_charge_finished()
95 bool ret = gpio_get_value(pdata->gpio_charge_finished); in gab_charge_finished()
96 bool inv = pdata->gpio_inverted; in gab_charge_finished()
98 if (!gpio_is_valid(pdata->gpio_charge_finished)) in gab_charge_finished()
105 struct gab_platform_data *pdata = adc_bat->pdata; in gab_get_status()
108 bat_info = &pdata->battery_info; in gab_get_status()
109 if (adc_bat->level == bat_info->charge_full_design) in gab_get_status()
111 return adc_bat->status; in gab_get_status()
137 ret = iio_read_channel_processed(adc_bat->channel[chan_index], in read_channel()
155 dev_err(&psy->dev, "no battery infos ?!\n"); in gab_get_property()
156 return -EINVAL; in gab_get_property()
158 pdata = adc_bat->pdata; in gab_get_property()
159 bat_info = &pdata->battery_info; in gab_get_property()
163 val->intval = gab_get_status(adc_bat); in gab_get_property()
166 val->intval = 0; in gab_get_property()
169 val->intval = pdata->cal_charge(result); in gab_get_property()
177 val->intval = result; in gab_get_property()
180 val->intval = bat_info->technology; in gab_get_property()
183 val->intval = bat_info->voltage_min_design; in gab_get_property()
186 val->intval = bat_info->voltage_max_design; in gab_get_property()
189 val->intval = bat_info->charge_full_design; in gab_get_property()
192 val->strval = bat_info->name; in gab_get_property()
195 return -EINVAL; in gab_get_property()
210 status = adc_bat->status; in gab_work()
212 is_plugged = power_supply_am_i_supplied(adc_bat->psy); in gab_work()
213 adc_bat->cable_plugged = is_plugged; in gab_work()
216 adc_bat->status = POWER_SUPPLY_STATUS_DISCHARGING; in gab_work()
218 adc_bat->status = POWER_SUPPLY_STATUS_NOT_CHARGING; in gab_work()
220 adc_bat->status = POWER_SUPPLY_STATUS_CHARGING; in gab_work()
222 if (status != adc_bat->status) in gab_work()
223 power_supply_changed(adc_bat->psy); in gab_work()
229 struct gab_platform_data *pdata = adc_bat->pdata; in gab_charged()
232 delay = pdata->jitter_delay ? pdata->jitter_delay : JITTER_DEFAULT; in gab_charged()
233 schedule_delayed_work(&adc_bat->bat_work, in gab_charged()
243 struct gab_platform_data *pdata = pdev->dev.platform_data; in gab_probe()
250 adc_bat = devm_kzalloc(&pdev->dev, sizeof(*adc_bat), GFP_KERNEL); in gab_probe()
252 dev_err(&pdev->dev, "failed to allocate memory\n"); in gab_probe()
253 return -ENOMEM; in gab_probe()
257 psy_desc = &adc_bat->psy_desc; in gab_probe()
258 psy_desc->name = pdata->battery_info.name; in gab_probe()
261 adc_bat->cable_plugged = false; in gab_probe()
262 adc_bat->status = POWER_SUPPLY_STATUS_DISCHARGING; in gab_probe()
263 psy_desc->type = POWER_SUPPLY_TYPE_BATTERY; in gab_probe()
264 psy_desc->get_property = gab_get_property; in gab_probe()
265 psy_desc->external_power_changed = gab_ext_power_changed; in gab_probe()
266 adc_bat->pdata = pdata; in gab_probe()
277 ret = -ENOMEM; in gab_probe()
288 adc_bat->channel[chan] = iio_channel_get(&pdev->dev, in gab_probe()
290 if (IS_ERR(adc_bat->channel[chan])) { in gab_probe()
291 ret = PTR_ERR(adc_bat->channel[chan]); in gab_probe()
292 adc_bat->channel[chan] = NULL; in gab_probe()
309 ret = -ENODEV; in gab_probe()
319 psy_desc->properties = properties; in gab_probe()
320 psy_desc->num_properties = index; in gab_probe()
322 adc_bat->psy = power_supply_register(&pdev->dev, psy_desc, &psy_cfg); in gab_probe()
323 if (IS_ERR(adc_bat->psy)) { in gab_probe()
324 ret = PTR_ERR(adc_bat->psy); in gab_probe()
328 INIT_DELAYED_WORK(&adc_bat->bat_work, gab_work); in gab_probe()
330 if (gpio_is_valid(pdata->gpio_charge_finished)) { in gab_probe()
332 ret = gpio_request(pdata->gpio_charge_finished, "charged"); in gab_probe()
336 irq = gpio_to_irq(pdata->gpio_charge_finished); in gab_probe()
347 schedule_delayed_work(&adc_bat->bat_work, in gab_probe()
352 gpio_free(pdata->gpio_charge_finished); in gab_probe()
354 power_supply_unregister(adc_bat->psy); in gab_probe()
357 if (adc_bat->channel[chan]) in gab_probe()
358 iio_channel_release(adc_bat->channel[chan]); in gab_probe()
370 struct gab_platform_data *pdata = adc_bat->pdata; in gab_remove()
372 power_supply_unregister(adc_bat->psy); in gab_remove()
374 if (gpio_is_valid(pdata->gpio_charge_finished)) { in gab_remove()
375 free_irq(gpio_to_irq(pdata->gpio_charge_finished), adc_bat); in gab_remove()
376 gpio_free(pdata->gpio_charge_finished); in gab_remove()
380 if (adc_bat->channel[chan]) in gab_remove()
381 iio_channel_release(adc_bat->channel[chan]); in gab_remove()
384 kfree(adc_bat->psy_desc.properties); in gab_remove()
385 cancel_delayed_work_sync(&adc_bat->bat_work); in gab_remove()
393 cancel_delayed_work_sync(&adc_bat->bat_work); in gab_suspend()
394 adc_bat->status = POWER_SUPPLY_STATUS_UNKNOWN; in gab_suspend()
401 struct gab_platform_data *pdata = adc_bat->pdata; in gab_resume()
404 delay = pdata->jitter_delay ? pdata->jitter_delay : JITTER_DEFAULT; in gab_resume()
407 schedule_delayed_work(&adc_bat->bat_work, in gab_resume()
416 .name = "generic-adc-battery",