Linux Kernel 3.14 with BCM43362 (sn8000 from Murata)

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hi,


We are running Linux Kernel 3.14 with BCM43362 (sn8000 from Murata) and the Linux driver in an AM335x from Texas.


MMC in the kernel is corretly initialized in the Device Tree.


When the driver module is inserted into the kernel and the SDIO is activated, we see the errors below (bold)

Any idea of what could be happening?

Rgds.

.....

[    1.591591] mmc0: new high speed SDIO card at address 0001

....

[   28.030980] omap_hsmmc 48060000.mmc: enabled

[   28.031026] mmc0: starting CMD52 arg 80022040 flags 00000195

[   28.031107] mmc0: req done (CMD52): 0: 00001040 00000000 00000000

00000000

[   28.031179] mmc0: starting CMD52 arg 80022200 flags 00000195

[   28.031231] mmc0: req done (CMD52): 0: 00001000 00000000 00000000

00000000

[   28.031420] mmc0: starting CMD52 arg 80042000 flags 00000195

[   28.031474] mmc0: req done (CMD52): 0: 00001000 00000000 00000000

00000000

[   28.031575] mmc0: starting CMD52 arg 80042202 flags 00000195

[   28.031627] mmc0: req done (CMD52): 0: 00001002 00000000 00000000

00000000

[   28.031666] mmc0: starting CMD52 arg 80022040 flags 00000195

[   28.031717] mmc0: req done (CMD52): 0: 00001040 00000000 00000000

00000000

[   28.031741] mmc0: starting CMD52 arg 80022200 flags 00000195

[   28.031790] mmc0: req done (CMD52): 0: 00001000 00000000 00000000

00000000

[   28.031814] mmc0: starting CMD52 arg 80042000 flags 00000195

[   28.031863] mmc0: req done (CMD52): 0: 00001000 00000000 00000000

00000000

[   28.031918] mmc0: starting CMD52 arg 80042202 flags 00000195

[   28.031966] mmc0: req done (CMD52): 0: 00001002 00000000 00000000

00000000

[   28.032016] SDIO: Enabling device mmc0:0001:1...

[   28.032028] mmc0: starting CMD52 arg 00000400 flags 00000195

[   28.032076] mmc0: req done (CMD52): 0: 00001000 00000000 00000000

00000000

[   28.032100] mmc0: starting CMD52 arg 80000402 flags 00000195

[   28.032148] mmc0: req done (CMD52): 0: 00001002 00000000 00000000

00000000

[   28.032272] mmc0: starting CMD52 arg 00000600 flags 00000195

[   28.032324] mmc0: req done (CMD52): 0: 00001002 00000000 00000000

00000000

[   28.032351] SDIO: Enabled device mmc0:0001:1

[   28.034037] mmc0: starting CMD52 arg 92001400 flags 00000195

[   28.034111] mmc0: req done (CMD52): 0: 00001000 00000000 00000000

00000000

[   28.034157] mmc0: starting CMD52 arg 92001600 flags 00000195

[   28.034214] mmc0: req done (CMD52): 0: 00001000 00000000 00000000

00000000

[   28.034240] mmc0: starting CMD52 arg 92001818 flags 00000195

[   28.034299] mmc0: req done (CMD52): 0: 00001018 00000000 00000000

00000000

[   28.034342] mmc0: starting CMD53 arg 15000004 flags 000001b5

[   28.034358] mmc0:     blksz 4 blocks 1 flags 00000200 tsac 1000 ms nsac 0

[   28.034466] mmc0: req done (CMD53): 0: 00001000 00000000 00000000

00000000

[   28.034478] mmc0:     4 bytes transferred: 0

[   28.034508] brcmfmac: F1 signature read @0x18000000=0x1591a962

[   28.034523] mmc0: starting CMD52 arg 92001c28 flags 00000195

[   28.034574] mmc0: req done (CMD52): 0: 00001028 00000000 00000000

00000000

[   28.034605] mmc0: starting CMD52 arg 12001c00 flags 00000195

[   28.034655] mmc0: req done (CMD52): 0: 00001068 00000000 00000000

00000000

[   28.034687] mmc0: starting CMD52 arg 92001c28 flags 00000195

[   28.034737] mmc0: req done (CMD52): 0: 00001028 00000000 00000000

00000000

[   28.034764] mmc0: starting CMD52 arg 12001c00 flags 00000195

[   28.034813] mmc0: req done (CMD52): 0: 00001068 00000000 00000000

00000000

[   28.034841] mmc0: starting CMD52 arg 12001c00 flags 00000195

[   28.034890] mmc0: req done (CMD52): 0: 00001068 00000000 00000000

00000000

[   28.034918] mmc0: starting CMD52 arg 92001c21 flags 00000195

[   28.034967] mmc0: req done (CMD52): 0: 00001021 00000000 00000000

00000000

[   28.035060] mmc0: starting CMD52 arg 92001e00 flags 00000195

[   28.035109] mmc0: req done (CMD52): 0: 00001000 00000000 00000000

00000000

