power: supply: wm8350-power: Handle error for wm8350_register_irq
[ Upstream commitb0b14b5ba1
] As the potential failure of the wm8350_register_irq(), it should be better to check it and return error if fails. Also, use 'free_' in order to avoid same code. Fixes:14431aa0c5
("power_supply: Add support for WM8350 PMU") Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
8659aba5ca
Коммит
1318caf075
|
@ -408,44 +408,112 @@ static const struct power_supply_desc wm8350_usb_desc = {
|
|||
* Initialisation
|
||||
*********************************************************************/
|
||||
|
||||
static void wm8350_init_charger(struct wm8350 *wm8350)
|
||||
static int wm8350_init_charger(struct wm8350 *wm8350)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* register our interest in charger events */
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT,
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT,
|
||||
wm8350_charger_handler, 0, "Battery hot", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD,
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD,
|
||||
wm8350_charger_handler, 0, "Battery cold", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL,
|
||||
if (ret)
|
||||
goto free_chg_bat_hot;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL,
|
||||
wm8350_charger_handler, 0, "Battery fail", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_CHG_TO,
|
||||
if (ret)
|
||||
goto free_chg_bat_cold;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_TO,
|
||||
wm8350_charger_handler, 0,
|
||||
"Charger timeout", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_CHG_END,
|
||||
if (ret)
|
||||
goto free_chg_bat_fail;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_END,
|
||||
wm8350_charger_handler, 0,
|
||||
"Charge end", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_CHG_START,
|
||||
if (ret)
|
||||
goto free_chg_to;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_START,
|
||||
wm8350_charger_handler, 0,
|
||||
"Charge start", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY,
|
||||
if (ret)
|
||||
goto free_chg_end;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY,
|
||||
wm8350_charger_handler, 0,
|
||||
"Fast charge ready", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9,
|
||||
if (ret)
|
||||
goto free_chg_start;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9,
|
||||
wm8350_charger_handler, 0,
|
||||
"Battery <3.9V", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1,
|
||||
if (ret)
|
||||
goto free_chg_fast_rdy;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1,
|
||||
wm8350_charger_handler, 0,
|
||||
"Battery <3.1V", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85,
|
||||
if (ret)
|
||||
goto free_chg_vbatt_lt_3p9;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85,
|
||||
wm8350_charger_handler, 0,
|
||||
"Battery <2.85V", wm8350);
|
||||
if (ret)
|
||||
goto free_chg_vbatt_lt_3p1;
|
||||
|
||||
/* and supply change events */
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_EXT_USB_FB,
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_EXT_USB_FB,
|
||||
wm8350_charger_handler, 0, "USB", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_EXT_WALL_FB,
|
||||
if (ret)
|
||||
goto free_chg_vbatt_lt_2p85;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_EXT_WALL_FB,
|
||||
wm8350_charger_handler, 0, "Wall", wm8350);
|
||||
wm8350_register_irq(wm8350, WM8350_IRQ_EXT_BAT_FB,
|
||||
if (ret)
|
||||
goto free_ext_usb_fb;
|
||||
|
||||
ret = wm8350_register_irq(wm8350, WM8350_IRQ_EXT_BAT_FB,
|
||||
wm8350_charger_handler, 0, "Battery", wm8350);
|
||||
if (ret)
|
||||
goto free_ext_wall_fb;
|
||||
|
||||
return 0;
|
||||
|
||||
free_ext_wall_fb:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_EXT_WALL_FB, wm8350);
|
||||
free_ext_usb_fb:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_EXT_USB_FB, wm8350);
|
||||
free_chg_vbatt_lt_2p85:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_2P85, wm8350);
|
||||
free_chg_vbatt_lt_3p1:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P1, wm8350);
|
||||
free_chg_vbatt_lt_3p9:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_CHG_VBATT_LT_3P9, wm8350);
|
||||
free_chg_fast_rdy:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_CHG_FAST_RDY, wm8350);
|
||||
free_chg_start:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_CHG_START, wm8350);
|
||||
free_chg_end:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_CHG_END, wm8350);
|
||||
free_chg_to:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_CHG_TO, wm8350);
|
||||
free_chg_bat_fail:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_FAIL, wm8350);
|
||||
free_chg_bat_cold:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_COLD, wm8350);
|
||||
free_chg_bat_hot:
|
||||
wm8350_free_irq(wm8350, WM8350_IRQ_CHG_BAT_HOT, wm8350);
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void free_charger_irq(struct wm8350 *wm8350)
|
||||
|
|
Загрузка…
Ссылка в новой задаче