Re: 2.6.24-rc2 libertas_sdio fails to initialize Marvell SD8686

2008-01-11 Thread Pierre Ossman
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

2008-01-09 Thread Bill Gribble
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

2007-11-19 Thread Pierre Ossman
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

2007-11-15 Thread Bill Gribble
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

2007-11-14 Thread Pierre Ossman
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/