12345678910111213141516171819202122232425262728293031323334353637383940 |
- From 4c26434ac773e37f30ee5a8fa6f7275fe7dabac2 Mon Sep 17 00:00:00 2001
- From: Joakim Zhang <[email protected]>
- Date: Fri, 12 Jul 2019 08:02:47 +0000
- Subject: [PATCH] can: flexcan: add CAN FD BRS support
- This patch adds CAN FD BitRate Switch (BRS) support to driver.
- Signed-off-by: Joakim Zhang <[email protected]>
- Signed-off-by: Marc Kleine-Budde <[email protected]>
- ---
- drivers/net/can/flexcan.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
- --- a/drivers/net/can/flexcan.c
- +++ b/drivers/net/can/flexcan.c
- @@ -704,9 +704,13 @@ static netdev_tx_t flexcan_start_xmit(st
- if (cfd->can_id & CAN_RTR_FLAG)
- ctrl |= FLEXCAN_MB_CNT_RTR;
-
- - if (can_is_canfd_skb(skb))
- + if (can_is_canfd_skb(skb)) {
- ctrl |= FLEXCAN_MB_CNT_EDL;
-
- + if (cfd->flags & CANFD_BRS)
- + ctrl |= FLEXCAN_MB_CNT_BRS;
- + }
- +
- for (i = 0; i < cfd->len; i += sizeof(u32)) {
- data = be32_to_cpup((__be32 *)&cfd->data[i]);
- priv->write(data, &priv->tx_mb->data[i / sizeof(u32)]);
- @@ -937,6 +941,9 @@ static struct sk_buff *flexcan_mailbox_r
-
- if (reg_ctrl & FLEXCAN_MB_CNT_EDL) {
- cfd->len = can_dlc2len(get_canfd_dlc((reg_ctrl >> 16) & 0xf));
- +
- + if (reg_ctrl & FLEXCAN_MB_CNT_BRS)
- + cfd->flags |= CANFD_BRS;
- } else {
- cfd->len = get_can_dlc((reg_ctrl >> 16) & 0xf);
-
|