diff mbox series

[net,01/15] can: dev: can_set_termination(): allow sleeping GPIOs

Message ID 20241202090040.1110280-2-mkl@pengutronix.de (mailing list archive)
State Accepted
Commit ee1dfbdd8b4b6de85e96ae2059dc9c1bdb6b49b5
Delegated to: Netdev Maintainers
Headers show
Series [net,01/15] can: dev: can_set_termination(): allow sleeping GPIOs | expand

Checks

Context Check Description
netdev/series_format success Pull request is its own cover letter
netdev/tree_selection success Clearly marked for net
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag present in non-next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 3 this patch: 3
netdev/build_tools success No tools touched, skip
netdev/cc_maintainers fail 1 blamed authors not CCed: o.rempel@pengutronix.de; 4 maintainers not CCed: shannon.nelson@amd.com mailhol.vincent@wanadoo.fr o.rempel@pengutronix.de gal@nvidia.com
netdev/build_clang success Errors and warnings before: 3 this patch: 3
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 304 this patch: 304
netdev/checkpatch warning WARNING: use relative pathname instead of absolute in changelog text | WARNING: CPU: 0 PID: 379 at /drivers/gpio/gpiolib.c:3496 gpiod_set_value+0x50/0x6c
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/contest success net-next-2024-12-02--15-00 (tests: 760)

Commit Message

Marc Kleine-Budde Dec. 2, 2024, 8:55 a.m. UTC
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-41fa6e29216d@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
 drivers/net/can/dev/dev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


base-commit: 9bb88c659673003453fd42e0ddf95c9628409094

Comments

patchwork-bot+netdevbpf@kernel.org Dec. 3, 2024, 2:10 a.m. UTC | #1
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!
diff mbox series

Patch

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;
 }