ssb: Fix all-ones boardflags

In the SSB SPROM a field set to all ones means the value
is not defined in the SPROM.

In case of the boardflags, we need to set them to zero
to avoid confusing drivers. For certain cards, leaving
the flags all set to 1 will prevent the card from transmitting,
as has been seen for the PCI version of a BCM4301.

This patch was included in mainline kernels with commit
4503183aa32e6886400d82282292934fa64a81b0.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
---


Index: ubuntu-hardy/drivers/ssb/pci.c
===================================================================
--- ubuntu-hardy.orig/drivers/ssb/pci.c
+++ ubuntu-hardy/drivers/ssb/pci.c
@@ -426,6 +426,7 @@ static int sprom_extract(struct ssb_bus 
 	SPEX(crc, SSB_SPROM_REVISION, SSB_SPROM_REVISION_CRC,
 	     SSB_SPROM_REVISION_CRC_SHIFT);
 
+
 	if ((bus->chip_id & 0xFF00) == 0x4400) {
 		/* Workaround: The BCM44XX chip has a stupid revision
 		 * number stored in the SPROM.
@@ -443,6 +444,10 @@ static int sprom_extract(struct ssb_bus 
 		if (out->revision >= 4)
 			goto unsupported;
 	}
+	if (out->r1.boardflags_lo == 0xFFFF)
+		out->r1.boardflags_lo = 0;  /* per specs */
+	if (out->r2.boardflags_hi == 0xFFFF)
+		out->r2.boardflags_hi = 0;  /* per specs */
 
 	return 0;
 unsupported:
