Re: [PATCH v6 0/2] Add Loongson CAN-FD controller driver
Huacai Chen <[email protected]> Fri, 24 Jul 2026 17:08:40 +0800
| Newsgroups | dev.linux.lists.loongarch,org.kernel.vger.linux-can |
|---|---|
| Message-ID | <CAAhV-H65TkXw-Vbh_uJ3=EwObzrvMohzVEJR2hi+4Z-3RQ==+Q@mail.gmail.com> |
For the whole series: Reviewed-by: Huacai Chen <[email protected]> On Tue, Jul 21, 2026 at 7:44=E2=80=AFPM Binbin Zhou <[email protected]= > wrote: > > Hi all: > > This patchset adds support for the CAN-FD controller found on Loongson > CPUs. > > Patch 1 introduces the basic CAN-FD controller driver with support > for classic CAN and CAN FD, including bit timing, error handling, > NAPI-based RX, and multiple TX buffers. > > Patch 2 adds optional DMA support for RX path using the Loongson APB > CMC DMA engine, which significantly reduces CPU load under high > receive throughput. > > The driver has been tested on Loongson-2K3000 platforms with various > CAN/CAN FD traffic patterns. > > Finally, I'd like to thank Bingxiong, the original author of this driver, > for his efforts in working on the patch. > > Thanks. > Binbin > > =3D=3D=3D=3D=3D=3D=3D=3D=3D > V6: > - Rebase on linux-can/master; > Patch (1/2): > - Drop CAN_CTRLMODE_3_SAMPLES ctrlmode; > - Replace kfree_skb() with dev_kfree_skb_any(); > - Drop REG_CMD_ERCRST operation; > - Rewrite `loongson_canfd_tx_interrupt()` to prevent duplicate handling > of TX completion'; > Patch (2/2): > - Added a fallback to true when dmaengine_tx_status() returns an error; > - Replaced all direct regmap_read() from LOONGSON_CANFD_RX_DATA with > the priv->get_rx_data() callback; > - Release the DMA channel and clear priv->rx_ch on dma_alloc_coherent() > failure; > > Link to V5: > https://lore.kernel.org/all/[email protected]/ > > V5: > Patch (1/2): > - Fix tseg1_max const value; > - Empty FIFO when SKB allocate failed. > - Use REG_FRAME_META1_RWCNT as the playload read count value; > - Only clean processed interrupt flags in > loongson_canfd_err_interrupt(); > - Refact loongson_canfd_tx_interrupt(); > - Add LOONGSON_CANFD_TRV_DLY into loongson_canfd_volatile_reg(); > Patch (2/2): > - Fix dma_request_chan() error path; > - Fix build error; > - Fix loongson_canfd_rxdma_init() error path; > > Link to V4: > https://lore.kernel.org/all/[email protected]/ > > V4: > - Fix some issues from sashiko. > Patch (1/2): > - Update commit message; > - Use common APIs to calculate DLC; > - Correct CAN_RTR_FLAG judgement; > - Add skb check for CAN_STATE_ERROR_ACTIVE case; > - Use regmap_write() rather than regmap_update_bits() to > disable all interrupts; > - Add napi_disable() in error paths; > - Add `clock-frequency` return value check; > - More comments for macros. > > Link to V3: > https://lore.kernel.org/all/[email protected]/ > > V3: > Patch (1/2): > - Replace the switch-case statement with a calculated mask in > `loongson_canfd_get_txbuf_sts()`; > - Change `loongson_canfd_reset()` return type to `void`; > - Drop old code in `loongson_canfd_set_btr()`; > - Rename `loongson_canfd_set_mode()` to `loongson_canfd_set_conf_mode()`= ; > - Drop `cf->__res*` usage; > - Drop unnecessary macro definitions; > - Add `netif_napi_del()` in probe error route path; > - Replace ternary operator with `if-else`; > - Drop stats->rx_packets and stats->rx_bytes count in CAN error frames; > - Add ethtool_ops; > - Add CAN_CTRLMODE_CC_LEN8_DLC; > > Patch (2/2): > - Fix W=3D2 warning; > - Rename get_rx_frc() -> get_rxbuf_empty(); > - Put `loongson_canfd_rxdma_remove()` before free_candev(); > - Adjust the RXDMA probe process. > > Link to V2: > https://lore.kernel.org/all/[email protected]/ > > V2: > Patch (1/2): > - Put all code into one file; > - Add COMPILE_TEST Kconfig option; > - Rewrite Kconfig description; > - Use `regmap_test_bits()` to simplify bit field checks; > - Drop odd FIELD_GET() usage; > - Don't use FIELD_GET() for a single bit; > - Use an if/else instead of the ternary operator; > - Use the CAN TDC framework to get the SSP value; > - Use guard(spinlock)/scoped_guard(spinlock); > - Use netdev_debug() to be less verboss; > - Check for memory allocation failure; > - Add CAN_ERR_CNT flag; > - Drop unused REG_DATA_xx_yy_W_DATA_yy definition; > - Add more function comment; > > Link to V1: > https://lore.kernel.org/all/[email protected]/ > > Binbin Zhou (2): > can: Add Loongson CAN-FD controller driver > can: loongson_canfd: Add RXDMA support > > MAINTAINERS | 7 + > drivers/net/can/Kconfig | 11 + > drivers/net/can/Makefile | 1 + > drivers/net/can/loongson_canfd.c | 1877 ++++++++++++++++++++++++++++++ > 4 files changed, 1896 insertions(+) > create mode 100644 drivers/net/can/loongson_canfd.c > > > base-commit: 1cb8553c02e93e5a150cebd42f9ee3db0ece4707 > -- > 2.52.0 >