Commit ea14bae6 authored by Ivan Abramov's avatar Ivan Abramov Committed by Sebastian Reichel
Browse files

power: supply: wm831x: Check wm831x_set_bits() return value



Since wm831x_set_bits() may return error, log failure and exit from
wm831x_usb_limit_change() in such case.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 626b6cd5 ("power: wm831x_power: Support USB charger current limit management")
Signed-off-by: default avatarIvan Abramov <i.abramov@mt-integration.ru>
Link: https://patch.msgid.link/20251009170553.566561-1-i.abramov@mt-integration.ru


Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent 15aca30c
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ static int wm831x_usb_limit_change(struct notifier_block *nb,
							 struct wm831x_power,
							 usb_notify);
	unsigned int i, best;
	int ret;

	/* Find the highest supported limit */
	best = 0;
@@ -156,8 +157,13 @@ static int wm831x_usb_limit_change(struct notifier_block *nb,
	dev_dbg(wm831x_power->wm831x->dev,
		"Limiting USB current to %umA", wm831x_usb_limits[best]);

	wm831x_set_bits(wm831x_power->wm831x, WM831X_POWER_STATE,
	ret = wm831x_set_bits(wm831x_power->wm831x, WM831X_POWER_STATE,
			      WM831X_USB_ILIM_MASK, best);
	if (ret < 0) {
		dev_err(wm831x_power->wm831x->dev,
			"Failed to set USB current limit: %d\n", ret);
		return ret;
	}

	return 0;
}