When fixing the CAN clock frequency, fb12797ab1fe ("can: kvaser_usb: get CAN clock frequency from device"), I introduced a regression. For Leaf devices based on M32C, the firmware expects bittiming parameters calculated for 16MHz clock. Regardless of the actual clock frequency. This regression affects M32C based Leaf devices with non-16MHz clock. Also correct the bittiming constants in kvaser_usb_leaf.c, where the limits are different depending on which firmware/device being used. Once merged to mainline, I'll backport these fixes for the stable kernels. Changes in v2: - Add struct kvaser_usb_driver_info as suggested by Marc Kleine-Budde [1], instead of adding dev->card_data.quirks. [1] https://lore.kernel.org/linux-can/20220602063031.415858-1-extja@xxxxxxxxxx/T/#maf9cd66c368ce43eb509a27c69d0323cfc776809 Jimmy Assarsson (3): can: kvaser_usb: Replace run-time checks with struct kvaser_usb_driver_info can: kvaser_usb: kvaser_usb_leaf: Fix CAN clock frequency regression can: kvaser_usb: kvaser_usb_leaf: Fix bittiming limits drivers/net/can/usb/kvaser_usb/kvaser_usb.h | 73 ++++- .../net/can/usb/kvaser_usb/kvaser_usb_core.c | 253 +++++++++--------- .../net/can/usb/kvaser_usb/kvaser_usb_hydra.c | 14 +- .../net/can/usb/kvaser_usb/kvaser_usb_leaf.c | 119 ++++---- 4 files changed, 255 insertions(+), 204 deletions(-) -- 2.36.1