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@kvaser.com/T...
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(-)