mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] can: dev: can_set_termination(): Allow gpio sleep
@ 2024-11-21 15:02 Nicolai Buchwitz
  2024-11-21 15:12 ` Marc Kleine-Budde
  0 siblings, 1 reply; 5+ messages in thread
From: Nicolai Buchwitz @ 2024-11-21 15:02 UTC (permalink / raw)
  To: Marc Kleine-Budde, Vincent Mailhol, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni
  Cc: n.buchwitz, l.sanfilippo, p.rosenberger, stable,
	Nicolai Buchwitz, linux-can, netdev, linux-kernel

The current implementation of can_set_termination() sets the GPIO in a
context which cannot sleep. This is an issue if the GPIO controller can
sleep (e.g. since the concerning GPIO expander is connected via SPI or
I2C). Thus, if the termination resistor is set (eg. with ip link),
a warning splat will be issued in the kernel log.

Fix this by setting the termination resistor with
gpiod_set_value_cansleep() which instead of gpiod_set_value() allows it to
sleep.

Cc: stable@vger.kernel.org
Signed-off-by: Nicolai Buchwitz <nb@tipi-net.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;
 }
-- 
2.39.5


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-11-21 15:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-21 15:02 [PATCH] can: dev: can_set_termination(): Allow gpio sleep Nicolai Buchwitz
2024-11-21 15:12 ` Marc Kleine-Budde
2024-11-21 15:17   ` Lino Sanfilippo
2024-11-21 15:25     ` Marc Kleine-Budde
2024-11-21 15:30       ` Lino Sanfilippo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®