// SPDX-License-Identifier: GPL-2.0 /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. * ******************************************************************************/ #include #include #include #include void sw_led_on(struct adapter *padapter, struct LED_871x *pLed) { u8 led_cfg; if (padapter->bSurpriseRemoved || padapter->bDriverStopped) return; led_cfg = usb_read8(padapter, REG_LEDCFG2); usb_write8(padapter, REG_LEDCFG2, (led_cfg & 0xf0) | BIT(5) | BIT(6)); pLed->bLedOn = true; } void sw_led_off(struct adapter *padapter, struct LED_871x *pLed) { u8 led_cfg; if (padapter->bSurpriseRemoved || padapter->bDriverStopped) goto exit; led_cfg = usb_read8(padapter, REG_LEDCFG2);/* 0x4E */ /* Open-drain arrangement for controlling the LED) */ led_cfg &= 0x90; /* Set to software control. */ usb_write8(padapter, REG_LEDCFG2, (led_cfg | BIT(3))); led_cfg = usb_read8(padapter, REG_MAC_PINMUX_CFG); led_cfg &= 0xFE; usb_write8(padapter, REG_MAC_PINMUX_CFG, led_cfg); exit: pLed->bLedOn = false; } void rtw_hal_sw_led_init(struct adapter *padapter) { struct led_priv *pledpriv = &padapter->ledpriv; InitLed871x(padapter, &pledpriv->sw_led); } void rtw_hal_sw_led_deinit(struct adapter *padapter) { struct led_priv *ledpriv = &padapter->ledpriv; DeInitLed871x(&ledpriv->sw_led); }