hamishcoleman / esp8089

Linux Wifi Driver for ESP8089 chips (same chip as used for ESP8266)
GNU General Public License v2.0
12 stars 1 forks source link

esp8089 sdio + imx6ull yocto Linux 4.19.35 #2

Closed wKolesnikAndrew closed 3 years ago

wKolesnikAndrew commented 3 years ago

Hello, I am try to run esp8089 chip with Linux 4.19.35 (yocto project on imx6ull controller).

My device tree looks:

&usdhc1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usdhc1>; card-detect-delay = <800>; status = "okay"; wakeup-source;

esp8089: sdio_wifi@1 { vmmc-supply = <&reg_sd1_vmmc>; compatible = "esp,esp8089"; esp,crystal_26M_en = <2>; clock-frequency = <50000000>; clock-freq-min-max = <200000 50000000>; supports-highspeed; supports-sdio; bus-width = <4>; cd-post; pm-ignore-notify; wifi-host; non-removable; disable-wp; status = "okay"; }; };

CH_PD connected to GPIO 9 imx6ull, and I am fix schematic to pullup this pin. After powerup mmc0 device recognized like high speed SDIO card:

cat /sys/kernel/debug/mmc0/ios clock: 50000000 Hz actual clock: 44000000 Hz vdd: 21 (3.3 ~ 3.4 V) bus mode: 2 (push-pull) chip select: 0 (don't care) power mode: 2 (on) bus width: 2 (4 bits) timing spec: 2 (sd high-speed) signal voltage: 0 (3.30 V) driver type: 0 (driver type B)

[ 0.991350] sdhci: Secure Digital Host Controller Interface driver [ 0.991370] sdhci: Copyright(c) Pierre Ossman [ 0.991381] sdhci-pltfm: SDHCI platform and OF driver helper [ 1.028674] mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA [ 1.055568] mmc0: queuing unknown CIS tuple 0x01 (3 bytes) [ 1.066636] mmc0: queuing unknown CIS tuple 0x1a (5 bytes) [ 1.070629] mmc0: queuing unknown CIS tuple 0x1b (8 bytes) [ 1.075118] mmc1: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA [ 1.088194] random: fast init done [ 1.089401] mmc0: queuing unknown CIS tuple 0x80 (1 bytes) [ 1.089635] mmc0: queuing unknown CIS tuple 0x81 (1 bytes) [ 1.089889] mmc0: queuing unknown CIS tuple 0x82 (1 bytes) [ 1.090013] mmc0: new high speed SDIO card at address 0001

But wheh driver tries go up i have an error:

[ 13.123295] esp8089: loading out-of-tree module taints kernel. [ 13.207291] imx6ull_reset_off EXT RESET NOW OFF! [ 13.207349] EAGLE DRIVER VER:bdf5087c3deb

[ 13.207474] ESP8089 reset via GPIO 9 [ 13.465308] sdio_register_driver 1 [ 13.474356] eagle_sdio_dummy: probe of mmc0:0001:1 failed with error -110

[ 24.805251] esp_sdio_init ------ RETRY ------ [ 24.808095] ESP8089 reset via GPIO 9 [ 25.065279] sdio_register_driver 1 [ 25.074315] eagle_sdio_dummy: probe of mmc0:0001:1 failed with error -110 [ 36.325233] esp_sdio_init ------ RETRY ------ [ 36.325429] ESP8089 reset via GPIO 9 [ 36.585211] sdio_register_driver 1 [ 36.594276] eagle_sdio_dummy: probe of mmc0:0001:1 failed with error -110 [ 47.845224] esp_sdio_init ------ RETRY ------ [ 47.845423] ESP8089 reset via GPIO 9 [ 48.105166] sdio_register_driver 1 [ 48.114775] eagle_sdio_dummy: probe of mmc0:0001:1 failed with error -110 [ 59.365185] esp_sdio_init ------ RETRY ------ [ 59.365381] eagle sdio can not power up!

So, I can see than sdio device not reconnected. Maybe system configurated to scaning one time peripheral devices. Can you help me to run esp8089 driver?

Schematic and dmesg in attached. wifi imx dmesg_1.txt /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Checked CH_PD - is driven for reset and reconfigureted to input when released. Made the EXT_RES floating (I disconnected it from the circuit). When starting the driver, manually disconnect and reconnect the sdio-device: echo -n "2190000.usdhc" > /sys/devices/soc0/soc/2100000.aips-bus/2190000.usdhc/driver/unbind (disconnect sdio) echo -n "2190000.usdhc" > /sys/bus/soc/devices/soc0/soc/2100000.aips-bus/2190000.usdhc/subsystem/drivers/sdhci-esdhc-imx/bind (connect sdio) and after this dummy driver go up:

      ***** EAGLE DRIVER VER:bdf5087c3deb*****

[ +0.000101] ESP8089 reset via GPIO 9 [ +0.214795] sdio_register_driver 1 [ +0.009174] eagle_sdio_dummy: probe of mmc0:0001:1 failed with error -110 [ +2.081379] mmc0: card 0001 removed (<---- disconnected mmc0) [ +3.739124] mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA [ +0.035496] mmc0: queuing unknown CIS tuple 0x01 (3 bytes) [ +0.013725] mmc0: queuing unknown CIS tuple 0x1a (5 bytes) [ +0.009254] mmc0: queuing unknown CIS tuple 0x1b (8 bytes) [ +0.036516] mmc0: queuing unknown CIS tuple 0x80 (1 bytes) [ +0.001922] mmc0: queuing unknown CIS tuple 0x81 (1 bytes) [ +0.000678] mmc0: queuing unknown CIS tuple 0x82 (1 bytes) [ +0.000683] mmc0: new high speed SDIO card at address 0001 (<---- connected mmc0) [ +0.013637] esp_sdio_dummy_probe enter [ +0.218336] esp_sdio_init power up OK (<---- dummy driver OK?) [ +0.000301] sdio_register_driver 1 [ +0.644199] esp_host:bdf5087c3deb esp_target: e826c2b3c9fd 57 18202

, but another error appier:

[ +0.011556] Unable to handle kernel NULL pointer dereference at virtual addres s 00000000 [ +0.000030] pgd = df9d2411 [ +0.000011] [00000000] *pgd=00000000 [ +0.000029] Internal error: Oops: 80000007 [#1] PREEMPT SMP ARM [ +0.000010] Modules linked in: esp8089(O+) [ +0.000033] CPU: 0 PID: 80 Comm: kworker/u2:1 Tainted: G O 4.19 .35-1.1.0+g0f9917c56d59 #1 [ +0.000010] Hardware name: Freescale i.MX6 UltraLite (Device Tree) [ +0.000131] Workqueue: esp_wkq sip_rxq_process [esp8089] [ +0.000019] PC is at (null) [ +0.000078] LR is at esp_readwrite_file+0x108/0x238 [esp8089] [ +0.000012] pc : [<00000000>] lr : [<7f04af3c>] psr: a00e0013 [ +0.000011] sp : 8852baf0 ip : 000f2174 fp : 88a9f040 [ +0.000010] r10: 887eb7e4 r9 : 00000000 r8 : 00000038 [ +0.000011] r7 : 8852bb24 r6 : 00000000 r5 : 8852bc24 r4 : 887c0e40 [ +0.000011] r3 : 887c0e80 r2 : 00000038 r1 : 8852bc24 r0 : 887c0e40 [ +0.000015] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none [ +0.000012] Control: 10c53c7d Table: 8902406a DAC: 00000051 [ +0.000013] Process kworker/u2:1 (pid: 80, stack limit = 0x6387d74a) [ +0.000013] Stack: (0x8852baf0 to 0x8852c000) [ +0.000017] bae0: 88a9f040 80a5fbdc 8852bb 10 81004d08 [ +0.000021] bb00: 8852bb24 887eb780 7f056080 88f3a180 7f056080 7f04f228 000000 16 88a9f04e [ +0.000021] bb20: 81004d08 7379732f 2f6d6574 2f62696c 75646f6d 2f73656c 747365 74 7365725f [ +0.000020] bb40: 73746c75 8015e000 00000000 00000001 00000000 8852bbe0 8832a4 80 8bb3c200 [ +0.000020] bb60: 81004d70 8bb3c180 8832a400 8bb3c180 8bb3c180 8832a400 8bb3c1 80 00000000 [ +0.000020] bb80: 8bb3c200 8015966c 8bb3c180 8832a400 8852bbe4 80a6679c 8bb3c1 80 80150ce0 [ +0.000020] bba0: 8bb3c290 00000000 ffffffff 00000000 8895a000 8014d054 8832a4 00 00000001 [ +0.000020] bbc0: 8895a000 8bb3c180 8832a400 882de400 81004d08 89052e00 000000 00 80b02b18 [ +0.000021] bbe0: 8852bc2c 80a61b28 00000000 8852bc30 7fffffff 8852bd44 8852bd 48 80a61f00 [ +0.000020] bc00: 81004d08 8b0c90b5 00000000 ffffe000 8852bd44 8852bd48 81004d 08 81004d08 [ +0.000020] bc20: 00000000 5f707365 74736f68 6664623a 37383035 65643363 73650a 62 61745f70 [ +0.000021] bc40: 74656772 3865203a 32633632 39633362 35206466 38312037 0a3230 32 8920de00 [ +0.000020] bc60: 8920df40 8bb3c180 8bb3c340 80a666f4 8832a400 00000000 81004d 08 81004e98 [ +0.000021] bc80: 8bb3c180 8015162c 8832a400 8bb3c180 8852bca4 80151ce4 8920de 00 8bb3c180 [ +0.000020] bca0: 8852bcd4 80151d04 81004e98 00000000 8920e270 8920de00 8bb3c1 80 81004d08 [ +0.000020] bcc0: 81004e98 00000000 8852bd0c 80a66748 8920de00 80152f7c 0abb90 00 60030193 [ +0.000020] bce0: 00000000 8b0c90b5 00000000 88983db8 00000001 88983dc4 000000 00 8015318c [ +0.000020] bd00: 81004d08 00000000 00000001 88d50b40 00000001 8074b3dc 88d50b c0 00000000 [ +0.000020] bd20: 00000030 8074a3a8 88d50b40 00000001 00000001 80a666f4 88d50b 40 8074835c [ +0.000020] bd40: 88d50c94 00000000 02ff003f 000f0001 0270003e 88d50c94 000000 00 80de4840 [ +0.000021] bd60: 0147adf0 8072e980 80b01414 80db5f3c 00000000 88d50d20 88d50d 24 88b29540 [ +0.000020] bd80: 8810dd68 00000000 8852bdd8 00000039 81004d08 00000001 81004d 08 80f81128 [ +0.000020] bda0: 8bb3a128 804edea4 14d3afc3 8b0c90b5 00000102 81004d08 81004d 08 00000001

Message from syslogd@imx6ull14x14evk at Thu Apr 23 10:52:55 2020 ... imx6ull14x14evk[ +0.000020] bdc0: 8810dd00 00000001 00000000 8852be58 8810dd68 8810dd68 00000001 00000001 [ +0.000020] bde0: 8852bef4 80a66470 8810dd00 8017394c 80f7f4c4 8bb384c4 81004e 98 00000001 [ +0.000020] be00: 80f82cf8 00000000 00000039 00000001 00000000 80173074 810050 cc 8101db5c kernel: Internal error: Oops: 80000007 [#1] PREEMPT SMP ARM [ +0.000020] be20: f4a0200c f4a02000 8852be58 f4a03000 80a61b28 8042fc28 80a667 94 60030113 [ +0.000021] be40: ffffffff 8852be8c 887eb7e0 60030113 887eb7e0 8b0c90b5 ffffe0 00 00000011 [ +0.000020] be60: 00000100 88004200 7f056080 88f3a180 7f056080 887eb7e4 88a9f0 40 7f04c724 [ +0.000020] be80: 80a61b28 8852bef4 00000000 8852bea8 80150ce0 80a66794 600301 13 ffffffff [ +0.000021] bea0: 8852bef4 80a6679c 8bb3c180 80150ce0 80f7f4d8 00000000 ffffff ff 887eb780 [ +0.000020] bec0: 88982000 8014d054 00000100 00000002 88982000 8bb3c180 887eb7 d4 81004d08 [ +0.000021] bee0: 887eb7c0 89052e00 00000000 80b02c04 8852bf3c 80a61b28 88b9fe 14 8b0c90b5 [ +0.000020] bf00: 887f3418 887eb7e4 88521600 88004200 89180700 00000000 887eb7 e8 00000000 [ +0.000020] bf20: ffffe000 80145f14 00000088 81003d00 88521600 88521614 880042 00 00000088 [ +0.000020] bf40: 81003d00 88004218 88004200 80146c30 8832a870 810a6340 80d28b 48 00000000 [ +0.000021] bf60: 8852401c 88524000 884e9e40 00000000 8852a000 88521600 80146b ec 8805bea4 [ +0.000019] bf80: 8852401c 8014bb1c 00000000 884e9e40 8014b9d4 00000000 000000 00 00000000 [ +0.000019] bfa0: 00000000 00000000 00000000 801010e8 00000000 00000000 000000 00 00000000 [ +0.000019] bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 000000 00 00000000 [ +0.000018] bfe0: 00000000 00000000 00000000 00000000 00000013 00000000 000000 00 00000000 [ +0.000156] [<7f04af3c>] (esp_readwrite_file [esp8089]) from [<7f04f228>] (sip _parse_events+0x244/0x484 [esp8089]) [ +0.000144] [<7f04f228>] (sip_parse_events [esp8089]) from [<7f04c724>] (sip_r xq_process+0x138/0xc60 [esp8089]) [ +0.000090] [<7f04c724>] (sip_rxq_process [esp8089]) from [<80145f14>] (proces s_one_work+0x1f0/0x3fc)

Message from syslogd@imx6ull14x14evk at Thu Apr 23 10:52:55 2020 ... imx6ull14x14evk kernel: Process kworker/u2:1 (pid: 80, stack limit = 0x6387d74a)

Message from syslogd@imx6ull14x14evk at Thu Apr 23 10:52:55 2020 ... imx6ull14x14evk kernel: Stack: (0x8852baf0 to 0x8852c000) [ +0.000028] [<80145f14>] (process_one_work) from [<80146c30>] (worker_thread+0 x44/0x580) [ +0.000026] [<80146c30>] (worker_thread) from [<8014bb1c>] (kthread+0x148/0x15 0) [ +0.000026] [<8014bb1c>] (kthread) from [<801010e8>] (ret_from_fork+0x14/0x2c) [ +0.000012] Exception stack(0x8852bfb0 to 0x8852bff8) [ +0.000015] bfa0: 00000000 00000000 000000 00 00000000 [ +0.000019] bfc0: 00000000 00000000 00000000 00000000 00000000 00000000 000000 00 00000000

Message from syslogd@imx6ull14x14evk at Thu Apr 23 10:52:55 2020 ... imx6ull14x14evk kernel: bae0: 88a9f040 80a5f bdc 8852bb10 81004d08 [ +0.000016] bfe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ +0.000018] Code: bad PC value [ +0.001057] ---[ end trace 373e885131263860 ]--- ........ [Apr23 10:53] resetting event timeout [ +0.000031] esp_init_all failed: -110 [ +0.000039] first error exit

What could be the problem? dmesg: dmesg.txt

wKolesnikAndrew commented 3 years ago

Hello, issue can be closed, I found a solution. I am added flag ESP_ACK_INTERRUPT and rebuild driver. Additional in file sdio_stub.h I have replaced strange function extern void sdmmc_ack_interrupt(struct mmc_host mmc); to dummy: void sdmmc_ack_interrupt(struct mmc_host mmc) { return; }. And after that driver run normally. Thanks.

[ 15.977106] imx6ull_reset_off EXT RESET NOW OFF! [ 15.977307] EAGLE DRIVER VER:bdf5087c3deb

[ 15.977480] ESP8089 reset via GPIO 9 [ 16.195073] sdio_register_driver 1 [ 16.204038] eagle_sdio_dummy: probe of mmc0:0001:1 failed with error -110 [ 16.234879] Generic PHY 2188000.ethernet-1:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=2188000.ethernet-1:00, irq=POLL) [ 16.235857] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 18.325730] fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx [ 18.325792] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 19.425408] Generic PHY 2188000.ethernet-1:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=2188000.ethernet-1:00, irq=POLL) [ 19.427316] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 21.525652] fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx [ 21.525715] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 23.569703] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. [ 27.362182] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null) [ 27.366061] esp_sdio_init ------ RETRY ------ [ 27.366263] ESP8089 reset via GPIO 9 [ 27.585164] ESP8089 reset via GPIO 9 [ 27.805063] sdio_register_driver 1 [ 27.814086] eagle_sdio_dummy: probe of mmc0:0001:1 failed with error -110 [ 38.885034] esp_sdio_init ------ RETRY ------ [ 38.885279] ESP8089 reset via GPIO 9 [ 39.105123] ESP8089 reset via GPIO 9 [ 39.325115] sdio_register_driver 1 [ 39.333911] eagle_sdio_dummy: probe of mmc0:0001:1 failed with error -110 [ 50.405097] esp_sdio_init ------ RETRY ------ [ 50.405281] ESP8089 reset via GPIO 9 [ 50.625046] ESP8089 reset via GPIO 9 [ 50.845311] sdio_register_driver 1 [ 50.854160] eagle_sdio_dummy: probe of mmc0:0001:1 failed with error -110 [ 61.925207] esp_sdio_init ------ RETRY ------ [ 61.925388] ESP8089 reset via GPIO 9 [ 62.145138] eagle sdio can not power up! [ 118.174240] imx6ull_reset_off EXT RESET NOW OFF! [ 118.174303] EAGLE DRIVER VER:bdf5087c3deb

