linux/drivers/net/can/c_can
Lucas Martins Alves 2650484461 can: c_can: c_can_chip_config(): keep controller in init mode until bittiming is configured
c_can_chip_config() was programming C_CAN_CTRL_REG without CONTROL_INIT,
which may allow the controller to become active before
c_can_set_bittiming() finishes.

That creates a short timing window where the peripheral can interact with
the bus using a different/default bitrate, potentially generating bus
errors and corrupting traffic.

Set CONTROL_INIT together with the control-mode writes in
c_can_chip_config() (normal, loopback and listen-only paths), so the
controller stays halted until bit timing is fully programmed.

This prevents transient bus disturbance during startup when the configured
bitrate differs from the active bus bitrate.

Signed-off-by: Lucas Martins Alves <lucas.alves@lumal21.com.br>
Link: https://patch.msgid.link/20260714164839.771123-1-lucas.alves@lumal21.com.br
Fixes: 881ff67ad4 ("can: c_can: Added support for Bosch C_CAN controller")
Cc: stable@kernel.org
[mkl: remove space before close parenthesis]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2026-07-29 12:00:00 +02:00
..
c_can_ethtool.c can: tree-wide: advertise software timestamping capabilities 2022-07-28 11:44:01 +02:00
c_can_main.c can: c_can: c_can_chip_config(): keep controller in init mode until bittiming is configured 2026-07-29 12:00:00 +02:00
c_can_pci.c can: c_can: Remove redundant pci_clear_master 2023-03-24 19:11:20 +01:00
c_can_platform.c can: c_can: Use syscon_regmap_lookup_by_phandle_args 2025-02-19 10:44:21 +01:00
c_can.h can: c_can: don't cache TX messages for C_CAN cores 2022-09-28 10:34:04 +02:00
Kconfig can: remove obsolete PCH CAN driver 2022-10-19 21:33:30 +02:00
Makefile can: c_can: add ethtool support 2021-05-27 09:42:23 +02:00