mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-24 17:59:32 +00:00
![Ali Bahar](/assets/img/avatar_default.png)
Only copyright banners have been added to these files. No functional changes. Signed-off-by: Ali Bahar <ali@internetDog.org> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
124 lines
4.3 KiB
C
124 lines
4.3 KiB
C
/******************************************************************************
|
|
*
|
|
* Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of version 2 of the GNU General Public License as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with
|
|
* this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
|
*
|
|
* 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.*/
|
|
_workitem 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);
|
|
|
|
#endif
|
|
|