[ 118.174397] ESP8089 reset via GPIO 9 [ 118.385149] sdio_register_driver 1 [ 118.393769] eagle_sdio_dummy: probe of mmc0:0001:1 failed with error -110 [ 121.678621] mmc0: card 0001 removed [ 126.525123] mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA [ 126.558444] mmc0: queuing unknown CIS tuple 0x01 (3 bytes) [ 126.573369] mmc0: queuing unknown CIS tuple 0x1a (5 bytes) [ 126.579419] mmc0: queuing unknown CIS tuple 0x1b (8 bytes) [ 126.604176] mmc0: queuing unknown CIS tuple 0x80 (1 bytes) [ 126.607484] mmc0: queuing unknown CIS tuple 0x81 (1 bytes) [ 126.607685] mmc0: queuing unknown CIS tuple 0x82 (1 bytes) [ 126.607784] mmc0: new high speed SDIO card at address 0001 [ 126.619158] esp_sdio_dummy_probe enter [ 126.834977] esp_sdio_init power up OK [ 126.835271] sdio_register_driver 1 [ 127.418603] esp_host:bdf5087c3deb esp_target: e826c2b3c9fd 57 18202

[ 127.418740] esp_readwrite_file: file /system/lib/modules/test_results filp_open error [ 127.418908] first normal exit [ 127.419233] esp_sdio_remove enter [ 127.424291] sif_disable_irq release irq failed [ 127.534990] sdio_register_driver 1 [ 127.543784] eagle_sdio: probe of mmc0:0001:1 failed with error -110 [ 129.362583] mmc0: card 0001 removed [ 131.807183] mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA [ 131.842261] mmc0: queuing unknown CIS tuple 0x01 (3 bytes) [ 131.856435] mmc0: queuing unknown CIS tuple 0x1a (5 bytes) [ 131.862950] mmc0: queuing unknown CIS tuple 0x1b (8 bytes) [ 131.876506] mmc0: queuing unknown CIS tuple 0x80 (1 bytes) [ 131.876679] mmc0: queuing unknown CIS tuple 0x81 (1 bytes) [ 131.876840] mmc0: queuing unknown CIS tuple 0x82 (1 bytes) [ 131.876934] mmc0: new high speed SDIO card at address 0001 [ 132.363195] esp_host:bdf5087c3deb esp_target: e826c2b3c9fd 57 18202

[ 132.651912] esp_op_add_interface STA [ 132.667367] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 172.687963] esp_op_change_interface enter,change to AP [ 172.687991] esp_op_change_interface type from 2 to 3 [ 177.828714] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready