layerscape: add patches-5.4
[openwrt/staging/wigyori.git] / target / linux / layerscape / patches-5.4 / 802-can-0023-can-flexcan-add-imx8qm-support.patch
diff --git a/target/linux/layerscape/patches-5.4/802-can-0023-can-flexcan-add-imx8qm-support.patch b/target/linux/layerscape/patches-5.4/802-can-0023-can-flexcan-add-imx8qm-support.patch
new file mode 100644 (file)
index 0000000..5690263
--- /dev/null
@@ -0,0 +1,62 @@
+From 7ff112c7b144fb084f28f944d7021cd04acabecd Mon Sep 17 00:00:00 2001
+From: Joakim Zhang <qiangqing.zhang@nxp.com>
+Date: Fri, 12 Jul 2019 08:02:59 +0000
+Subject: [PATCH] can: flexcan: add imx8qm support
+
+The Flexcan on i.MX8QM supports CAN FD protocol.
+
+Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+---
+ drivers/net/can/flexcan.c | 26 +++++++++++++++++---------
+ 1 file changed, 17 insertions(+), 9 deletions(-)
+
+--- a/drivers/net/can/flexcan.c
++++ b/drivers/net/can/flexcan.c
+@@ -200,15 +200,16 @@
+ /* FLEXCAN hardware feature flags
+  *
+  * Below is some version info we got:
+- *    SOC   Version   IP-Version  Glitch- [TR]WRN_INT IRQ Err Memory err RTR re-
+- *                                Filter? connected?  Passive detection  ception in MB
+- *   MX25  FlexCAN2  03.00.00.00     no        no        no       no        no
+- *   MX28  FlexCAN2  03.00.04.00    yes       yes        no       no        no
+- *   MX35  FlexCAN2  03.00.00.00     no        no        no       no        no
+- *   MX53  FlexCAN2  03.00.00.00    yes        no        no       no        no
+- *   MX6s  FlexCAN3  10.00.12.00    yes       yes        no       no       yes
+- *   VF610 FlexCAN3  ?               no       yes        no      yes       yes?
+- * LS1021A FlexCAN2  03.00.04.00     no       yes        no       no       yes
++ *    SOC   Version   IP-Version  Glitch- [TR]WRN_INT IRQ Err Memory err RTR rece-   FD Mode
++ *                                Filter? connected?  Passive detection  ption in MB Supported?
++ *   MX25  FlexCAN2  03.00.00.00     no        no        no       no        no           no
++ *   MX28  FlexCAN2  03.00.04.00    yes       yes        no       no        no           no
++ *   MX35  FlexCAN2  03.00.00.00     no        no        no       no        no           no
++ *   MX53  FlexCAN2  03.00.00.00    yes        no        no       no        no           no
++ *   MX6s  FlexCAN3  10.00.12.00    yes       yes        no       no       yes           no
++ *  MX8QM  FlexCAN3  03.00.23.00    yes       yes        no       no       yes          yes
++ *   VF610 FlexCAN3  ?               no       yes        no      yes       yes?          no
++ * LS1021A FlexCAN2  03.00.04.00     no       yes        no       no       yes           no
+  *
+  * Some SOCs do not have the RX_WARN & TX_WARN interrupt line connected.
+  */
+@@ -347,6 +348,12 @@ static const struct flexcan_devtype_data
+               FLEXCAN_QUIRK_SETUP_STOP_MODE,
+ };
++static struct flexcan_devtype_data fsl_imx8qm_devtype_data = {
++      .quirks = FLEXCAN_QUIRK_DISABLE_RXFG | FLEXCAN_QUIRK_ENABLE_EACEN_RRS |
++              FLEXCAN_QUIRK_USE_OFF_TIMESTAMP | FLEXCAN_QUIRK_BROKEN_PERR_STATE |
++              FLEXCAN_QUIRK_TIMESTAMP_SUPPORT_FD,
++};
++
+ static const struct flexcan_devtype_data fsl_vf610_devtype_data = {
+       .quirks = FLEXCAN_QUIRK_DISABLE_RXFG | FLEXCAN_QUIRK_ENABLE_EACEN_RRS |
+               FLEXCAN_QUIRK_DISABLE_MECR | FLEXCAN_QUIRK_USE_OFF_TIMESTAMP |
+@@ -1738,6 +1745,7 @@ out_put_node:
+ }
+ static const struct of_device_id flexcan_of_match[] = {
++      { .compatible = "fsl,imx8qm-flexcan", .data = &fsl_imx8qm_devtype_data, },
+       { .compatible = "fsl,imx6q-flexcan", .data = &fsl_imx6q_devtype_data, },
+       { .compatible = "fsl,imx28-flexcan", .data = &fsl_imx28_devtype_data, },
+       { .compatible = "fsl,imx53-flexcan", .data = &fsl_imx25_devtype_data, },