Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx> wrote: > The Allwinner sunxi-mmc controller cannot handle word (16 bit) > transfers. So and sdio_{read,write}w fails with messages like the > following example using an RTL8822BS (but the same problems were also > observed with RTL8822CS and RTL8723DS chips): > rtw_8822bs mmc1:0001:1: Firmware version 27.2.0, H2C version 13 > sunxi-mmc 4021000.mmc: unaligned scatterlist: os f80 length 2 > sunxi-mmc 4021000.mmc: map DMA failed > rtw_8822bs mmc1:0001:1: sdio read16 failed (0x10230): -22 > > Use two consecutive single byte accesses for word operations instead. It > turns out that upon closer inspection this is also what the vendor > driver does, even though it does have support for sdio_{read,write}w. So > we can conclude that the rtw88 chips do support word access but only on > SDIO controllers that also support it. Since there's no way to detect if > the controller supports word access or not the rtw88 sdio driver > switches to the easiest approach: avoiding word access. > > Reported-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx> > Closes: https://lore.kernel.org/linux-wireless/527585e5-9cdd-66ed-c3af-6da162f4b720@xxxxxxxxxxxx/ > Reported-by: Rudi Heitbaum <rudi@xxxxxxxxxxxx> > Link: https://github.com/LibreELEC/LibreELEC.tv/pull/7837#issue-1708469467 > Fixes: 65371a3f14e7 ("wifi: rtw88: sdio: Add HCI implementation for SDIO based chipsets") > Reviewed-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx> > Signed-off-by: Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx> Patch applied to wireless.git, thanks. cb0ddaaa5db0 wifi: rtw88: sdio: Always use two consecutive bytes for word operations -- https://patchwork.kernel.org/project/linux-wireless/patch/20230515195043.572375-1-martin.blumenstingl@xxxxxxxxxxxxxx/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches