On Wed, 11 Dec 2019 at 09:47, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote: > > On Mon, 2 Dec 2019 at 23:28, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > > > > For the ux500v2 variant of the PL18x block, odd block sizes > > are supported. This is necessary to support some SDIO > > transfers. This also affects the QCOM MMCI variant and the > > ST micro variant. > > > > For Ux500 an additional quirk only allowing DMA on blocks > > that are a power of two is needed. This might be a bug in > > the DMA engine (DMA40) or the MMCI or in the interconnect, > > but the most likely is the MMCI, as transfers of these > > sizes work fine for other devices using the same DMA > > engine. DMA works fine also with SDIO as long as the > > blocksize is a power of 2. > > > > This patch has proven necessary for enabling SDIO for WLAN on > > PostmarketOS-based Ux500 platforms. > > > > What we managed to test in practice is Broadcom WiFi over > > SDIO on the Ux500 based Samsung GT-I8190 and GT-S7710. > > This WiFi chip, BCM4334 works fine after the patch. > > > > Before this patch: > > > > brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4334-sdio > > for chip BCM4334/3 > > mmci-pl18x 80118000.sdi1_per2: unsupported block size (60 bytes) > > brcmfmac: brcmf_sdiod_ramrw: membytes transfer failed > > brcmfmac: brcmf_sdio_download_code_file: error -22 on writing > > 434236 membytes at 0x00000000 > > brcmfmac: brcmf_sdio_download_firmware: dongle image file download > > failed > > > > After this patch: > > > > brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM4334/3 wl0: > > Nov 21 2012 00:21:28 version 6.10.58.813 (B2) FWID 01-0 > > > > Bringing up networks, discovering networks with "iw dev wlan0 scan" > > and connecting works fine from this point. > > > > This patch is inspired by Ulf Hansson's patch > > http://www.spinics.net/lists/linux-mmc/msg12160.html > > > > As the DMA engines on these platforms may now get block sizes > > they were not used to before, make sure to also respect if > > the DMA engine says "no" to a transfer. > > > > Make a drive-by fix for datactrl_blocksz, misspelled. > > Alright, I think this approach makes sense. > > Especially, trying to make some changes in mmci_pio_read|write() that > we can trigger/test doesn't make sense. /s/can/can't [...] Kind regards Uffe