Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / drivers / staging / bcm / led_control.h
1 #ifndef _LED_CONTROL_H
2 #define _LED_CONTROL_H
3
4 /*************************TYPE DEF**********************/
5 #define NUM_OF_LEDS 4
6
7 #define DSD_START_OFFSET                     0x0200
8 #define EEPROM_VERSION_OFFSET                    0x020E
9 #define EEPROM_HW_PARAM_POINTER_ADDRESS          0x0218
10 #define EEPROM_HW_PARAM_POINTER_ADDRRES_MAP5 0x0220
11 #define GPIO_SECTION_START_OFFSET                0x03
12
13 #define COMPATIBILITY_SECTION_LENGTH         42
14 #define COMPATIBILITY_SECTION_LENGTH_MAP5    84
15
16
17 #define EEPROM_MAP5_MAJORVERSION             5
18 #define EEPROM_MAP5_MINORVERSION             0
19
20
21 #define MAX_NUM_OF_BLINKS                                       10
22 #define NUM_OF_GPIO_PINS                                        16
23
24 #define DISABLE_GPIO_NUM                                        0xFF
25 #define EVENT_SIGNALED                                          1
26
27 #define MAX_FILE_NAME_BUFFER_SIZE                       100
28
29 #define TURN_ON_LED(GPIO, index) do{ \
30                                                         UINT gpio_val = GPIO; \
31                                                         (Adapter->LEDInfo.LEDState[index].BitPolarity == 1) ? \
32                                                         wrmaltWithLock(Adapter,BCM_GPIO_OUTPUT_SET_REG, &gpio_val ,sizeof(gpio_val)) : \
33                                                         wrmaltWithLock(Adapter,BCM_GPIO_OUTPUT_CLR_REG, &gpio_val, sizeof(gpio_val)); \
34                                                 }while(0);
35
36 #define TURN_OFF_LED(GPIO, index)  do { \
37                                                         UINT gpio_val = GPIO; \
38                                                         (Adapter->LEDInfo.LEDState[index].BitPolarity == 1) ? \
39                                                         wrmaltWithLock(Adapter,BCM_GPIO_OUTPUT_CLR_REG,&gpio_val ,sizeof(gpio_val)) : \
40                                                         wrmaltWithLock(Adapter,BCM_GPIO_OUTPUT_SET_REG,&gpio_val ,sizeof(gpio_val));  \
41                                                 }while(0);
42
43 #define B_ULONG32 unsigned long
44
45 /*******************************************************/
46
47
48 typedef enum _LEDColors{
49         RED_LED = 1,
50         BLUE_LED = 2,
51         YELLOW_LED = 3,
52         GREEN_LED = 4
53 } LEDColors;                            /*Enumerated values of different LED types*/
54
55 typedef enum LedEvents {
56         SHUTDOWN_EXIT = 0x00,
57         DRIVER_INIT = 0x1,
58         FW_DOWNLOAD = 0x2,
59         FW_DOWNLOAD_DONE = 0x4,
60         NO_NETWORK_ENTRY = 0x8,
61         NORMAL_OPERATION = 0x10,
62         LOWPOWER_MODE_ENTER = 0x20,
63         IDLEMODE_CONTINUE = 0x40,
64         IDLEMODE_EXIT = 0x80,
65         LED_THREAD_INACTIVE = 0x100,  //Makes the LED thread Inactivce. It wil be equivallent to putting the thread on hold.
66         LED_THREAD_ACTIVE = 0x200    //Makes the LED Thread Active back.
67 } LedEventInfo_t;                       /*Enumerated values of different driver states*/
68
69 #define DRIVER_HALT 0xff
70
71
72 /*Structure which stores the information of different LED types
73  *  and corresponding LED state information of driver states*/
74 typedef struct LedStateInfo_t
75 {
76         UCHAR LED_Type; /* specify GPIO number - use 0xFF if not used */
77         UCHAR LED_On_State; /* Bits set or reset for different states */
78         UCHAR LED_Blink_State; /* Bits set or reset for blinking LEDs for different states */
79         UCHAR GPIO_Num;
80         UCHAR                   BitPolarity;                            /*To represent whether H/W is normal polarity or reverse
81                                                                                           polarity*/
82 }LEDStateInfo, *pLEDStateInfo;
83
84
85 typedef struct _LED_INFO_STRUCT
86 {
87         LEDStateInfo    LEDState[NUM_OF_LEDS];
88         BOOLEAN                 bIdleMode_tx_from_host; /*Variable to notify whether driver came out
89                                                                                         from idlemode due to Host or target*/
90         BOOLEAN                 bIdle_led_off;
91         wait_queue_head_t   notify_led_event;
92         wait_queue_head_t       idleModeSyncEvent;
93         struct task_struct  *led_cntrl_threadid;
94     int                 led_thread_running;
95         BOOLEAN                 bLedInitDone;
96
97 } LED_INFO_STRUCT, *PLED_INFO_STRUCT;
98 //LED Thread state.
99 #define BCM_LED_THREAD_DISABLED                          0 //LED Thread is not running.
100 #define BCM_LED_THREAD_RUNNING_ACTIVELY          1 //LED thread is running.
101 #define BCM_LED_THREAD_RUNNING_INACTIVELY        2 //LED thread has been put on hold
102
103
104
105 #endif
106