| From 4f7116757b4bd99e4ef2636c7d957a6d63035d11 Mon Sep 17 00:00:00 2001 |
| From: Marek Vasut <marex@denx.de> |
| Date: Fri, 10 Nov 2017 11:22:39 +0100 |
| Subject: can: ifi: Fix transmitter delay calculation |
| |
| From: Marek Vasut <marex@denx.de> |
| |
| commit 4f7116757b4bd99e4ef2636c7d957a6d63035d11 upstream. |
| |
| The CANFD transmitter delay calculation formula was updated in the |
| latest software drop from IFI and improves the behavior of the IFI |
| CANFD core during bitrate switching. Use the new formula to improve |
| stability of the CANFD operation. |
| |
| Signed-off-by: Marek Vasut <marex@denx.de> |
| Cc: Markus Marb <markus@marb.org> |
| Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/can/ifi_canfd/ifi_canfd.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/net/can/ifi_canfd/ifi_canfd.c |
| +++ b/drivers/net/can/ifi_canfd/ifi_canfd.c |
| @@ -670,9 +670,9 @@ static void ifi_canfd_set_bittiming(stru |
| priv->base + IFI_CANFD_FTIME); |
| |
| /* Configure transmitter delay */ |
| - tdc = (dbt->brp * (dbt->phase_seg1 + 1)) & IFI_CANFD_TDELAY_MASK; |
| - writel(IFI_CANFD_TDELAY_EN | IFI_CANFD_TDELAY_ABS | tdc, |
| - priv->base + IFI_CANFD_TDELAY); |
| + tdc = dbt->brp * (dbt->prop_seg + dbt->phase_seg1); |
| + tdc &= IFI_CANFD_TDELAY_MASK; |
| + writel(IFI_CANFD_TDELAY_EN | tdc, priv->base + IFI_CANFD_TDELAY); |
| } |
| |
| static void ifi_canfd_set_filter(struct net_device *ndev, const u32 id, |