summaryrefslogtreecommitdiffstats
path: root/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_led.c
diff options
context:
space:
mode:
authorArtur Artamonov <freeartman@wechall.net>2013-08-21 16:52:55 +0300
committerArtur Artamonov <freeartman@wechall.net>2013-08-21 16:52:55 +0300
commitd4bc867ac3afd260e4256e1463b273083769a363 (patch)
tree81c868f33d397d9b61de9ef00c8303fecc9195ca /target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_led.c
parent2789830761da86a4537ab198203138c082b3058e (diff)
parent6e8428d78c98c653f625aa0839437359306f99db (diff)
Merge branch 'realtek-unstable' of git://213.175.90.206/openwrt-realtek into realtek-unstable
Diffstat (limited to 'target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_led.c')
-rw-r--r--target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_led.c139
1 files changed, 90 insertions, 49 deletions
diff --git a/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_led.c b/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_led.c
index 75ae675a2..2690f1959 100644
--- a/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_led.c
+++ b/target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_led.c
@@ -61,18 +61,30 @@ static void set_sw_LED0(struct rtl8192cd_priv *priv, int flag)
if (LED_ROUTE)
set_swGpio_LED(priv, 0, flag);
#else
-
-#if defined(CONFIG_RTL_92C_SUPPORT) || defined(CONFIG_RTL_92D_SUPPORT)
- if (flag)
- RTL_W32(LEDCFG, (RTL_R32(LEDCFG) & 0xfffffff0) | LED0SV);
- else
- RTL_W32(LEDCFG, RTL_R32(LEDCFG) & 0xfffffff0);
-#elif defined(CONFIG_RTL_88E_SUPPORT)
- if (flag)
- RTLWIFINIC_GPIO_write(5, 0);
- else
- RTLWIFINIC_GPIO_write(5, 1);
-#endif
+ if ((GET_CHIP_VER(priv) == VERSION_8188E)||(GET_CHIP_VER(priv) == VERSION_8192E)) {
+ if (flag)
+ RTLWIFINIC_GPIO_write(5, 0);
+ else
+ RTLWIFINIC_GPIO_write(5, 1);
+ }
+ else if ((GET_CHIP_VER(priv) == VERSION_8812E)) {
+ if (flag)
+ RTL_W32(LEDCFG, (RTL_R32(LEDCFG) & 0xfffff0ff) | LED1SV);
+ else
+ RTL_W32(LEDCFG, RTL_R32(LEDCFG) & 0xfffff0ff);
+ }
+ else if (GET_CHIP_VER(priv) == VERSION_8881A) {
+ if (flag)
+ writel(readl(0xb800350c) | BIT(24), 0xb800350c);
+ else
+ writel(readl(0xb800350c) & ~BIT(24), 0xb800350c);
+ }
+ else {
+ if (flag)
+ RTL_W32(LEDCFG, (RTL_R32(LEDCFG) & 0xfffffff0) | LED0SV);
+ else
+ RTL_W32(LEDCFG, RTL_R32(LEDCFG) & 0xfffffff0);
+ }
#endif
}
@@ -83,24 +95,29 @@ static void set_sw_LED1(struct rtl8192cd_priv *priv, int flag)
if (LED_ROUTE)
set_swGpio_LED(priv, 1, flag);
#else
-
-#if defined(CONFIG_RTL_92C_SUPPORT) || defined(CONFIG_RTL_92D_SUPPORT)
-#ifdef CONFIG_RTL_92D_SUPPORT
- if (GET_CHIP_VER(priv) == VERSION_8192D) {
+ if ((GET_CHIP_VER(priv) == VERSION_8188E)||(GET_CHIP_VER(priv) == VERSION_8192E)) {
+#ifdef RTLWIFINIC_GPIO_CONTROL
+ if (flag)
+ RTLWIFINIC_GPIO_write(5, 0);
+ else
+ RTLWIFINIC_GPIO_write(5, 1);
+#endif
+ }
+#if defined(CONFIG_RTL_92D_SUPPORT)
+ else if (GET_CHIP_VER(priv) == VERSION_8192D) {
if (flag)
RTL_W32(LEDCFG, (RTL_R32(LEDCFG) & 0xfffff0ff) | LED1SV_92D);
else
RTL_W32(LEDCFG, RTL_R32(LEDCFG) & 0xfffff0ff);
- } else
-#endif
- {
+ }
+#endif
+ else if (GET_CHIP_VER(priv) == VERSION_8192C){
if (flag)
RTL_W32(LEDCFG, (RTL_R32(LEDCFG) & 0xfffff0ff) | LED1SV);
else
RTL_W32(LEDCFG, RTL_R32(LEDCFG) & 0xfffff0ff);
}
#endif
-#endif
}
@@ -111,20 +128,28 @@ static void set_sw_LED2(struct rtl8192cd_priv *priv, int flag)
set_swGpio_LED(priv, 2, flag);
#else
-#if defined(CONFIG_RTL_92C_SUPPORT) || defined(CONFIG_RTL_92D_SUPPORT)
-#ifdef CONFIG_RTL_92D_SUPPORT
- if (GET_CHIP_VER(priv) == VERSION_8192D) {
+ if ((GET_CHIP_VER(priv) == VERSION_8188E)||(GET_CHIP_VER(priv) == VERSION_8192E)) {
+#ifdef RTLWIFINIC_GPIO_CONTROL
+ if (flag)
+ RTLWIFINIC_GPIO_write(5, 0);
+ else
+ RTLWIFINIC_GPIO_write(5, 1);
+#endif
+ }
+#if defined(CONFIG_RTL_92D_SUPPORT)
+ else if (GET_CHIP_VER(priv) == VERSION_8192D) {
if (flag)
RTL_W32(LEDCFG, (RTL_R32(LEDCFG) & 0xfff0ffff) | LED2SV_92D);
else
RTL_W32(LEDCFG, RTL_R32(LEDCFG) & 0xfff0ffff);
- } else
-#endif
- if (flag)
- RTL_W32(LEDCFG, (RTL_R32(LEDCFG) & 0xfff0ffff) | LED2SV);
- else
- RTL_W32(LEDCFG, RTL_R32(LEDCFG) & 0xfff0ffff);
-#endif
+ }
+#endif
+ else if (GET_CHIP_VER(priv) == VERSION_8192C){
+ if (flag)
+ RTL_W32(LEDCFG, (RTL_R32(LEDCFG) & 0xfff0ffff) | LED2SV);
+ else
+ RTL_W32(LEDCFG, RTL_R32(LEDCFG) & 0xfff0ffff);
+ }
#endif
}
@@ -201,7 +226,7 @@ static void LED_Interval_timeout(void *task_priv)
void enable_sw_LED(struct rtl8192cd_priv *priv, int init)
{
-#if defined(HW_ANT_SWITCH) || defined(SW_ANT_SWITCH)
+#if (defined(HW_ANT_SWITCH) || defined(SW_ANT_SWITCH))&&( defined(CONFIG_RTL_92C_SUPPORT) || defined(CONFIG_RTL_92D_SUPPORT))
int b23 = RTL_R32(LEDCFG) & BIT(23);
#endif
@@ -210,28 +235,43 @@ void enable_sw_LED(struct rtl8192cd_priv *priv, int init)
LED_TYPE = LEDTYPE_SW_LED2_GPIO8_ENABLETXRXDATA ;
// configure mac to use SW LED
-#if defined(CONFIG_RTL_92C_SUPPORT) || defined(CONFIG_RTL_92D_SUPPORT)
- if (LED_TYPE == LEDTYPE_SW_LED2_GPIO10_LINKTXRX)
- RTL_W32(LEDCFG, (RTL_R32(LEDCFG)&0xFF00FFFF) | LED2EN | LED2SV);
+#if defined(CONFIG_RTL_88E_SUPPORT) || defined(CONFIG_WLAN_HAL_8192EE) //mark_ecos
+ if ((GET_CHIP_VER(priv) == VERSION_8188E)||(GET_CHIP_VER(priv) == VERSION_8192E))
+ {
+#ifdef RTLWIFINIC_GPIO_CONTROL
+ RTLWIFINIC_GPIO_config(5, 0x10);
+#endif
+ }
+ else
+#endif
+ if (GET_CHIP_VER(priv) == VERSION_8812E)
+ RTL_W32(LEDCFG, BIT(13) | LED1SV);
+ else if (GET_CHIP_VER(priv) == VERSION_8881A) {
+ writel(readl(0xb8000044) | BIT(15) | BIT(16), 0xb8000044);
+ writel(readl(0xb8003500) & ~BIT(24), 0xb8003500);
+ writel(readl(0xb8003508) | BIT(24), 0xb8003508);
+ writel(readl(0xb800350c) | BIT(24), 0xb800350c);
+ }
+ else {
+ if (LED_TYPE == LEDTYPE_SW_LED2_GPIO10_LINKTXRX)
+ RTL_W32(LEDCFG, (RTL_R32(LEDCFG)&0xFF00FFFF) | LED2EN | LED2SV);
else if (LED_TYPE == LEDTYPE_SW_LED2_GPIO10_ENABLETXRXDATA)
RTL_W32(LEDCFG, (RTL_R32(LEDCFG)&0xFF00FFFF) | LED2EN | LED2SV);
#ifdef CONFIG_RTL_92D_SUPPORT
else if ((LED_TYPE == LEDTYPE_SW_LED2_GPIO10_LINKTXRX_92D) ||
(LED_TYPE == LEDTYPE_SW_LED2_GPIO10_ENABLETXRXDATA_92D))
- RTL_W32(LEDCFG, LED2DIS_92D | LED2SV_92D);
- else if (LED_TYPE == LEDTYPE_SW_LED1_GPIO9_LINKTXRX_92D)
- RTL_W32(LEDCFG, LED1DIS_92D | LED1SV_92D);
-#endif
- else if ((LED_TYPE == LEDTYPE_SW_LED2_GPIO8_LINKTXRX) ||
- (LED_TYPE == LEDTYPE_SW_LED2_GPIO8_ENABLETXRXDATA) ||
- (LED_TYPE == LEDTYPE_SW_LED2_GPIO8_ASOCTXRXDATA) ||
- (LED_TYPE == LEDTYPE_SW_LED2_GPIO8_LINKTXRXDATA))
- RTL_W32(LEDCFG, (RTL_R32(LEDCFG)&0xFF00FFFF) | GP8_LED | LED2EN | LED2SV);
- else
- RTL_W32(LEDCFG, LED2SV | LED1SV | LED0SV);
-#elif defined(CONFIG_RTL_88E_SUPPORT)
- RTLWIFINIC_GPIO_config(5, 0x10);
+ RTL_W32(LEDCFG,(RTL_R32(LEDCFG)&0xFF00FFFF)| LED2DIS_92D | LED2SV_92D);
+ else if (LED_TYPE == LEDTYPE_SW_LED1_GPIO9_LINKTXRX_92D)
+ RTL_W32(LEDCFG, (RTL_R32(LEDCFG)&0xFFFF00FF)|LED1DIS_92D | LED1SV_92D);
#endif
+ else if ((LED_TYPE == LEDTYPE_SW_LED2_GPIO8_LINKTXRX) ||
+ (LED_TYPE == LEDTYPE_SW_LED2_GPIO8_ENABLETXRXDATA) ||
+ (LED_TYPE == LEDTYPE_SW_LED2_GPIO8_ASOCTXRXDATA) ||
+ (LED_TYPE == LEDTYPE_SW_LED2_GPIO8_LINKTXRXDATA))
+ RTL_W32(LEDCFG, (RTL_R32(LEDCFG)&0xFF00FFFF) | GP8_LED | LED2EN | LED2SV);
+ else
+ RTL_W32(LEDCFG, LED2SV | LED1SV | LED0SV);
+ }
priv->pshare->LED_Interval = LED_INTERVAL_TIME;
priv->pshare->LED_Toggle = 0;
@@ -284,14 +324,13 @@ void enable_sw_LED(struct rtl8192cd_priv *priv, int init)
set_sw_LED2(priv, LED_OFF);
}
-#if defined(HW_ANT_SWITCH) || defined(SW_ANT_SWITCH)
+#if (defined(HW_ANT_SWITCH) || defined(SW_ANT_SWITCH))&&( defined(CONFIG_RTL_92C_SUPPORT) || defined(CONFIG_RTL_92D_SUPPORT))
RTL_W32(LEDCFG, b23 | RTL_R32(LEDCFG));
#endif
if (init) {
#ifdef __KERNEL__
init_timer(&priv->pshare->LED_Timer);
- priv->pshare->LED_Timer.expires = jiffies + priv->pshare->LED_Interval;
priv->pshare->LED_Timer.data = (unsigned long) priv;
priv->pshare->LED_Timer.function = &LED_Interval_timeout;
#elif defined(__ECOS)
@@ -531,7 +570,9 @@ static struct rtl8192cd_priv *root_priv = NULL;
void enable_sys_LED(struct rtl8192cd_priv *priv)
{
+#ifdef RTLWIFINIC_GPIO_CONTROL
RTLWIFINIC_GPIO_config(4, 0x10);
+#endif
root_priv = priv;
}