RFC: PCI SD host controller driver & mmc/mmcsd modules improvements

Alexander Motin mav at FreeBSD.org
Thu Nov 6 12:02:34 PST 2008


Lars Engels wrote:
> Nov  6 20:21:11 maggie kernel: sdhci_request cmd op 55 arg 131072 flags 21 data 0
> Nov  6 20:21:11 maggie kernel: sdhci0-slot0: got interrupt 1
> Nov  6 20:21:11 maggie kernel: sdhci_request cmd op 6 arg 2 flags 21 data 0
> Nov  6 20:21:11 maggie kernel: sdhci0-slot0: got interrupt 1
> Nov  6 20:21:11 maggie kernel: sdhci_request cmd op 17 arg 0 flags 53 data 512
> Nov  6 20:21:11 maggie kernel: sdhci0-slot0: got interrupt 3

This is the first data request. 512 bytes reading. It was finished 
successfully: command end + data end = 3.

> Nov  6 20:21:11 maggie kernel: sdhci_request cmd op 17 arg 0 flags 53 data 0
> Nov  6 20:21:11 maggie kernel: sdhci0-slot0: got interrupt 3

But here is the problem. For some reason you have _zero_ data size. 
Controller reports successful competition, but it probably isn't

> Nov  6 20:21:11 maggie kernel: sdhci_request cmd op 17 arg 0 flags 53 data 0
> Nov  6 20:21:11 maggie kernel: sdhci0-slot0: got interrupt 18002
> Nov  6 20:21:11 maggie kernel: sdhci0-slot0: Command error 1 (opcode 17 arg 0 flags 53 dlen 0 dflags 2)
> Nov  6 20:21:11 maggie kernel: sdhci0-slot0: Got data interrupt 0x00000002, but there is no active command.

Here is the results of the previous. Card still sending something, does 
not responds to the command, controller signals error.

> # fdisk /dev/mmcsd0
> 
> Nov  6 20:22:57 maggie kernel: sdhci_request cmd op 17 arg 0 flags 53 data 0
> Nov  6 20:22:57 maggie kernel: sdhci0-slot0: got interrupt 3
> Nov  6 20:22:57 maggie kernel: sdhci_request cmd op 17 arg 0 flags 53 data 0
> Nov  6 20:22:57 maggie kernel: sdhci0-slot0: got interrupt 18002
> Nov  6 20:22:57 maggie kernel: sdhci0-slot0: Command error 1 (opcode 17 arg 0 flags 53 dlen 0 dflags 2)

Here is just the same. And you have exactly the same with PIO mode. So 
looks like it is not card or driver problem, but sooner, mmc or mmcsd 
layer problem and it looks quite strange. Which sources exactly do you 
have, are they latest, are they in sync with each other and have you 
rebuilt all of them carefully?

If so, you can try to uncomment
// printf("Len %d  %lld-%lld flags %#x sz
// ...
lines in mmcsd.c to look what happens.

> Sorry for the lengthy mail :)

Thanks, I like such mails, it's like a hunting. :)

-- 
Alexander Motin


More information about the freebsd-mobile mailing list