[   28.035138] mmc0: starting CMD53 arg 15000004 flags 000001b5

[   28.035152] mmc0:     blksz 4 blocks 1 flags 00000200 tsac 1000 ms nsac 0

[   28.035243] mmc0: req done (CMD53): -110: 00000000 00000000 00000000

00000000

[   28.035255] mmc0:     0 bytes transferred: -110

[   28.035291] brcmfmac: brcmf_sdiod_request_data: failed to read data

F1@0x08000, err: -110

[   28.045984] mmc0: starting CMD53 arg 15000004 flags 000001b5

[   28.045999] mmc0:     blksz 4 blocks 1 flags 00000200 tsac 1000 ms nsac 0

[   28.046052] mmc0: req done (CMD53): -110: 00000000 00000000 00000000

00000000

[   28.046064] mmc0:     0 bytes transferred: -110

[   28.046087] brcmfmac: brcmf_sdiod_request_data: failed to read data

F1@0x08000, err: -110

[   28.056743] mmc0: starting CMD53 arg 15000004 flags 000001b5

[   28.056757] mmc0:     blksz 4 blocks 1 flags 00000200 tsac 1000 ms nsac 0

[   28.056808] mmc0: req done (CMD53): -110: 00000000 00000000 00000000

00000000

[   28.056820] mmc0:     0 bytes transferred: -110

[   28.056843] brcmfmac: brcmf_sdiod_request_data: failed to read data

F1@0x08000, err: -110

[   28.065473] brcmfmac: brcmf_sdiod_regrw_helper: failed with -110

[   28.071815] brcmfmac: brcmf_sdio_chip_recognition: chip backplane

type 15 is not supported

[   28.080546] brcmfmac: brcmf_sdio_probe_attach: brcmf_sdio_chip_attach

failed!

[   28.088077] brcmfmac: brcmf_sdio_probe: brcmf_sdio_probe_attach failed

[   28.094955] SDIO: Disabling IRQ for mmc0:0001:2...

[   28.094969] mmc0: starting CMD52 arg 00000800 flags 00000195

[   28.095007] mmc0: req done (CMD52): -110: 00000000 00000000 00000000

00000000

[   28.095037] SDIO: Disabling IRQ for mmc0:0001:1...

[   28.095050] mmc0: starting CMD52 arg 00000800 flags 00000195

[   28.095083] mmc0: req done (CMD52): -110: 00000000 00000000 00000000

00000000

[   28.095238] SDIO: Disabling device mmc0:0001:2...

[   28.095254] mmc0: starting CMD52 arg 00000400 flags 00000195

[   28.095291] mmc0: req done (CMD52): -110: 00000000 00000000 00000000

00000000

[   28.095320] SDIO: Failed to disable device mmc0:0001:2

[   28.095335] SDIO: Disabling device mmc0:0001:1...

[   28.095346] mmc0: starting CMD52 arg 00000400 flags 00000195

[   28.095386] mmc0: req done (CMD52): -110: 00000000 00000000 00000000

00000000

[   28.095409] SDIO: Failed to disable device mmc0:0001:1

[   28.095424] brcmfmac: brcmf_ops_sdio_probe: F2 error, probe failed -19...

[   28.187886] omap_hsmmc 48060000.mmc: disabled

0 Likes
7 Replies
Anonymous
Not applicable

You are getting timeouts on the SDIO bus. You need to tune the SDIO interface to make sure that the hardware interface is clean and there are no errors. What frequency are you running the interface at? You may need to contact your Murata HW technical support or TI HW technical support person to see how to make sure the SDIO interface is clean from the HW perspective first.

0 Likes
Anonymous
Not applicable

Hi, thanks for your answer.

We are running at 4 Mhz and we have lowered to 1 Mhz and 400 Khz (we've started at low frequencies). The SDIO signals seem to be correct. We've checked them with an oscilloscope and they are clean.

0 Likes
Anonymous
Not applicable

Are you using HW interrupts or OOB interrupts or polling?

What happens if you go higher in frequency - 20MHz for example?

0 Likes
Anonymous
Not applicable

Hi,

due to resource and schedule constraints we haven't analyzed the driver code. We've connected the module as recommended by the manufacturer. There's no OOB interrupt. We asume there's IN band interrupt (SDIO_D1).

We have tested it with higher frequencies with the same result (20-25 Mhz).

0 Likes
Anonymous
Not applicable

Have you probed SDIO_D1 to make sure you are getting the interrupts? Do you have the correct NVRAM file from Murata to make sure that OOB is not enabled?

Can you also try to run in poll mode? This is a simple kernel config and recompile just to test.

0 Likes
Anonymous
Not applicable

Hi, thanks. We have only checked the bus signal integrity. According to my mate it fails before loading the file when the driver tries to identify the chipset.

We will try to check the interrupt in SDIO_D1 and recompile in poll mode.

0 Likes
Anonymous
Not applicable

Hi,

is there any wiki of documentation about the driver? Could you point (if it's easy for you) where can we find this kernel config to recompile in poll mode?

Rgds

0 Likes