From: Dong Aisheng <aisheng.d...@nxp.com> This patch intends to add CAN FD BitRate Switch(BRS) support in driver.
Signed-off-by: Joakim Zhang <qiangqing.zh...@nxp.com> Signed-off-by: Dong Aisheng <aisheng.d...@nxp.com> ChangeLog: ---------- V2->V3: *split from another patch --- drivers/net/can/flexcan.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c index c45c92948195..ca7240d69042 100644 --- a/drivers/net/can/flexcan.c +++ b/drivers/net/can/flexcan.c @@ -687,8 +687,12 @@ static netdev_tx_t flexcan_start_xmit(struct sk_buff *skb, struct net_device *de ctrl |= FLEXCAN_MB_CNT_RTR; if (priv->can.ctrlmode & CAN_CTRLMODE_FD) { - if (can_is_canfd_skb(skb)) + if (can_is_canfd_skb(skb)) { ctrl |= FLEXCAN_MB_CNT_EDL; + + if (cf->flags & CANFD_BRS) + ctrl |= FLEXCAN_MB_CNT_BRS; + } } for (i = 0; i < cf->len; i += sizeof(u32)) { @@ -909,6 +913,9 @@ static unsigned int flexcan_mailbox_read(struct can_rx_offload *offload, bool dr if (reg_ctrl & FLEXCAN_MB_CNT_EDL) { cf->len = can_dlc2len((reg_ctrl >> 16) & 0x0F); + + if (reg_ctrl & FLEXCAN_MB_CNT_BRS) + cf->flags |= CANFD_BRS; } else { cf->len = get_can_dlc((reg_ctrl >> 16) & 0x0F); -- 2.17.1