Trouble using bcm4318 compact flash with b43 driver

Michael Büsch mb at
Wed Feb 2 17:40:08 EST 2011

On Wed, 2011-02-02 at 16:30 +0100, dylan cristiani wrote: 
> --- a/drivers/ssb/pcmcia.c
> +++ b/drivers/ssb/pcmcia.c
> @@ -735,5 +735,5 @@ int ssb_pcmcia_get_invariants(struct ssb_bus *bus,
> 	/* Fetch the vendor specific tuples. */
> 	res = pcmcia_loop_tuple(bus->host_pcmcia, SSB_PCMCIA_CIS,
> -				ssb_pcmcia_do_get_invariants, sprom);
> +				ssb_pcmcia_do_get_invariants, iv);
> 	if ((res == 0) || (res == -ENOSPC))
> 		return 0;

That patch seems right.
I guess that the regression was introduced with the general PCMCIA
changes by Dominik Brodowski back in October.


I do actually have serious trouble to figure out what you're doing.
I'm not saying that there is no bug, but I don't understand what you're
doing to trigger and/or track down the bug.

Let's look at two facts you gave us in previous email:

1) You want to change the PCI IDs. That implies you have a PCI card.
2) You are patching stuff in the PCMCIA code.

These two things are mutually exclusive.
You card is either PCI xor PCMCIA. So only one of these facts can
be true.

If it really is PCMCIA, I'll have to say that the SSB-PCMCIA
SPROM writing code is basically untested. That means I would be
surprised if it worked at all.

I also want to note that it is wrong to override the SPROM with
an image acquired elsewhere. The SPROM contains important calibration
data that is card-specific. So you cannot take the SPROM from one
card and put it into another. Even if it's exactly the same card type.
You must read SPROM -> modify that image -> write SPROM back.

Greetings Michael.

More information about the b43-dev mailing list