Re: sdio: bad CISTPL_FUNCE error

From: Nicolas Ferre
Date: Tue Jun 24 2008 - 05:35:22 EST


Nicolas Pitre :
On Mon, 23 Jun 2008, Nicolas Ferre wrote:

Here is the log :
mmc0: bad function CISTPL_FUNCE size 28 type 1

If you look in cistpl_funce_func() you'll find this code:

vsn = func->card->cccr.sdio_vsn;
min_size = (vsn == SDIO_SDIO_REV_1_00) ? 28 : 42;
if (size < min_size || buf[0] != 1)
return -EINVAL;

I suspect your card might be buggy wrt the SDIO standard.

You could try printing out the value of vsn here, and then hardcode it to SDIO_SDIO_REV_1_00 to see if that helps.

Indeed, I hardcode the value with SDIO_SDIO_REV_1_00 and the card seems to identify itself better :

vsn = 0x1, buf[0] = 0x1
mmc0: starting CMD52 arg 0020e400 flags 00000195
Sending command 52 as 00001074, arg = 0020E400, blocks = 0, length = 0 (MR = 00001B01)
MCI irq: status = 0000C1E5, C07F0001, 00000001
Command ready
Completed command
Status = 00000001/0000c1e5 [000010FF 00000000 00000000 00000000]
mmc0: req done (CMD52): 0: 000010ff 00000000 00000000 00000000
mmc0: read tpl 0xff
mmc0: new SDIO card at address 0001

So far, so good...

But when going to the next step, it hangs in sdio_uart probing :
mmc0: starting CMD52 arg 800220c0 flags 00000195
Sending command 52 as 00001074, arg = 800220C0, blocks = 0, length = 0 (MR = 00001B01)
MCI irq: status = 0000C1E5, C07F0001, 00000001
Command ready
Completed command
Status = 00000001/0000c1e5 [000010C0 00000000 00000000 00000000]
mmc0: req done (CMD52): 0: 000010c0 00000000 00000000 00000000
mmc0: starting CMD52 arg 80022201 flags 00000195
Sending command 52 as 00001074, arg = 80022201, blocks = 0, length = 0 (MR = 00001B01)
MCI irq: status = 0000C1E5, C07F0001, 00000001
Command ready
Completed command
Status = 00000001/0000c1e5 [00001101 00000000 00000000 00000000]
mmc0: req done (CMD52): 0: 00001101 00000000 00000000 00000000
sdio_uart: probe of mmc0:0001:1 failed with error -34

It seems that I have a out of range error in R5 now...

Regards,
--
Nicolas Ferre

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/