On 08/01/2012 01:49 PM, Fabio Baltieri wrote: > Add support for canbus activity led indicators on flexcan devices by > calling appropriate can_led_* functions. > > These are only enabled when CONFIG_CAN_LEDS is Y, becomes no-op > otherwise. > > Cc: Oliver Hartkopp <socket...@hartkopp.net> > Cc: Wolfgang Grandegger <w...@grandegger.com> > Cc: Marc Kleine-Budde <m...@pengutronix.de> > Signed-off-by: Fabio Baltieri <fabio.balti...@gmail.com> > --- > drivers/net/can/flexcan.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c > index c5f1431..6467fc1 100644 > --- a/drivers/net/can/flexcan.c > +++ b/drivers/net/can/flexcan.c > @@ -23,6 +23,7 @@ > #include <linux/can.h> > #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> > @@ -547,6 +548,8 @@ static int flexcan_read_frame(struct net_device *dev) > stats->rx_packets++; > stats->rx_bytes += cf->can_dlc; > > + can_led_event(dev, CAN_LED_EVENT_RX); > + > return 1; > } > > @@ -635,6 +638,7 @@ static irqreturn_t flexcan_irq(int irq, void *dev_id) > if (reg_iflag1 & (1 << FLEXCAN_TX_BUF_ID)) { > stats->tx_bytes += can_get_echo_skb(dev, 0); > stats->tx_packets++; > + can_led_event(dev, CAN_LED_EVENT_TX);
Should the led blink on TX or TX completion interrupt? > flexcan_write((1 << FLEXCAN_TX_BUF_ID), ®s->iflag1); > netif_wake_queue(dev); > } > @@ -844,6 +848,9 @@ static int flexcan_open(struct net_device *dev) > err = flexcan_chip_start(dev); > if (err) > goto out_close; > + > + can_led_event(dev, CAN_LED_EVENT_OPEN); > + > napi_enable(&priv->napi); > netif_start_queue(dev); > > @@ -872,6 +879,8 @@ static int flexcan_close(struct net_device *dev) > > close_candev(dev); > > + can_led_event(dev, CAN_LED_EVENT_STOP); > + > return 0; > } > > @@ -1068,6 +1077,8 @@ static int __devinit flexcan_probe(struct > platform_device *pdev) > goto failed_register; > } > > + devm_can_led_init(dev); > + > dev_info(&pdev->dev, "device registered (reg_base=%p, irq=%d)\n", > priv->base, dev->irq); > > Marc -- Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
signature.asc
Description: OpenPGP digital signature