diff --git a/Makefile b/Makefile index 6edcad1..43643ba 100644 --- a/Makefile +++ b/Makefile @@ -50,6 +50,9 @@ CONFIG_USB_HCI = y CONFIG_PCI_HCI = n CONFIG_SDIO_HCI = n CONFIG_GSPI_HCI = n +######################### LED ########################### +CONFIG_LED_CONTROL = y +CONFIG_LED_ENABLE = y ########################## Features ########################### CONFIG_AP_MODE = y CONFIG_P2P = y @@ -1294,6 +1297,16 @@ ifeq ($(CONFIG_IP_R_MONITOR), y) EXTRA_CFLAGS += -DCONFIG_IP_R_MONITOR endif +ifeq ($(CONFIG_LED_CONTROL), y) +EXTRA_CFLAGS += -DCONFIG_LED_CONTROL +ifeq ($(CONFIG_RTL8822B), y) +EXTRA_CFLAGS += -DCONFIG_SW_LED -DCONFIG_RTW_SW_LED +endif +ifeq ($(CONFIG_LED_ENABLE), y) +EXTRA_CFLAGS += -DCONFIG_LED_ENABLE +endif +endif + ifeq ($(CONFIG_MP_VHT_HW_TX_MODE), y) EXTRA_CFLAGS += -DCONFIG_MP_VHT_HW_TX_MODE ifeq ($(CONFIG_PLATFORM_I386_PC), y) diff --git a/hal/led/hal_usb_led.c b/hal/led/hal_usb_led.c index 1599536..df06f98 100644 --- a/hal/led/hal_usb_led.c +++ b/hal/led/hal_usb_led.c @@ -1745,6 +1745,22 @@ void BlinkHandler(PLED_USB pLed) return; } + #ifdef CONFIG_SW_LED + // led_enable 1 is blinking so don't cause always on/off + if (padapter->registrypriv.led_ctrl != 1) { + if (padapter->registrypriv.led_ctrl == 0) + { + // always off + pLed->BlinkingLedState = RTW_LED_OFF; + } else { + // always on for led_ctrl 2 or greater + pLed->BlinkingLedState = RTW_LED_ON; + } + // skip various switch cases where SwLedBlink*() called below + pLed->CurrLedState = LED_UNKNOWN; + } + #endif + switch (ledpriv->LedStrategy) { #if CONFIG_RTW_SW_LED_TRX_DA_CLASSIFY case SW_LED_MODE_UC_TRX_ONLY: @@ -4287,4 +4303,4 @@ DeInitLed( _cancel_timer_ex(&(pLed->BlinkTimer)); ResetLedStatus(pLed); } -#endif \ No newline at end of file +#endif diff --git a/include/autoconf.h b/include/autoconf.h index 38d36fd..b308c3a 100644 --- a/include/autoconf.h +++ b/include/autoconf.h @@ -169,7 +169,7 @@ #define CONFIG_RTW_LED #ifdef CONFIG_RTW_LED - #define CONFIG_RTW_SW_LED + //#define CONFIG_RTW_SW_LED #ifdef CONFIG_RTW_SW_LED /* #define CONFIG_RTW_LED_HANDLED_BY_CMD_THREAD */ #endif diff --git a/include/drv_types.h b/include/drv_types.h index 9105b88..7484f95 100644 --- a/include/drv_types.h +++ b/include/drv_types.h @@ -242,6 +242,9 @@ struct registry_priv { #ifdef CONFIG_TX_EARLY_MODE u8 early_mode; #endif +#ifdef CONFIG_SW_LED + u8 led_ctrl; +#endif #ifdef CONFIG_NARROWBAND_SUPPORTING u8 rtw_nb_config; #endif diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 2f8b6b6..493b53f 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -142,6 +142,10 @@ int rtw_check_fw_ps = 1; int rtw_early_mode = 1; #endif +#ifdef CONFIG_SW_LED +int rtw_led_ctrl = 1; // default to blink +#endif + int rtw_usb_rxagg_mode = 2;/* RX_AGG_DMA=1, RX_AGG_USB=2 */ module_param(rtw_usb_rxagg_mode, int, 0644); @@ -612,6 +616,12 @@ module_param(rtw_pci_aspm_enable, int, 0644); #ifdef CONFIG_TX_EARLY_MODE module_param(rtw_early_mode, int, 0644); #endif + +#ifdef CONFIG_SW_LED +module_param(rtw_led_ctrl, int, 0644); +MODULE_PARM_DESC(rtw_led_ctrl,"Led Control: 0=Always off, 1=Blink, 2=Always on"); +#endif + #ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE char *rtw_adaptor_info_caching_file_path = "/data/misc/wifi/rtw_cache"; module_param(rtw_adaptor_info_caching_file_path, charp, 0644); @@ -1307,6 +1317,9 @@ uint loadparam(_adapter *padapter) #ifdef CONFIG_TX_EARLY_MODE registry_par->early_mode = (u8)rtw_early_mode; +#endif +#ifdef CONFIG_SW_LED + registry_par->led_ctrl = (u8)rtw_led_ctrl; #endif registry_par->trx_path_bmp = (u8)rtw_trx_path_bmp; registry_par->tx_path_lmt = (u8)rtw_tx_path_lmt;