Re: 2.6.24-rc2 libertas_sdio fails to initialize Marvell SD8686
On Wed, 09 Jan 2008 14:53:58 -0500 Bill Gribble <[EMAIL PROTECTED]> wrote: > > Any other sage advice? I feel like the device is really close to > working, but I just can't get it there! > Since you're having problems with the very first part, I'm not sure I'd agree with your assessment. ;) The fact is that the libertas chips are extremely moody, and Marvell has the weird attitude that there is one driver and one firmware per board/implementation, not per chip model. So friction is bound to appear when we try to have a generic driver that supports all of these different revisions. So that means there's two options for you right now; experiment wildly and hope you get lucky and find how to avoid whatever bug your particular chip has, or try to get information from Marvell or Raon about how to interface with the chip. Rgds -- -- Pierre Ossman Linux kernel, MMC maintainerhttp://www.kernel.org PulseAudio, core developer http://pulseaudio.org rdesktop, core developer http://www.rdesktop.org -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: 2.6.24-rc2 libertas_sdio fails to initialize Marvell SD8686
Pierre Ossman <[EMAIL PROTECTED]> writes: > Marvell tend to not have a one true firmware, but one for each device, > so you might end up having to dig out the ones shipped with the > device. I finally got these firmware files from the manufacturer; still, with 2.6.24-rc6 and the new firmware files, the same errors occur. >> Nov 13 14:40:09 pequin kernel: mmc0: starting CMD53 arg 9a02 flags >> 01b5 >> Nov 13 14:40:09 pequin kernel: mmc0: blksz 32 blocks 2 flags 0100 >> tsac 1000 ms nsac 0 >> Nov 13 14:40:09 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got >> interrupt: 0x0001 >> Nov 13 14:40:11 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got >> interrupt: 0x00108000 >> Nov 13 14:40:11 pequin kernel: mmc0: req done (CMD53): 0: 2000 >> >> Nov 13 14:40:11 pequin kernel: mmc0: 32 bytes transferred: -110 > > Your problem is here. The card chokes for some reason and times out > when it's supposed to receive a chunk of the firmware. Odd, as the > loading loop first queries the card if it is ready for more data. Any other sage advice? I feel like the device is really close to working, but I just can't get it there! Thanks, Bill Gribble !DSPAM:4785262012631060021202! -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: 2.6.24-rc2 libertas_sdio fails to initialize Marvell SD8686
On Thu, 15 Nov 2007 16:06:23 -0500 Bill Gribble <[EMAIL PROTECTED]> wrote: > > This block gets repeated about 200 times: > > Nov 15 11:52:31 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got > interrupt: 0x0001 > Nov 15 11:52:31 pequin kernel: mmc0: req done (CMD52): 0: 1000 > > Nov 15 11:52:31 pequin kernel: mmc0: starting CMD52 arg 10002000 flags > 0195 > > Then: > > Nov 15 11:52:32 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got > interrupt: 0x0001 > Nov 15 11:52:32 pequin kernel: mmc0: req done (CMD52): 0: 1000 > > Nov 15 11:52:32 pequin kernel: mmc0: starting CMD52 arg 80022201 flags > 0195 > Nov 15 11:52:32 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got > interrupt: 0x0001 > Nov 15 11:52:32 pequin kernel: mmc0: req done (CMD52): 0: 1001 > > Nov 15 11:52:32 pequin kernel: libertas: failed to load helper firmware > > Does that make any sense? > Odd. I'd guess it is waiting for the firmware to boot, bu you should be getting the debug string "waiting for helper to boot..." in that case. Have you tried with the firmware that's supposed to be used with this board? Rgds -- -- Pierre Ossman Linux kernel, MMC maintainerhttp://www.kernel.org PulseAudio, core developer http://pulseaudio.org rdesktop, core developer http://www.rdesktop.org - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: 2.6.24-rc2 libertas_sdio fails to initialize Marvell SD8686
Pierre Ossman <[EMAIL PROTECTED]> writes: > >> Nov 13 14:40:09 pequin kernel: mmc0: starting CMD53 arg 9a02 flags >> 01b5 >> Nov 13 14:40:09 pequin kernel: mmc0: blksz 32 blocks 2 flags 0100 >> tsac 1000 ms nsac 0 >> Nov 13 14:40:09 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got >> interrupt: 0x0001 >> Nov 13 14:40:11 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got >> interrupt: 0x00108000 >> Nov 13 14:40:11 pequin kernel: mmc0: req done (CMD53): 0: 2000 >> >> Nov 13 14:40:11 pequin kernel: mmc0: 32 bytes transferred: -110 > > Your problem is here. The card chokes for some reason and times out when it's > supposed to receive a chunk of the firmware. Odd, as the loading loop first > queries the card if it is ready for more data. > > You could try adding a delay to the helper firmware loading loop > (if_sdio_prog_helper() in if_sdio.c). Add an msleep(100); in there and see if > that gets things further. Loading will be slow as hell though. OK, that seems to at least change the failure a little :) I added an msleep after line 466 of if_sdio.c (at the very bottom of the loop). Now I don't get the final "32 bytes transferred: -110" error: Nov 15 11:52:31 pequin kernel: mmc0: req done (CMD53): 0: 2000 Nov 15 11:52:31 pequin kernel: mmc0: 64 bytes transferred: 0 Nov 15 11:52:31 pequin kernel: mmc0: starting CMD53 arg 9a02 flags 01b5 Nov 15 11:52:31 pequin kernel: mmc0: blksz 32 blocks 2 flags 0100 tsac 1000 ms nsac 0 Nov 15 11:52:31 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:31 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0002 Nov 15 11:52:31 pequin kernel: mmc0: req done (CMD53): 0: 2000 Nov 15 11:52:31 pequin kernel: mmc0: 64 bytes transferred: 0 Nov 15 11:52:31 pequin kernel: mmc0: starting CMD52 arg 10002000 flags 0195 Nov 15 11:52:31 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:31 pequin kernel: mmc0: req done (CMD52): 0: 1000 Nov 15 11:52:31 pequin kernel: mmc0: starting CMD52 arg 10002200 flags 0195 Nov 15 11:52:31 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:31 pequin kernel: mmc0: req done (CMD52): 0: 1000 Nov 15 11:52:31 pequin kernel: mmc0: starting CMD52 arg 10002000 flags 0195 Nov 15 11:52:31 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:31 pequin kernel: mmc0: req done (CMD52): 0: 1000 Nov 15 11:52:31 pequin kernel: mmc0: starting CMD52 arg 10002200 flags 0195 This block gets repeated about 200 times: Nov 15 11:52:31 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:31 pequin kernel: mmc0: req done (CMD52): 0: 1000 Nov 15 11:52:31 pequin kernel: mmc0: starting CMD52 arg 10002000 flags 0195 Then: Nov 15 11:52:32 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:32 pequin kernel: mmc0: req done (CMD52): 0: 1000 Nov 15 11:52:32 pequin kernel: mmc0: starting CMD52 arg 80022201 flags 0195 Nov 15 11:52:32 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:32 pequin kernel: mmc0: req done (CMD52): 0: 1001 Nov 15 11:52:32 pequin kernel: libertas: failed to load helper firmware Nov 15 11:52:32 pequin kernel: SDIO: Disabling IRQ for mmc0:0001:1... Nov 15 11:52:32 pequin kernel: mmc0: IRQ thread exiting with code 0 Nov 15 11:52:32 pequin kernel: mmc0: starting CMD52 arg 0800 flags 0195 Nov 15 11:52:32 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:32 pequin kernel: mmc0: req done (CMD52): 0: 1003 Nov 15 11:52:32 pequin kernel: mmc0: starting CMD52 arg 8800 flags 0195 Nov 15 11:52:32 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:32 pequin kernel: mmc0: req done (CMD52): 0: 1000 Nov 15 11:52:32 pequin kernel: SDIO: Disabling device mmc0:0001:1... Nov 15 11:52:32 pequin kernel: mmc0: starting CMD52 arg 0400 flags 0195 Nov 15 11:52:32 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:32 pequin kernel: mmc0: req done (CMD52): 0: 1002 Nov 15 11:52:32 pequin kernel: mmc0: starting CMD52 arg 8400 flags 0195 Nov 15 11:52:32 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got interrupt: 0x0001 Nov 15 11:52:32 pequin kernel: mmc0: req done (CMD52): 0: 1000 Nov 15 11:52:32 pequin kernel: SDIO: Disabled
Re: 2.6.24-rc2 libertas_sdio fails to initialize Marvell SD8686
On Tue, 13 Nov 2007 16:21:57 -0500 Bill Gribble <[EMAIL PROTECTED]> wrote: > > After the first time I saw the line "Failed to load helper firmware" I > downloaded fresh copies of the firmware from Marvell and installed > them in /lib/firmware to paths as indicated in the module source: > > -rwxr-xr-x 1 root root 120716 Nov 12 12:35 sd8686.bin > -rwxr-xr-x 1 root root 2140 Nov 12 12:36 sd8686_helper.bin > > Having those there doesn't seem to change anything. > Marvell tend to not have a one true firmware, but one for each device, so you might end up having to dig out the ones shipped with the device. Still, my understanding is that the device won't boot the helper firmware until it is entirely loaded, so that shouldn't be the problem. > Nov 13 14:40:09 pequin kernel: mmc0: starting CMD53 arg 9a02 flags > 01b5 > Nov 13 14:40:09 pequin kernel: mmc0: blksz 32 blocks 2 flags 0100 > tsac 1000 ms nsac 0 > Nov 13 14:40:09 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got > interrupt: 0x0001 > Nov 13 14:40:11 pequin kernel: sdhci [sdhci_irq()]: *** sdhci:slot0 got > interrupt: 0x00108000 > Nov 13 14:40:11 pequin kernel: mmc0: req done (CMD53): 0: 2000 > > Nov 13 14:40:11 pequin kernel: mmc0: 32 bytes transferred: -110 Your problem is here. The card chokes for some reason and times out when it's supposed to receive a chunk of the firmware. Odd, as the loading loop first queries the card if it is ready for more data. You could try adding a delay to the helper firmware loading loop (if_sdio_prog_helper() in if_sdio.c). Add an msleep(100); in there and see if that gets things further. Loading will be slow as hell though. Rgds -- -- Pierre Ossman Linux kernel, MMC maintainerhttp://www.kernel.org PulseAudio, core developer http://pulseaudio.org rdesktop, core developer http://www.rdesktop.org - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/