• Home
  • Raw
  • Download

Lines Matching refs:wm8350

23 static int wm8350_read_battery_uvolts(struct wm8350 *wm8350)  in wm8350_read_battery_uvolts()  argument
25 return wm8350_read_auxadc(wm8350, WM8350_AUXADC_BATT, 0, 0) in wm8350_read_battery_uvolts()
29 static int wm8350_read_line_uvolts(struct wm8350 *wm8350) in wm8350_read_line_uvolts() argument
31 return wm8350_read_auxadc(wm8350, WM8350_AUXADC_LINE, 0, 0) in wm8350_read_line_uvolts()
35 static int wm8350_read_usb_uvolts(struct wm8350 *wm8350) in wm8350_read_usb_uvolts() argument
37 return wm8350_read_auxadc(wm8350, WM8350_AUXADC_USB, 0, 0) in wm8350_read_usb_uvolts()
45 static inline int wm8350_charge_time_min(struct wm8350 *wm8350, int min) in wm8350_charge_time_min() argument
47 if (!wm8350->power.rev_g_coeff) in wm8350_charge_time_min()
53 static int wm8350_get_supplies(struct wm8350 *wm8350) in wm8350_get_supplies() argument
58 sm = wm8350_reg_read(wm8350, WM8350_STATE_MACHINE_STATUS); in wm8350_get_supplies()
59 ov = wm8350_reg_read(wm8350, WM8350_MISC_OVERRIDES); in wm8350_get_supplies()
60 co = wm8350_reg_read(wm8350, WM8350_COMPARATOR_OVERRIDES); in wm8350_get_supplies()
61 chrg = wm8350_reg_read(wm8350, WM8350_BATTERY_CHARGER_CONTROL_2); in wm8350_get_supplies()
89 static int wm8350_charger_config(struct wm8350 *wm8350, in wm8350_charger_config() argument
95 dev_warn(wm8350->dev, in wm8350_charger_config()
102 dev_err(wm8350->dev, "USB fast charge > 500mA\n"); in wm8350_charger_config()
108 wm8350_reg_unlock(wm8350); in wm8350_charger_config()
110 reg = wm8350_reg_read(wm8350, WM8350_BATTERY_CHARGER_CONTROL_1) in wm8350_charger_config()
112 wm8350_reg_write(wm8350, WM8350_BATTERY_CHARGER_CONTROL_1, in wm8350_charger_config()
118 if (wm8350_get_supplies(wm8350) & WM8350_USB_SUPPLY) { in wm8350_charger_config()
121 wm8350_reg_write(wm8350, WM8350_BATTERY_CHARGER_CONTROL_2, in wm8350_charger_config()
123 fast_limit_mA | wm8350_charge_time_min(wm8350, in wm8350_charger_config()
129 wm8350_reg_write(wm8350, WM8350_BATTERY_CHARGER_CONTROL_2, in wm8350_charger_config()
131 fast_limit_mA | wm8350_charge_time_min(wm8350, in wm8350_charger_config()
135 wm8350_reg_lock(wm8350); in wm8350_charger_config()
139 static int wm8350_batt_status(struct wm8350 *wm8350) in wm8350_batt_status() argument
143 state = wm8350_reg_read(wm8350, WM8350_BATTERY_CHARGER_CONTROL_2); in wm8350_batt_status()
162 struct wm8350 *wm8350 = dev_get_drvdata(dev); in charger_state_show() local
166 state = wm8350_reg_read(wm8350, WM8350_BATTERY_CHARGER_CONTROL_2) & in charger_state_show()
189 struct wm8350 *wm8350 = data; in wm8350_charger_handler() local
190 struct wm8350_power *power = &wm8350->power; in wm8350_charger_handler()
193 switch (irq - wm8350->irq_base) { in wm8350_charger_handler()
195 dev_err(wm8350->dev, "battery failed\n"); in wm8350_charger_handler()
198 dev_err(wm8350->dev, "charger timeout\n"); in wm8350_charger_handler()
210 dev_dbg(wm8350->dev, "fast charger ready\n"); in wm8350_charger_handler()
211 wm8350_charger_config(wm8350, policy); in wm8350_charger_handler()
212 wm8350_reg_unlock(wm8350); in wm8350_charger_handler()
213 wm8350_set_bits(wm8350, WM8350_BATTERY_CHARGER_CONTROL_1, in wm8350_charger_handler()
215 wm8350_reg_lock(wm8350); in wm8350_charger_handler()
219 dev_warn(wm8350->dev, "battery < 3.9V\n"); in wm8350_charger_handler()
222 dev_warn(wm8350->dev, "battery < 3.1V\n"); in wm8350_charger_handler()
225 dev_warn(wm8350->dev, "battery < 2.85V\n"); in wm8350_charger_handler()
232 wm8350_charger_config(wm8350, policy); in wm8350_charger_handler()
240 dev_err(wm8350->dev, "Unknown interrupt %d\n", irq); in wm8350_charger_handler()
253 struct wm8350 *wm8350 = dev_get_drvdata(psy->dev.parent); in wm8350_ac_get_prop() local
258 val->intval = !!(wm8350_get_supplies(wm8350) & in wm8350_ac_get_prop()
262 val->intval = wm8350_read_line_uvolts(wm8350); in wm8350_ac_get_prop()
283 struct wm8350 *wm8350 = dev_get_drvdata(psy->dev.parent); in wm8350_usb_get_prop() local
288 val->intval = !!(wm8350_get_supplies(wm8350) & in wm8350_usb_get_prop()
292 val->intval = wm8350_read_usb_uvolts(wm8350); in wm8350_usb_get_prop()
310 static int wm8350_bat_check_health(struct wm8350 *wm8350) in wm8350_bat_check_health() argument
314 if (wm8350_read_battery_uvolts(wm8350) < 2850000) in wm8350_bat_check_health()
317 reg = wm8350_reg_read(wm8350, WM8350_CHARGER_OVERRIDES); in wm8350_bat_check_health()
327 static int wm8350_bat_get_charge_type(struct wm8350 *wm8350) in wm8350_bat_get_charge_type() argument
331 state = wm8350_reg_read(wm8350, WM8350_BATTERY_CHARGER_CONTROL_2) & in wm8350_bat_get_charge_type()
349 struct wm8350 *wm8350 = dev_get_drvdata(psy->dev.parent); in wm8350_bat_get_property() local
354 val->intval = wm8350_batt_status(wm8350); in wm8350_bat_get_property()
357 val->intval = !!(wm8350_get_supplies(wm8350) & in wm8350_bat_get_property()
361 val->intval = wm8350_read_battery_uvolts(wm8350); in wm8350_bat_get_property()
364 val->intval = wm8350_bat_check_health(wm8350); in wm8350_bat_get_property()
367 val->intval = wm8350_bat_get_charge_type(wm8350); in wm8350_bat_get_property()
413 static void wm8350_init_charger(struct wm8350 *wm8350) in wm8350_init_charger() argument
416 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT, in wm8350_init_charger()
417 wm8350_charger_handler, 0, "Battery hot", wm8350); in wm8350_init_charger()
418 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD, in wm8350_init_charger()
419 wm8350_charger_handler, 0, "Battery cold", wm8350); in wm8350_init_charger()
420 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL, in wm8350_init_charger()
421 wm8350_charger_handler, 0, "Battery fail", wm8350); in wm8350_init_charger()
422 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_TO, in wm8350_init_charger()
424 "Charger timeout", wm8350); in wm8350_init_charger()
425 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_END, in wm8350_init_charger()
427 "Charge end", wm8350); in wm8350_init_charger()
428 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_START, in wm8350_init_charger()
430 "Charge start", wm8350); in wm8350_init_charger()
431 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY, in wm8350_init_charger()
433 "Fast charge ready", wm8350); in wm8350_init_charger()
434 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9, in wm8350_init_charger()
436 "Battery <3.9V", wm8350); in wm8350_init_charger()
437 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1, in wm8350_init_charger()
439 "Battery <3.1V", wm8350); in wm8350_init_charger()
440 wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85, in wm8350_init_charger()
442 "Battery <2.85V", wm8350); in wm8350_init_charger()
445 wm8350_register_irq(wm8350, WM8350_IRQ_EXT_USB_FB, in wm8350_init_charger()
446 wm8350_charger_handler, 0, "USB", wm8350); in wm8350_init_charger()
447 wm8350_register_irq(wm8350, WM8350_IRQ_EXT_WALL_FB, in wm8350_init_charger()
448 wm8350_charger_handler, 0, "Wall", wm8350); in wm8350_init_charger()
449 wm8350_register_irq(wm8350, WM8350_IRQ_EXT_BAT_FB, in wm8350_init_charger()
450 wm8350_charger_handler, 0, "Battery", wm8350); in wm8350_init_charger()
453 static void free_charger_irq(struct wm8350 *wm8350) in free_charger_irq() argument
455 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT, wm8350); in free_charger_irq()
456 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD, wm8350); in free_charger_irq()
457 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL, wm8350); in free_charger_irq()
458 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_TO, wm8350); in free_charger_irq()
459 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_END, wm8350); in free_charger_irq()
460 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_START, wm8350); in free_charger_irq()
461 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9, wm8350); in free_charger_irq()
462 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1, wm8350); in free_charger_irq()
463 wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85, wm8350); in free_charger_irq()
464 wm8350_free_irq(wm8350, WM8350_IRQ_EXT_USB_FB, wm8350); in free_charger_irq()
465 wm8350_free_irq(wm8350, WM8350_IRQ_EXT_WALL_FB, wm8350); in free_charger_irq()
466 wm8350_free_irq(wm8350, WM8350_IRQ_EXT_BAT_FB, wm8350); in free_charger_irq()
471 struct wm8350 *wm8350 = platform_get_drvdata(pdev); in wm8350_power_probe() local
472 struct wm8350_power *power = &wm8350->power; in wm8350_power_probe()
495 dev_warn(wm8350->dev, "failed to add charge sysfs: %d\n", ret); in wm8350_power_probe()
498 wm8350_init_charger(wm8350); in wm8350_power_probe()
499 if (wm8350_charger_config(wm8350, policy) == 0) { in wm8350_power_probe()
500 wm8350_reg_unlock(wm8350); in wm8350_power_probe()
501 wm8350_set_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CHG_ENA); in wm8350_power_probe()
502 wm8350_reg_lock(wm8350); in wm8350_power_probe()
517 struct wm8350 *wm8350 = platform_get_drvdata(pdev); in wm8350_power_remove() local
518 struct wm8350_power *power = &wm8350->power; in wm8350_power_remove()
520 free_charger_irq(wm8350); in wm8350_power_remove()