This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335X: Error message in SDIO driver

Team,

Any ideas on how to debug further the below error message:

The Wifi chip isonline. but it’s routing traffic but inconsistently and slowly.

[ 3064.041226] omap_hsmmc 47810000.mmc: MMC start dma failure
[ 3064.046789] brcmf_sdiod_sglist_rw: CMD53 sg block read failed -22
[ 3064.057026] brcmf_sdio_rxglom: glom read of 512 bytes failed: -5
[ 3064.064749] brcmf_sdio_rxfail: abort command, terminate frame
[ 3064.072472] brcmf_sdio_readframes: brcmf_sdio_readframes: glom superframe w/o descriptor!
[ 3064.082495] brcmf_sdio_rxfail: terminate frame
[ 3064.087252] brcmf_sdio_hdparse: seq 93: sequence number error, expect 92
Any idea if it's the device tree config? Is ours incorrect for MMC2 and kernel 4.7.2? or what else could be causing this?
       dmas = <&edma_xbar 12 0 1
                       &edma_xbar 13 0 2>;
       dma-names = "tx", "rx";
 
Thanks,
A.
  • The below info might help. In this case it seems to be an issue on the brcmf sdio driver:
    community.cypress.com/.../7319

    Also we are at Kernel 4.4 in our SDK so I don't think that we have tested Kernel 4.7 yet.

    A.
  • thanks for posting, I actually just fixed it (unfortunately with hardcoded values). It was a DMA alignment issue that requires some platform data for the OMAP HSMMC controller, which I added in to the brcmfmac driver. Ideally you would use module parameters but I don't think one exists yet for broken_sg_support.

    Here's a diff against kernel tag v4.7.2 below:

    diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
    index 3e15d64..fd66055 100644
    --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
    +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
    @@ -305,6 +305,11 @@ struct brcmf_mp_device *brcmf_get_module_param(struct device *dev,
                     */
                    brcmf_of_probe(dev, &settings->bus.sdio);
            }
    +
    +       settings->bus.sdio.broken_sg_support = true;
    +       settings->bus.sdio.oob_irq_supported = false;
    +       settings->bus.sdio.sd_head_align = 4;
    +       settings->bus.sdio.sd_sgentry_align = 512;
            return settings;
     }
    
    
  • Dear AnBer,
    I am also using the Murata wifi module with Am335x( Beagle Bone Black). I am also facing same issue. Could you please share the Device tree changes you have done and any other changes if you have done to make it work.

    Thank you.
  • I am using the TI AM335x (beagle bone black Rev c) board with Murata wifi module Type 1DX EVB ES2.0.
    And using linux kernel 4.4.32 from TI SDK 03.02.00.05.

    I made the following DTS changes.


    &mmc1 {

    ...

    brcmf: brcmf@1 {

    compatible = "brcm,bcm4329-fmac";

    reg = <1>;

    status = "okay";

        };

    };

    LOgs:

    [ 35.951730] omap_hsmmc 48060000.mmc: MMC start dma failure

    [ 35.971685] brcmf_sdiod_sglist_rw: CMD53 sg block write failed -22

    [ 35.982574] brcmf_sdio_txfail: sdio error, abort command and terminate frame

    And applied the patch mentioned in below cypress community link to set the alignment to 512. I got rxfail resolved, but txfail is still present. Please let me know if anything to be done.

    https://community.cypress.com/message/27710#27710