root/drivers/staging/rtl8712/rtl871x_led.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */