From df40d02d525e6dc529c34942814796b9e538a602 Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Wed, 18 May 2016 02:11:50 +0800 Subject: [PATCH 01/14] worked on sunxi --- esp_conf.h | 4 +++- esp_config.mk | 2 +- esp_ctrl.c | 3 ++- esp_main.c | 2 +- esp_path.h | 2 +- sdio_stub.c | 18 +++--------------- 6 files changed, 11 insertions(+), 20 deletions(-) diff --git a/esp_conf.h b/esp_conf.h index 76c4bb3..7a992bc 100755 --- a/esp_conf.h +++ b/esp_conf.h @@ -1,6 +1,8 @@ #ifndef _ESP_CONF_H_ #define _ESP_CONF_H_ -#define INIT_DATA_CONF_BUF "crystal_26M_en=1;test_xtal=0;sdio_configure=2;bt_configure=0;bt_protocol=0;dual_ant_configure=0;test_uart_configure=2;share_xtal=0;gpio_wake=0;no_auto_sleep=0;ext_rst=0;wakeup_gpio=12;ate_test=0;speed_suspend=0;$" +//#define INIT_DATA_CONF_BUF "crystal_26M_en=1;test_xtal=0;sdio_configure=2;bt_configure=0;bt_protocol=0;dual_ant_configure=0;test_uart_configure=2;share_xtal=0;gpio_wake=0;no_auto_sleep=0;ext_rst=0;wakeup_gpio=12;ate_test=0;speed_suspend=0;$" + +#define INIT_DATA_CONF_BUF "crystal_26M_en=0;test_xtal=0;sdio_configure=2;bt_configure=0;bt_protocol=0;dual_ant_configure=0;test_uart_configure=2;share_xtal=0;gpio_wake=0;no_auto_sleep=0;ext_rst=0;wakeup_gpio=12;ate_test=0;speed_suspend=0;$" #endif /*_ESP_CONF_H_ */ diff --git a/esp_config.mk b/esp_config.mk index 2026cdf..2e75320 100755 --- a/esp_config.mk +++ b/esp_config.mk @@ -1 +1 @@ -EXTRA_CFLAGS += -DP2P_CONCURRENT -DESP_ACK_INTERRUPT -DESP_USE_SDIO +EXTRA_CFLAGS += -DP2P_CONCURRENT -DESP_USE_SDIO -DESP_ACK_INTERRUPT diff --git a/esp_ctrl.c b/esp_ctrl.c index 25f04a8..5382903 100755 --- a/esp_ctrl.c +++ b/esp_ctrl.c @@ -272,7 +272,8 @@ int sip_parse_events(struct esp_sip *sip, u8 *buf) sprintf(filename, "%s/%s", FWPATH, "test_results"); else sprintf(filename, "%s/%s", mod_eagle_path_get(), "test_results"); - esp_readwrite_file(filename, NULL, test_res_str, strlen(test_res_str)); +// esp_readwrite_file(filename, NULL, test_res_str, strlen(test_res_str)); + esp_dbg (ESP_DBG_TRACE, "SNPRINTF TO HOST: %s\n", test_res_str); } break; } diff --git a/esp_main.c b/esp_main.c index 13de2fe..c6e4ecc 100755 --- a/esp_main.c +++ b/esp_main.c @@ -34,7 +34,7 @@ MODULE_PARM_DESC(no_txampdu, "Disable tx ampdu."); module_param_named(no_rxampdu, modparam_no_rxampdu, int, 0444); MODULE_PARM_DESC(no_rxampdu, "Disable rx ampdu."); -static char *modparam_eagle_path = ""; +static char *modparam_eagle_path = "/lib/firmware"; module_param_named(eagle_path, modparam_eagle_path, charp, 0444); MODULE_PARM_DESC(eagle_path, "eagle path"); diff --git a/esp_path.h b/esp_path.h index 514f79c..8e403f9 100755 --- a/esp_path.h +++ b/esp_path.h @@ -1,6 +1,6 @@ #ifndef _ESP_PATH_H_ #define _ESP_PATH_H_ -#define FWPATH "/system/lib/modules" +#define FWPATH "/lib/firmware" //module_param_string(fwpath, fwpath, sizeof(fwpath), 0644); #endif /* _ESP_PATH_H_ */ diff --git a/sdio_stub.c b/sdio_stub.c index c367fd1..9b69616 100755 --- a/sdio_stub.c +++ b/sdio_stub.c @@ -4,23 +4,13 @@ * sdio stub code for RK */ -#include +//#include //#include -#define ESP8089_DRV_VERSION "1.9" +#include -extern int rk29sdk_wifi_power(int on); -extern int rk29sdk_wifi_set_carddetect(int val); -int rockchip_wifi_init_module(void) -{ - return esp_sdio_init(); -} +#define ESP8089_DRV_VERSION "1.9" -void rockchip_wifi_exit_module(void) -{ - esp_sdio_exit(); - -} void sif_platform_rescan_card(unsigned insert) { } @@ -68,8 +58,6 @@ void sif_platform_ack_interrupt(struct esp_pub *epub) sdmmc_ack_interrupt(func->card->host); } #endif //ESP_ACK_INTERRUPT - EXPORT_SYMBOL(rockchip_wifi_init_module); - EXPORT_SYMBOL(rockchip_wifi_exit_module); late_initcall(esp_sdio_init); module_exit(esp_sdio_exit); From a7c0a72cf6c4d3b88e0b2179a782737b164498c6 Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Wed, 18 May 2016 02:14:55 +0800 Subject: [PATCH 02/14] add gitignore --- .gitignore | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eae6529 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.cmd +*.o +Module.symvers +modules.order +.tmp_versions +*.ko +*.mod.c From 95534eb451d453298e00ce014e367ad85ca29b28 Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Wed, 18 May 2016 02:15:47 +0800 Subject: [PATCH 03/14] sun8i-a33-aoson-m751s.dt*: add --- dts-4.6/sun8i-a33-aoson-m751s.dtb | Bin 0 -> 19912 bytes dts-4.6/sun8i-a33-aoson-m751s.dts | 159 ++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 dts-4.6/sun8i-a33-aoson-m751s.dtb create mode 100644 dts-4.6/sun8i-a33-aoson-m751s.dts diff --git a/dts-4.6/sun8i-a33-aoson-m751s.dtb b/dts-4.6/sun8i-a33-aoson-m751s.dtb new file mode 100644 index 0000000000000000000000000000000000000000..f4d168ffd48e43dd3c30bf41f4087549de054335 GIT binary patch literal 19912 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 GFaIB#z~-p{ literal 0 HcmV?d00001 diff --git a/dts-4.6/sun8i-a33-aoson-m751s.dts b/dts-4.6/sun8i-a33-aoson-m751s.dts new file mode 100644 index 0000000..4ca5fad --- /dev/null +++ b/dts-4.6/sun8i-a33-aoson-m751s.dts @@ -0,0 +1,159 @@ +/* + * Copyright 2015 Hans de Goede + * + * This file is dual-licensed: you can use it either under the terms + * of the GPL or the X11 license, at your option. Note that this dual + * licensing only applies to this file, and not this project as a + * whole. + * + * a) This file is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This file 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. + * + * Or, alternatively, + * + * b) Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +/dts-v1/; +#include "sun8i-a33.dtsi" +#include "sun8i-q8-common.dtsi" + +/ { + model = "Aoson M751s Q8 A33 Tablet"; + compatible = "allwinner,q8-a33", "allwinner,sun8i-a33"; + + /* + * This is actually an active-low reset line for the WLAN + * part of the WiFi CHIP. + * + * Just like for DLDO1 and DLDO2, we cannot tie it to the DT + * node of the SDIO device for now, as there is no bindings + * for it, so we need to have this hack. + */ + wifi_reg_on: wifi_reg_on { + compatible = "regulator-fixed"; + pinctrl-names = "default"; + pinctrl-0 = <&m751s_wifi_reg_on_pin>; + + regulator-name = "wifi-reg-on"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + gpio = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ + enable-active-high; + }; + + mmc1_pwrseq: mmc1_pwrseq { + compatible = "mmc-pwrseq-simple"; + pinctrl-names = "default"; + pinctrl-0 = <&m751s_wifi_reset_pin>; + reset-gpios = <&r_pio 0 11 GPIO_ACTIVE_LOW>; /* PH9 WIFI_EN */ + }; + + /* + * Both DLDO1 and DLDO2 are used in parallel to power up the + * WiFi Chip. + * + * If those are not enabled, the SDIO part will not enumerate, + * and since there's no way currently to pass DT infos to an + * SDIO device, we cannot really do better than this ugly hack + * for now. + */ + + vcc_wifi: wifi_reg { + compatible = "coupled-voltage-regulator"; + regulator-name = "vcc-wifi"; + vin0-supply = <&vcc_wifi_1>; + vin1-supply = <&vcc_wifi_2>; + regulator-always-on; + }; +}; + +&axp22x { + regulators { + vcc_wifi_1: dldo1 { + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-wifi-1"; + regulator-always-on; + }; + + vcc_wifi_2: dldo2 { + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-name = "vcc-wifi-2"; + regulator-always-on; + }; + }; +}; + +&mmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc1_pins_a>; + vmmc-supply = <®_vcc3v3>; + mmc-pwrseq = <&mmc1_pwrseq>; + bus-width = <4>; + //non-removable; + broken-cd; + status = "okay"; +}; + +&mmc1_pins_a { + allwinner,pull = ; +}; + +&r_pio { + m751s_wifi_reg_on_pin: m751s_wifi_reg_on_pin@0 { + allwinner,pins = "PL6"; + allwinner,function = "gpio_out"; + allwinner,drive = ; + allwinner,pull = ; + }; + m751s_wifi_reset_pin: m751s_wifi_reset_pin@0 { + allwinner,pins = "PL11"; + allwinner,function = "gpio_out"; + allwinner,drive = ; + allwinner,pull = ; + }; +}; + +/* + * FIXME for now we only support host mode and rely on u-boot to have + * turned on Vbus which is controlled by the axp223 pmic on the board. + * + * Once we have axp223 support we should switch to fully supporting otg. + */ +&usb_otg { + dr_mode = "host"; + status = "okay"; +}; + +&usbphy { + status = "okay"; +}; From 920906fd7ba3dfad7ad2e0b82ee3b22a224f9d0d Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Wed, 18 May 2016 10:34:24 +0800 Subject: [PATCH 04/14] dt: use a non-fixed regulator as vmmc-supply to ensure sdcard is mmcblk0 --- dts-4.6/sun8i-a33-aoson-m751s.dtb | Bin 19912 -> 19856 bytes dts-4.6/sun8i-a33-aoson-m751s.dts | 4 +--- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/dts-4.6/sun8i-a33-aoson-m751s.dtb b/dts-4.6/sun8i-a33-aoson-m751s.dtb index f4d168ffd48e43dd3c30bf41f4087549de054335..f9c9c2386c9429d11f876a56f69f16531d01551f 100644 GIT binary patch delta 81 zcmX>xn{mQyMu7{w|K2h%_)cJ8V6b3d@LVxbK%B8)qeimr3V6b3d@O&^)K%8;KMvY|K$?ewslbP(4CU39}7c>V- wGXpUT0|O&BkT%~eVb{$ux!qQE^9r}eOtNMOdFDGHc_<%9F+JTp$MXv_0E0pr0ssI2 diff --git a/dts-4.6/sun8i-a33-aoson-m751s.dts b/dts-4.6/sun8i-a33-aoson-m751s.dts index 4ca5fad..fc6475e 100644 --- a/dts-4.6/sun8i-a33-aoson-m751s.dts +++ b/dts-4.6/sun8i-a33-aoson-m751s.dts @@ -91,7 +91,6 @@ regulator-name = "vcc-wifi"; vin0-supply = <&vcc_wifi_1>; vin1-supply = <&vcc_wifi_2>; - regulator-always-on; }; }; @@ -101,7 +100,6 @@ regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc-wifi-1"; - regulator-always-on; }; vcc_wifi_2: dldo2 { @@ -116,7 +114,7 @@ &mmc1 { pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins_a>; - vmmc-supply = <®_vcc3v3>; + vmmc-supply = <&vcc_wifi_1>; mmc-pwrseq = <&mmc1_pwrseq>; bus-width = <4>; //non-removable; From d5009c13a0c25e1dd26223128cf453f751c1fe18 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sun, 10 Jul 2016 17:12:24 +0200 Subject: [PATCH 05/14] Fix compilation with newer kernels Signed-off-by: Hans de Goede --- esp_debug.c | 5 +++++ esp_mac80211.c | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/esp_debug.c b/esp_debug.c index 57ea8f2..86f65fa 100755 --- a/esp_debug.c +++ b/esp_debug.c @@ -8,6 +8,7 @@ #include #include +#include #include #include "sip2_common.h" @@ -88,7 +89,11 @@ struct dentry *esp_dump_var(const char *name, struct dentry *parent, void *value rc = debugfs_create_u64(name, mode, parent, (u64*)value); break; case ESP_BOOL: +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 0)) rc = debugfs_create_bool(name, mode, parent, (u32*)value); +#else + rc = debugfs_create_bool(name, mode, parent, (bool*)value); +#endif break; default: //32 rc = debugfs_create_u32(name, mode, parent, (u32*)value); diff --git a/esp_mac80211.c b/esp_mac80211.c index 8fa5858..4c2ca4f 100755 --- a/esp_mac80211.c +++ b/esp_mac80211.c @@ -1556,16 +1556,37 @@ static int esp_op_ampdu_action(struct ieee80211_hw *hw, enum ieee80211_ampdu_mlme_action action, struct ieee80211_sta *sta, u16 tid, u16 *ssn) #else +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0)) static int esp_op_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif, enum ieee80211_ampdu_mlme_action action, struct ieee80211_sta *sta, u16 tid, u16 *ssn, u8 buf_size) +#else +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)) +static int esp_op_ampdu_action(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + enum ieee80211_ampdu_mlme_action action, + struct ieee80211_sta *sta, u16 tid, u16 *ssn, + u8 buf_size, bool amsdu) +#else +static int esp_op_ampdu_action(struct ieee80211_hw *hw, + struct ieee80211_vif *vif, + struct ieee80211_ampdu_params *params) +#endif +#endif #endif #endif /* NEW_KERNEL && KERNEL_35 */ { int ret = -EOPNOTSUPP; struct esp_pub *epub = (struct esp_pub *)hw->priv; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)) + enum ieee80211_ampdu_mlme_action action = params->action; + struct ieee80211_sta *sta = params->sta; + u16 tid = params->tid; + u16 *ssn = ¶ms->ssn; + u8 buf_size = params->buf_size; +#endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)) struct esp_node * node = (struct esp_node *)sta->drv_priv; #else From 4eb17186968798f65829d29441eeb817dc07f271 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sun, 10 Jul 2016 17:05:20 +0200 Subject: [PATCH 06/14] Fix build with kernel 4.7 The definition of IEEE80211_NUM_BANDS and several other band-related quantities are removed in kernel 4.7. Inspired by a similar patch for the rtl8723bs driver by Larry Finger . Signed-off-by: Hans de Goede --- esp_pub.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/esp_pub.h b/esp_pub.h index fe8b56f..7cfd30b 100755 --- a/esp_pub.h +++ b/esp_pub.h @@ -21,6 +21,13 @@ #include #endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0)) +#define ieee80211_band nl80211_band +#define IEEE80211_BAND_2GHZ NL80211_BAND_2GHZ +#define IEEE80211_BAND_5GHZ NL80211_BAND_5GHZ +#define IEEE80211_NUM_BANDS NUM_NL80211_BANDS +#endif + enum esp_sdio_state{ ESP_SDIO_STATE_FIRST_INIT, ESP_SDIO_STATE_FIRST_NORMAL_EXIT, From 98752d6076fc53fd7f49c7aa14aa63ab08d7d4f5 Mon Sep 17 00:00:00 2001 From: Andrew Litt Date: Thu, 26 May 2016 04:56:08 +0000 Subject: [PATCH 07/14] Fix build against kernel headers without the kernel sources Replaced a check for interface offchannel that referenced a header outside of include/ with the supported one through mac80211.h. The right way to check was added two kernel releases before the version ifdef'd block that uses the illicit structure. WTF Espressif? --- esp_mac80211.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/esp_mac80211.c b/esp_mac80211.c index 4c2ca4f..1f31e8f 100755 --- a/esp_mac80211.c +++ b/esp_mac80211.c @@ -15,8 +15,6 @@ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)) #include #endif -/* for support scan in p2p concurrent */ -#include <../net/mac80211/ieee80211_i.h> #include "esp_pub.h" #include "esp_sip.h" #include "esp_ctrl.h" @@ -562,7 +560,6 @@ static int esp_op_config_interface (struct ieee80211_hw *hw, // assoc = 2 means AP struct esp_pub *epub = (struct esp_pub *)hw->priv; struct esp_vif *evif = (struct esp_vif *)vif->drv_priv; - //struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); ESP_IEEE80211_DBG(ESP_DBG_OP, " %s enter: changed %x, bssid %pM,vif->type = %d\n", __func__, conf->changed, conf->bssid,vif->type); if(conf->bssid) @@ -626,9 +623,6 @@ static void esp_op_bss_info_changed(struct ieee80211_hw *hw, sip_send_set_sta(epub, evif->index, 1, node, vif, (u8)node->index); } #else -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) - struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); -#endif // ieee80211_bss_conf(include/net/mac80211.h) is included in ieee80211_sub_if_data(net/mac80211/ieee80211_i.h) , does bssid=ieee80211_if_ap's ssid ? // in 2.6.27, ieee80211_sub_if_data has ieee80211_bss_conf while in 2.6.32 ieee80211_sub_if_data don't have ieee80211_bss_conf @@ -665,7 +659,7 @@ static void esp_op_bss_info_changed(struct ieee80211_hw *hw, evif->ap_up = true; } else if (!info->enable_beacon && evif->ap_up && #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) - !test_bit(SDATA_STATE_OFFCHANNEL, &sdata->state) + !(hw->conf.flags & IEEE80211_CONF_OFFCHANNEL) #else true #endif From dde657aa343411f3d51db80cff1f387a18330b94 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sat, 6 Aug 2016 13:54:11 +0200 Subject: [PATCH 08/14] Remove dummy driver First loading a dummy driver to power-up the device is not necessary with upstream kernels + mmc-pwrseq, stop calling the empty sif_platform_target_poweron() stub and remove the entire dummy-driver dance. Signed-off-by: Hans de Goede --- sdio_sif_esp.c | 88 +------------------------------------------------- 1 file changed, 1 insertion(+), 87 deletions(-) diff --git a/sdio_sif_esp.c b/sdio_sif_esp.c index dbdbfa9..39fee98 100755 --- a/sdio_sif_esp.c +++ b/sdio_sif_esp.c @@ -763,42 +763,11 @@ static struct sdio_driver esp_sdio_driver = { .drv = { .pm = &esp_sdio_pm_ops, }, }; -static int esp_sdio_dummy_probe(struct sdio_func *func, const struct sdio_device_id *id) -{ - esp_dbg(ESP_DBG_ERROR, "%s enter\n", __func__); - - up(&esp_powerup_sem); - - return 0; -} - -static void esp_sdio_dummy_remove(struct sdio_func *func) -{ - return; -} - -static struct sdio_driver esp_sdio_dummy_driver = { - .name = "eagle_sdio_dummy", - .id_table = esp_sdio_devices, - .probe = esp_sdio_dummy_probe, - .remove = esp_sdio_dummy_remove, -}; - static int /*__init*/ esp_sdio_init(void) { #define ESP_WAIT_UP_TIME_MS 11000 - int err; - u64 ver; - int retry = 3; - bool powerup = false; int edf_ret = 0; - esp_dbg(ESP_DBG_TRACE, "%s \n", __func__); - -#ifdef DRIVER_VER - ver = DRIVER_VER; - esp_dbg(ESP_SHOW, "\n***** EAGLE DRIVER VER:%llx*****\n\n", ver); -#endif edf_ret = esp_debugfs_init(); request_init_conf(); @@ -806,51 +775,6 @@ static int /*__init*/ esp_sdio_init(void) esp_wakelock_init(); esp_wake_lock(); - do { - sema_init(&esp_powerup_sem, 0); - - sif_platform_target_poweron(); - - sif_platform_rescan_card(1); - - err = sdio_register_driver(&esp_sdio_dummy_driver); - if (err) { - esp_dbg(ESP_DBG_ERROR, "eagle sdio driver registration failed, error code: %d\n", err); - goto _fail; - } - - if (down_timeout(&esp_powerup_sem, - msecs_to_jiffies(ESP_WAIT_UP_TIME_MS)) == 0) - { - - powerup = true; - msleep(200); - break; - } - - esp_dbg(ESP_SHOW, "%s ------ RETRY ------ \n", __func__); - - sif_record_retry_config(); - - sdio_unregister_driver(&esp_sdio_dummy_driver); - - sif_platform_rescan_card(0); - - sif_platform_target_poweroff(); - - } while (retry--); - - if (!powerup) { - esp_dbg(ESP_DBG_ERROR, "eagle sdio can not power up!\n"); - - err = -ENODEV; - goto _fail; - } - - esp_dbg(ESP_SHOW, "%s power up OK\n", __func__); - - sdio_unregister_driver(&esp_sdio_dummy_driver); - sif_sdio_state = ESP_SDIO_STATE_FIRST_INIT; sema_init(&esp_powerup_sem, 0); @@ -877,13 +801,7 @@ static int /*__init*/ esp_sdio_init(void) esp_register_early_suspend(); esp_wake_unlock(); - return err; - -_fail: - esp_wake_unlock(); - esp_wakelock_destroy(); - - return err; + return 0; } static void /*__exit*/ esp_sdio_exit(void) @@ -898,10 +816,6 @@ static void /*__exit*/ esp_sdio_exit(void) sif_platform_rescan_card(0); -#ifndef FPGA_DEBUG - sif_platform_target_poweroff(); -#endif /* !FPGA_DEBUG */ - esp_wakelock_destroy(); } From c5d80ca9f4cc0711887095a3dc8ad6717a5d5bbb Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sat, 6 Aug 2016 14:17:36 +0200 Subject: [PATCH 09/14] Cleanup probing Since sif_platform_rescan_card() is just an empty stub we need (hack) broken-cd in the devicetree with upstream kernels to redetect the card after the initial firmware load. When leaving the redection to the mmc-core like this, the probe function will get called again automatically when the mmc-core does the redetection. This makes the entire unregister / register and semaphore dance unnecessary, therefor this commit removes it. Signed-off-by: Hans de Goede --- sdio_sif_esp.c | 66 ++++++++++++-------------------------------------- 1 file changed, 16 insertions(+), 50 deletions(-) diff --git a/sdio_sif_esp.c b/sdio_sif_esp.c index 39fee98..b16f392 100755 --- a/sdio_sif_esp.c +++ b/sdio_sif_esp.c @@ -41,9 +41,6 @@ static void /*__exit*/ esp_sdio_exit(void); //unsigned int esp_msg_level = 0; unsigned int esp_msg_level = ESP_DBG_ERROR | ESP_SHOW; -static struct semaphore esp_powerup_sem; - -static enum esp_sdio_state sif_sdio_state; struct esp_sdio_ctrl *sif_sctrl = NULL; #ifdef ESP_ANDROID_LOGGER @@ -489,14 +486,14 @@ static void esp_sdio_remove(struct sdio_func *func); static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id) { int err = 0; - struct esp_pub *epub; + struct esp_pub *epub = NULL; struct esp_sdio_ctrl *sctrl; esp_dbg(ESP_DBG_TRACE, "sdio_func_num: 0x%X, vendor id: 0x%X, dev id: 0x%X, block size: 0x%X/0x%X\n", func->num, func->vendor, func->device, func->max_blksize, func->cur_blksize); - if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){ + if (sif_sctrl == NULL) { sctrl = kzalloc(sizeof(struct esp_sdio_ctrl), GFP_KERNEL); if (sctrl == NULL) { @@ -521,6 +518,7 @@ static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *i goto _err_dma; } epub->sif = (void *)sctrl; + epub->sdio_state = ESP_SDIO_STATE_FIRST_INIT; sctrl->epub = epub; #ifdef USE_EXT_GPIO @@ -537,12 +535,11 @@ static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *i sctrl = sif_sctrl; sif_sctrl = NULL; epub = sctrl->epub; + epub->sdio_state = ESP_SDIO_STATE_SECOND_INIT; SET_IEEE80211_DEV(epub->hw, &func->dev); epub->dev = &func->dev; } - epub->sdio_state = sif_sdio_state; - sctrl->func = func; sdio_set_drvdata(func, sctrl); @@ -556,7 +553,7 @@ static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *i esp_dbg(ESP_DBG_TRACE, " %s >> power_on err %d \n", __func__, err); if (err){ - if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT) + if(epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) goto _err_ext_gpio; else goto _err_second_init; @@ -571,7 +568,7 @@ static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *i esp_dbg(ESP_DBG_ERROR, "Set sdio block size %d failed: %d)\n", sctrl->slc_blk_sz, err); sdio_release_host(func); - if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT) + if(epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) goto _err_off; else goto _err_second_init; @@ -588,19 +585,18 @@ static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *i if (err) { esp_dbg(ESP_DBG_ERROR, "esp_init_all failed: %d\n", err); - if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){ + if (epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) { err = 0; goto _err_first_init; } - if(sif_sdio_state == ESP_SDIO_STATE_SECOND_INIT) + if (epub->sdio_state == ESP_SDIO_STATE_SECOND_INIT) goto _err_second_init; } esp_dbg(ESP_DBG_TRACE, " %s return %d\n", __func__, err); - if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){ + if (epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) { esp_dbg(ESP_DBG_ERROR, "first normal exit\n"); - sif_sdio_state = ESP_SDIO_STATE_FIRST_NORMAL_EXIT; - up(&esp_powerup_sem); + epub->sdio_state = ESP_SDIO_STATE_FIRST_NORMAL_EXIT; } return err; @@ -619,14 +615,13 @@ static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *i _err_last: kfree(sctrl); _err_first_init: - if(sif_sdio_state == ESP_SDIO_STATE_FIRST_INIT){ + if (epub && epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) { esp_dbg(ESP_DBG_ERROR, "first error exit\n"); - sif_sdio_state = ESP_SDIO_STATE_FIRST_ERROR_EXIT; - up(&esp_powerup_sem); + epub->sdio_state = ESP_SDIO_STATE_FIRST_ERROR_EXIT; } return err; _err_second_init: - sif_sdio_state = ESP_SDIO_STATE_SECOND_ERROR_EXIT; + epub->sdio_state = ESP_SDIO_STATE_SECOND_ERROR_EXIT; esp_sdio_remove(func); return err; } @@ -649,8 +644,7 @@ static void esp_sdio_remove(struct sdio_func *func) esp_dbg(ESP_DBG_ERROR, "%s epub null\n", __func__); break; } - sctrl->epub->sdio_state = sif_sdio_state; - if(sif_sdio_state != ESP_SDIO_STATE_FIRST_NORMAL_EXIT){ + if (sctrl->epub->sdio_state != ESP_SDIO_STATE_FIRST_NORMAL_EXIT) { if (sctrl->epub->sip) { sip_detach(sctrl->epub->sip); sctrl->epub->sip = NULL; @@ -674,7 +668,7 @@ static void esp_sdio_remove(struct sdio_func *func) #ifdef TEST_MODE test_exit_netlink(); #endif /* TEST_MODE */ - if(sif_sdio_state != ESP_SDIO_STATE_FIRST_NORMAL_EXIT){ + if (sctrl->epub->sdio_state != ESP_SDIO_STATE_FIRST_NORMAL_EXIT) { esp_pub_dealloc_mac80211(sctrl->epub); esp_dbg(ESP_DBG_TRACE, "%s dealloc mac80211 \n", __func__); @@ -765,40 +759,14 @@ static struct sdio_driver esp_sdio_driver = { static int /*__init*/ esp_sdio_init(void) { -#define ESP_WAIT_UP_TIME_MS 11000 - int edf_ret = 0; - - edf_ret = esp_debugfs_init(); - + esp_debugfs_init(); request_init_conf(); esp_wakelock_init(); esp_wake_lock(); - sif_sdio_state = ESP_SDIO_STATE_FIRST_INIT; - sema_init(&esp_powerup_sem, 0); - sdio_register_driver(&esp_sdio_driver); - if ((down_timeout(&esp_powerup_sem, - msecs_to_jiffies(ESP_WAIT_UP_TIME_MS)) == 0 ) && sif_get_ate_config() == 0) { - if(sif_sdio_state == ESP_SDIO_STATE_FIRST_NORMAL_EXIT){ - sdio_unregister_driver(&esp_sdio_driver); - - sif_platform_rescan_card(0); - - msleep(100); - - sif_platform_rescan_card(1); - - sif_sdio_state = ESP_SDIO_STATE_SECOND_INIT; - - sdio_register_driver(&esp_sdio_driver); - } - - } - - esp_register_early_suspend(); esp_wake_unlock(); return 0; @@ -813,8 +781,6 @@ static void /*__exit*/ esp_sdio_exit(void) esp_unregister_early_suspend(); sdio_unregister_driver(&esp_sdio_driver); - - sif_platform_rescan_card(0); esp_wakelock_destroy(); } From b502fbb7fa90aba771cf19126d560b9e6677035d Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sat, 6 Aug 2016 14:42:05 +0200 Subject: [PATCH 10/14] Add support for mmc_force_detect_change() I've send a patch to the upstream kernel which adds a mmc_force_detect_change() function to the upstream kernel which allows things to work with non-removable in the devicetree instead of using broken-cd as a hack. This commit adds support for it, as well as adding a stub implementation to use until this gets merged upstream. Note that the stub does *not* fix the issue of the mmc core powering down the device between the first and second probe, so until this is merged upstream the regulators will still need regulator-always-on. Signed-off-by: Hans de Goede --- sdio_sif_esp.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sdio_sif_esp.c b/sdio_sif_esp.c index b16f392..bd380ba 100755 --- a/sdio_sif_esp.c +++ b/sdio_sif_esp.c @@ -32,6 +32,25 @@ #include "esp_ext.h" #endif /* USE_EXT_GPIO */ +/* + * HdG: Note: + * 1) MMC_HAS_FORCE_DETECT_CHANGE is a hack which is set by my sunxi-wip + * tree. FIXME replace with a version check once mmc_force_detect_change() + * is added to the mainline kernel. + * 2) This version does NOT implement keep_power, the dts must mark the + * regulators as regulator-always-on and not use mmc-pwrseq for this stub + * to work. + */ +#ifndef MMC_HAS_FORCE_DETECT_CHANGE +void mmc_force_detect_change(struct mmc_host *host, unsigned long delay, + bool keep_power) +{ + host->caps &= ~MMC_CAP_NONREMOVABLE; + host->caps |= MMC_CAP_NEEDS_POLL; + mmc_detect_change(host, delay); +} +#endif + static int /*__init*/ esp_sdio_init(void); static void /*__exit*/ esp_sdio_exit(void); @@ -488,6 +507,7 @@ static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *i int err = 0; struct esp_pub *epub = NULL; struct esp_sdio_ctrl *sctrl; + struct mmc_host *host = func->card->host; esp_dbg(ESP_DBG_TRACE, "sdio_func_num: 0x%X, vendor id: 0x%X, dev id: 0x%X, block size: 0x%X/0x%X\n", @@ -597,6 +617,8 @@ static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *i if (epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) { esp_dbg(ESP_DBG_ERROR, "first normal exit\n"); epub->sdio_state = ESP_SDIO_STATE_FIRST_NORMAL_EXIT; + /* Rescan the esp8089 after loading the initial firmware */ + mmc_force_detect_change(host, msecs_to_jiffies(100), true); } return err; From a317fa45686990cbeb9450e41271bdf5fd4c143e Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sat, 6 Aug 2016 14:51:01 +0200 Subject: [PATCH 11/14] Remove sdio_stub functions sif_platform_check_r1_ready() is empty, waiting for r1 has been fixed for all sdio devices in the upstream kernel by: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/mmc/core?id=5d3f6ef04d65dda92a3573841a7215fb05c347de "mmc: Wait for card_busy before starting sdio requests" This commit removes the calls to the empty sif_platform_check_r1_ready stub, all the other stub functions are already unused, so sdio_stub.c can be completely removed. Signed-off-by: Hans de Goede --- esp_sif.h | 13 ----------- sdio_sif_esp.c | 8 +++---- sdio_stub.c | 63 -------------------------------------------------- 3 files changed, 3 insertions(+), 81 deletions(-) delete mode 100755 sdio_stub.c diff --git a/esp_sif.h b/esp_sif.h index 2a47ae6..7b5c80a 100755 --- a/esp_sif.h +++ b/esp_sif.h @@ -196,7 +196,6 @@ int sif_lldesc_read_sync(struct esp_pub *epub, u8 *buf, u32 len); int sif_lldesc_write_sync(struct esp_pub *epub, u8 *buf, u32 len); int sif_lldesc_read_raw(struct esp_pub *epub, u8 *buf, u32 len, bool noround); int sif_lldesc_write_raw(struct esp_pub *epub, u8 *buf, u32 len); -void sif_platform_check_r1_ready(struct esp_pub *epub); #endif #ifdef ESP_USE_SPI @@ -252,13 +251,6 @@ struct slc_host_regs * sif_get_regs(struct esp_pub *epub); void sif_lock_bus(struct esp_pub *epub); void sif_unlock_bus(struct esp_pub *epub); -void sif_platform_target_poweroff(void); -void sif_platform_target_poweron(void); -void sif_platform_target_speed(int high_speed); - -void sif_platform_reset_target(void); -void sif_platform_rescan_card(unsigned insert); - int sif_interrupt_target(struct esp_pub *epub, u8 index); #ifdef USE_EXT_GPIO int sif_config_gpio_mode(struct esp_pub *epub, u8 gpio_num, u8 gpio_mode); @@ -280,11 +272,6 @@ int sif_get_retry_config(void); void sif_record_wakeup_gpio_config(int value); int sif_get_wakeup_gpio_config(void); -#ifdef ESP_ACK_INTERRUPT -//extern void sif_platform_ack_interrupt(struct mmc_host *mmc); -extern void sif_platform_ack_interrupt(struct esp_pub *epub); -#endif //ESP_ACK_INTERRUPT - #define sif_reg_read_sync(epub, addr, buf, len) sif_io_sync((epub), (addr), (buf), (len), SIF_FROM_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR) #define sif_reg_write_sync(epub, addr, buf, len) sif_io_sync((epub), (addr), (buf), (len), SIF_TO_DEVICE | SIF_BYTE_BASIS | SIF_INC_ADDR) diff --git a/sdio_sif_esp.c b/sdio_sif_esp.c index bd380ba..bb69def 100755 --- a/sdio_sif_esp.c +++ b/sdio_sif_esp.c @@ -71,8 +71,6 @@ static int esdio_power_on(struct esp_sdio_ctrl *sctrl); void sif_set_clock(struct sdio_func *func, int clk); -#include "sdio_stub.c" - void sif_lock_bus(struct esp_pub *epub) { EPUB_FUNC_CHECK(epub, _exit); @@ -120,7 +118,6 @@ void sdio_io_writeb(struct esp_pub *epub, u8 value, int addr, int *res) sdio_f0_writeb(func, value, addr, res); else sdio_writeb(func, value, addr, res); - sif_platform_check_r1_ready(epub); } int sif_io_raw(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, u32 flag) @@ -167,7 +164,6 @@ int sif_io_raw(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, u32 flag) else if (flag & SIF_INC_ADDR) { err = sdio_memcpy_toio(func, addr, ibuf, len); } - sif_platform_check_r1_ready(epub); } else if (flag & SIF_FROM_DEVICE) { if (flag & SIF_FIXED_ADDR) @@ -232,7 +228,6 @@ int sif_io_sync(struct esp_pub *epub, u32 addr, u8 *buf, u32 len, u32 flag) else if (flag & SIF_INC_ADDR) { err = sdio_memcpy_toio(func, addr, ibuf, len); } - sif_platform_check_r1_ready(epub); sdio_release_host(func); } else if (flag & SIF_FROM_DEVICE) { @@ -810,4 +805,7 @@ static void /*__exit*/ esp_sdio_exit(void) MODULE_AUTHOR("Espressif System"); MODULE_DESCRIPTION("Driver for SDIO interconnected eagle low-power WLAN devices"); MODULE_LICENSE("GPL"); + +module_init(esp_sdio_init); +module_exit(esp_sdio_exit); #endif /* ESP_USE_SDIO */ diff --git a/sdio_stub.c b/sdio_stub.c deleted file mode 100755 index 9b69616..0000000 --- a/sdio_stub.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2013 Espressif System. - * - * sdio stub code for RK - */ - -//#include -//#include - -#include - -#define ESP8089_DRV_VERSION "1.9" - -void sif_platform_rescan_card(unsigned insert) -{ -} - -void sif_platform_reset_target(void) -{ -} - -void sif_platform_target_poweroff(void) -{ -} - -void sif_platform_target_poweron(void) -{ -} - -void sif_platform_target_speed(int high_speed) -{ -} - -void sif_platform_check_r1_ready(struct esp_pub *epub) -{ -} - - -#ifdef ESP_ACK_INTERRUPT -extern void sdmmc_ack_interrupt(struct mmc_host *mmc); - -void sif_platform_ack_interrupt(struct esp_pub *epub) -{ - struct esp_sdio_ctrl *sctrl = NULL; - struct sdio_func *func = NULL; - - if (epub == NULL) { - ESSERT(epub != NULL); - return; - } - sctrl = (struct esp_sdio_ctrl *)epub->sif; - func = sctrl->func; - if (func == NULL) { - ESSERT(func != NULL); - return; - } - - sdmmc_ack_interrupt(func->card->host); -} -#endif //ESP_ACK_INTERRUPT - -late_initcall(esp_sdio_init); -module_exit(esp_sdio_exit); From 965e06c877e60f69bcadb9905ac3eb6b2017bcf1 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sat, 6 Aug 2016 14:56:33 +0200 Subject: [PATCH 12/14] Remove unused wakelock / early-suspend stuff These are android only -> remove. Signed-off-by: Hans de Goede --- Makefile | 2 +- esp_pm.c | 77 -------------------------------------------------- esp_pub.h | 7 ----- sdio_sif_esp.c | 17 ++--------- 4 files changed, 3 insertions(+), 100 deletions(-) delete mode 100755 esp_pm.c diff --git a/Makefile b/Makefile index 77cb3cd..47977ea 100755 --- a/Makefile +++ b/Makefile @@ -70,7 +70,7 @@ endif OBJS = esp_debug.o sdio_sif_esp.o spi_sif_esp.o esp_io.o \ esp_file.o esp_main.o esp_sip.o esp_ext.o esp_ctrl.o \ - esp_mac80211.o esp_debug.o esp_utils.o esp_pm.o testmode.o + esp_mac80211.o esp_debug.o esp_utils.o testmode.o all: config_check modules diff --git a/esp_pm.c b/esp_pm.c deleted file mode 100755 index ca8bfe7..0000000 --- a/esp_pm.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2010 -2014 Espressif System. - * - * power save control of system - */ -#ifdef CONFIG_HAS_WAKELOCK -#include -#endif -#ifdef CONFIG_HAS_EARLYSUSPEND -#include -#endif -#include "esp_pub.h" - -#ifdef CONFIG_HAS_EARLYSUSPEND - -static void esp_early_suspend(struct early_suspend *h) -{ - printk("%s\n", __func__); -} - -static void esp_late_resume(struct early_suspend*h) -{ - printk("%s\n", __func__); -} - -static struct early_suspend esp_early_suspend_ctrl = { - .suspend = esp_early_suspend, - .resume = esp_late_resume, - .level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN - 20, -}; -#endif /* EARLYSUSPEND */ - -void esp_register_early_suspend(void) -{ -#ifdef CONFIG_HAS_EARLYSUSPEND - register_early_suspend(&esp_early_suspend_ctrl); -#endif -} - -void esp_unregister_early_suspend(void) -{ -#ifdef CONFIG_HAS_EARLYSUSPEND - unregister_early_suspend(&esp_early_suspend_ctrl); -#endif -} - -#ifdef CONFIG_HAS_WAKELOCK -static struct wake_lock esp_wake_lock_; -#endif /* WAKELOCK */ - -void esp_wakelock_init(void) -{ -#ifdef CONFIG_HAS_WAKELOCK - wake_lock_init(&esp_wake_lock_, WAKE_LOCK_SUSPEND, "eagle"); -#endif -} - -void esp_wakelock_destroy(void) -{ -#ifdef CONFIG_HAS_WAKELOCK - wake_lock_destroy(&esp_wake_lock_); -#endif -} - -void esp_wake_lock(void) -{ -#ifdef CONFIG_HAS_WAKELOCK - wake_lock(&esp_wake_lock_); -#endif -} - -void esp_wake_unlock(void) -{ -#ifdef CONFIG_HAS_WAKELOCK - wake_unlock(&esp_wake_lock_); -#endif -} diff --git a/esp_pub.h b/esp_pub.h index 7cfd30b..f2a903a 100755 --- a/esp_pub.h +++ b/esp_pub.h @@ -218,13 +218,6 @@ void esp_rocdone_process(struct ieee80211_hw *hw, struct sip_evt_roc *report); void esp_ps_config(struct esp_pub *epub, struct esp_ps *ps, bool on); - -void esp_register_early_suspend(void); -void esp_unregister_early_suspend(void); -void esp_wakelock_init(void); -void esp_wakelock_destroy(void); -void esp_wake_lock(void); -void esp_wake_unlock(void); struct esp_node * esp_get_node_by_addr(struct esp_pub * epub, const u8 *addr); struct esp_node * esp_get_node_by_index(struct esp_pub * epub, u8 index); int esp_get_empty_rxampdu(struct esp_pub * epub, const u8 *addr, u8 tid); diff --git a/sdio_sif_esp.c b/sdio_sif_esp.c index bb69def..6e29bf2 100755 --- a/sdio_sif_esp.c +++ b/sdio_sif_esp.c @@ -779,27 +779,14 @@ static int /*__init*/ esp_sdio_init(void) esp_debugfs_init(); request_init_conf(); - esp_wakelock_init(); - esp_wake_lock(); - sdio_register_driver(&esp_sdio_driver); - - esp_register_early_suspend(); - esp_wake_unlock(); return 0; } static void /*__exit*/ esp_sdio_exit(void) -{ - esp_dbg(ESP_SHOW, "%s \n", __func__); - - esp_debugfs_exit(); - - esp_unregister_early_suspend(); - +{ sdio_unregister_driver(&esp_sdio_driver); - - esp_wakelock_destroy(); + esp_debugfs_exit(); } MODULE_AUTHOR("Espressif System"); From 4f730ae008f4df242a147a789257a1b657556a12 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Sat, 6 Aug 2016 14:35:59 +0200 Subject: [PATCH 13/14] Make the driver less chatty Change a bunch of messages which are clearly debug messages from error / show messages to debug messages. Signed-off-by: Hans de Goede --- esp_ctrl.c | 3 +-- esp_mac80211.c | 32 ++++++++++++++++---------------- sdio_sif_esp.c | 12 ++++-------- 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/esp_ctrl.c b/esp_ctrl.c index 5382903..0c2774c 100755 --- a/esp_ctrl.c +++ b/esp_ctrl.c @@ -265,14 +265,13 @@ int sip_parse_events(struct esp_sip *sip, u8 *buf) char test_res_str[560]; sprintf(test_res_str, "esp_host:%llx\nesp_target: %.*s", DRIVER_VER, *len, p); - esp_dbg(ESP_SHOW, "%s\n", test_res_str); + esp_dbg(ESP_DBG_TRACE, "%s\n", test_res_str); if(*len && sip->epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT){ char filename[256]; if (mod_eagle_path_get() == NULL) sprintf(filename, "%s/%s", FWPATH, "test_results"); else sprintf(filename, "%s/%s", mod_eagle_path_get(), "test_results"); -// esp_readwrite_file(filename, NULL, test_res_str, strlen(test_res_str)); esp_dbg (ESP_DBG_TRACE, "SNPRINTF TO HOST: %s\n", test_res_str); } break; diff --git a/esp_mac80211.c b/esp_mac80211.c index 1f31e8f..b7b3427 100755 --- a/esp_mac80211.c +++ b/esp_mac80211.c @@ -223,23 +223,23 @@ static int esp_op_add_interface(struct ieee80211_hw *hw, case NL80211_IFTYPE_STATION: //if (svif.index == 1) // vif->type = NL80211_IFTYPE_UNSPECIFIED; - ESP_IEEE80211_DBG(ESP_SHOW, "%s STA \n", __func__); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s STA \n", __func__); svif.op_mode = 0; svif.is_p2p = 0; break; case NL80211_IFTYPE_AP: - ESP_IEEE80211_DBG(ESP_SHOW, "%s AP \n", __func__); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s AP \n", __func__); svif.op_mode = 1; svif.is_p2p = 0; break; #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) case NL80211_IFTYPE_P2P_CLIENT: - ESP_IEEE80211_DBG(ESP_SHOW, "%s P2P_CLIENT \n", __func__); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s P2P_CLIENT \n", __func__); svif.op_mode = 0; svif.is_p2p = 1; break; case NL80211_IFTYPE_P2P_GO: - ESP_IEEE80211_DBG(ESP_SHOW, "%s P2P_GO \n", __func__); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s P2P_GO \n", __func__); svif.op_mode = 1; svif.is_p2p = 1; break; @@ -269,11 +269,11 @@ static int esp_op_change_interface(struct ieee80211_hw *hw, ESP_IEEE80211_DBG(ESP_DBG_OP, "%s enter,change to if:%d \n", __func__, new_type); if (new_type == NL80211_IFTYPE_AP) { - ESP_IEEE80211_DBG(ESP_SHOW, "%s enter,change to AP \n", __func__); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s enter,change to AP \n", __func__); } if (vif->type != new_type) { - ESP_IEEE80211_DBG(ESP_SHOW, "%s type from %d to %d\n", __func__, vif->type, new_type); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s type from %d to %d\n", __func__, vif->type, new_type); } memset(&svif, 0, sizeof(struct sip_cmd_setvif)); @@ -434,7 +434,7 @@ static void drv_handle_beacon(unsigned long data) tim_reach = beacon_tim_alter(beacon); if (beacon && !(dbgcnt++ % 600)) { - ESP_IEEE80211_DBG(ESP_SHOW, " beacon length:%d,fc:0x%x\n", beacon->len, + ESP_IEEE80211_DBG(ESP_DBG_TRACE, " beacon length:%d,fc:0x%x\n", beacon->len, ((struct ieee80211_mgmt *)(beacon->data))->frame_control); } @@ -1615,9 +1615,9 @@ static int esp_op_ampdu_action(struct ieee80211_hw *hw, // return ret; #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)) - ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s TX START, addr:%pM,tid:%u\n", __func__, addr, tid); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s TX START, addr:%pM,tid:%u\n", __func__, addr, tid); #else - ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s TX START, addr:%pM,tid:%u,state:%d\n", __func__, sta->addr, tid, tid_info->state); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s TX START, addr:%pM,tid:%u,state:%d\n", __func__, sta->addr, tid, tid_info->state); #endif spin_lock_bh(&epub->tx_ampdu_lock); #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)) @@ -1664,9 +1664,9 @@ static int esp_op_ampdu_action(struct ieee80211_hw *hw, case IEEE80211_AMPDU_TX_STOP: #endif #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)) - ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s TX STOP, addr:%pM,tid:%u\n", __func__, addr, tid); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s TX STOP, addr:%pM,tid:%u\n", __func__, addr, tid); #else - ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s TX STOP, addr:%pM,tid:%u,state:%d\n", __func__, sta->addr, tid, tid_info->state); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s TX STOP, addr:%pM,tid:%u,state:%d\n", __func__, sta->addr, tid, tid_info->state); #endif spin_lock_bh(&epub->tx_ampdu_lock); #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)) @@ -1707,7 +1707,7 @@ static int esp_op_ampdu_action(struct ieee80211_hw *hw, #else case IEEE80211_AMPDU_TX_RESUME: #endif - ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s TX OPERATION, addr:%pM,tid:%u,state:%d\n", __func__, sta->addr, tid, tid_info->state); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s TX OPERATION, addr:%pM,tid:%u,state:%d\n", __func__, sta->addr, tid, tid_info->state); spin_lock_bh(&epub->tx_ampdu_lock); if (tid_info->state != ESP_TID_STATE_PROGRESS) { @@ -1757,19 +1757,19 @@ static int esp_op_ampdu_action(struct ieee80211_hw *hw, ) return ret; #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)) - ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s RX START %pM tid %u %u\n", __func__, addr, tid, *ssn); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s RX START %pM tid %u %u\n", __func__, addr, tid, *ssn); ret = sip_send_ampdu_action(epub, SIP_AMPDU_RX_START, addr, tid, *ssn, 64); #else - ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s RX START %pM tid %u %u\n", __func__, sta->addr, tid, *ssn); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s RX START %pM tid %u %u\n", __func__, sta->addr, tid, *ssn); ret = sip_send_ampdu_action(epub, SIP_AMPDU_RX_START, sta->addr, tid, *ssn, 64); #endif break; case IEEE80211_AMPDU_RX_STOP: #if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)) - ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s RX STOP %pM tid %u\n", __func__, addr, tid); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s RX STOP %pM tid %u\n", __func__, addr, tid); ret = sip_send_ampdu_action(epub, SIP_AMPDU_RX_STOP, addr, tid, 0, 0); #else - ESP_IEEE80211_DBG(ESP_DBG_ERROR, "%s RX STOP %pM tid %u\n", __func__, sta->addr, tid); + ESP_IEEE80211_DBG(ESP_DBG_TRACE, "%s RX STOP %pM tid %u\n", __func__, sta->addr, tid); ret = sip_send_ampdu_action(epub, SIP_AMPDU_RX_STOP, sta->addr, tid, 0, 0); #endif break; diff --git a/sdio_sif_esp.c b/sdio_sif_esp.c index 6e29bf2..03d293b 100755 --- a/sdio_sif_esp.c +++ b/sdio_sif_esp.c @@ -439,7 +439,6 @@ void sif_enable_irq(struct esp_pub *epub) void sif_disable_irq(struct esp_pub *epub) { - int err; struct esp_sdio_ctrl *sctrl = (struct esp_sdio_ctrl *)epub->sif; int i = 0; @@ -458,11 +457,8 @@ void sif_disable_irq(struct esp_pub *epub) } } - err = sdio_release_irq(sctrl->func); - - if (err) { - esp_dbg(ESP_DBG_ERROR, "%s release irq failed\n", __func__); - } + /* Ignore errors, we don't always use an irq. */ + sdio_release_irq(sctrl->func); atomic_set(&sctrl->irq_installed, 0); @@ -610,7 +606,7 @@ static int esp_sdio_probe(struct sdio_func *func, const struct sdio_device_id *i esp_dbg(ESP_DBG_TRACE, " %s return %d\n", __func__, err); if (epub->sdio_state == ESP_SDIO_STATE_FIRST_INIT) { - esp_dbg(ESP_DBG_ERROR, "first normal exit\n"); + esp_dbg(ESP_DBG_TRACE, "first normal exit\n"); epub->sdio_state = ESP_SDIO_STATE_FIRST_NORMAL_EXIT; /* Rescan the esp8089 after loading the initial firmware */ mmc_force_detect_change(host, msecs_to_jiffies(100), true); @@ -647,7 +643,7 @@ static void esp_sdio_remove(struct sdio_func *func) { struct esp_sdio_ctrl *sctrl = NULL; - esp_dbg(ESP_SHOW, "%s enter\n", __func__); + esp_dbg(ESP_DBG_TRACE, "%s enter\n", __func__); sctrl = sdio_get_drvdata(func); From 38cb0c10d70754392932a52d9335a29eed9c3b94 Mon Sep 17 00:00:00 2001 From: Icenowy Zheng Date: Wed, 25 May 2016 01:45:09 +0800 Subject: [PATCH 14/14] add dedicated firmware --- esp_mac80211.c | 13 ------------- esp_main.c | 6 +++--- firmware/eagle_fw_ate_config_v19.bin | Bin 0 -> 52080 bytes firmware/eagle_fw_first_init_v19.bin | Bin 0 -> 66944 bytes firmware/eagle_fw_second_init_v19.bin | Bin 0 -> 60448 bytes 5 files changed, 3 insertions(+), 16 deletions(-) create mode 100644 firmware/eagle_fw_ate_config_v19.bin create mode 100644 firmware/eagle_fw_first_init_v19.bin create mode 100644 firmware/eagle_fw_second_init_v19.bin diff --git a/esp_mac80211.c b/esp_mac80211.c index b7b3427..73661d7 100755 --- a/esp_mac80211.c +++ b/esp_mac80211.c @@ -27,9 +27,7 @@ #define GET_NEXT_SEQ(seq) (((seq) +1) & 0x0fff) -#ifdef P2P_CONCURRENT static u8 esp_mac_addr[ETH_ALEN * 2]; -#endif static u8 getaddr_index(u8 * addr, struct esp_pub *epub); static @@ -2216,15 +2214,12 @@ int esp_register_mac80211(struct esp_pub *epub) { int ret = 0; -#ifdef P2P_CONCURRENT u8 *wlan_addr; u8 *p2p_addr; int idx; -#endif esp_pub_init_mac80211(epub); -#ifdef P2P_CONCURRENT epub->hw->wiphy->addresses = (struct mac_address *)esp_mac_addr; memcpy(&epub->hw->wiphy->addresses[0], epub->mac_addr, ETH_ALEN); memcpy(&epub->hw->wiphy->addresses[1], epub->mac_addr, ETH_ALEN); @@ -2239,10 +2234,6 @@ esp_register_mac80211(struct esp_pub *epub) } epub->hw->wiphy->n_addresses = 2; -#else - - SET_IEEE80211_PERM_ADDR(epub->hw, epub->mac_addr); -#endif ret = ieee80211_register_hw(epub->hw); @@ -2274,14 +2265,10 @@ esp_register_mac80211(struct esp_pub *epub) static u8 getaddr_index(u8 * addr, struct esp_pub *epub) { -#ifdef P2P_CONCURRENT int i; for(i = 0; i < ESP_PUB_MAX_VIF; i++) if(memcmp(addr, (u8 *)&epub->hw->wiphy->addresses[i], ETH_ALEN) == 0) return i; return ESP_PUB_MAX_VIF; -#else - return 0; -#endif } diff --git a/esp_main.c b/esp_main.c index c6e4ecc..a7a49d8 100755 --- a/esp_main.c +++ b/esp_main.c @@ -165,9 +165,9 @@ struct esp_fw_blk_hdr { u32 data_len; } __packed; -#define ESP_FW_NAME1 "eagle_fw1.bin" -#define ESP_FW_NAME2 "eagle_fw2.bin" -#define ESP_FW_NAME3 "eagle_fw3.bin" +#define ESP_FW_NAME1 "eagle_fw_ate_config_v19.bin" +#define ESP_FW_NAME2 "eagle_fw_first_init_v19.bin" +#define ESP_FW_NAME3 "eagle_fw_second_init_v19.bin" #ifndef FPGA_DEBUG static int esp_download_fw(struct esp_pub * epub) diff --git a/firmware/eagle_fw_ate_config_v19.bin b/firmware/eagle_fw_ate_config_v19.bin new file mode 100644 index 0000000000000000000000000000000000000000..a5dc48b81a9ce34f004c5a607346aaf46da4acf9 GIT binary patch literal 52080 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 literal 0 HcmV?d00001 diff --git a/firmware/eagle_fw_first_init_v19.bin b/firmware/eagle_fw_first_init_v19.bin new file mode 100644 index 0000000000000000000000000000000000000000..c9488a2607aae3c010224e201f1f8ede5f5626e2 GIT binary patch literal 66944 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 literal 0 HcmV?d00001 diff --git a/firmware/eagle_fw_second_init_v19.bin b/firmware/eagle_fw_second_init_v19.bin new file mode 100644 index 0000000000000000000000000000000000000000..644fd77dab0036025b9b915ef89cb7200aca4876 GIT binary patch literal 60448 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