Commit | Line | Data |
---|---|---|
e4d6b795 MB |
1 | #ifndef B43_LEDS_H_ |
2 | #define B43_LEDS_H_ | |
3 | ||
e6693eab | 4 | struct b43_wl; |
21954c36 MB |
5 | struct b43_wldev; |
6 | ||
7 | #ifdef CONFIG_B43_LEDS | |
8 | ||
e4d6b795 | 9 | #include <linux/types.h> |
21954c36 | 10 | #include <linux/leds.h> |
a78b3bb2 | 11 | #include <linux/workqueue.h> |
21954c36 MB |
12 | |
13 | ||
14 | #define B43_LED_MAX_NAME_LEN 31 | |
e4d6b795 MB |
15 | |
16 | struct b43_led { | |
a78b3bb2 | 17 | struct b43_wl *wl; |
21954c36 MB |
18 | /* The LED class device */ |
19 | struct led_classdev led_dev; | |
20 | /* The index number of the LED. */ | |
21 | u8 index; | |
22 | /* If activelow is true, the LED is ON if the | |
23 | * bit is switched off. */ | |
24 | bool activelow; | |
25 | /* The unique name string for this LED device. */ | |
26 | char name[B43_LED_MAX_NAME_LEN + 1]; | |
a78b3bb2 MB |
27 | /* The current status of the LED. This is updated locklessly. */ |
28 | atomic_t state; | |
29 | /* The active state in hardware. */ | |
30 | bool hw_state; | |
e4d6b795 | 31 | }; |
e4d6b795 | 32 | |
a78b3bb2 MB |
33 | struct b43_leds { |
34 | struct b43_led led_tx; | |
35 | struct b43_led led_rx; | |
36 | struct b43_led led_radio; | |
37 | struct b43_led led_assoc; | |
38 | ||
e899a3f2 | 39 | bool stop; |
a78b3bb2 MB |
40 | struct work_struct work; |
41 | }; | |
42 | ||
43 | #define B43_MAX_NR_LEDS 4 | |
44 | ||
e4d6b795 MB |
45 | #define B43_LED_BEHAVIOUR 0x7F |
46 | #define B43_LED_ACTIVELOW 0x80 | |
21954c36 MB |
47 | /* LED behaviour values */ |
48 | enum b43_led_behaviour { | |
e4d6b795 MB |
49 | B43_LED_OFF, |
50 | B43_LED_ON, | |
51 | B43_LED_ACTIVITY, | |
52 | B43_LED_RADIO_ALL, | |
53 | B43_LED_RADIO_A, | |
54 | B43_LED_RADIO_B, | |
55 | B43_LED_MODE_BG, | |
56 | B43_LED_TRANSFER, | |
57 | B43_LED_APTRANSFER, | |
58 | B43_LED_WEIRD, //FIXME | |
59 | B43_LED_ASSOC, | |
60 | B43_LED_INACTIVE, | |
e4d6b795 MB |
61 | }; |
62 | ||
a78b3bb2 | 63 | void b43_leds_register(struct b43_wldev *dev); |
727c9885 | 64 | void b43_leds_unregister(struct b43_wl *wl); |
21954c36 | 65 | void b43_leds_init(struct b43_wldev *dev); |
e4d6b795 | 66 | void b43_leds_exit(struct b43_wldev *dev); |
82905ace | 67 | void b43_leds_stop(struct b43_wldev *dev); |
21954c36 MB |
68 | |
69 | ||
70 | #else /* CONFIG_B43_LEDS */ | |
71 | /* LED support disabled */ | |
72 | ||
a78b3bb2 | 73 | struct b43_leds { |
21954c36 MB |
74 | /* empty */ |
75 | }; | |
76 | ||
a78b3bb2 MB |
77 | static inline void b43_leds_register(struct b43_wldev *dev) |
78 | { | |
79 | } | |
727c9885 | 80 | static inline void b43_leds_unregister(struct b43_wl *wl) |
a78b3bb2 MB |
81 | { |
82 | } | |
21954c36 MB |
83 | static inline void b43_leds_init(struct b43_wldev *dev) |
84 | { | |
85 | } | |
86 | static inline void b43_leds_exit(struct b43_wldev *dev) | |
87 | { | |
88 | } | |
82905ace AH |
89 | static inline void b43_leds_stop(struct b43_wldev *dev) |
90 | { | |
91 | } | |
21954c36 | 92 | #endif /* CONFIG_B43_LEDS */ |
e4d6b795 MB |
93 | |
94 | #endif /* B43_LEDS_H_ */ |