MLK-11794 bcmdhd: prevent driver to use scatter list DMA if host not support
Current driver will meet the following warning on MX6SL platform which does
not support ADMA.
It is caused by the driver is using fixed scatter gather DMA not matter whether
the host supports or not. Then the host without ADMA capability will warning
if found the DMA sg_count is non-1.
Change the driver a bit to avoid multi DMA scatter list if found the
host->max_segs is only 1 to fix the issue.
root@imx6slevk:~# udhcpc -i wlan0
udhcpc (v1.23.1) started
Sending discover...
Sending select for 192.168.1.11...
Lease of 192.168.1.11 obtained, lease time 86400
/etc/udhcpc.d/50default: Adding DNS 192.168.1.1
root@imx6slevk:~# ------------[ cut here ]------------
WARNING: CPU: 0 PID: 954 at /home/jenkins/jobs/Standalone-X11_with_mfgtools/workspace/temp_build_dir/build_fsl-imx-internal-x11/tmp/work-shared/imx6slevk/kernel-source/drivers/mmc/host/sdhci.c:839 sdhci_send_command+0xc64/0xd10()
Modules linked in: bcmdhd evbug [last unloaded: bcmdhd]
CPU: 0 PID: 954 Comm: dhd_dpc Tainted: G W 3.14.52-1.1.0_ga+g76946e8 #1
[<
80014a68>] (unwind_backtrace) from [<
80011758>] (show_stack+0x10/0x14)
[<
80011758>] (show_stack) from [<
80720180>] (dump_stack+0x7c/0xbc)
[<
80720180>] (dump_stack) from [<
80031df8>] (warn_slowpath_common+0x70/0x8c)
[<
80031df8>] (warn_slowpath_common) from [<
80031eb0>] (warn_slowpath_null+0x1c/0x24)
[<
80031eb0>] (warn_slowpath_null) from [<
804d5d2c>] (sdhci_send_command+0xc64/0xd10)
[<
804d5d2c>] (sdhci_send_command) from [<
804d74e8>] (sdhci_request+0xc0/0x1f0)
[<
804d74e8>] (sdhci_request) from [<
804c218c>] (__mmc_start_req+0x60/0x84)
[<
804c218c>] (__mmc_start_req) from [<
804c25a4>] (mmc_wait_for_req+0x10/0x20)
[<
804c25a4>] (mmc_wait_for_req) from [<
7f27ff6c>] (sdioh_request_packet_chain+0x368/0x400 [bcmdhd])
[<
7f27ff6c>] (sdioh_request_packet_chain [bcmdhd]) from [<
7f280da4>] (sdioh_request_buffer+0x124/0x294 [bcmdhd])
[<
7f280da4>] (sdioh_request_buffer [bcmdhd]) from [<
7f27f6dc>] (bcmsdh_send_buf+0x94/0x108 [bcmdhd])
[<
7f27f6dc>] (bcmsdh_send_buf [bcmdhd]) from [<
7f28e98c>] (dhd_bcmsdh_send_buf.constprop.25+0x80/0x220 [bcmdhd])
[<
7f28e98c>] (dhd_bcmsdh_send_buf.constprop.25 [bcmdhd]) from [<
7f28f454>] (dhdsdio_txpkt.constprop.24+0x928/0xa2c [bcmdhd])
[<
7f28f454>] (dhdsdio_txpkt.constprop.24 [bcmdhd]) from [<
7f28f6b0>] (dhdsdio_sendfromq+0x158/0x3c4 [bcmdhd])
[<
7f28f6b0>] (dhdsdio_sendfromq [bcmdhd]) from [<
7f2913d4>] (dhdsdio_dpc+0x2e8/0x1034 [bcmdhd])
[<
7f2913d4>] (dhdsdio_dpc [bcmdhd]) from [<
7f24a270>] (dhd_dpc_thread+0xe8/0x124 [bcmdhd])
[<
7f24a270>] (dhd_dpc_thread [bcmdhd]) from [<
8004ca6c>] (kthread+0xcc/0xe4)
[<
8004ca6c>] (kthread) from [<
8000e500>] (ret_from_fork+0x14/0x34)
Signed-off-by: Dong Aisheng <aisheng.dong@freescale.com>
(cherry picked from commit
77ff69e3d3a82c4fcf2d6c6d2a904d4fc1793542)