1996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri/*
2996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri * Copyright 2012, Fabio Baltieri <fabio.baltieri@gmail.com>
3996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri *
4996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri * This program is free software; you can redistribute it and/or modify
5996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri * it under the terms of the GNU General Public License version 2 as
6996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri * published by the Free Software Foundation.
7996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri */
8996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri
942193e3efb632c84d686acacd7b2327f2b1f8c63Oliver Hartkopp#ifndef _CAN_LED_H
1042193e3efb632c84d686acacd7b2327f2b1f8c63Oliver Hartkopp#define _CAN_LED_H
11996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri
12996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri#include <linux/if.h>
13996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri#include <linux/leds.h>
14996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri
15996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltierienum can_led_event {
16996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri	CAN_LED_EVENT_OPEN,
17996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri	CAN_LED_EVENT_STOP,
18996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri	CAN_LED_EVENT_TX,
19996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri	CAN_LED_EVENT_RX,
20996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri};
21996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri
22996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri#ifdef CONFIG_CAN_LEDS
23996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri
24996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri/* keep space for interface name + "-tx"/"-rx" suffix and null terminator */
25996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri#define CAN_LED_NAME_SZ (IFNAMSIZ + 4)
26996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri
27996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltierivoid can_led_event(struct net_device *netdev, enum can_led_event event);
28996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltierivoid devm_can_led_init(struct net_device *netdev);
29a1ef7bd9fce8aba8e4701e60208148fb3bc9bdd4Kurt Van Dijckint __init can_led_notifier_init(void);
30a1ef7bd9fce8aba8e4701e60208148fb3bc9bdd4Kurt Van Dijckvoid __exit can_led_notifier_exit(void);
31996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri
32996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri#else
33996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri
34996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieristatic inline void can_led_event(struct net_device *netdev,
35996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri				 enum can_led_event event)
36996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri{
37996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri}
38996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieristatic inline void devm_can_led_init(struct net_device *netdev)
39996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri{
40996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri}
41a1ef7bd9fce8aba8e4701e60208148fb3bc9bdd4Kurt Van Dijckstatic inline int can_led_notifier_init(void)
42a1ef7bd9fce8aba8e4701e60208148fb3bc9bdd4Kurt Van Dijck{
43a1ef7bd9fce8aba8e4701e60208148fb3bc9bdd4Kurt Van Dijck	return 0;
44a1ef7bd9fce8aba8e4701e60208148fb3bc9bdd4Kurt Van Dijck}
45a1ef7bd9fce8aba8e4701e60208148fb3bc9bdd4Kurt Van Dijckstatic inline void can_led_notifier_exit(void)
46a1ef7bd9fce8aba8e4701e60208148fb3bc9bdd4Kurt Van Dijck{
47a1ef7bd9fce8aba8e4701e60208148fb3bc9bdd4Kurt Van Dijck}
48996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri
49996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri#endif
50996a953de02ffb852c9ac736f4e892008ed68884Fabio Baltieri
5142193e3efb632c84d686acacd7b2327f2b1f8c63Oliver Hartkopp#endif /* !_CAN_LED_H */
52