[PATCH v3 00/15] can: grcan: Enhance driver with CANFD Support and Improvemens

Arun Muthusamy
2026-01-22T12:10:51Z

This patch series updates the GRCAN driver to support the GRCANFD core
from the GRLIB IP core library.

In addition to GRCANFD support, the updates include enhancements for
compatibility with NOEL-V (RISC-V) systems, such as matching drivers
using the 'compatible' identifier and adding support for reading clock
frequency via the common clock framework where available. The series
also includes improvements like functions for configuring
nominal bit-timing and optimizations for DMA operations.

This series also updates the driver documentation and bindings.
The old text binding is converted to YAML, a new vendor prefix
is added to reflect the updated ownership and an entry for the
driver is added to the MAINTAINERS file.

Arun Muthusamy (9):
net: can: Convert gaisler,grcan to DT schema
MAINTAINERS: Add maintainers for GRCAN CAN network driver
can: grcan: Replace bit timing macros with literal values
can: grcan: Simplify timing configuration
can: grcan: add FD capability detection and nominal bit-timing
can: grcan: Advertise CANFD capability
can: grcan: Add CANFD TX support alongside legacy CAN
can: grcan: Add CANFD RX support alongside legacy CAN
can: grcan: Update echo skb handling to match variable length CANFD
frame

Daniel Hellstrom (5):
can: grcan: Add clock handling
can: grcan: optimize DMA by 32-bit accesses
can: grcan: set DMA mask for GRCAN and GRCANFD to 32-bit
can: grcan: Add saving and restoring of CAN FD baud-rate registers
can: grcan: Reserve space between cap and next register to align with
address layout

Ludwig Rydberg (1):
dt-bindings: Add vendor prefix for Frontgrade Gaisler AB

Changes in v3:
- can: Replaced custom bit shifting with FIELD_PREP and GENMASK.
- can: Factorized common elements of struct canfd_frame and
struct can_frame, excluding DLC assignment.
- can: Split the patch to separate code refactoring from the
introduction of the new feature.
- can: Remove Unused macros
- Link to v2: https://lore.kernel.org/all/20251223105604.12675-1-arun.muthusamy@gaisler.com/

Changes in v2:
- bindings: Updated commit message to explain the removal of freq
and systemid in the new binding.
- can: S-o-b is placed last in commit messages.
- can: Add values are directly added to the struct can_bittiming_const.
- can: Replaced custom bit shifting with FIELD_PREP and GENMASK for clarity.
- can: Drop do_set_bittiming() callback
- can: Remove forward declarations, unnecessary parentheses, redundant comments
and unnecessary debug printouts.
- can: Refactored variable declarations to follow the reverse-xmas-tree style.
- can: Adjust line breaks according to new character limits
- can: Eliminating unnecessary defines
- can: Enhance code efficiency with memcpy, use standard API to fetch device specific data and
error handling.
- Link to v1: https://lore.kernel.org/all/20251118092115.3455-1-arun.muthusamy@gaisler.com/

.../bindings/net/can/gaisler,grcan.yaml | 62 +++
.../devicetree/bindings/net/can/grcan.txt | 28 -
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
MAINTAINERS | 8 +
drivers/net/can/Kconfig | 6 +-
drivers/net/can/grcan.c | 507 +++++++++++++-----
6 files changed, 439 insertions(+), 174 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/can/gaisler,grcan.yaml
delete mode 100644 Documentation/devicetree/bindings/net/can/grcan.txt

base-commit: 4001bda0cc911fcdd3dde36963a17f4eac173d7d
--
2.51.0