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