Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | /* SPDX-License-Identifier: GPL-2.0 */ /****************************************************************************** * * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved. * * Modifications for inclusion into the Linux staging tree are * Copyright(c) 2010 Larry Finger. All rights reserved. * * Contact information: * WLAN FAE <wlanfae@realtek.com> * Larry Finger <Larry.Finger@lwfinger.net> * ******************************************************************************/ #ifndef __RTL8712_LED_H #define __RTL8712_LED_H #include "osdep_service.h" #include "drv_types.h" /*=========================================================================== * LED customization. *=========================================================================== */ enum LED_CTL_MODE { LED_CTL_POWER_ON = 1, LED_CTL_LINK = 2, LED_CTL_NO_LINK = 3, LED_CTL_TX = 4, LED_CTL_RX = 5, LED_CTL_SITE_SURVEY = 6, LED_CTL_POWER_OFF = 7, LED_CTL_START_TO_LINK = 8, LED_CTL_START_WPS = 9, LED_CTL_STOP_WPS = 10, LED_CTL_START_WPS_BOTTON = 11, LED_CTL_STOP_WPS_FAIL = 12, LED_CTL_STOP_WPS_FAIL_OVERLAP = 13, }; #define IS_LED_WPS_BLINKING(_LED_871x) \ (((struct LED_871x *)_LED_871x)->CurrLedState == LED_BLINK_WPS \ || ((struct LED_871x *)_LED_871x)->CurrLedState == LED_BLINK_WPS_STOP \ || ((struct LED_871x *)_LED_871x)->bLedWPSBlinkInProgress) #define IS_LED_BLINKING(_LED_871x) \ (((struct LED_871x *)_LED_871x)->bLedWPSBlinkInProgress \ || ((struct LED_871x *)_LED_871x)->bLedScanBlinkInProgress) enum LED_PIN_871x { LED_PIN_GPIO0, LED_PIN_LED0, LED_PIN_LED1 }; /*=========================================================================== * LED customization. *=========================================================================== */ enum LED_STRATEGY_871x { SW_LED_MODE0, /* SW control 1 LED via GPIO0. It is default option. */ SW_LED_MODE1, /* 2 LEDs, through LED0 and LED1. For ALPHA. */ SW_LED_MODE2, /* SW control 1 LED via GPIO0, * custom for AzWave 8187 minicard. */ SW_LED_MODE3, /* SW control 1 LED via GPIO0, * customized for Sercomm Printer Server case. */ SW_LED_MODE4, /*for Edimax / Belkin*/ SW_LED_MODE5, /*for Sercomm / Belkin*/ SW_LED_MODE6, /*for WNC / Corega*/ HW_LED, /* HW control 2 LEDs, LED0 and LED1 (there are 4 different * control modes, see MAC.CONFIG1 for details.) */ }; struct LED_871x { struct _adapter *padapter; enum LED_PIN_871x LedPin; /* Implementation for this SW led. */ u32 CurrLedState; /* Current LED state. */ u8 bLedOn; /* true if LED is ON */ u8 bSWLedCtrl; u8 bLedBlinkInProgress; /*true if blinking */ u8 bLedNoLinkBlinkInProgress; u8 bLedLinkBlinkInProgress; u8 bLedStartToLinkBlinkInProgress; u8 bLedScanBlinkInProgress; u8 bLedWPSBlinkInProgress; u32 BlinkTimes; /* No. times to toggle for blink.*/ u32 BlinkingLedState; /* Next state for blinking, * either LED_ON or OFF. */ struct timer_list BlinkTimer; /* Timer object for led blinking.*/ struct work_struct BlinkWorkItem; /* Workitem used by BlinkTimer */ }; struct led_priv { /* add for led control */ struct LED_871x SwLed0; struct LED_871x SwLed1; enum LED_STRATEGY_871x LedStrategy; u8 bRegUseLed; void (*LedControlHandler)(struct _adapter *padapter, enum LED_CTL_MODE LedAction); /* add for led control */ }; /*=========================================================================== * Interface to manipulate LED objects. *=========================================================================== */ void r8712_InitSwLeds(struct _adapter *padapter); void r8712_DeInitSwLeds(struct _adapter *padapter); void LedControl871x(struct _adapter *padapter, enum LED_CTL_MODE LedAction); void r8712_flush_led_works(struct _adapter *padapter); #endif |