1 /******************************************************************************
3 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 ******************************************************************************/
21 #include <drv_types.h>
25 // Callback function of LED BlinkTimer,
26 // it just schedules to corresponding BlinkWorkItem/led_blink_hdl
28 void BlinkTimerCallback(void *data)
30 PLED_871x pLed = (PLED_871x)data;
31 _adapter *padapter = pLed->padapter;
33 //DBG_8723A("%s\n", __FUNCTION__);
35 if( (padapter->bSurpriseRemoved == _TRUE) || ( padapter->bDriverStopped == _TRUE))
37 //DBG_8723A("%s bSurpriseRemoved:%d, bDriverStopped:%d\n", __FUNCTION__, padapter->bSurpriseRemoved, padapter->bDriverStopped);
41 #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI)
42 #ifdef CONFIG_LED_HANDLED_BY_CMD_THREAD
43 rtw_led_blink_cmd(padapter, pLed);
45 _set_workitem(&(pLed->BlinkWorkItem));
47 #elif defined(CONFIG_PCI_HCI)
53 #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI)
56 // Callback function of LED BlinkWorkItem.
57 // We dispatch acture LED blink action according to LedStrategy.
59 void BlinkWorkItemCallback(struct work_struct *work)
61 PLED_871x pLed = container_of(work, LED_871x, BlinkWorkItem);
68 // Reset status of LED_871x object.
70 void ResetLedStatus(PLED_871x pLed) {
72 pLed->CurrLedState = RTW_LED_OFF; // Current LED state.
73 pLed->bLedOn = _FALSE; // true if LED is ON, false if LED is OFF.
75 pLed->bLedBlinkInProgress = _FALSE; // true if it is blinking, false o.w..
76 pLed->bLedWPSBlinkInProgress = _FALSE;
78 pLed->BlinkTimes = 0; // Number of times to toggle led state for blinking.
79 pLed->BlinkingLedState = LED_UNKNOWN; // Next state for blinking, either RTW_LED_ON or RTW_LED_OFF are.
81 #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI)
82 pLed->bLedNoLinkBlinkInProgress = _FALSE;
83 pLed->bLedLinkBlinkInProgress = _FALSE;
84 pLed->bLedStartToLinkBlinkInProgress = _FALSE;
85 pLed->bLedScanBlinkInProgress = _FALSE;
91 // Initialize an LED_871x object.
100 pLed->padapter = padapter;
101 pLed->LedPin = LedPin;
103 ResetLedStatus(pLed);
105 _init_timer(&(pLed->BlinkTimer), padapter->pnetdev, BlinkTimerCallback, pLed);
107 #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI)
108 _init_workitem(&(pLed->BlinkWorkItem), BlinkWorkItemCallback, pLed);
115 // DeInitialize an LED_871x object.
122 #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
123 _cancel_workitem_sync(&(pLed->BlinkWorkItem));
125 _cancel_timer_ex(&(pLed->BlinkTimer));
126 ResetLedStatus(pLed);
132 // Implementation of LED blinking behavior.
133 // It toggle off LED and schedule corresponding timer if necessary.
135 #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
137 void SwLedOn(_adapter *padapter, PLED_871x pLed);
138 void SwLedOff(_adapter *padapter, PLED_871x pLed);
140 #define CONFIG_LED_REMOVE_HAL
147 _adapter *padapter = pLed->padapter;
148 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
149 u8 bStopBlinking = _FALSE;
151 // Change LED according to BlinkingLedState specified.
152 if( pLed->BlinkingLedState == RTW_LED_ON )
154 SwLedOn(padapter, pLed);
155 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
159 SwLedOff(padapter, pLed);
160 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,( "Blinktimes (%d): turn off\n", pLed->BlinkTimes));
163 // Determine if we shall change LED state again.
165 switch(pLed->CurrLedState)
168 case LED_BLINK_NORMAL:
169 if(pLed->BlinkTimes == 0)
171 bStopBlinking = _TRUE;
175 case LED_BLINK_StartToBlink:
176 if( check_fwstate(pmlmepriv, _FW_LINKED) && check_fwstate(pmlmepriv, WIFI_STATION_STATE) )
178 bStopBlinking = _TRUE;
180 if( check_fwstate(pmlmepriv, _FW_LINKED) &&
181 (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) )
183 bStopBlinking = _TRUE;
185 else if(pLed->BlinkTimes == 0)
187 bStopBlinking = _TRUE;
192 if( pLed->BlinkTimes == 0 )
194 bStopBlinking = _TRUE;
200 bStopBlinking = _TRUE;
207 //if( padapter->pwrctrlpriv.cpwm >= PS_STATE_S2)
210 SwLedOff(padapter, pLed);
212 else if( (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) && (pLed->bLedOn == _FALSE))
214 SwLedOn(padapter, pLed);
216 else if( (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) && pLed->bLedOn == _TRUE)
218 SwLedOff(padapter, pLed);
221 pLed->BlinkTimes = 0;
222 pLed->bLedBlinkInProgress = _FALSE;
226 // Assign LED state to toggle.
227 if( pLed->BlinkingLedState == RTW_LED_ON )
228 pLed->BlinkingLedState = RTW_LED_OFF;
230 pLed->BlinkingLedState = RTW_LED_ON;
232 // Schedule a timer to toggle LED state.
233 switch( pLed->CurrLedState )
235 case LED_BLINK_NORMAL:
236 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
239 case LED_BLINK_SLOWLY:
240 case LED_BLINK_StartToBlink:
241 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
246 if( pLed->BlinkingLedState == RTW_LED_ON )
247 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);
249 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);
254 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
265 _adapter *padapter = pLed->padapter;
266 #ifndef CONFIG_LED_REMOVE_HAL
267 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
269 struct led_priv *ledpriv = &(padapter->ledpriv);
270 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
271 PLED_871x pLed1 = &(ledpriv->SwLed1);
272 u8 bStopBlinking = _FALSE;
274 #ifndef CONFIG_LED_REMOVE_HAL
275 if(pHalData->EEPROMCustomerID == RT_CID_819x_CAMEO)
276 pLed = &(ledpriv->SwLed1);
279 // Change LED according to BlinkingLedState specified.
280 if( pLed->BlinkingLedState == RTW_LED_ON )
282 SwLedOn(padapter, pLed);
283 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,( "Blinktimes (%d): turn on\n", pLed->BlinkTimes));
287 SwLedOff(padapter, pLed);
288 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
291 #ifndef CONFIG_LED_REMOVE_HAL
292 if(pHalData->EEPROMCustomerID == RT_CID_DEFAULT)
294 if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
296 if(!pLed1->bSWLedCtrl)
298 SwLedOn(padapter, pLed1);
299 pLed1->bSWLedCtrl = _TRUE;
301 else if(!pLed1->bLedOn)
302 SwLedOn(padapter, pLed1);
303 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (): turn on pLed1\n"));
307 if(!pLed1->bSWLedCtrl)
309 SwLedOff(padapter, pLed1);
310 pLed1->bSWLedCtrl = _TRUE;
312 else if(pLed1->bLedOn)
313 SwLedOff(padapter, pLed1);
314 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (): turn off pLed1\n"));
320 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on )
322 SwLedOff(padapter, pLed);
323 ResetLedStatus(pLed);
327 switch(pLed->CurrLedState)
329 case LED_BLINK_SLOWLY:
331 pLed->BlinkingLedState = RTW_LED_OFF;
333 pLed->BlinkingLedState = RTW_LED_ON;
334 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
337 case LED_BLINK_NORMAL:
339 pLed->BlinkingLedState = RTW_LED_OFF;
341 pLed->BlinkingLedState = RTW_LED_ON;
342 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
347 if( pLed->BlinkTimes == 0 )
349 bStopBlinking = _TRUE;
354 if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
356 pLed->bLedLinkBlinkInProgress = _TRUE;
357 pLed->CurrLedState = LED_BLINK_NORMAL;
359 pLed->BlinkingLedState = RTW_LED_OFF;
361 pLed->BlinkingLedState = RTW_LED_ON;
362 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
363 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
366 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
368 pLed->bLedNoLinkBlinkInProgress = _TRUE;
369 pLed->CurrLedState = LED_BLINK_SLOWLY;
371 pLed->BlinkingLedState = RTW_LED_OFF;
373 pLed->BlinkingLedState = RTW_LED_ON;
374 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
375 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
377 pLed->bLedScanBlinkInProgress = _FALSE;
382 pLed->BlinkingLedState = RTW_LED_OFF;
384 pLed->BlinkingLedState = RTW_LED_ON;
385 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
391 if( pLed->BlinkTimes == 0 )
393 bStopBlinking = _TRUE;
397 if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
399 pLed->bLedLinkBlinkInProgress = _TRUE;
400 pLed->CurrLedState = LED_BLINK_NORMAL;
402 pLed->BlinkingLedState = RTW_LED_OFF;
404 pLed->BlinkingLedState = RTW_LED_ON;
405 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
406 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
408 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
410 pLed->bLedNoLinkBlinkInProgress = _TRUE;
411 pLed->CurrLedState = LED_BLINK_SLOWLY;
413 pLed->BlinkingLedState = RTW_LED_OFF;
415 pLed->BlinkingLedState = RTW_LED_ON;
416 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
417 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
419 pLed->BlinkTimes = 0;
420 pLed->bLedBlinkInProgress = _FALSE;
425 pLed->BlinkingLedState = RTW_LED_OFF;
427 pLed->BlinkingLedState = RTW_LED_ON;
428 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
434 pLed->BlinkingLedState = RTW_LED_OFF;
436 pLed->BlinkingLedState = RTW_LED_ON;
437 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
440 case LED_BLINK_WPS_STOP: //WPS success
441 if(pLed->BlinkingLedState == RTW_LED_ON)
442 bStopBlinking = _FALSE;
444 bStopBlinking = _TRUE;
448 pLed->bLedLinkBlinkInProgress = _TRUE;
449 pLed->CurrLedState = LED_BLINK_NORMAL;
451 pLed->BlinkingLedState = RTW_LED_OFF;
453 pLed->BlinkingLedState = RTW_LED_ON;
454 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
455 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
457 pLed->bLedWPSBlinkInProgress = _FALSE;
461 pLed->BlinkingLedState = RTW_LED_OFF;
462 _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);
477 _adapter *padapter = pLed->padapter;
478 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
479 u8 bStopBlinking = _FALSE;
481 // Change LED according to BlinkingLedState specified.
482 if( pLed->BlinkingLedState == RTW_LED_ON)
484 SwLedOn(padapter, pLed);
485 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
489 SwLedOff(padapter, pLed);
490 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
493 switch(pLed->CurrLedState)
497 if( pLed->BlinkTimes == 0 )
499 bStopBlinking = _TRUE;
504 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on )
506 SwLedOff(padapter, pLed);
508 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
510 pLed->CurrLedState = RTW_LED_ON;
511 pLed->BlinkingLedState = RTW_LED_ON;
512 SwLedOn(padapter, pLed);
513 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop scan blink CurrLedState %d\n", pLed->CurrLedState));
516 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
518 pLed->CurrLedState = RTW_LED_OFF;
519 pLed->BlinkingLedState = RTW_LED_OFF;
520 SwLedOff(padapter, pLed);
521 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop scan blink CurrLedState %d\n", pLed->CurrLedState));
523 pLed->bLedScanBlinkInProgress = _FALSE;
527 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on )
529 SwLedOff(padapter, pLed);
534 pLed->BlinkingLedState = RTW_LED_OFF;
536 pLed->BlinkingLedState = RTW_LED_ON;
537 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
544 if( pLed->BlinkTimes == 0 )
546 bStopBlinking = _TRUE;
550 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on )
552 SwLedOff(padapter, pLed);
554 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
556 pLed->CurrLedState = RTW_LED_ON;
557 pLed->BlinkingLedState = RTW_LED_ON;
558 SwLedOn(padapter, pLed);
559 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop CurrLedState %d\n", pLed->CurrLedState));
562 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
564 pLed->CurrLedState = RTW_LED_OFF;
565 pLed->BlinkingLedState = RTW_LED_OFF;
566 SwLedOff(padapter, pLed);
567 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop CurrLedState %d\n", pLed->CurrLedState));
569 pLed->bLedBlinkInProgress = _FALSE;
573 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on )
575 SwLedOff(padapter, pLed);
580 pLed->BlinkingLedState = RTW_LED_OFF;
582 pLed->BlinkingLedState = RTW_LED_ON;
583 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
599 _adapter *padapter = pLed->padapter;
600 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
601 u8 bStopBlinking = _FALSE;
603 // Change LED according to BlinkingLedState specified.
604 if( pLed->BlinkingLedState == RTW_LED_ON )
606 SwLedOn(padapter, pLed);
607 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
611 if(pLed->CurrLedState != LED_BLINK_WPS_STOP)
612 SwLedOff(padapter, pLed);
613 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
616 switch(pLed->CurrLedState)
620 if( pLed->BlinkTimes == 0 )
622 bStopBlinking = _TRUE;
627 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on )
629 SwLedOff(padapter, pLed);
631 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
633 pLed->CurrLedState = RTW_LED_ON;
634 pLed->BlinkingLedState = RTW_LED_ON;
636 SwLedOn(padapter, pLed);
638 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
640 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
642 pLed->CurrLedState = RTW_LED_OFF;
643 pLed->BlinkingLedState = RTW_LED_OFF;
645 SwLedOff(padapter, pLed);
647 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
649 pLed->bLedScanBlinkInProgress = _FALSE;
653 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on )
655 SwLedOff(padapter, pLed);
660 pLed->BlinkingLedState = RTW_LED_OFF;
662 pLed->BlinkingLedState = RTW_LED_ON;
663 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
670 if( pLed->BlinkTimes == 0 )
672 bStopBlinking = _TRUE;
676 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on )
678 SwLedOff(padapter, pLed);
680 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
682 pLed->CurrLedState = RTW_LED_ON;
683 pLed->BlinkingLedState = RTW_LED_ON;
686 SwLedOn(padapter, pLed);
688 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
690 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
692 pLed->CurrLedState = RTW_LED_OFF;
693 pLed->BlinkingLedState = RTW_LED_OFF;
696 SwLedOff(padapter, pLed);
699 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
701 pLed->bLedBlinkInProgress = _FALSE;
705 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on )
707 SwLedOff(padapter, pLed);
712 pLed->BlinkingLedState = RTW_LED_OFF;
714 pLed->BlinkingLedState = RTW_LED_ON;
715 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
722 pLed->BlinkingLedState = RTW_LED_OFF;
724 pLed->BlinkingLedState = RTW_LED_ON;
725 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
728 case LED_BLINK_WPS_STOP: //WPS success
729 if(pLed->BlinkingLedState == RTW_LED_ON)
731 pLed->BlinkingLedState = RTW_LED_OFF;
732 _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);
733 bStopBlinking = _FALSE;
737 bStopBlinking = _TRUE;
742 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on )
744 SwLedOff(padapter, pLed);
748 pLed->CurrLedState = RTW_LED_ON;
749 pLed->BlinkingLedState = RTW_LED_ON;
750 SwLedOn(padapter, pLed);
751 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
753 pLed->bLedWPSBlinkInProgress = _FALSE;
770 _adapter *padapter = pLed->padapter;
771 struct led_priv *ledpriv = &(padapter->ledpriv);
772 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
773 PLED_871x pLed1 = &(ledpriv->SwLed1);
774 u8 bStopBlinking = _FALSE;
776 // Change LED according to BlinkingLedState specified.
777 if( pLed->BlinkingLedState == RTW_LED_ON )
779 SwLedOn(padapter, pLed);
780 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
784 SwLedOff(padapter, pLed);
785 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
788 if(!pLed1->bLedWPSBlinkInProgress && pLed1->BlinkingLedState == LED_UNKNOWN)
790 pLed1->BlinkingLedState = RTW_LED_OFF;
791 pLed1->CurrLedState = RTW_LED_OFF;
792 SwLedOff(padapter, pLed1);
795 switch(pLed->CurrLedState)
797 case LED_BLINK_SLOWLY:
799 pLed->BlinkingLedState = RTW_LED_OFF;
801 pLed->BlinkingLedState = RTW_LED_ON;
802 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
805 case LED_BLINK_StartToBlink:
808 pLed->BlinkingLedState = RTW_LED_OFF;
809 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
813 pLed->BlinkingLedState = RTW_LED_ON;
814 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
820 if( pLed->BlinkTimes == 0 )
822 bStopBlinking = _FALSE;
827 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS)
829 SwLedOff(padapter, pLed);
833 pLed->bLedNoLinkBlinkInProgress = _FALSE;
834 pLed->CurrLedState = LED_BLINK_SLOWLY;
836 pLed->BlinkingLedState = RTW_LED_OFF;
838 pLed->BlinkingLedState = RTW_LED_ON;
839 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
841 pLed->bLedScanBlinkInProgress = _FALSE;
845 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS)
847 SwLedOff(padapter, pLed);
852 pLed->BlinkingLedState = RTW_LED_OFF;
854 pLed->BlinkingLedState = RTW_LED_ON;
855 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
862 if( pLed->BlinkTimes == 0 )
864 bStopBlinking = _TRUE;
868 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS)
870 SwLedOff(padapter, pLed);
874 pLed->bLedNoLinkBlinkInProgress = _TRUE;
875 pLed->CurrLedState = LED_BLINK_SLOWLY;
877 pLed->BlinkingLedState = RTW_LED_OFF;
879 pLed->BlinkingLedState = RTW_LED_ON;
880 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
882 pLed->bLedBlinkInProgress = _FALSE;
886 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS)
888 SwLedOff(padapter, pLed);
893 pLed->BlinkingLedState = RTW_LED_OFF;
895 pLed->BlinkingLedState = RTW_LED_ON;
896 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
904 pLed->BlinkingLedState = RTW_LED_OFF;
905 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
909 pLed->BlinkingLedState = RTW_LED_ON;
910 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
914 case LED_BLINK_WPS_STOP: //WPS authentication fail
916 pLed->BlinkingLedState = RTW_LED_OFF;
918 pLed->BlinkingLedState = RTW_LED_ON;
920 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
923 case LED_BLINK_WPS_STOP_OVERLAP: //WPS session overlap
925 if(pLed->BlinkTimes == 0)
929 pLed->BlinkTimes = 1;
933 bStopBlinking = _TRUE;
939 pLed->BlinkTimes = 10;
940 pLed->BlinkingLedState = RTW_LED_ON;
941 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
946 pLed->BlinkingLedState = RTW_LED_OFF;
948 pLed->BlinkingLedState = RTW_LED_ON;
950 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
959 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink4 CurrLedState %d\n", pLed->CurrLedState));
969 _adapter *padapter = pLed->padapter;
970 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
971 u8 bStopBlinking = _FALSE;
973 // Change LED according to BlinkingLedState specified.
974 if( pLed->BlinkingLedState == RTW_LED_ON )
976 SwLedOn(padapter, pLed);
977 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
981 SwLedOff(padapter, pLed);
982 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
985 switch(pLed->CurrLedState)
989 if( pLed->BlinkTimes == 0 )
991 bStopBlinking = _TRUE;
996 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS)
998 pLed->CurrLedState = RTW_LED_OFF;
999 pLed->BlinkingLedState = RTW_LED_OFF;
1001 SwLedOff(padapter, pLed);
1004 { pLed->CurrLedState = RTW_LED_ON;
1005 pLed->BlinkingLedState = RTW_LED_ON;
1007 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1010 pLed->bLedScanBlinkInProgress = _FALSE;
1014 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS)
1016 SwLedOff(padapter, pLed);
1021 pLed->BlinkingLedState = RTW_LED_OFF;
1023 pLed->BlinkingLedState = RTW_LED_ON;
1024 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
1030 case LED_BLINK_TXRX:
1032 if( pLed->BlinkTimes == 0 )
1034 bStopBlinking = _TRUE;
1039 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS)
1041 pLed->CurrLedState = RTW_LED_OFF;
1042 pLed->BlinkingLedState = RTW_LED_OFF;
1044 SwLedOff(padapter, pLed);
1048 pLed->CurrLedState = RTW_LED_ON;
1049 pLed->BlinkingLedState = RTW_LED_ON;
1051 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1054 pLed->bLedBlinkInProgress = _FALSE;
1058 if( padapter->pwrctrlpriv.rf_pwrstate != rf_on && padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS)
1060 SwLedOff(padapter, pLed);
1065 pLed->BlinkingLedState = RTW_LED_OFF;
1067 pLed->BlinkingLedState = RTW_LED_ON;
1068 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1077 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink5 CurrLedState %d\n", pLed->CurrLedState));
1087 _adapter *padapter = pLed->padapter;
1088 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
1089 u8 bStopBlinking = _FALSE;
1091 // Change LED according to BlinkingLedState specified.
1092 if( pLed->BlinkingLedState == RTW_LED_ON )
1094 SwLedOn(padapter, pLed);
1095 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
1099 SwLedOff(padapter, pLed);
1100 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
1103 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink6\n"));
1109 LED_CTL_MODE LedAction
1112 struct led_priv *ledpriv = &(padapter->ledpriv);
1113 PLED_871x pLed = &(ledpriv->SwLed1);
1120 if( pLed->bLedBlinkInProgress == _FALSE )
1122 pLed->bLedBlinkInProgress = _TRUE;
1124 pLed->CurrLedState = LED_BLINK_NORMAL;
1125 pLed->BlinkTimes = 2;
1128 pLed->BlinkingLedState = RTW_LED_OFF;
1130 pLed->BlinkingLedState = RTW_LED_ON;
1131 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1135 case LED_CTL_START_TO_LINK:
1136 if( pLed->bLedBlinkInProgress == _FALSE )
1138 pLed->bLedBlinkInProgress = _TRUE;
1140 pLed->CurrLedState = LED_BLINK_StartToBlink;
1141 pLed->BlinkTimes = 24;
1144 pLed->BlinkingLedState = RTW_LED_OFF;
1146 pLed->BlinkingLedState = RTW_LED_ON;
1147 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
1151 pLed->CurrLedState = LED_BLINK_StartToBlink;
1156 pLed->CurrLedState = RTW_LED_ON;
1157 if( pLed->bLedBlinkInProgress == _FALSE )
1159 SwLedOn(padapter, pLed);
1163 case LED_CTL_NO_LINK:
1164 pLed->CurrLedState = RTW_LED_OFF;
1165 if( pLed->bLedBlinkInProgress == _FALSE )
1167 SwLedOff(padapter, pLed);
1171 case LED_CTL_POWER_OFF:
1172 pLed->CurrLedState = RTW_LED_OFF;
1173 if(pLed->bLedBlinkInProgress)
1175 _cancel_timer_ex(&(pLed->BlinkTimer));
1176 pLed->bLedBlinkInProgress = _FALSE;
1178 SwLedOff(padapter, pLed);
1181 case LED_CTL_START_WPS:
1182 if( pLed->bLedBlinkInProgress == _FALSE || pLed->CurrLedState == RTW_LED_ON)
1184 pLed->bLedBlinkInProgress = _TRUE;
1186 pLed->CurrLedState = LED_BLINK_WPS;
1187 pLed->BlinkTimes = 20;
1191 pLed->BlinkingLedState = RTW_LED_OFF;
1192 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);
1196 pLed->BlinkingLedState = RTW_LED_ON;
1197 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);
1202 case LED_CTL_STOP_WPS:
1203 if(pLed->bLedBlinkInProgress)
1205 pLed->CurrLedState = RTW_LED_OFF;
1206 _cancel_timer_ex(&(pLed->BlinkTimer));
1207 pLed->bLedBlinkInProgress = _FALSE;
1216 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));
1220 //ALPHA, added by chiyoko, 20090106
1224 LED_CTL_MODE LedAction
1227 #ifndef CONFIG_LED_REMOVE_HAL
1228 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
1230 struct led_priv *ledpriv = &(padapter->ledpriv);
1231 PLED_871x pLed = &(ledpriv->SwLed0);
1232 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
1234 #ifndef CONFIG_LED_REMOVE_HAL
1235 if(pHalData->EEPROMCustomerID == RT_CID_819x_CAMEO)
1236 pLed = &(ledpriv->SwLed1);
1241 case LED_CTL_POWER_ON:
1242 case LED_CTL_START_TO_LINK:
1243 case LED_CTL_NO_LINK:
1244 if( pLed->bLedNoLinkBlinkInProgress == _FALSE )
1246 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
1250 if( pLed->bLedLinkBlinkInProgress == _TRUE )
1252 _cancel_timer_ex(&(pLed->BlinkTimer));
1253 pLed->bLedLinkBlinkInProgress = _FALSE;
1255 if(pLed->bLedBlinkInProgress ==_TRUE)
1257 _cancel_timer_ex(&(pLed->BlinkTimer));
1258 pLed->bLedBlinkInProgress = _FALSE;
1261 pLed->bLedNoLinkBlinkInProgress = _TRUE;
1262 pLed->CurrLedState = LED_BLINK_SLOWLY;
1264 pLed->BlinkingLedState = RTW_LED_OFF;
1266 pLed->BlinkingLedState = RTW_LED_ON;
1267 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1272 if( pLed->bLedLinkBlinkInProgress == _FALSE )
1274 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
1278 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
1280 _cancel_timer_ex(&(pLed->BlinkTimer));
1281 pLed->bLedNoLinkBlinkInProgress = _FALSE;
1283 if(pLed->bLedBlinkInProgress ==_TRUE)
1285 _cancel_timer_ex(&(pLed->BlinkTimer));
1286 pLed->bLedBlinkInProgress = _FALSE;
1288 pLed->bLedLinkBlinkInProgress = _TRUE;
1289 pLed->CurrLedState = LED_BLINK_NORMAL;
1291 pLed->BlinkingLedState = RTW_LED_OFF;
1293 pLed->BlinkingLedState = RTW_LED_ON;
1294 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
1298 case LED_CTL_SITE_SURVEY:
1299 if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
1301 else if(pLed->bLedScanBlinkInProgress ==_FALSE)
1303 if(IS_LED_WPS_BLINKING(pLed))
1306 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
1308 _cancel_timer_ex(&(pLed->BlinkTimer));
1309 pLed->bLedNoLinkBlinkInProgress = _FALSE;
1311 if( pLed->bLedLinkBlinkInProgress == _TRUE )
1313 _cancel_timer_ex(&(pLed->BlinkTimer));
1314 pLed->bLedLinkBlinkInProgress = _FALSE;
1316 if(pLed->bLedBlinkInProgress ==_TRUE)
1318 _cancel_timer_ex(&(pLed->BlinkTimer));
1319 pLed->bLedBlinkInProgress = _FALSE;
1321 pLed->bLedScanBlinkInProgress = _TRUE;
1322 pLed->CurrLedState = LED_BLINK_SCAN;
1323 pLed->BlinkTimes = 24;
1325 pLed->BlinkingLedState = RTW_LED_OFF;
1327 pLed->BlinkingLedState = RTW_LED_ON;
1328 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
1334 if(pLed->bLedBlinkInProgress ==_FALSE)
1336 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
1340 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
1342 _cancel_timer_ex(&(pLed->BlinkTimer));
1343 pLed->bLedNoLinkBlinkInProgress = _FALSE;
1345 if( pLed->bLedLinkBlinkInProgress == _TRUE )
1347 _cancel_timer_ex(&(pLed->BlinkTimer));
1348 pLed->bLedLinkBlinkInProgress = _FALSE;
1350 pLed->bLedBlinkInProgress = _TRUE;
1351 pLed->CurrLedState = LED_BLINK_TXRX;
1352 pLed->BlinkTimes = 2;
1354 pLed->BlinkingLedState = RTW_LED_OFF;
1356 pLed->BlinkingLedState = RTW_LED_ON;
1357 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1361 case LED_CTL_START_WPS: //wait until xinpin finish
1362 case LED_CTL_START_WPS_BOTTON:
1363 if(pLed->bLedWPSBlinkInProgress ==_FALSE)
1365 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
1367 _cancel_timer_ex(&(pLed->BlinkTimer));
1368 pLed->bLedNoLinkBlinkInProgress = _FALSE;
1370 if( pLed->bLedLinkBlinkInProgress == _TRUE )
1372 _cancel_timer_ex(&(pLed->BlinkTimer));
1373 pLed->bLedLinkBlinkInProgress = _FALSE;
1375 if(pLed->bLedBlinkInProgress ==_TRUE)
1377 _cancel_timer_ex(&(pLed->BlinkTimer));
1378 pLed->bLedBlinkInProgress = _FALSE;
1380 if(pLed->bLedScanBlinkInProgress ==_TRUE)
1382 _cancel_timer_ex(&(pLed->BlinkTimer));
1383 pLed->bLedScanBlinkInProgress = _FALSE;
1385 pLed->bLedWPSBlinkInProgress = _TRUE;
1386 pLed->CurrLedState = LED_BLINK_WPS;
1388 pLed->BlinkingLedState = RTW_LED_OFF;
1390 pLed->BlinkingLedState = RTW_LED_ON;
1391 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
1396 case LED_CTL_STOP_WPS:
1397 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
1399 _cancel_timer_ex(&(pLed->BlinkTimer));
1400 pLed->bLedNoLinkBlinkInProgress = _FALSE;
1402 if( pLed->bLedLinkBlinkInProgress == _TRUE )
1404 _cancel_timer_ex(&(pLed->BlinkTimer));
1405 pLed->bLedLinkBlinkInProgress = _FALSE;
1407 if(pLed->bLedBlinkInProgress ==_TRUE)
1409 _cancel_timer_ex(&(pLed->BlinkTimer));
1410 pLed->bLedBlinkInProgress = _FALSE;
1412 if(pLed->bLedScanBlinkInProgress ==_TRUE)
1414 _cancel_timer_ex(&(pLed->BlinkTimer));
1415 pLed->bLedScanBlinkInProgress = _FALSE;
1417 if(pLed->bLedWPSBlinkInProgress)
1419 _cancel_timer_ex(&(pLed->BlinkTimer));
1423 pLed->bLedWPSBlinkInProgress = _TRUE;
1426 pLed->CurrLedState = LED_BLINK_WPS_STOP;
1429 pLed->BlinkingLedState = RTW_LED_OFF;
1430 _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);
1434 pLed->BlinkingLedState = RTW_LED_ON;
1435 _set_timer(&(pLed->BlinkTimer), 0);
1439 case LED_CTL_STOP_WPS_FAIL:
1440 if(pLed->bLedWPSBlinkInProgress)
1442 _cancel_timer_ex(&(pLed->BlinkTimer));
1443 pLed->bLedWPSBlinkInProgress = _FALSE;
1446 pLed->bLedNoLinkBlinkInProgress = _TRUE;
1447 pLed->CurrLedState = LED_BLINK_SLOWLY;
1449 pLed->BlinkingLedState = RTW_LED_OFF;
1451 pLed->BlinkingLedState = RTW_LED_ON;
1452 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1455 case LED_CTL_POWER_OFF:
1456 pLed->CurrLedState = RTW_LED_OFF;
1457 pLed->BlinkingLedState = RTW_LED_OFF;
1458 if( pLed->bLedNoLinkBlinkInProgress)
1460 _cancel_timer_ex(&(pLed->BlinkTimer));
1461 pLed->bLedNoLinkBlinkInProgress = _FALSE;
1463 if( pLed->bLedLinkBlinkInProgress)
1465 _cancel_timer_ex(&(pLed->BlinkTimer));
1466 pLed->bLedLinkBlinkInProgress = _FALSE;
1468 if( pLed->bLedBlinkInProgress)
1470 _cancel_timer_ex(&(pLed->BlinkTimer));
1471 pLed->bLedBlinkInProgress = _FALSE;
1473 if( pLed->bLedWPSBlinkInProgress )
1475 _cancel_timer_ex(&(pLed->BlinkTimer));
1476 pLed->bLedWPSBlinkInProgress = _FALSE;
1478 if( pLed->bLedScanBlinkInProgress)
1480 _cancel_timer_ex(&(pLed->BlinkTimer));
1481 pLed->bLedScanBlinkInProgress = _FALSE;
1484 SwLedOff(padapter, pLed);
1492 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));
1495 //Arcadyan/Sitecom , added by chiyoko, 20090216
1499 LED_CTL_MODE LedAction
1502 struct led_priv *ledpriv = &(padapter->ledpriv);
1503 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
1504 PLED_871x pLed = &(ledpriv->SwLed0);
1508 case LED_CTL_SITE_SURVEY:
1509 if(pmlmepriv->LinkDetectInfo.bBusyTraffic)
1511 else if(pLed->bLedScanBlinkInProgress ==_FALSE)
1513 if(IS_LED_WPS_BLINKING(pLed))
1516 if(pLed->bLedBlinkInProgress ==_TRUE)
1518 _cancel_timer_ex(&(pLed->BlinkTimer));
1519 pLed->bLedBlinkInProgress = _FALSE;
1521 pLed->bLedScanBlinkInProgress = _TRUE;
1522 pLed->CurrLedState = LED_BLINK_SCAN;
1523 pLed->BlinkTimes = 24;
1525 pLed->BlinkingLedState = RTW_LED_OFF;
1527 pLed->BlinkingLedState = RTW_LED_ON;
1528 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
1534 if((pLed->bLedBlinkInProgress ==_FALSE) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
1536 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
1541 pLed->bLedBlinkInProgress = _TRUE;
1542 pLed->CurrLedState = LED_BLINK_TXRX;
1543 pLed->BlinkTimes = 2;
1545 pLed->BlinkingLedState = RTW_LED_OFF;
1547 pLed->BlinkingLedState = RTW_LED_ON;
1548 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1553 pLed->CurrLedState = RTW_LED_ON;
1554 pLed->BlinkingLedState = RTW_LED_ON;
1555 if( pLed->bLedBlinkInProgress)
1557 _cancel_timer_ex(&(pLed->BlinkTimer));
1558 pLed->bLedBlinkInProgress = _FALSE;
1560 if( pLed->bLedScanBlinkInProgress)
1562 _cancel_timer_ex(&(pLed->BlinkTimer));
1563 pLed->bLedScanBlinkInProgress = _FALSE;
1566 _set_timer(&(pLed->BlinkTimer), 0);
1569 case LED_CTL_START_WPS: //wait until xinpin finish
1570 case LED_CTL_START_WPS_BOTTON:
1571 if(pLed->bLedWPSBlinkInProgress ==_FALSE)
1573 if(pLed->bLedBlinkInProgress ==_TRUE)
1575 _cancel_timer_ex(&(pLed->BlinkTimer));
1576 pLed->bLedBlinkInProgress = _FALSE;
1578 if(pLed->bLedScanBlinkInProgress ==_TRUE)
1580 _cancel_timer_ex(&(pLed->BlinkTimer));
1581 pLed->bLedScanBlinkInProgress = _FALSE;
1583 pLed->bLedWPSBlinkInProgress = _TRUE;
1584 pLed->CurrLedState = RTW_LED_ON;
1585 pLed->BlinkingLedState = RTW_LED_ON;
1586 _set_timer(&(pLed->BlinkTimer), 0);
1590 case LED_CTL_STOP_WPS:
1591 pLed->bLedWPSBlinkInProgress = _FALSE;
1592 if(padapter->pwrctrlpriv.rf_pwrstate != rf_on)
1594 SwLedOff(padapter, pLed);
1598 pLed->CurrLedState = RTW_LED_ON;
1599 pLed->BlinkingLedState = RTW_LED_ON;
1600 _set_timer(&(pLed->BlinkTimer), 0);
1601 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
1605 case LED_CTL_STOP_WPS_FAIL:
1606 pLed->bLedWPSBlinkInProgress = _FALSE;
1607 if(padapter->pwrctrlpriv.rf_pwrstate != rf_on)
1609 SwLedOff(padapter, pLed);
1613 pLed->CurrLedState = RTW_LED_OFF;
1614 pLed->BlinkingLedState = RTW_LED_OFF;
1615 _set_timer(&(pLed->BlinkTimer), 0);
1616 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
1620 case LED_CTL_START_TO_LINK:
1621 case LED_CTL_NO_LINK:
1622 if(!IS_LED_BLINKING(pLed))
1624 pLed->CurrLedState = RTW_LED_OFF;
1625 pLed->BlinkingLedState = RTW_LED_OFF;
1626 _set_timer(&(pLed->BlinkTimer), 0);
1630 case LED_CTL_POWER_OFF:
1631 pLed->CurrLedState = RTW_LED_OFF;
1632 pLed->BlinkingLedState = RTW_LED_OFF;
1633 if( pLed->bLedBlinkInProgress)
1635 _cancel_timer_ex(&(pLed->BlinkTimer));
1636 pLed->bLedBlinkInProgress = _FALSE;
1638 if( pLed->bLedScanBlinkInProgress)
1640 _cancel_timer_ex(&(pLed->BlinkTimer));
1641 pLed->bLedScanBlinkInProgress = _FALSE;
1643 if( pLed->bLedWPSBlinkInProgress )
1645 _cancel_timer_ex(&(pLed->BlinkTimer));
1646 pLed->bLedWPSBlinkInProgress = _FALSE;
1649 _set_timer(&(pLed->BlinkTimer), 0);
1657 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
1660 //COREGA, added by chiyoko, 20090316
1664 LED_CTL_MODE LedAction
1667 struct led_priv *ledpriv = &(padapter->ledpriv);
1668 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
1669 PLED_871x pLed = &(ledpriv->SwLed0);
1673 case LED_CTL_SITE_SURVEY:
1674 if(pmlmepriv->LinkDetectInfo.bBusyTraffic)
1676 else if(pLed->bLedScanBlinkInProgress ==_FALSE)
1678 if(IS_LED_WPS_BLINKING(pLed))
1681 if(pLed->bLedBlinkInProgress ==_TRUE)
1683 _cancel_timer_ex(&(pLed->BlinkTimer));
1684 pLed->bLedBlinkInProgress = _FALSE;
1686 pLed->bLedScanBlinkInProgress = _TRUE;
1687 pLed->CurrLedState = LED_BLINK_SCAN;
1688 pLed->BlinkTimes = 24;
1690 pLed->BlinkingLedState = RTW_LED_OFF;
1692 pLed->BlinkingLedState = RTW_LED_ON;
1693 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
1699 if((pLed->bLedBlinkInProgress ==_FALSE) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
1701 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
1706 pLed->bLedBlinkInProgress = _TRUE;
1707 pLed->CurrLedState = LED_BLINK_TXRX;
1708 pLed->BlinkTimes = 2;
1710 pLed->BlinkingLedState = RTW_LED_OFF;
1712 pLed->BlinkingLedState = RTW_LED_ON;
1713 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1718 if(IS_LED_WPS_BLINKING(pLed))
1721 pLed->CurrLedState = RTW_LED_ON;
1722 pLed->BlinkingLedState = RTW_LED_ON;
1723 if( pLed->bLedBlinkInProgress)
1725 _cancel_timer_ex(&(pLed->BlinkTimer));
1726 pLed->bLedBlinkInProgress = _FALSE;
1728 if( pLed->bLedScanBlinkInProgress)
1730 _cancel_timer_ex(&(pLed->BlinkTimer));
1731 pLed->bLedScanBlinkInProgress = _FALSE;
1734 _set_timer(&(pLed->BlinkTimer), 0);
1737 case LED_CTL_START_WPS: //wait until xinpin finish
1738 case LED_CTL_START_WPS_BOTTON:
1739 if(pLed->bLedWPSBlinkInProgress ==_FALSE)
1741 if(pLed->bLedBlinkInProgress ==_TRUE)
1743 _cancel_timer_ex(&(pLed->BlinkTimer));
1744 pLed->bLedBlinkInProgress = _FALSE;
1746 if(pLed->bLedScanBlinkInProgress ==_TRUE)
1748 _cancel_timer_ex(&(pLed->BlinkTimer));
1749 pLed->bLedScanBlinkInProgress = _FALSE;
1751 pLed->bLedWPSBlinkInProgress = _TRUE;
1752 pLed->CurrLedState = LED_BLINK_WPS;
1754 pLed->BlinkingLedState = RTW_LED_OFF;
1756 pLed->BlinkingLedState = RTW_LED_ON;
1757 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
1761 case LED_CTL_STOP_WPS:
1762 if(pLed->bLedWPSBlinkInProgress)
1764 _cancel_timer_ex(&(pLed->BlinkTimer));
1765 pLed->bLedWPSBlinkInProgress = _FALSE;
1769 pLed->bLedWPSBlinkInProgress = _TRUE;
1772 pLed->CurrLedState = LED_BLINK_WPS_STOP;
1775 pLed->BlinkingLedState = RTW_LED_OFF;
1776 _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);
1780 pLed->BlinkingLedState = RTW_LED_ON;
1781 _set_timer(&(pLed->BlinkTimer), 0);
1786 case LED_CTL_STOP_WPS_FAIL:
1787 if(pLed->bLedWPSBlinkInProgress)
1789 _cancel_timer_ex(&(pLed->BlinkTimer));
1790 pLed->bLedWPSBlinkInProgress = _FALSE;
1793 pLed->CurrLedState = RTW_LED_OFF;
1794 pLed->BlinkingLedState = RTW_LED_OFF;
1795 _set_timer(&(pLed->BlinkTimer), 0);
1798 case LED_CTL_START_TO_LINK:
1799 case LED_CTL_NO_LINK:
1800 if(!IS_LED_BLINKING(pLed))
1802 pLed->CurrLedState = RTW_LED_OFF;
1803 pLed->BlinkingLedState = RTW_LED_OFF;
1804 _set_timer(&(pLed->BlinkTimer), 0);
1808 case LED_CTL_POWER_OFF:
1809 pLed->CurrLedState = RTW_LED_OFF;
1810 pLed->BlinkingLedState = RTW_LED_OFF;
1811 if( pLed->bLedBlinkInProgress)
1813 _cancel_timer_ex(&(pLed->BlinkTimer));
1814 pLed->bLedBlinkInProgress = _FALSE;
1816 if( pLed->bLedScanBlinkInProgress)
1818 _cancel_timer_ex(&(pLed->BlinkTimer));
1819 pLed->bLedScanBlinkInProgress = _FALSE;
1821 if( pLed->bLedWPSBlinkInProgress )
1823 _cancel_timer_ex(&(pLed->BlinkTimer));
1824 pLed->bLedWPSBlinkInProgress = _FALSE;
1827 _set_timer(&(pLed->BlinkTimer), 0);
1835 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
1839 //Edimax-Belkin, added by chiyoko, 20090413
1843 LED_CTL_MODE LedAction
1846 struct led_priv *ledpriv = &(padapter->ledpriv);
1847 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
1848 PLED_871x pLed = &(ledpriv->SwLed0);
1849 PLED_871x pLed1 = &(ledpriv->SwLed1);
1853 case LED_CTL_START_TO_LINK:
1854 if(pLed1->bLedWPSBlinkInProgress)
1856 pLed1->bLedWPSBlinkInProgress = _FALSE;
1857 _cancel_timer_ex(&(pLed1->BlinkTimer));
1859 pLed1->BlinkingLedState = RTW_LED_OFF;
1860 pLed1->CurrLedState = RTW_LED_OFF;
1863 _set_timer(&(pLed->BlinkTimer), 0);
1866 if( pLed->bLedStartToLinkBlinkInProgress == _FALSE )
1868 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
1872 if(pLed->bLedBlinkInProgress ==_TRUE)
1874 _cancel_timer_ex(&(pLed->BlinkTimer));
1875 pLed->bLedBlinkInProgress = _FALSE;
1877 if(pLed->bLedNoLinkBlinkInProgress ==_TRUE)
1879 _cancel_timer_ex(&(pLed->BlinkTimer));
1880 pLed->bLedNoLinkBlinkInProgress = _FALSE;
1883 pLed->bLedStartToLinkBlinkInProgress = _TRUE;
1884 pLed->CurrLedState = LED_BLINK_StartToBlink;
1887 pLed->BlinkingLedState = RTW_LED_OFF;
1888 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
1892 pLed->BlinkingLedState = RTW_LED_ON;
1893 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1899 case LED_CTL_NO_LINK:
1901 if(LedAction == LED_CTL_LINK)
1903 if(pLed1->bLedWPSBlinkInProgress)
1905 pLed1->bLedWPSBlinkInProgress = _FALSE;
1906 _cancel_timer_ex(&(pLed1->BlinkTimer));
1908 pLed1->BlinkingLedState = RTW_LED_OFF;
1909 pLed1->CurrLedState = RTW_LED_OFF;
1912 _set_timer(&(pLed->BlinkTimer), 0);
1916 if( pLed->bLedNoLinkBlinkInProgress == _FALSE )
1918 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
1922 if(pLed->bLedBlinkInProgress ==_TRUE)
1924 _cancel_timer_ex(&(pLed->BlinkTimer));
1925 pLed->bLedBlinkInProgress = _FALSE;
1928 pLed->bLedNoLinkBlinkInProgress = _TRUE;
1929 pLed->CurrLedState = LED_BLINK_SLOWLY;
1931 pLed->BlinkingLedState = RTW_LED_OFF;
1933 pLed->BlinkingLedState = RTW_LED_ON;
1934 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1938 case LED_CTL_SITE_SURVEY:
1939 if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
1941 else if(pLed->bLedScanBlinkInProgress ==_FALSE)
1943 if(IS_LED_WPS_BLINKING(pLed))
1946 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
1948 _cancel_timer_ex(&(pLed->BlinkTimer));
1949 pLed->bLedNoLinkBlinkInProgress = _FALSE;
1951 if(pLed->bLedBlinkInProgress ==_TRUE)
1953 _cancel_timer_ex(&(pLed->BlinkTimer));
1954 pLed->bLedBlinkInProgress = _FALSE;
1956 pLed->bLedScanBlinkInProgress = _TRUE;
1957 pLed->CurrLedState = LED_BLINK_SCAN;
1958 pLed->BlinkTimes = 24;
1960 pLed->BlinkingLedState = RTW_LED_OFF;
1962 pLed->BlinkingLedState = RTW_LED_ON;
1963 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
1969 if(pLed->bLedBlinkInProgress ==_FALSE)
1971 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
1975 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
1977 _cancel_timer_ex(&(pLed->BlinkTimer));
1978 pLed->bLedNoLinkBlinkInProgress = _FALSE;
1980 pLed->bLedBlinkInProgress = _TRUE;
1981 pLed->CurrLedState = LED_BLINK_TXRX;
1982 pLed->BlinkTimes = 2;
1984 pLed->BlinkingLedState = RTW_LED_OFF;
1986 pLed->BlinkingLedState = RTW_LED_ON;
1987 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1991 case LED_CTL_START_WPS: //wait until xinpin finish
1992 case LED_CTL_START_WPS_BOTTON:
1993 if(pLed1->bLedWPSBlinkInProgress)
1995 pLed1->bLedWPSBlinkInProgress = _FALSE;
1996 _cancel_timer_ex(&(pLed1->BlinkTimer));
1998 pLed1->BlinkingLedState = RTW_LED_OFF;
1999 pLed1->CurrLedState = RTW_LED_OFF;
2002 _set_timer(&(pLed->BlinkTimer), 0);
2005 if(pLed->bLedWPSBlinkInProgress ==_FALSE)
2007 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
2009 _cancel_timer_ex(&(pLed->BlinkTimer));
2010 pLed->bLedNoLinkBlinkInProgress = _FALSE;
2012 if(pLed->bLedBlinkInProgress ==_TRUE)
2014 _cancel_timer_ex(&(pLed->BlinkTimer));
2015 pLed->bLedBlinkInProgress = _FALSE;
2017 if(pLed->bLedScanBlinkInProgress ==_TRUE)
2019 _cancel_timer_ex(&(pLed->BlinkTimer));
2020 pLed->bLedScanBlinkInProgress = _FALSE;
2022 pLed->bLedWPSBlinkInProgress = _TRUE;
2023 pLed->CurrLedState = LED_BLINK_WPS;
2026 pLed->BlinkingLedState = RTW_LED_OFF;
2027 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
2031 pLed->BlinkingLedState = RTW_LED_ON;
2032 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
2037 case LED_CTL_STOP_WPS: //WPS connect success
2038 if(pLed->bLedWPSBlinkInProgress)
2040 _cancel_timer_ex(&(pLed->BlinkTimer));
2041 pLed->bLedWPSBlinkInProgress = _FALSE;
2044 pLed->bLedNoLinkBlinkInProgress = _TRUE;
2045 pLed->CurrLedState = LED_BLINK_SLOWLY;
2047 pLed->BlinkingLedState = RTW_LED_OFF;
2049 pLed->BlinkingLedState = RTW_LED_ON;
2050 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
2054 case LED_CTL_STOP_WPS_FAIL: //WPS authentication fail
2055 if(pLed->bLedWPSBlinkInProgress)
2057 _cancel_timer_ex(&(pLed->BlinkTimer));
2058 pLed->bLedWPSBlinkInProgress = _FALSE;
2061 pLed->bLedNoLinkBlinkInProgress = _TRUE;
2062 pLed->CurrLedState = LED_BLINK_SLOWLY;
2064 pLed->BlinkingLedState = RTW_LED_OFF;
2066 pLed->BlinkingLedState = RTW_LED_ON;
2067 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
2070 if(pLed1->bLedWPSBlinkInProgress)
2071 _cancel_timer_ex(&(pLed1->BlinkTimer));
2073 pLed1->bLedWPSBlinkInProgress = _TRUE;
2075 pLed1->CurrLedState = LED_BLINK_WPS_STOP;
2077 pLed1->BlinkingLedState = RTW_LED_OFF;
2079 pLed1->BlinkingLedState = RTW_LED_ON;
2080 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
2084 case LED_CTL_STOP_WPS_FAIL_OVERLAP: //WPS session overlap
2085 if(pLed->bLedWPSBlinkInProgress)
2087 _cancel_timer_ex(&(pLed->BlinkTimer));
2088 pLed->bLedWPSBlinkInProgress = _FALSE;
2091 pLed->bLedNoLinkBlinkInProgress = _TRUE;
2092 pLed->CurrLedState = LED_BLINK_SLOWLY;
2094 pLed->BlinkingLedState = RTW_LED_OFF;
2096 pLed->BlinkingLedState = RTW_LED_ON;
2097 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
2100 if(pLed1->bLedWPSBlinkInProgress)
2101 _cancel_timer_ex(&(pLed1->BlinkTimer));
2103 pLed1->bLedWPSBlinkInProgress = _TRUE;
2105 pLed1->CurrLedState = LED_BLINK_WPS_STOP_OVERLAP;
2106 pLed1->BlinkTimes = 10;
2108 pLed1->BlinkingLedState = RTW_LED_OFF;
2110 pLed1->BlinkingLedState = RTW_LED_ON;
2111 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
2115 case LED_CTL_POWER_OFF:
2116 pLed->CurrLedState = RTW_LED_OFF;
2117 pLed->BlinkingLedState = RTW_LED_OFF;
2119 if( pLed->bLedNoLinkBlinkInProgress)
2121 _cancel_timer_ex(&(pLed->BlinkTimer));
2122 pLed->bLedNoLinkBlinkInProgress = _FALSE;
2124 if( pLed->bLedLinkBlinkInProgress)
2126 _cancel_timer_ex(&(pLed->BlinkTimer));
2127 pLed->bLedLinkBlinkInProgress = _FALSE;
2129 if( pLed->bLedBlinkInProgress)
2131 _cancel_timer_ex(&(pLed->BlinkTimer));
2132 pLed->bLedBlinkInProgress = _FALSE;
2134 if( pLed->bLedWPSBlinkInProgress )
2136 _cancel_timer_ex(&(pLed->BlinkTimer));
2137 pLed->bLedWPSBlinkInProgress = _FALSE;
2139 if( pLed->bLedScanBlinkInProgress)
2141 _cancel_timer_ex(&(pLed->BlinkTimer));
2142 pLed->bLedScanBlinkInProgress = _FALSE;
2144 if( pLed->bLedStartToLinkBlinkInProgress)
2146 _cancel_timer_ex(&(pLed->BlinkTimer));
2147 pLed->bLedStartToLinkBlinkInProgress = _FALSE;
2150 if( pLed1->bLedWPSBlinkInProgress )
2152 _cancel_timer_ex(&(pLed1->BlinkTimer));
2153 pLed1->bLedWPSBlinkInProgress = _FALSE;
2156 pLed1->BlinkingLedState = LED_UNKNOWN;
2157 SwLedOff(padapter, pLed);
2158 SwLedOff(padapter, pLed1);
2166 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));
2171 //Sercomm-Belkin, added by chiyoko, 20090415
2175 LED_CTL_MODE LedAction
2178 #ifndef CONFIG_LED_REMOVE_HAL
2179 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
2181 struct led_priv *ledpriv = &(padapter->ledpriv);
2182 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
2183 PLED_871x pLed = &(ledpriv->SwLed0);
2185 #ifndef CONFIG_LED_REMOVE_HAL
2186 if(pHalData->EEPROMCustomerID == RT_CID_819x_CAMEO)
2187 pLed = &(ledpriv->SwLed1);
2192 case LED_CTL_POWER_ON:
2193 case LED_CTL_NO_LINK:
2194 case LED_CTL_LINK: //solid blue
2195 pLed->CurrLedState = RTW_LED_ON;
2196 pLed->BlinkingLedState = RTW_LED_ON;
2198 _set_timer(&(pLed->BlinkTimer), 0);
2201 case LED_CTL_SITE_SURVEY:
2202 if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
2204 else if(pLed->bLedScanBlinkInProgress ==_FALSE)
2206 if(pLed->bLedBlinkInProgress ==_TRUE)
2208 _cancel_timer_ex(&(pLed->BlinkTimer));
2209 pLed->bLedBlinkInProgress = _FALSE;
2211 pLed->bLedScanBlinkInProgress = _TRUE;
2212 pLed->CurrLedState = LED_BLINK_SCAN;
2213 pLed->BlinkTimes = 24;
2215 pLed->BlinkingLedState = RTW_LED_OFF;
2217 pLed->BlinkingLedState = RTW_LED_ON;
2218 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
2224 if(pLed->bLedBlinkInProgress ==_FALSE)
2226 if(pLed->CurrLedState == LED_BLINK_SCAN)
2230 pLed->bLedBlinkInProgress = _TRUE;
2231 pLed->CurrLedState = LED_BLINK_TXRX;
2232 pLed->BlinkTimes = 2;
2234 pLed->BlinkingLedState = RTW_LED_OFF;
2236 pLed->BlinkingLedState = RTW_LED_ON;
2237 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
2241 case LED_CTL_POWER_OFF:
2242 pLed->CurrLedState = RTW_LED_OFF;
2243 pLed->BlinkingLedState = RTW_LED_OFF;
2245 if( pLed->bLedBlinkInProgress)
2247 _cancel_timer_ex(&(pLed->BlinkTimer));
2248 pLed->bLedBlinkInProgress = _FALSE;
2251 SwLedOff(padapter, pLed);
2259 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));
2262 //WNC-Corega, added by chiyoko, 20090902
2266 LED_CTL_MODE LedAction
2269 struct led_priv *ledpriv = &(padapter->ledpriv);
2270 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
2271 PLED_871x pLed0 = &(ledpriv->SwLed0);
2275 case LED_CTL_POWER_ON:
2277 case LED_CTL_NO_LINK:
2278 _cancel_timer_ex(&(pLed0->BlinkTimer));
2279 pLed0->CurrLedState = RTW_LED_ON;
2280 pLed0->BlinkingLedState = RTW_LED_ON;
2281 _set_timer(&(pLed0->BlinkTimer), 0);
2284 case LED_CTL_POWER_OFF:
2285 SwLedOff(padapter, pLed0);
2292 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("ledcontrol 6 Led %d\n", pLed0->CurrLedState));
2297 // Handler function of LED Blinking.
2298 // We dispatch acture LED blink action according to LedStrategy.
2300 void BlinkHandler(PLED_871x pLed)
2302 _adapter *padapter = pLed->padapter;
2303 struct led_priv *ledpriv = &(padapter->ledpriv);
2305 //DBG_8723A("%s (%s:%d)\n",__FUNCTION__, current->comm, current->pid);
2307 if( (padapter->bSurpriseRemoved == _TRUE) || ( padapter->bDriverStopped == _TRUE))
2309 //DBG_8723A("%s bSurpriseRemoved:%d, bDriverStopped:%d\n", __FUNCTION__, padapter->bSurpriseRemoved, padapter->bDriverStopped);
2313 switch(ledpriv->LedStrategy)
2344 //RT_TRACE(COMP_LED, DBG_LOUD, ("BlinkWorkItemCallback 0x%x \n", pHalData->LedStrategy));
2353 LED_CTL_MODE LedAction
2356 struct led_priv *ledpriv = &(padapter->ledpriv);
2358 if( (padapter->bSurpriseRemoved == _TRUE) || ( padapter->bDriverStopped == _TRUE)
2359 ||(padapter->hw_init_completed == _FALSE) )
2365 if( ledpriv->bRegUseLed == _FALSE)
2371 //if(priv->bInHctTest)
2374 if( (padapter->pwrctrlpriv.rf_pwrstate != rf_on &&
2375 padapter->pwrctrlpriv.rfoff_reason > RF_CHANGE_BY_PS) &&
2376 (LedAction == LED_CTL_TX || LedAction == LED_CTL_RX ||
2377 LedAction == LED_CTL_SITE_SURVEY ||
2378 LedAction == LED_CTL_LINK ||
2379 LedAction == LED_CTL_NO_LINK ||
2380 LedAction == LED_CTL_POWER_ON) )
2385 switch(ledpriv->LedStrategy)
2388 //SwLedControlMode0(padapter, LedAction);
2392 SwLedControlMode1(padapter, LedAction);
2395 SwLedControlMode2(padapter, LedAction);
2399 SwLedControlMode3(padapter, LedAction);
2403 SwLedControlMode4(padapter, LedAction);
2407 SwLedControlMode5(padapter, LedAction);
2411 SwLedControlMode6(padapter, LedAction);
2418 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("LedStrategy:%d, LedAction %d\n", ledpriv->LedStrategy,LedAction));