summaryrefslogtreecommitdiff
path: root/drivers/net/can
diff options
context:
space:
mode:
authorDong Aisheng <b29396@freescale.com>2014-09-10 16:55:17 +0800
committerLeonard Crestez <leonard.crestez@nxp.com>2018-08-24 12:20:42 +0300
commit97ed6e2c9ccbd344833a5f34555369dc5b47b2e9 (patch)
treebf9bccfff74bc32e8c69c2cbacf9c3cd7b76e4c9 /drivers/net/can
parent5042a06f45c270e4b2aae0ab3f693073a67fd344 (diff)
MLK-10131 ENGR00286724-4 can: flexcan: add platform_data for transceiver_switch
It's used for transceiver_switch. NOTE: it's newly added since it's deleted by upstream before. However, the driver is still using it, so have to add it. Signed-off-by: Dong Aisheng <b29396@freescale.com> (cherry picked from commit 53109634188e672b807a7256afbf10db0d9a6574)
Diffstat (limited to 'drivers/net/can')
-rw-r--r--drivers/net/can/flexcan.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 47f43bdecd51..7836cf670395 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -24,6 +24,7 @@
#include <linux/can/dev.h>
#include <linux/can/error.h>
#include <linux/can/led.h>
+#include <linux/can/platform/flexcan.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
@@ -317,6 +318,11 @@ static inline void flexcan_write(u32 val, void __iomem *addr)
static inline int flexcan_transceiver_enable(const struct flexcan_priv *priv)
{
+ if (priv->pdata && priv->pdata->transceiver_switch) {
+ priv->pdata->transceiver_switch(1);
+ return 0;
+ }
+
if (!priv->reg_xceiver)
return 0;
@@ -325,6 +331,11 @@ static inline int flexcan_transceiver_enable(const struct flexcan_priv *priv)
static inline int flexcan_transceiver_disable(const struct flexcan_priv *priv)
{
+ if (priv->pdata && priv->pdata->transceiver_switch) {
+ priv->pdata->transceiver_switch(0);
+ return 0;
+ }
+
if (!priv->reg_xceiver)
return 0;