Tool/software: Linux
Hello,
We have a custom board based on am5708 processor interfacing with u-blox LILY-W1 Wi-Fi module (based on the Marvell Avastar 88W8801 chipset) using mmc3 (SDIO) interface. We are able to successfully connect with router but we are facing performance issue which seems to be related to mmc interface configuration.
We managed to get throughput datarate (tcp connection) in the system of about 10 Mbit/s maximum using iperf tool we were expect to have much higher datarates.
We configure the mmc interface through device tree using clock and bus width settings according both AM5708 Technical Reference Manual (SPRUHZ7E–August 2015–Revised February 2017) and U-Blox system integration manual.
U-Blox module supports 1-bit and 4-bit SDIO transfer modes at the full clock range of 0 to 50 MHz.
MMC3 host controller (AM5708) can be configured (according TRM)
- DS mode (3.3V IOs): up to 12 MBps (24 MHz clock)
- HS mode (3.3V IOs): up to 24 MBps (48 MHz clock)
- Default SD mode 1-bit data transfer up to 24Mbps (3MBps)
We observe best performance (~ 10 Mbits/s) with MMC3 host controller configured with clock 24 Mhz and bus width 1-bit mode.
Our expectation is to have best performance with MMC3 host controller configured with 48 Mhz clock and 4 bits bus width but then the througput drops down to ~ 6 Mbit/s....
NOTE:
We have checked RF quality and schematic / board design of the u-blox module against the evaluation board of the Lily-W1 module we use for tests as well. RF link is comparible with the reference board.
With this evalution module we can reach bitrates of ~30 Mbit/s using the USB interface to our custom board.
Question is:
Can someone give us directions / guidelines how the mmc interface shall be configured and verified for correct settings.?
--------------------------------------- Config details and results -------------------------------------------------------
&mmc3 {
pinctrl-names = "default", "hs";
pinctrl-0 = <&mmc3_pins_default>;
pinctrl-1 = <&mmc3_pins_hs>;
max-frequency = <48000000>;
ti,non-removable;
ti,dual-volt;
disable-wp;
bus-width = <4>;
/delete-property/ sd-uhs-sdr50;
/delete-property/ sd-uhs-sdr25;
/delete-property/ sd-uhs-sdr12;
};
root@wa55-proto-a:~# cat /sys/kernel/debug/mmc2/ios
clock: 48000000 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)
root@wa55-proto-a:~# iperf -c 192.168.5.100
------------------------------------------------------------
Client connecting to 192.168.5.100, TCP port 5001
TCP window size: 43.8 KByte (default)
--------[ 712.298841] Send addba: TID 0
[ 712.306063] Send addba RA:
[ 712.308901] 64 d1 a3 32 fe da
[ 712.312103] wlan0: QUEUE_CMD: cmd=0xce is queued
------------------------------------------------[ 712.317641] wlan0: ----
DNLD_CMD (1493043712.129249): 0xce, act 0x6400, len 22, seqno 0x37
[ 712.329928] DNLD_CMD:
[ 712.332310] ce 00 16 00 37 00 00 00 00 64 d1 a3 32 fe da 01
[ 712.338246] 02 08 ff ff a3 dd
[ 3] local 192.168.5.101 port 44564 connected with 192.168.5.100 port 5001
[ 712.358906] CMD_RESP:
[ 712.361294] ce 80 18 00 37 00 00 00 00 64 d1 a3 32 fe da 01
[ 712.367235] 00 00 02 08 00 00 00 00
[ 712.371040] wlan0: CMD_RESP (1493043712.182649): 0x80ce, result 0, len 24, seqno 0x37
[ 712.379286] ADDBA REQ: 64:XX:XX:XX:fe:da tid=0 ssn=0 win_size=32,amsdu=0
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 7.50 MBytes 6.29 Mbits/sec
================================ TEST 2 =======================================
&mmc3 {
pinctrl-names = "default";
/*pinctrl-0 = <&mmc3_pins_default>; */
pinctrl-0 = <&mmc3_pins_hs>;
max-frequency = <24000000>;
non-removable;
ti,dual-volt;
disable-wp;
bus-width = <1>;
/delete-property/ sd-uhs-sdr50;
/delete-property/ sd-uhs-sdr25;
/delete-property/ sd-uhs-sdr12;
};
root@wa55-proto-a:~# cat /sys/kernel/debug/mmc2/ios
clock: 24000000 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: 0 (1 bits)
timing spec: 0 (legacy)
signal voltage: 0 (3.30 V)
driver type: 0 (driver type B)
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-15.0 sec 16.8 MBytes 9.36 Mbits/sec
root@wa55-proto-a:~# iperf -c 192.168.5.100 -t 15
------------------------------------------------------------
Client connecting to 192.168.5.100, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.5.101 port 43956 connected with 192.168.5.100 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-15.0 sec 17.2 MBytes 9.64 Mbits/sec
Thanks,
Andre Hoffard