In commit 6e86a1543c37 ("can: dev: provide optional GPIO based termination support") GPIO based termination support was added.
For no particular reason that patch uses gpiod_set_value() to set the GPIO. This leads to the following warning, if the systems uses a sleeping GPIO, i.e. behind an I2C port expander:
| WARNING: CPU: 0 PID: 379 at /drivers/gpio/gpiolib.c:3496 gpiod_set_value+0x50/0x6c | CPU: 0 UID: 0 PID: 379 Comm: ip Not tainted 6.11.0-20241016-1 #1 823affae360cc91126e4d316d7a614a8bf86236c
Replace gpiod_set_value() by gpiod_set_value_cansleep() to allow the use of sleeping GPIOs.
Cc: Nicolai Buchwitz nb@tipi-net.de Cc: Lino Sanfilippo l.sanfilippo@kunbus.com Cc: stable@vger.kernel.org Reported-by: Leonard Göhrs l.goehrs@pengutronix.de Tested-by: Leonard Göhrs l.goehrs@pengutronix.de Fixes: 6e86a1543c37 ("can: dev: provide optional GPIO based termination support") Link: https://patch.msgid.link/20241121-dev-fix-can_set_termination-v1-1-41fa6e292... Signed-off-by: Marc Kleine-Budde mkl@pengutronix.de --- drivers/net/can/dev/dev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/can/dev/dev.c b/drivers/net/can/dev/dev.c index 6792c14fd7eb..681643ab3780 100644 --- a/drivers/net/can/dev/dev.c +++ b/drivers/net/can/dev/dev.c @@ -468,7 +468,7 @@ static int can_set_termination(struct net_device *ndev, u16 term) else set = 0;
- gpiod_set_value(priv->termination_gpio, set); + gpiod_set_value_cansleep(priv->termination_gpio, set);
return 0; }
base-commit: 9bb88c659673003453fd42e0ddf95c9628409094
Hello:
This series was applied to netdev/net.git (main) by Marc Kleine-Budde mkl@pengutronix.de:
On Mon, 2 Dec 2024 09:55:35 +0100 you wrote:
In commit 6e86a1543c37 ("can: dev: provide optional GPIO based termination support") GPIO based termination support was added.
For no particular reason that patch uses gpiod_set_value() to set the GPIO. This leads to the following warning, if the systems uses a sleeping GPIO, i.e. behind an I2C port expander:
[...]
Here is the summary with links: - [net,01/15] can: dev: can_set_termination(): allow sleeping GPIOs https://git.kernel.org/netdev/net/c/ee1dfbdd8b4b - [net,02/15] can: gs_usb: add usb endpoint address detection at driver probe step https://git.kernel.org/netdev/net/c/889b2ae9139a - [net,03/15] can: c_can: c_can_handle_bus_err(): update statistics if skb allocation fails https://git.kernel.org/netdev/net/c/9e66242504f4 - [net,04/15] can: sun4i_can: sun4i_can_err(): call can_change_state() even if cf is NULL https://git.kernel.org/netdev/net/c/ee6bf3677ae0 - [net,05/15] can: hi311x: hi3110_can_ist(): fix potential use-after-free https://git.kernel.org/netdev/net/c/9ad86d377ef4 - [net,06/15] can: hi311x: hi3110_can_ist(): update state error statistics if skb allocation fails https://git.kernel.org/netdev/net/c/ef5034aed9e0 - [net,07/15] can: m_can: m_can_handle_lec_err(): fix {rx,tx}_errors statistics https://git.kernel.org/netdev/net/c/988d4222bf90 - [net,08/15] can: ifi_canfd: ifi_canfd_handle_lec_err(): fix {rx,tx}_errors statistics https://git.kernel.org/netdev/net/c/bb03d568bb21 - [net,09/15] can: hi311x: hi3110_can_ist(): fix {rx,tx}_errors statistics https://git.kernel.org/netdev/net/c/3e4645931655 - [net,10/15] can: sja1000: sja1000_err(): fix {rx,tx}_errors statistics https://git.kernel.org/netdev/net/c/2c4ef3af4b02 - [net,11/15] can: sun4i_can: sun4i_can_err(): fix {rx,tx}_errors statistics https://git.kernel.org/netdev/net/c/595a81988a6f - [net,12/15] can: ems_usb: ems_usb_rx_err(): fix {rx,tx}_errors statistics https://git.kernel.org/netdev/net/c/72a7e2e74b30 - [net,13/15] can: f81604: f81604_handle_can_bus_errors(): fix {rx,tx}_errors statistics https://git.kernel.org/netdev/net/c/d7b916540c2b - [net,14/15] can: mcp251xfd: mcp251xfd_get_tef_len(): work around erratum DS80000789E 6. https://git.kernel.org/netdev/net/c/30447a1bc0e0 - [net,15/15] can: j1939: j1939_session_new(): fix skb reference counting https://git.kernel.org/netdev/net/c/a8c695005bfe
You are awesome, thank you!
linux-stable-mirror@lists.linaro.org