xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852bs/phl/phl_led_def.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2019 Realtek Corporation.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify it
6*4882a593Smuzhiyun  * under the terms of version 2 of the GNU General Public License as
7*4882a593Smuzhiyun  * published by the Free Software Foundation.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful, but WITHOUT
10*4882a593Smuzhiyun  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12*4882a593Smuzhiyun  * more details.
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  *****************************************************************************/
15*4882a593Smuzhiyun #ifndef _PHL_LED_DEF_H_
16*4882a593Smuzhiyun #define _PHL_LED_DEF_H_
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #define PHL_RADIO_ON_OFF_NOT_READY
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun enum rtw_led_ctrl_mode {
21*4882a593Smuzhiyun 	RTW_LED_CTRL_NOT_SUPPORT,
22*4882a593Smuzhiyun 	RTW_LED_CTRL_HW_TRX_MODE,
23*4882a593Smuzhiyun 	RTW_LED_CTRL_HW_TX_MODE,
24*4882a593Smuzhiyun 	RTW_LED_CTRL_HW_RX_MODE,
25*4882a593Smuzhiyun 	RTW_LED_CTRL_SW_PP_MODE,
26*4882a593Smuzhiyun 	RTW_LED_CTRL_SW_OD_MODE,
27*4882a593Smuzhiyun };
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun enum rtw_led_id { RTW_LED_ID_0, RTW_LED_ID_1, RTW_LED_ID_LENGTH };
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun #define RTW_LED_TIMER_LENGTH (RTW_LED_ID_LENGTH + 1)
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun /*
34*4882a593Smuzhiyun  * led_event here is not integrated with msg_evt_id due to the following reason:
35*4882a593Smuzhiyun  *
36*4882a593Smuzhiyun  * (a) led_event is used for mapping LED events with LED actions, and
37*4882a593Smuzhiyun  *     the mapping can be configured in core layer according to the
38*4882a593Smuzhiyun  *     customized LED table.
39*4882a593Smuzhiyun  *
40*4882a593Smuzhiyun  * (b) LED module inside uses led_event as the index of led action
41*4882a593Smuzhiyun  *     arrays, and hence it would be inappropriate to directly replace
42*4882a593Smuzhiyun  *     led_event with msg_evt_id which is not continuous and does not
43*4882a593Smuzhiyun  *     start from zero.
44*4882a593Smuzhiyun  */
45*4882a593Smuzhiyun enum rtw_led_event {
46*4882a593Smuzhiyun 	RTW_LED_EVENT_PHL_START,
47*4882a593Smuzhiyun 	RTW_LED_EVENT_PHL_STOP,
48*4882a593Smuzhiyun 	RTW_LED_EVENT_SW_RF_ON,
49*4882a593Smuzhiyun 	RTW_LED_EVENT_SW_RF_OFF,
50*4882a593Smuzhiyun 	RTW_LED_EVENT_SCAN_START,
51*4882a593Smuzhiyun 	RTW_LED_EVENT_LINK_START,
52*4882a593Smuzhiyun 	RTW_LED_EVENT_LINKED,
53*4882a593Smuzhiyun 	RTW_LED_EVENT_NO_LINK,
54*4882a593Smuzhiyun 	RTW_LED_EVENT_LINKED_CIPHER,
55*4882a593Smuzhiyun 	RTW_LED_EVENT_LINKED_NOCIPHER,
56*4882a593Smuzhiyun 	RTW_LED_EVENT_LINKED_24G,
57*4882a593Smuzhiyun 	RTW_LED_EVENT_LINKED_5G,
58*4882a593Smuzhiyun 	RTW_LED_EVENT_LENGTH
59*4882a593Smuzhiyun };
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun enum rtw_led_state {
62*4882a593Smuzhiyun 	RTW_LED_STATE_IGNORE = BIT0,
63*4882a593Smuzhiyun 	RTW_LED_STATE_SW_RF_ON = BIT1,
64*4882a593Smuzhiyun };
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun enum rtw_led_action {
67*4882a593Smuzhiyun 	RTW_LED_ACTION_LOW,
68*4882a593Smuzhiyun 	RTW_LED_ACTION_HIGH,
69*4882a593Smuzhiyun 	RTW_LED_ACTION_HW_TRX,
70*4882a593Smuzhiyun 	RTW_LED_ACTION_TOGGLE,
71*4882a593Smuzhiyun };
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun enum rtw_led_opt {
74*4882a593Smuzhiyun 	RTW_LED_OPT_LOW = 0,
75*4882a593Smuzhiyun 	RTW_LED_OPT_HIGH = 1,
76*4882a593Smuzhiyun 	RTW_LED_OPT_UNKNOWN = 2
77*4882a593Smuzhiyun };
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun struct rtw_led_toggle_args_t {
80*4882a593Smuzhiyun 	enum rtw_led_opt start_opt;
81*4882a593Smuzhiyun 	u32 start_delay;
82*4882a593Smuzhiyun 	u32 loop;
83*4882a593Smuzhiyun 	u8 intervals_idx;
84*4882a593Smuzhiyun };
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun struct rtw_led_action_args_t {
87*4882a593Smuzhiyun 	enum rtw_led_id led_id;
88*4882a593Smuzhiyun 	enum rtw_led_action led_action;
89*4882a593Smuzhiyun 	struct rtw_led_toggle_args_t toggle_args;
90*4882a593Smuzhiyun };
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun struct rtw_led_intervals_t {
93*4882a593Smuzhiyun 	u32 *interval_arr;
94*4882a593Smuzhiyun 	u8 len;
95*4882a593Smuzhiyun };
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #endif /*_PHL_LED_DEF_H_*/
98