diff options
| author | Artur Artamonov <freeartman@wechall.net> | 2013-08-21 16:52:55 +0300 |
|---|---|---|
| committer | Artur Artamonov <freeartman@wechall.net> | 2013-08-21 16:52:55 +0300 |
| commit | d4bc867ac3afd260e4256e1463b273083769a363 (patch) | |
| tree | 81c868f33d397d9b61de9ef00c8303fecc9195ca /target/linux/realtek/files/drivers/net/wireless/rtl8192cd/8192cd_led.c | |
| parent | 2789830761da86a4537ab198203138c082b3058e (diff) | |
| parent | 6e8428d78c98c653f625aa0839437359306f99db (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.c | 139 |
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; } |
