mirror of
https://github.com/armbian/build.git
synced 2025-08-09 20:56:57 +02:00
* Add new patches from the tag orange-pi-5.16-20220205-1958
* Remove mutually exclusive patches
* Add, sort next patches for series armbian 5.16
* Add next armbian patches to series.conf
* Swich BRANCH for sunxi: legacy=5.10 current=5.15 edge=5.16
Signed-off-by: The-going <48602507+The-going@users.noreply.github.com>
* Add upstream megous 5.16 patch to 5.15
* Add wifi rtl8723cs patches to series armbian
* Add a new one, remove old patches that are already in the kernel
* Add redesigned patches for 5.15 to the armbian series
* Remove unused patches
* Finish line
* The old rtl8723cs driver is disabled by default.
* Enable the old rtl8723cs driver by default.
* Comment enable\disable the old driver rtl8723cs-old
* Revert "Swich BRANCH for sunxi: legacy=5.10 current=5.15 edge=5.16"
This reverts commit aad1e92b5e
.
857 lines
27 KiB
Diff
857 lines
27 KiB
Diff
From 727d4c6e7155b838cf1cd76f3ced4bade954ad07 Mon Sep 17 00:00:00 2001
|
|
From: The-going <48602507+The-going@users.noreply.github.com>
|
|
Date: Mon, 7 Feb 2022 15:15:59 +0300
|
|
Subject: [PATCH 5/9] drv:net:rtl8723cs: platform
|
|
|
|
---
|
|
.../platform/platform_ARM_SUN50IW1P1_sdio.c | 91 +++++++++++
|
|
.../platform/platform_ARM_SUNnI_sdio.c | 135 +++++++++++++++++
|
|
.../platform/platform_ARM_SUNxI_sdio.c | 95 ++++++++++++
|
|
.../platform/platform_ARM_SUNxI_usb.c | 142 ++++++++++++++++++
|
|
.../platform/platform_ARM_WMT_sdio.c | 51 +++++++
|
|
.../rtl8723cs/platform/platform_RTK_DMP_usb.c | 36 +++++
|
|
.../platform/platform_arm_act_sdio.c | 58 +++++++
|
|
.../realtek/rtl8723cs/platform/platform_ops.c | 37 +++++
|
|
.../realtek/rtl8723cs/platform/platform_ops.h | 31 ++++
|
|
.../rtl8723cs/platform/platform_sprd_sdio.c | 89 +++++++++++
|
|
10 files changed, 765 insertions(+)
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUN50IW1P1_sdio.c
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNnI_sdio.c
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNxI_sdio.c
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNxI_usb.c
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_WMT_sdio.c
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8723cs/platform/platform_RTK_DMP_usb.c
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8723cs/platform/platform_arm_act_sdio.c
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8723cs/platform/platform_ops.c
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8723cs/platform/platform_ops.h
|
|
create mode 100644 drivers/net/wireless/realtek/rtl8723cs/platform/platform_sprd_sdio.c
|
|
|
|
diff --git a/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUN50IW1P1_sdio.c b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUN50IW1P1_sdio.c
|
|
new file mode 100644
|
|
index 000000000..8e78cce64
|
|
--- /dev/null
|
|
+++ b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUN50IW1P1_sdio.c
|
|
@@ -0,0 +1,91 @@
|
|
+/******************************************************************************
|
|
+ *
|
|
+ * Copyright(c) 2013 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
|
|
+ *
|
|
+ *
|
|
+ ******************************************************************************/
|
|
+/*
|
|
+ * Description:
|
|
+ * This file can be applied to following platforms:
|
|
+ * CONFIG_PLATFORM_ARM_SUN50IW1P1
|
|
+ */
|
|
+#include <drv_types.h>
|
|
+#ifdef CONFIG_GPIO_WAKEUP
|
|
+#include <linux/gpio.h>
|
|
+#endif
|
|
+
|
|
+#ifdef CONFIG_MMC
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN50IW1P1)
|
|
+extern void sunxi_mmc_rescan_card(unsigned ids);
|
|
+extern void sunxi_wlan_set_power(int on);
|
|
+extern int sunxi_wlan_get_bus_index(void);
|
|
+extern int sunxi_wlan_get_oob_irq(void);
|
|
+extern int sunxi_wlan_get_oob_irq_flags(void);
|
|
+#endif
|
|
+#ifdef CONFIG_GPIO_WAKEUP
|
|
+extern unsigned int oob_irq;
|
|
+#endif
|
|
+#endif // CONFIG_MMC
|
|
+
|
|
+/*
|
|
+ * Return:
|
|
+ * 0: power on successfully
|
|
+ * others: power on failed
|
|
+ */
|
|
+int platform_wifi_power_on(void)
|
|
+{
|
|
+ int ret = 0;
|
|
+
|
|
+#ifdef CONFIG_MMC
|
|
+{
|
|
+
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN50IW1P1)
|
|
+ int wlan_bus_index = sunxi_wlan_get_bus_index();
|
|
+ if(wlan_bus_index < 0)
|
|
+ return wlan_bus_index;
|
|
+
|
|
+ sunxi_wlan_set_power(1);
|
|
+ mdelay(100);
|
|
+ sunxi_mmc_rescan_card(wlan_bus_index);
|
|
+#endif
|
|
+ DBG_871X("%s: power up, rescan card.\n", __FUNCTION__);
|
|
+
|
|
+#ifdef CONFIG_GPIO_WAKEUP
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN50IW1P1)
|
|
+ oob_irq = sunxi_wlan_get_oob_irq();
|
|
+#endif
|
|
+#endif // CONFIG_GPIO_WAKEUP
|
|
+}
|
|
+#endif // CONFIG_MMC
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+void platform_wifi_power_off(void)
|
|
+{
|
|
+#ifdef CONFIG_MMC
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN50IW1P1)
|
|
+ int wlan_bus_index = sunxi_wlan_get_bus_index();
|
|
+ if(wlan_bus_index < 0)
|
|
+ return;
|
|
+
|
|
+ sunxi_mmc_rescan_card(wlan_bus_index);
|
|
+ mdelay(100);
|
|
+ sunxi_wlan_set_power(0);
|
|
+#endif
|
|
+ DBG_871X("%s: remove card, power off.\n", __FUNCTION__);
|
|
+#endif // CONFIG_MMC
|
|
+}
|
|
diff --git a/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNnI_sdio.c b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNnI_sdio.c
|
|
new file mode 100644
|
|
index 000000000..5484415c0
|
|
--- /dev/null
|
|
+++ b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNnI_sdio.c
|
|
@@ -0,0 +1,135 @@
|
|
+/******************************************************************************
|
|
+ *
|
|
+ * Copyright(c) 2013 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
|
|
+ *
|
|
+ *
|
|
+ ******************************************************************************/
|
|
+/*
|
|
+ * Description:
|
|
+ * This file can be applied to following platforms:
|
|
+ * CONFIG_PLATFORM_ARM_SUN6I
|
|
+ * CONFIG_PLATFORM_ARM_SUN7I
|
|
+ * CONFIG_PLATFORM_ARM_SUN8I
|
|
+ */
|
|
+#include <drv_types.h>
|
|
+#include <mach/sys_config.h>
|
|
+#ifdef CONFIG_GPIO_WAKEUP
|
|
+#include <linux/gpio.h>
|
|
+#endif
|
|
+
|
|
+#ifdef CONFIG_MMC
|
|
+static int sdc_id = -1;
|
|
+static signed int gpio_eint_wlan = -1;
|
|
+static u32 eint_wlan_handle = 0;
|
|
+
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN6I) || defined(CONFIG_PLATFORM_ARM_SUN7I)
|
|
+extern void sw_mci_rescan_card(unsigned id, unsigned insert);
|
|
+#elif defined(CONFIG_PLATFORM_ARM_SUN8I)
|
|
+extern void sunxi_mci_rescan_card(unsigned id, unsigned insert);
|
|
+#endif
|
|
+
|
|
+#ifdef CONFIG_PLATFORM_ARM_SUN8I_W5P1
|
|
+extern int get_rf_mod_type(void);
|
|
+#else
|
|
+extern int wifi_pm_get_mod_type(void);
|
|
+#endif
|
|
+
|
|
+extern void wifi_pm_power(int on);
|
|
+#ifdef CONFIG_GPIO_WAKEUP
|
|
+extern unsigned int oob_irq;
|
|
+#endif
|
|
+#endif // CONFIG_MMC
|
|
+
|
|
+/*
|
|
+ * Return:
|
|
+ * 0: power on successfully
|
|
+ * others: power on failed
|
|
+ */
|
|
+int platform_wifi_power_on(void)
|
|
+{
|
|
+ int ret = 0;
|
|
+
|
|
+#ifdef CONFIG_MMC
|
|
+{
|
|
+ script_item_u val;
|
|
+ script_item_value_type_e type;
|
|
+
|
|
+#ifdef CONFIG_PLATFORM_ARM_SUN8I_W5P1
|
|
+ unsigned int mod_sel = get_rf_mod_type();
|
|
+#else
|
|
+ unsigned int mod_sel = wifi_pm_get_mod_type();
|
|
+#endif
|
|
+
|
|
+ type = script_get_item("wifi_para", "wifi_sdc_id", &val);
|
|
+ if (SCIRPT_ITEM_VALUE_TYPE_INT!=type) {
|
|
+ DBG_871X("get wifi_sdc_id failed\n");
|
|
+ ret = -1;
|
|
+ } else {
|
|
+ sdc_id = val.val;
|
|
+ DBG_871X("----- %s sdc_id: %d, mod_sel: %d\n", __FUNCTION__, sdc_id, mod_sel);
|
|
+
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN6I) || defined(CONFIG_PLATFORM_ARM_SUN7I)
|
|
+ sw_mci_rescan_card(sdc_id, 1);
|
|
+#elif defined(CONFIG_PLATFORM_ARM_SUN8I)
|
|
+ sunxi_mci_rescan_card(sdc_id, 1);
|
|
+#endif
|
|
+ mdelay(100);
|
|
+ wifi_pm_power(1);
|
|
+
|
|
+ DBG_871X("%s: power up, rescan card.\n", __FUNCTION__);
|
|
+ }
|
|
+
|
|
+#ifdef CONFIG_GPIO_WAKEUP
|
|
+#ifdef CONFIG_PLATFORM_ARM_SUN8I_W5P1
|
|
+ type = script_get_item("wifi_para", "wl_host_wake", &val);
|
|
+#else
|
|
+#ifdef CONFIG_RTL8723B
|
|
+ type = script_get_item("wifi_para", "rtl8723bs_wl_host_wake", &val);
|
|
+#endif
|
|
+#ifdef CONFIG_RTL8188E
|
|
+ type = script_get_item("wifi_para", "rtl8189es_host_wake", &val);
|
|
+#endif
|
|
+#endif /* CONFIG_PLATFORM_ARM_SUN8I_W5P1 */
|
|
+ if (SCIRPT_ITEM_VALUE_TYPE_PIO != type) {
|
|
+ DBG_871X("No definition of wake up host PIN\n");
|
|
+ ret = -1;
|
|
+ } else {
|
|
+ gpio_eint_wlan = val.gpio.gpio;
|
|
+#ifdef CONFIG_PLATFORM_ARM_SUN8I
|
|
+ oob_irq = gpio_to_irq(gpio_eint_wlan);
|
|
+#endif
|
|
+ }
|
|
+#endif // CONFIG_GPIO_WAKEUP
|
|
+}
|
|
+#endif // CONFIG_MMC
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+void platform_wifi_power_off(void)
|
|
+{
|
|
+#ifdef CONFIG_MMC
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN6I) ||defined(CONFIG_PLATFORM_ARM_SUN7I)
|
|
+ sw_mci_rescan_card(sdc_id, 0);
|
|
+#elif defined(CONFIG_PLATFORM_ARM_SUN8I)
|
|
+ sunxi_mci_rescan_card(sdc_id, 0);
|
|
+#endif
|
|
+ mdelay(100);
|
|
+ wifi_pm_power(0);
|
|
+
|
|
+ DBG_871X("%s: remove card, power off.\n", __FUNCTION__);
|
|
+#endif // CONFIG_MMC
|
|
+}
|
|
diff --git a/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNxI_sdio.c b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNxI_sdio.c
|
|
new file mode 100644
|
|
index 000000000..770f93506
|
|
--- /dev/null
|
|
+++ b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNxI_sdio.c
|
|
@@ -0,0 +1,95 @@
|
|
+/******************************************************************************
|
|
+ *
|
|
+ * Copyright(c) 2013 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
|
|
+ *
|
|
+ *
|
|
+ ******************************************************************************/
|
|
+#include <drv_types.h>
|
|
+
|
|
+#ifdef CONFIG_MMC_SUNXI_POWER_CONTROL
|
|
+#ifdef CONFIG_WITS_EVB_V13
|
|
+#define SDIOID 0
|
|
+#else // !CONFIG_WITS_EVB_V13
|
|
+#define SDIOID (CONFIG_CHIP_ID==1123 ? 3 : 1)
|
|
+#endif // !CONFIG_WITS_EVB_V13
|
|
+
|
|
+#define SUNXI_SDIO_WIFI_NUM_RTL8189ES 10
|
|
+extern void sunximmc_rescan_card(unsigned id, unsigned insert);
|
|
+extern int mmc_pm_get_mod_type(void);
|
|
+extern int mmc_pm_gpio_ctrl(char* name, int level);
|
|
+/*
|
|
+ * rtl8189es_shdn = port:PH09<1><default><default><0>
|
|
+ * rtl8189es_wakeup = port:PH10<1><default><default><1>
|
|
+ * rtl8189es_vdd_en = port:PH11<1><default><default><0>
|
|
+ * rtl8189es_vcc_en = port:PH12<1><default><default><0>
|
|
+ */
|
|
+
|
|
+int rtl8189es_sdio_powerup(void)
|
|
+{
|
|
+ mmc_pm_gpio_ctrl("rtl8189es_vdd_en", 1);
|
|
+ udelay(100);
|
|
+ mmc_pm_gpio_ctrl("rtl8189es_vcc_en", 1);
|
|
+ udelay(50);
|
|
+ mmc_pm_gpio_ctrl("rtl8189es_shdn", 1);
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+int rtl8189es_sdio_poweroff(void)
|
|
+{
|
|
+ mmc_pm_gpio_ctrl("rtl8189es_shdn", 0);
|
|
+ mmc_pm_gpio_ctrl("rtl8189es_vcc_en", 0);
|
|
+ mmc_pm_gpio_ctrl("rtl8189es_vdd_en", 0);
|
|
+ return 0;
|
|
+}
|
|
+#endif // CONFIG_MMC_SUNXI_POWER_CONTROL
|
|
+
|
|
+/*
|
|
+ * Return:
|
|
+ * 0: power on successfully
|
|
+ * others: power on failed
|
|
+ */
|
|
+int platform_wifi_power_on(void)
|
|
+{
|
|
+ int ret = 0;
|
|
+#ifdef CONFIG_MMC_SUNXI_POWER_CONTROL
|
|
+ unsigned int mod_sel = mmc_pm_get_mod_type();
|
|
+#endif // CONFIG_MMC_SUNXI_POWER_CONTROL
|
|
+
|
|
+
|
|
+#ifdef CONFIG_MMC_SUNXI_POWER_CONTROL
|
|
+ if (mod_sel == SUNXI_SDIO_WIFI_NUM_RTL8189ES) {
|
|
+ rtl8189es_sdio_powerup();
|
|
+ sunximmc_rescan_card(SDIOID, 1);
|
|
+ printk("[rtl8189es] %s: power up, rescan card.\n", __FUNCTION__);
|
|
+ } else {
|
|
+ ret = -1;
|
|
+ printk("[rtl8189es] %s: mod_sel = %d is incorrect.\n", __FUNCTION__, mod_sel);
|
|
+ }
|
|
+#endif // CONFIG_MMC_SUNXI_POWER_CONTROL
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+void platform_wifi_power_off(void)
|
|
+{
|
|
+#ifdef CONFIG_MMC_SUNXI_POWER_CONTROL
|
|
+ sunximmc_rescan_card(SDIOID, 0);
|
|
+#ifdef CONFIG_RTL8188E
|
|
+ rtl8189es_sdio_poweroff();
|
|
+ printk("[rtl8189es] %s: remove card, power off.\n", __FUNCTION__);
|
|
+#endif // CONFIG_RTL8188E
|
|
+#endif // CONFIG_MMC_SUNXI_POWER_CONTROL
|
|
+}
|
|
diff --git a/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNxI_usb.c b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNxI_usb.c
|
|
new file mode 100644
|
|
index 000000000..774392bdd
|
|
--- /dev/null
|
|
+++ b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_SUNxI_usb.c
|
|
@@ -0,0 +1,142 @@
|
|
+/******************************************************************************
|
|
+ *
|
|
+ * Copyright(c) 2013 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
|
|
+ *
|
|
+ *
|
|
+ ******************************************************************************/
|
|
+/*
|
|
+ * Description:
|
|
+ * This file can be applied to following platforms:
|
|
+ * CONFIG_PLATFORM_ARM_SUNXI Series platform
|
|
+ *
|
|
+ */
|
|
+
|
|
+#include <drv_types.h>
|
|
+#include <mach/sys_config.h>
|
|
+
|
|
+#ifdef CONFIG_PLATFORM_ARM_SUNxI
|
|
+extern int sw_usb_disable_hcd(__u32 usbc_no);
|
|
+extern int sw_usb_enable_hcd(__u32 usbc_no);
|
|
+static int usb_wifi_host = 2;
|
|
+#endif
|
|
+
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN6I) || defined(CONFIG_PLATFORM_ARM_SUN7I)
|
|
+extern int sw_usb_disable_hcd(__u32 usbc_no);
|
|
+extern int sw_usb_enable_hcd(__u32 usbc_no);
|
|
+extern void wifi_pm_power(int on);
|
|
+static script_item_u item;
|
|
+#endif
|
|
+
|
|
+#ifdef CONFIG_PLATFORM_ARM_SUN8I
|
|
+extern int sunxi_usb_disable_hcd(__u32 usbc_no);
|
|
+extern int sunxi_usb_enable_hcd(__u32 usbc_no);
|
|
+extern void wifi_pm_power(int on);
|
|
+static script_item_u item;
|
|
+#endif
|
|
+
|
|
+
|
|
+int platform_wifi_power_on(void)
|
|
+{
|
|
+ int ret = 0;
|
|
+
|
|
+#ifdef CONFIG_PLATFORM_ARM_SUNxI
|
|
+#ifndef CONFIG_RTL8723A
|
|
+ {
|
|
+ /* ----------get usb_wifi_usbc_num------------- */
|
|
+ ret = script_parser_fetch("usb_wifi_para", "usb_wifi_usbc_num", (int *)&usb_wifi_host, 64);
|
|
+ if(ret != 0){
|
|
+ DBG_8192C("ERR: script_parser_fetch usb_wifi_usbc_num failed\n");
|
|
+ ret = -ENOMEM;
|
|
+ goto exit;
|
|
+ }
|
|
+ DBG_8192C("sw_usb_enable_hcd: usbc_num = %d\n", usb_wifi_host);
|
|
+ sw_usb_enable_hcd(usb_wifi_host);
|
|
+ }
|
|
+#endif //CONFIG_RTL8723A
|
|
+#endif //CONFIG_PLATFORM_ARM_SUNxI
|
|
+
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN6I) || defined(CONFIG_PLATFORM_ARM_SUN7I)
|
|
+ {
|
|
+ script_item_value_type_e type;
|
|
+
|
|
+ type = script_get_item("wifi_para", "wifi_usbc_id", &item);
|
|
+ if(SCIRPT_ITEM_VALUE_TYPE_INT != type){
|
|
+ printk("ERR: script_get_item wifi_usbc_id failed\n");
|
|
+ ret = -ENOMEM;
|
|
+ goto exit;
|
|
+ }
|
|
+
|
|
+ printk("sw_usb_enable_hcd: usbc_num = %d\n", item.val);
|
|
+ wifi_pm_power(1);
|
|
+ mdelay(10);
|
|
+
|
|
+ #if !(defined(CONFIG_RTL8723A)) && !(defined(CONFIG_RTL8723B))
|
|
+ sw_usb_enable_hcd(item.val);
|
|
+ #endif
|
|
+ }
|
|
+#endif //defined(CONFIG_PLATFORM_ARM_SUN6I) || defined(CONFIG_PLATFORM_ARM_SUN7I)
|
|
+
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN8I)
|
|
+ {
|
|
+ script_item_value_type_e type;
|
|
+
|
|
+ type = script_get_item("wifi_para", "wifi_usbc_id", &item);
|
|
+ if(SCIRPT_ITEM_VALUE_TYPE_INT != type){
|
|
+ printk("ERR: script_get_item wifi_usbc_id failed\n");
|
|
+ ret = -ENOMEM;
|
|
+ goto exit;
|
|
+ }
|
|
+
|
|
+ printk("sw_usb_enable_hcd: usbc_num = %d\n", item.val);
|
|
+ wifi_pm_power(1);
|
|
+ mdelay(10);
|
|
+
|
|
+ #if !(defined(CONFIG_RTL8723A)) && !(defined(CONFIG_RTL8723B))
|
|
+ sunxi_usb_enable_hcd(item.val);
|
|
+ #endif
|
|
+ }
|
|
+#endif //CONFIG_PLATFORM_ARM_SUN8I
|
|
+
|
|
+exit:
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+void platform_wifi_power_off(void)
|
|
+{
|
|
+
|
|
+#ifdef CONFIG_PLATFORM_ARM_SUNxI
|
|
+#ifndef CONFIG_RTL8723A
|
|
+ DBG_8192C("sw_usb_disable_hcd: usbc_num = %d\n", usb_wifi_host);
|
|
+ sw_usb_disable_hcd(usb_wifi_host);
|
|
+#endif //ifndef CONFIG_RTL8723A
|
|
+#endif //CONFIG_PLATFORM_ARM_SUNxI
|
|
+
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN6I) || defined(CONFIG_PLATFORM_ARM_SUN7I)
|
|
+ #if !(defined(CONFIG_RTL8723A)) && !(defined(CONFIG_RTL8723B))
|
|
+ sw_usb_disable_hcd(item.val);
|
|
+ #endif
|
|
+ wifi_pm_power(0);
|
|
+#endif //defined(CONFIG_PLATFORM_ARM_SUN6I) || defined(CONFIG_PLATFORM_ARM_SUN7I)
|
|
+
|
|
+#if defined(CONFIG_PLATFORM_ARM_SUN8I)
|
|
+ #if !(defined(CONFIG_RTL8723A)) && !(defined(CONFIG_RTL8723B))
|
|
+ sunxi_usb_disable_hcd(item.val);
|
|
+ #endif
|
|
+ wifi_pm_power(0);
|
|
+#endif //defined(CONFIG_PLATFORM_ARM_SUN8I)
|
|
+
|
|
+}
|
|
+
|
|
diff --git a/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_WMT_sdio.c b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_WMT_sdio.c
|
|
new file mode 100644
|
|
index 000000000..e994ea51d
|
|
--- /dev/null
|
|
+++ b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ARM_WMT_sdio.c
|
|
@@ -0,0 +1,51 @@
|
|
+/******************************************************************************
|
|
+ *
|
|
+ * Copyright(c) 2013 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
|
|
+ *
|
|
+ *
|
|
+ ******************************************************************************/
|
|
+#include <drv_types.h>
|
|
+#include <mach/wmt_iomux.h>
|
|
+#include <linux/gpio.h>
|
|
+
|
|
+extern void wmt_detect_sdio2(void);
|
|
+extern void force_remove_sdio2(void);
|
|
+
|
|
+int platform_wifi_power_on(void)
|
|
+{
|
|
+ int err = 0;
|
|
+ err = gpio_request(WMT_PIN_GP62_SUSGPIO1, "wifi_chip_en");
|
|
+ if (err < 0){
|
|
+ printk("request gpio for rtl8188eu failed!\n");
|
|
+ return err;
|
|
+ }
|
|
+ gpio_direction_output(WMT_PIN_GP62_SUSGPIO1, 0);//pull sus_gpio1 to 0 to open vcc_wifi.
|
|
+ printk("power on rtl8189.\n");
|
|
+ msleep(500);
|
|
+ wmt_detect_sdio2();
|
|
+ printk("[rtl8189es] %s: new card, power on.\n", __FUNCTION__);
|
|
+ return err;
|
|
+}
|
|
+
|
|
+void platform_wifi_power_off(void)
|
|
+{
|
|
+ force_remove_sdio2();
|
|
+
|
|
+ gpio_direction_output(WMT_PIN_GP62_SUSGPIO1, 1);//pull sus_gpio1 to 1 to close vcc_wifi.
|
|
+ printk("power off rtl8189.\n");
|
|
+ gpio_free(WMT_PIN_GP62_SUSGPIO1);
|
|
+ printk("[rtl8189es] %s: remove card, power off.\n", __FUNCTION__);
|
|
+}
|
|
diff --git a/drivers/net/wireless/realtek/rtl8723cs/platform/platform_RTK_DMP_usb.c b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_RTK_DMP_usb.c
|
|
new file mode 100644
|
|
index 000000000..d296641f1
|
|
--- /dev/null
|
|
+++ b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_RTK_DMP_usb.c
|
|
@@ -0,0 +1,36 @@
|
|
+/******************************************************************************
|
|
+ *
|
|
+ * Copyright(c) 2013 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
|
|
+ *
|
|
+ *
|
|
+ ******************************************************************************/
|
|
+#include <drv_types.h>
|
|
+
|
|
+int platform_wifi_power_on(void)
|
|
+{
|
|
+ int ret = 0;
|
|
+ u32 tmp;
|
|
+ tmp=readl((volatile unsigned int*)0xb801a608);
|
|
+ tmp &= 0xffffff00;
|
|
+ tmp |= 0x55;
|
|
+ writel(tmp,(volatile unsigned int*)0xb801a608);//write dummy register for 1055
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+void platform_wifi_power_off(void)
|
|
+{
|
|
+}
|
|
+
|
|
diff --git a/drivers/net/wireless/realtek/rtl8723cs/platform/platform_arm_act_sdio.c b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_arm_act_sdio.c
|
|
new file mode 100644
|
|
index 000000000..539bb178c
|
|
--- /dev/null
|
|
+++ b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_arm_act_sdio.c
|
|
@@ -0,0 +1,58 @@
|
|
+/******************************************************************************
|
|
+ *
|
|
+ * Copyright(c) 2013 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
|
|
+ *
|
|
+ *
|
|
+ ******************************************************************************/
|
|
+/*
|
|
+ * Description:
|
|
+ * This file can be applied to following platforms:
|
|
+ * CONFIG_PLATFORM_ACTIONS_ATM703X
|
|
+ */
|
|
+#include <drv_types.h>
|
|
+
|
|
+#ifdef CONFIG_PLATFORM_ACTIONS_ATM705X
|
|
+extern int acts_wifi_init(void);
|
|
+extern void acts_wifi_cleanup(void);
|
|
+#endif
|
|
+
|
|
+/*
|
|
+ * Return:
|
|
+ * 0: power on successfully
|
|
+ * others: power on failed
|
|
+ */
|
|
+int platform_wifi_power_on(void)
|
|
+{
|
|
+ int ret = 0;
|
|
+
|
|
+#ifdef CONFIG_PLATFORM_ACTIONS_ATM705X
|
|
+ ret = acts_wifi_init();
|
|
+ if (unlikely(ret < 0)) {
|
|
+ pr_err("%s Failed to register the power control driver.\n", __FUNCTION__);
|
|
+ goto exit;
|
|
+ }
|
|
+#endif
|
|
+
|
|
+exit:
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+void platform_wifi_power_off(void)
|
|
+{
|
|
+#ifdef CONFIG_PLATFORM_ACTIONS_ATM705X
|
|
+ acts_wifi_cleanup();
|
|
+#endif
|
|
+}
|
|
diff --git a/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ops.c b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ops.c
|
|
new file mode 100644
|
|
index 000000000..cd2f4e538
|
|
--- /dev/null
|
|
+++ b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ops.c
|
|
@@ -0,0 +1,37 @@
|
|
+/******************************************************************************
|
|
+ *
|
|
+ * Copyright(c) 2013 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
|
|
+ *
|
|
+ *
|
|
+ ******************************************************************************/
|
|
+#ifndef CONFIG_PLATFORM_OPS
|
|
+/*
|
|
+ * Return:
|
|
+ * 0: power on successfully
|
|
+ * others: power on failed
|
|
+ */
|
|
+int platform_wifi_power_on(void)
|
|
+{
|
|
+ int ret = 0;
|
|
+
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+void platform_wifi_power_off(void)
|
|
+{
|
|
+}
|
|
+#endif // !CONFIG_PLATFORM_OPS
|
|
diff --git a/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ops.h b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ops.h
|
|
new file mode 100644
|
|
index 000000000..7b66f445f
|
|
--- /dev/null
|
|
+++ b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_ops.h
|
|
@@ -0,0 +1,31 @@
|
|
+/******************************************************************************
|
|
+ *
|
|
+ * Copyright(c) 2013 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
|
|
+ *
|
|
+ *
|
|
+ ******************************************************************************/
|
|
+#ifndef __PLATFORM_OPS_H__
|
|
+#define __PLATFORM_OPS_H__
|
|
+
|
|
+/*
|
|
+ * Return:
|
|
+ * 0: power on successfully
|
|
+ * others: power on failed
|
|
+ */
|
|
+int platform_wifi_power_on(void);
|
|
+void platform_wifi_power_off(void);
|
|
+
|
|
+#endif // __PLATFORM_OPS_H__
|
|
diff --git a/drivers/net/wireless/realtek/rtl8723cs/platform/platform_sprd_sdio.c b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_sprd_sdio.c
|
|
new file mode 100644
|
|
index 000000000..eec894503
|
|
--- /dev/null
|
|
+++ b/drivers/net/wireless/realtek/rtl8723cs/platform/platform_sprd_sdio.c
|
|
@@ -0,0 +1,89 @@
|
|
+/******************************************************************************
|
|
+ *
|
|
+ * Copyright(c) 2013 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
|
|
+ *
|
|
+ *
|
|
+ ******************************************************************************/
|
|
+#include <drv_types.h>
|
|
+
|
|
+extern void sdhci_bus_scan(void);
|
|
+#ifndef ANDROID_2X
|
|
+extern int sdhci_device_attached(void);
|
|
+#endif
|
|
+
|
|
+/*
|
|
+ * Return:
|
|
+ * 0: power on successfully
|
|
+ * others: power on failed
|
|
+ */
|
|
+int platform_wifi_power_on(void)
|
|
+{
|
|
+ int ret = 0;
|
|
+
|
|
+
|
|
+#ifdef CONFIG_RTL8188E
|
|
+ rtw_wifi_gpio_wlan_ctrl(WLAN_POWER_ON);
|
|
+#endif // CONFIG_RTL8188E
|
|
+
|
|
+ /* Pull up pwd pin, make wifi leave power down mode. */
|
|
+ rtw_wifi_gpio_init();
|
|
+ rtw_wifi_gpio_wlan_ctrl(WLAN_PWDN_ON);
|
|
+
|
|
+#if (MP_DRIVER == 1) && (defined(CONFIG_RTL8723A)||defined(CONFIG_RTL8723B))
|
|
+ // Pull up BT reset pin.
|
|
+ rtw_wifi_gpio_wlan_ctrl(WLAN_BT_PWDN_ON);
|
|
+#endif
|
|
+ rtw_mdelay_os(5);
|
|
+
|
|
+ sdhci_bus_scan();
|
|
+#ifdef CONFIG_RTL8723B
|
|
+ //YJ,test,130305
|
|
+ rtw_mdelay_os(1000);
|
|
+#endif
|
|
+#ifdef ANDROID_2X
|
|
+ rtw_mdelay_os(200);
|
|
+#else // !ANDROID_2X
|
|
+ if (1) {
|
|
+ int i = 0;
|
|
+
|
|
+ for (i = 0; i <= 50; i++) {
|
|
+ msleep(10);
|
|
+ if (sdhci_device_attached())
|
|
+ break;
|
|
+ printk("%s delay times:%d\n", __func__, i);
|
|
+ }
|
|
+ }
|
|
+#endif // !ANDROID_2X
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+void platform_wifi_power_off(void)
|
|
+{
|
|
+ /* Pull down pwd pin, make wifi enter power down mode. */
|
|
+ rtw_wifi_gpio_wlan_ctrl(WLAN_PWDN_OFF);
|
|
+ rtw_mdelay_os(5);
|
|
+ rtw_wifi_gpio_deinit();
|
|
+
|
|
+#ifdef CONFIG_RTL8188E
|
|
+ rtw_wifi_gpio_wlan_ctrl(WLAN_POWER_OFF);
|
|
+#endif // CONFIG_RTL8188E
|
|
+
|
|
+#ifdef CONFIG_WOWLAN
|
|
+ if(mmc_host)
|
|
+ mmc_host->pm_flags &= ~MMC_PM_KEEP_POWER;
|
|
+#endif // CONFIG_WOWLAN
|
|
+}
|
|
--
|
|
2.34.1
|
|
|