aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/can
diff options
context:
space:
mode:
authorFabio Baltieri <fabio.baltieri@gmail.com>2012-12-18 12:51:01 -0500
committerMarc Kleine-Budde <mkl@pengutronix.de>2013-01-26 10:59:00 -0500
commit5090f805600ff7dccca358f9986a92dd34185326 (patch)
tree357ba36b7b0c9db1cd67f5d278b5cc7656ff44ca /drivers/net/can
parentd7ff5aae6ce3670afc1e000c08ea238712d70fae (diff)
can: c_can: add LED trigger support
Add support for canbus activity led indicators on c_can devices by calling appropriate can_led functions. These are only enabled when CONFIG_CAN_LEDS is Y, becomes no-op otherwise. Cc: Bhupesh Sharma <bhupesh.sharma@st.com> Cc: AnilKumar Ch <anilkumar@ti.com> Cc: Wolfgang Grandegger <wg@grandegger.com> Cc: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net/can')
-rw-r--r--drivers/net/can/c_can/c_can.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/can/c_can/c_can.c b/drivers/net/can/c_can/c_can.c
index 5233b8f58d77..57eb1e77865d 100644
--- a/drivers/net/can/c_can/c_can.c
+++ b/drivers/net/can/c_can/c_can.c
@@ -39,6 +39,7 @@
39#include <linux/can.h> 39#include <linux/can.h>
40#include <linux/can/dev.h> 40#include <linux/can/dev.h>
41#include <linux/can/error.h> 41#include <linux/can/error.h>
42#include <linux/can/led.h>
42 43
43#include "c_can.h" 44#include "c_can.h"
44 45
@@ -477,6 +478,8 @@ static int c_can_read_msg_object(struct net_device *dev, int iface, int ctrl)
477 stats->rx_packets++; 478 stats->rx_packets++;
478 stats->rx_bytes += frame->can_dlc; 479 stats->rx_bytes += frame->can_dlc;
479 480
481 can_led_event(dev, CAN_LED_EVENT_RX);
482
480 return 0; 483 return 0;
481} 484}
482 485
@@ -751,6 +754,7 @@ static void c_can_do_tx(struct net_device *dev)
751 C_CAN_IFACE(MSGCTRL_REG, 0)) 754 C_CAN_IFACE(MSGCTRL_REG, 0))
752 & IF_MCONT_DLC_MASK; 755 & IF_MCONT_DLC_MASK;
753 stats->tx_packets++; 756 stats->tx_packets++;
757 can_led_event(dev, CAN_LED_EVENT_TX);
754 c_can_inval_msg_object(dev, 0, msg_obj_no); 758 c_can_inval_msg_object(dev, 0, msg_obj_no);
755 } else { 759 } else {
756 break; 760 break;
@@ -1115,6 +1119,8 @@ static int c_can_open(struct net_device *dev)
1115 1119
1116 napi_enable(&priv->napi); 1120 napi_enable(&priv->napi);
1117 1121
1122 can_led_event(dev, CAN_LED_EVENT_OPEN);
1123
1118 /* start the c_can controller */ 1124 /* start the c_can controller */
1119 c_can_start(dev); 1125 c_can_start(dev);
1120 1126
@@ -1143,6 +1149,8 @@ static int c_can_close(struct net_device *dev)
1143 c_can_reset_ram(priv, false); 1149 c_can_reset_ram(priv, false);
1144 c_can_pm_runtime_put_sync(priv); 1150 c_can_pm_runtime_put_sync(priv);
1145 1151
1152 can_led_event(dev, CAN_LED_EVENT_STOP);
1153
1146 return 0; 1154 return 0;
1147} 1155}
1148 1156
@@ -1268,6 +1276,8 @@ int register_c_can_dev(struct net_device *dev)
1268 err = register_candev(dev); 1276 err = register_candev(dev);
1269 if (err) 1277 if (err)
1270 c_can_pm_runtime_disable(priv); 1278 c_can_pm_runtime_disable(priv);
1279 else
1280 devm_can_led_init(dev);
1271 1281
1272 return err; 1282 return err;
1273} 1283}