瀏覽代碼

can: ifi: Fix transmitter delay calculation

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>
Cc: linux-stable <stable@vger.kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Marek Vasut 7 年之前
父節點
當前提交
4f7116757b
共有 1 個文件被更改,包括 3 次插入3 次删除
  1. 3 3
      drivers/net/can/ifi_canfd/ifi_canfd.c

+ 3 - 3
drivers/net/can/ifi_canfd/ifi_canfd.c

@@ -670,9 +670,9 @@ static void ifi_canfd_set_bittiming(struct net_device *ndev)
 	       priv->base + IFI_CANFD_FTIME);
 	       priv->base + IFI_CANFD_FTIME);
 
 
 	/* Configure transmitter delay */
 	/* 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,
 static void ifi_canfd_set_filter(struct net_device *ndev, const u32 id,