/****************************************************************************** * * Copyright(c) 2007 - 2011 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. * ******************************************************************************/ #include "drv_types.h" #include "rtl8723a_hal.h" #include "rtl8723a_led.h" #include "usb_ops_linux.h" /* */ /* LED object. */ /* */ /* */ /* Prototype of protected function. */ /* */ /* */ /* LED_819xUsb routines. */ /* */ /* Description: */ /* Turn on LED according to LedPin specified. */ void SwLedOn23a(struct rtw_adapter *padapter, struct led_8723a *pLed) { u8 LedCfg = 0; if ((padapter->bSurpriseRemoved == true) || (padapter->bDriverStopped == true)) return; switch (pLed->LedPin) { case LED_PIN_GPIO0: break; case LED_PIN_LED0: /* SW control led0 on. */ rtl8723au_write8(padapter, REG_LEDCFG0, (LedCfg&0xf0)|BIT(5)|BIT(6)); break; case LED_PIN_LED1: /* SW control led1 on. */ rtl8723au_write8(padapter, REG_LEDCFG1, (LedCfg&0x00)|BIT(6)); break; case LED_PIN_LED2: LedCfg = rtl8723au_read8(padapter, REG_LEDCFG2); /* SW control led1 on. */ rtl8723au_write8(padapter, REG_LEDCFG2, (LedCfg&0x80)|BIT(5)); break; default: break; } pLed->bLedOn = true; } /* Description: */ /* Turn off LED according to LedPin specified. */ void SwLedOff23a(struct rtw_adapter *padapter, struct led_8723a *pLed) { u8 LedCfg = 0; /* struct hal_data_8723a *pHalData = GET_HAL_DATA(padapter); */ if ((padapter->bSurpriseRemoved) || (padapter->bDriverStopped)) goto exit; switch (pLed->LedPin) { case LED_PIN_GPIO0: break; case LED_PIN_LED0: /* SW control led0 on. */ rtl8723au_write8(padapter, REG_LEDCFG0, (LedCfg&0xf0)|BIT(5)|BIT(6)); break; case LED_PIN_LED1: /* SW control led1 on. */ rtl8723au_write8(padapter, REG_LEDCFG1, (LedCfg&0x00)|BIT(5)|BIT(6)); break; case LED_PIN_LED2: LedCfg = rtl8723au_read8(padapter, REG_LEDCFG2); /* SW control led1 on. */ rtl8723au_write8(padapter, REG_LEDCFG2, (LedCfg&0x80)|BIT(3)|BIT(5)); break; default: break; } exit: pLed->bLedOn = false; } /* Interface to manipulate LED objects. */ /* Description: */ /* Initialize all LED_871x objects. */ void rtl8723au_InitSwLeds(struct rtw_adapter *padapter) { struct led_priv *pledpriv = &padapter->ledpriv; pledpriv->LedControlHandler = LedControl871x23a; /* 8723as-vau wifi used led2 */ InitLed871x23a(padapter, &pledpriv->SwLed0, LED_PIN_LED2); /* InitLed871x23a(padapter,&pledpriv->SwLed1, LED_PIN_LED2); */ } /* Description: */ /* DeInitialize all LED_819xUsb objects. */ void rtl8723au_DeInitSwLeds(struct rtw_adapter *padapter) { struct led_priv *ledpriv = &padapter->ledpriv; DeInitLed871x23a(&ledpriv->SwLed0); }