rpms/kernel/F-7 linux-2.6-b43-use-old-fw.patch, NONE, 1.1 git-wireless-dev.patch, 1.22, 1.23 kernel-2.6.spec, 1.3330, 1.3331 linux-2.6-mac80211-probe-hidden-essid.patch, 1.2, NONE linux-2.6-rt2x00-usb-1_1-timeout.patch, 1.1, NONE

John W. Linville (linville) fedora-extras-commits at redhat.com
Sat Aug 25 02:34:33 UTC 2007


Author: linville

Update of /cvs/pkgs/rpms/kernel/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv13814

Modified Files:
	git-wireless-dev.patch kernel-2.6.spec 
Added Files:
	linux-2.6-b43-use-old-fw.patch 
Removed Files:
	linux-2.6-mac80211-probe-hidden-essid.patch 
	linux-2.6-rt2x00-usb-1_1-timeout.patch 
Log Message:
Update wireless-dev bits (mac80211, rt2x00, b43, ssb), etc

linux-2.6-b43-use-old-fw.patch:

--- NEW FILE linux-2.6-b43-use-old-fw.patch ---
--- linux-2.6.22.noarch/drivers/net/wireless/b43/main.c.orig	2007-08-24 14:03:03.000000000 -0400
+++ linux-2.6.22.noarch/drivers/net/wireless/b43/main.c	2007-08-24 14:41:09.000000000 -0400
@@ -39,7 +39,6 @@
 #include <linux/workqueue.h>
 #include <linux/skbuff.h>
 #include <linux/dma-mapping.h>
-#include <asm/unaligned.h>
 
 #include "b43.h"
 #include "main.h"
@@ -1580,184 +1579,140 @@ static void b43_release_firmware(struct 
 	dev->fw.ucode = NULL;
 	release_firmware(dev->fw.pcm);
 	dev->fw.pcm = NULL;
-	release_firmware(dev->fw.initvals);
-	dev->fw.initvals = NULL;
-	release_firmware(dev->fw.initvals_band);
-	dev->fw.initvals_band = NULL;
-}
-
-static void b43_print_fw_helptext(struct b43_wl *wl)
-{
-	b43err(wl, "You must go to "
-	       "http://linuxwireless.org/en/users/Drivers/bcm43xx#devicefirmware "
-	       "and download the correct firmware (version 4).\n");
-}
-
-static int do_request_fw(struct b43_wldev *dev,
-			 const char *name,
-			 const struct firmware **fw)
-{
-	const size_t plen = sizeof(modparam_fwpostfix) + 32;
-	char path[plen];
-	struct b43_fw_header *hdr;
-	u32 size;
-	int err;
-
-	if (!name)
-		return 0;
-
-	snprintf(path, ARRAY_SIZE(path),
-		 "b43%s/%s.fw",
-		 modparam_fwpostfix, name);
-	err = request_firmware(fw, path, dev->dev->dev);
-	if (err) {
-		b43err(dev->wl, "Firmware file \"%s\" not found "
-		       "or load failed.\n", path);
-		return err;
-	}
-	if ((*fw)->size < sizeof(struct b43_fw_header))
-		goto err_format;
-	hdr = (struct b43_fw_header *)((*fw)->data);
-	switch (hdr->type) {
-	case B43_FW_TYPE_UCODE:
-	case B43_FW_TYPE_PCM:
-		size = be32_to_cpu(hdr->size);
-		if (size != (*fw)->size - sizeof(struct b43_fw_header))
-			goto err_format;
-		/* fallthrough */
-	case B43_FW_TYPE_IV:
-		if (hdr->ver != 1)
-			goto err_format;
-		break;
-	default:
-		goto err_format;
-	}
-
-	return err;
-
-err_format:
-	b43err(dev->wl, "Firmware file \"%s\" format error.\n", path);
-	return -EPROTO;
+	release_firmware(dev->fw.initvals0);
+	dev->fw.initvals0 = NULL;
+	release_firmware(dev->fw.initvals1);
+	dev->fw.initvals1 = NULL;
 }
 
 static int b43_request_firmware(struct b43_wldev *dev)
 {
-	struct b43_firmware *fw = &dev->fw;
-	const u8 rev = dev->dev->id.revision;
-	const char *filename;
-	u32 tmshigh;
-	int err;
+	u8 rev = dev->dev->id.revision;
+	int err = 0;
+	int nr;
+	char buf[22 + sizeof(modparam_fwpostfix) - 1] = { 0 };
 
-	tmshigh = ssb_read32(dev->dev, SSB_TMSHIGH);
-	if (!fw->ucode) {
-		if ((rev >= 5) && (rev <= 10))
-			filename = "ucode5";
-		else if ((rev >= 11) && (rev <= 12))
-			filename = "ucode11";
-		else if (rev >= 13)
-			filename = "ucode13";
-		else
-			goto err_no_ucode;
-		err = do_request_fw(dev, filename, &fw->ucode);
-		if (err)
-			goto err_load;
-	}
-	if (!fw->pcm) {
-		if ((rev >= 5) && (rev <= 10))
-			filename = "pcm5";
-		else if (rev >= 11)
-			filename = NULL;
-		else
-			goto err_no_pcm;
-		err = do_request_fw(dev, filename, &fw->pcm);
-		if (err)
-			goto err_load;
-	}
-	if (!fw->initvals) {
-		switch (dev->phy.type) {
-		case B43_PHYTYPE_A:
-			if ((rev >= 5) && (rev <= 10)) {
-				if (tmshigh & B43_TMSHIGH_GPHY)
-					filename = "a0g1initvals5";
-				else
-					filename = "a0g0initvals5";
-			} else
-				goto err_no_initvals;
-			break;
-		case B43_PHYTYPE_G:
-			if ((rev >= 5) && (rev <= 10))
-				filename = "b0g0initvals5";
-			else if (rev >= 13)
-				filename = "lp0initvals13";
-			else
-				goto err_no_initvals;
-			break;
-		default:
-			goto err_no_initvals;
+	if (!dev->fw.ucode) {
+		snprintf(buf, ARRAY_SIZE(buf), "bcm43xx_microcode%d%s.fw",
+			 (rev >= 5 ? 5 : rev), modparam_fwpostfix);
+		err = request_firmware(&dev->fw.ucode, buf, dev->dev->dev);
+		if (err) {
+			b43err(dev->wl, "Microcode \"%s\" not "
+			       "available or load failed.\n", buf);
+			goto error;
 		}
-		err = do_request_fw(dev, filename, &fw->initvals);
-		if (err)
-			goto err_load;
 	}
-	if (!fw->initvals_band) {
-		switch (dev->phy.type) {
-		case B43_PHYTYPE_A:
-			if ((rev >= 5) && (rev <= 10)) {
-				if (tmshigh & B43_TMSHIGH_GPHY)
-					filename = "a0g1bsinitvals5";
-				else
-					filename = "a0g0bsinitvals5";
-			} else if (rev >= 11)
-				filename = NULL;
-			else
-				goto err_no_initvals;
-			break;
-		case B43_PHYTYPE_G:
-			if ((rev >= 5) && (rev <= 10))
-				filename = "b0g0bsinitvals5";
-			else if (rev >= 11)
-				filename = NULL;
-			else
-				goto err_no_initvals;
-			break;
-		default:
-			goto err_no_initvals;
+
+	if (!dev->fw.pcm) {
+		snprintf(buf, ARRAY_SIZE(buf),
+			 "bcm43xx_pcm%d%s.fw",
+			 (rev < 5 ? 4 : 5), modparam_fwpostfix);
+		err = request_firmware(&dev->fw.pcm, buf, dev->dev->dev);
+		if (err) {
+			b43err(dev->wl, "PCM \"%s\" not available "
+			       "or load failed.\n", buf);
+			goto error;
 		}
-		err = do_request_fw(dev, filename, &fw->initvals_band);
-		if (err)
-			goto err_load;
 	}
 
-	return 0;
+	if (!dev->fw.initvals0) {
+		if (rev == 2 || rev == 4) {
+			switch (dev->phy.type) {
+			case B43_PHYTYPE_A:
+				nr = 3;
+				break;
+			case B43_PHYTYPE_B:
+			case B43_PHYTYPE_G:
+				nr = 1;
+				break;
+			default:
+				goto err_noinitval;
+			}
 
-err_load:
-	b43_print_fw_helptext(dev->wl);
-	goto error;
+		} else if (rev >= 5) {
+			switch (dev->phy.type) {
+			case B43_PHYTYPE_A:
+				nr = 7;
+				break;
+			case B43_PHYTYPE_B:
+			case B43_PHYTYPE_G:
+				nr = 5;
+				break;
+			default:
+				goto err_noinitval;
+			}
+		} else
+			goto err_noinitval;
+		snprintf(buf, ARRAY_SIZE(buf), "bcm43xx_initval%02d%s.fw",
+			 nr, modparam_fwpostfix);
 
-err_no_ucode:
-	err = -ENODEV;
-	b43err(dev->wl, "No microcode available for core rev %u\n", rev);
-	goto error;
+		err = request_firmware(&dev->fw.initvals0, buf, dev->dev->dev);
+		if (err) {
+			b43err(dev->wl, "InitVals \"%s\" not available "
+			       "or load failed.\n", buf);
+			goto error;
+		}
+		if (dev->fw.initvals0->size % sizeof(struct b43_initval)) {
+			b43err(dev->wl, "InitVals fileformat error.\n");
+			goto error;
+		}
+	}
 
-err_no_pcm:
-	err = -ENODEV;
-	b43err(dev->wl, "No PCM available for core rev %u\n", rev);
-	goto error;
+	if (!dev->fw.initvals1) {
+		if (rev >= 5) {
+			u32 sbtmstatehigh;
+
+			switch (dev->phy.type) {
+			case B43_PHYTYPE_A:
+				sbtmstatehigh =
+				    ssb_read32(dev->dev, SSB_TMSHIGH);
+				if (sbtmstatehigh & 0x00010000)
+					nr = 9;
+				else
+					nr = 10;
+				break;
+			case B43_PHYTYPE_B:
+			case B43_PHYTYPE_G:
+				nr = 6;
+				break;
+			default:
+				goto err_noinitval;
+			}
+			snprintf(buf, ARRAY_SIZE(buf), "bcm43xx_initval%02d%s.fw",
+				 nr, modparam_fwpostfix);
 
-err_no_initvals:
-	err = -ENODEV;
-	b43err(dev->wl, "No Initial Values firmware file for PHY %u, "
-	       "core rev %u\n", dev->phy.type, rev);
-	goto error;
+			err =
+			    request_firmware(&dev->fw.initvals1, buf,
+					     dev->dev->dev);
+			if (err) {
+				b43err(dev->wl, "InitVals \"%s\" not available "
+				       "or load failed.\n", buf);
+				goto error;
+			}
+			if (dev->fw.initvals1->size %
+			    sizeof(struct b43_initval)) {
+				b43err(dev->wl, "InitVals fileformat error.\n");
+				goto error;
+			}
+		}
+	}
 
-error:
-	b43_release_firmware(dev);
+      out:
 	return err;
+      error:
+	b43err(dev->wl, "You must go to "
+	       "http://linuxwireless.org/en/users/Drivers/b43#devicefirmware "
+	       "and download the correct firmware (version 4)\n");
+	b43_release_firmware(dev);
+	goto out;
+      err_noinitval:
+	b43err(dev->wl, "No InitVals available\n");
+	err = -ENOENT;
+	goto error;
 }
 
 static int b43_upload_microcode(struct b43_wldev *dev)
 {
-	const size_t hdr_len = sizeof(struct b43_fw_header);
 	const __be32 *data;
 	unsigned int i, len;
 	u16 fwrev, fwpatch, fwdate, fwtime;
@@ -1765,26 +1720,24 @@ static int b43_upload_microcode(struct b
 	int err = 0;
 
 	/* Upload Microcode. */
-	data = (__be32 *) (dev->fw.ucode->data + hdr_len);
-	len = (dev->fw.ucode->size - hdr_len) / sizeof(__be32);
+	data = (__be32 *) (dev->fw.ucode->data);
+	len = dev->fw.ucode->size / sizeof(__be32);
 	b43_shm_control_word(dev, B43_SHM_UCODE | B43_SHM_AUTOINC_W, 0x0000);
 	for (i = 0; i < len; i++) {
 		b43_write32(dev, B43_MMIO_SHM_DATA, be32_to_cpu(data[i]));
 		udelay(10);
 	}
 
-	if (dev->fw.pcm) {
-		/* Upload PCM data. */
-		data = (__be32 *) (dev->fw.pcm->data + hdr_len);
-		len = (dev->fw.pcm->size - hdr_len) / sizeof(__be32);
-		b43_shm_control_word(dev, B43_SHM_HW, 0x01EA);
-		b43_write32(dev, B43_MMIO_SHM_DATA, 0x00004000);
-		/* No need for autoinc bit in SHM_HW */
-		b43_shm_control_word(dev, B43_SHM_HW, 0x01EB);
-		for (i = 0; i < len; i++) {
-			b43_write32(dev, B43_MMIO_SHM_DATA, be32_to_cpu(data[i]));
-			udelay(10);
-		}
+	/* Upload PCM data. */
+	data = (__be32 *) (dev->fw.pcm->data);
+	len = dev->fw.pcm->size / sizeof(__be32);
+	b43_shm_control_word(dev, B43_SHM_HW, 0x01EA);
+	b43_write32(dev, B43_MMIO_SHM_DATA, 0x00004000);
+	/* No need for autoinc bit in SHM_HW */
+	b43_shm_control_word(dev, B43_SHM_HW, 0x01EB);
+	for (i = 0; i < len; i++) {
+		b43_write32(dev, B43_MMIO_SHM_DATA, be32_to_cpu(data[i]));
+		udelay(10);
 	}
 
 	b43_write32(dev, B43_MMIO_GEN_IRQ_REASON, B43_IRQ_ALL);
@@ -1801,7 +1754,6 @@ static int b43_upload_microcode(struct b
 		i++;
 		if (i >= 50) {
 			b43err(dev->wl, "Microcode not responding\n");
-			b43_print_fw_helptext(dev->wl);
 			err = -ENODEV;
 			goto out;
 		}
@@ -1819,7 +1771,6 @@ static int b43_upload_microcode(struct b
 		b43err(dev->wl, "YOUR FIRMWARE IS TOO OLD. Firmware from "
 		       "binary drivers older than version 4.x is unsupported. "
 		       "You must upgrade your firmware files.\n");
-		b43_print_fw_helptext(dev->wl);
 		b43_write32(dev, B43_MMIO_MACCTL, 0);
 		err = -EOPNOTSUPP;
 		goto out;
@@ -1838,93 +1789,60 @@ static int b43_upload_microcode(struct b
 }
 
 static int b43_write_initvals(struct b43_wldev *dev,
-			      const struct b43_iv *ivals,
-			      size_t count,
-			      size_t array_size)
+			      const struct b43_initval *data,
+			      const unsigned int len)
 {
-	const struct b43_iv *iv;
-	u16 offset;
-	size_t i;
-	bool bit32;
+	u16 offset, size;
+	u32 value;
+	unsigned int i;
 
-	BUILD_BUG_ON(sizeof(struct b43_iv) != 6);
-	iv = ivals;
-	for (i = 0; i < count; i++) {
-		if (array_size < sizeof(iv->offset_size))
-			goto err_format;
-		array_size -= sizeof(iv->offset_size);
-		offset = be16_to_cpu(iv->offset_size);
-		bit32 = !!(offset & B43_IV_32BIT);
-		offset &= B43_IV_OFFSET_MASK;
-		if (offset >= 0x1000)
-			goto err_format;
-		if (bit32) {
-			u32 value;
+	for (i = 0; i < len; i++) {
+		offset = be16_to_cpu(data[i].offset);
+		size = be16_to_cpu(data[i].size);
+		value = be32_to_cpu(data[i].value);
 
-			if (array_size < sizeof(iv->data.d32))
+		if (unlikely(offset >= 0x1000))
+			goto err_format;
+		if (size == 2) {
+			if (unlikely(value & 0xFFFF0000))
 				goto err_format;
-			array_size -= sizeof(iv->data.d32);
-
-			value = be32_to_cpu(get_unaligned(&iv->data.d32));
+			b43_write16(dev, offset, (u16) value);
+		} else if (size == 4) {
 			b43_write32(dev, offset, value);
-
-			iv = (const struct b43_iv *)((const uint8_t *)iv +
-							sizeof(__be16) +
-							sizeof(__be32));
-		} else {
-			u16 value;
-
-			if (array_size < sizeof(iv->data.d16))
-				goto err_format;
-			array_size -= sizeof(iv->data.d16);
-
-			value = be16_to_cpu(iv->data.d16);
-			b43_write16(dev, offset, value);
-
-			iv = (const struct b43_iv *)((const uint8_t *)iv +
-							sizeof(__be16) +
-							sizeof(__be16));
-		}
+		} else
+			goto err_format;
 	}
-	if (array_size)
-		goto err_format;
 
 	return 0;
 
-err_format:
-	b43err(dev->wl, "Initial Values Firmware file-format error.\n");
-	b43_print_fw_helptext(dev->wl);
-
+      err_format:
+	b43err(dev->wl, "InitVals (b43_initvalXX.fw) file-format error. "
+	       "Please fix your b43 firmware files.\n");
 	return -EPROTO;
 }
 
 static int b43_upload_initvals(struct b43_wldev *dev)
 {
-	const size_t hdr_len = sizeof(struct b43_fw_header);
-	const struct b43_fw_header *hdr;
-	struct b43_firmware *fw = &dev->fw;
-	const struct b43_iv *ivals;
-	size_t count;
 	int err;
 
-	hdr = (const struct b43_fw_header *)(fw->initvals->data);
-	ivals = (const struct b43_iv *)(fw->initvals->data + hdr_len);
-	count = be32_to_cpu(hdr->size);
-	err = b43_write_initvals(dev, ivals, count,
-				 fw->initvals->size - hdr_len);
+	err =
+	    b43_write_initvals(dev,
+			       (struct b43_initval *)dev->fw.initvals0->data,
+			       dev->fw.initvals0->size /
+			       sizeof(struct b43_initval));
 	if (err)
 		goto out;
-	if (fw->initvals_band) {
-		hdr = (const struct b43_fw_header *)(fw->initvals_band->data);
-		ivals = (const struct b43_iv *)(fw->initvals_band->data + hdr_len);
-		count = be32_to_cpu(hdr->size);
-		err = b43_write_initvals(dev, ivals, count,
-					 fw->initvals_band->size - hdr_len);
+	if (dev->fw.initvals1) {
+		err =
+		    b43_write_initvals(dev,
+				       (struct b43_initval *)dev->fw.initvals1->
+				       data,
+				       dev->fw.initvals1->size /
+				       sizeof(struct b43_initval));
 		if (err)
 			goto out;
 	}
-out:
-
+      out:
 	return err;
 }
 
--- linux-2.6.22.noarch/drivers/net/wireless/b43/b43.h.orig	2007-08-24 14:03:03.000000000 -0400
+++ linux-2.6.22.noarch/drivers/net/wireless/b43/b43.h	2007-08-24 14:03:36.000000000 -0400
@@ -405,32 +405,11 @@ enum {
 struct b43_dmaring;
 struct b43_pioqueue;
 
-/* The firmware file header */
-#define B43_FW_TYPE_UCODE	'u'
-#define B43_FW_TYPE_PCM		'p'
-#define B43_FW_TYPE_IV		'i'
-struct b43_fw_header {
-	/* File type */
-	u8 type;
-	/* File format version */
-	u8 ver;
-	u8 __padding[2];
-	/* Size of the data. For ucode and PCM this is in bytes.
-	 * For IV this is number-of-ivs. */
-	__be32 size;
-} __attribute__((__packed__));
-
-/* Initial Value file format */
-#define B43_IV_OFFSET_MASK	0x7FFF
-#define B43_IV_32BIT		0x8000
-struct b43_iv {
-	__be16 offset_size;
-	union {
-		__be16 d16;
-		__be32 d32;
-	} data __attribute__((__packed__));
-} __attribute__((__packed__));
-
+struct b43_initval {
+	u16 offset;
+	u16 size;
+	u32 value;
+} __attribute__ ((__packed__));
 
 #define B43_PHYMODE(phytype)		(1 << (phytype))
 #define B43_PHYMODE_A			B43_PHYMODE(B43_PHYTYPE_A)
@@ -632,10 +611,10 @@ struct b43_firmware {
 	const struct firmware *ucode;
 	/* PCM code */
 	const struct firmware *pcm;
-	/* Initial MMIO values for the firmware */
-	const struct firmware *initvals;
-	/* Initial MMIO values for the firmware, band-specific */
-	const struct firmware *initvals_band;
+	/* Initial MMIO values 0 */
+	const struct firmware *initvals0;
+	/* Initial MMIO values 1 */
+	const struct firmware *initvals1;
 	/* Firmware revision */
 	u16 rev;
 	/* Firmware patchlevel */

git-wireless-dev.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.22 -r 1.23 git-wireless-dev.patch
Index: git-wireless-dev.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/git-wireless-dev.patch,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- git-wireless-dev.patch	14 Aug 2007 19:00:59 -0000	1.22
+++ git-wireless-dev.patch	25 Aug 2007 02:33:49 -0000	1.23
@@ -1,5 +1,5 @@
 --- linux-2.6.22.noarch/CREDITS.orig	2007-07-08 19:32:17.000000000 -0400
-+++ linux-2.6.22.noarch/CREDITS	2007-08-14 14:06:59.000000000 -0400
++++ linux-2.6.22.noarch/CREDITS	2007-08-24 11:42:09.000000000 -0400
 @@ -665,6 +665,11 @@ D: Minor updates to SCSI types, added /p
  S: (ask for current address)
  S: USA
@@ -67,7 +67,7 @@
  E: liw at iki.fi
  D: Linux System Administrator's Guide, author, former maintainer
 --- linux-2.6.22.noarch/include/linux/nl80211.h.orig	2007-07-08 19:32:17.000000000 -0400
-+++ linux-2.6.22.noarch/include/linux/nl80211.h	2007-08-14 14:06:59.000000000 -0400
++++ linux-2.6.22.noarch/include/linux/nl80211.h	2007-08-24 11:42:09.000000000 -0400
 @@ -7,6 +7,201 @@
   */
  
@@ -327,8 +327,30 @@
 +#define NL80211_KEYTYPE_MAX (__NL80211_KEYTYPE_AFTER_LAST - 1)
 +
  #endif /* __LINUX_NL80211_H */
---- linux-2.6.22.noarch/include/linux/ieee80211.h.orig	2007-08-14 13:55:29.000000000 -0400
-+++ linux-2.6.22.noarch/include/linux/ieee80211.h	2007-08-14 14:06:59.000000000 -0400
+--- linux-2.6.22.noarch/include/linux/mod_devicetable.h.orig	2007-07-08 19:32:17.000000000 -0400
++++ linux-2.6.22.noarch/include/linux/mod_devicetable.h	2007-08-24 11:42:15.000000000 -0400
+@@ -333,4 +333,19 @@ struct parisc_device_id {
+ #define PA_HVERSION_ANY_ID	0xffff
+ #define PA_SVERSION_ANY_ID	0xffffffff
+ 
++/* SSB core, see drivers/ssb/ */
++struct ssb_device_id {
++	__u16	vendor;
++	__u16	coreid;
++	__u8	revision;
++};
++#define SSB_DEVICE(_vendor, _coreid, _revision)  \
++	{ .vendor = _vendor, .coreid = _coreid, .revision = _revision, }
++#define SSB_DEVTABLE_END  \
++	{ 0, },
++
++#define SSB_ANY_VENDOR		0xFFFF
++#define SSB_ANY_ID		0xFFFF
++#define SSB_ANY_REV		0xFF
++
+ #endif /* LINUX_MOD_DEVICETABLE_H */
+--- linux-2.6.22.noarch/include/linux/ieee80211.h.orig	2007-08-24 11:41:51.000000000 -0400
++++ linux-2.6.22.noarch/include/linux/ieee80211.h	2007-08-24 11:42:09.000000000 -0400
 @@ -106,6 +106,75 @@ struct ieee80211_hdr {
  } __attribute__ ((packed));
  
@@ -627,9 +649,9 @@
 +};
 +
  #endif /* IEEE80211_H */
---- linux-2.6.22.noarch/include/linux/ssb/ssb_driver_chipcommon.h.orig	2007-08-14 14:06:59.000000000 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_chipcommon.h	2007-08-14 14:06:59.000000000 -0400
-@@ -0,0 +1,390 @@
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_chipcommon.h	2007-08-24 11:42:15.000000000 -0400
+@@ -0,0 +1,396 @@
 +#ifndef LINUX_SSB_CHIPCO_H_
 +#define LINUX_SSB_CHIPCO_H_
 +
@@ -1014,15 +1036,21 @@
 +extern void ssb_chipco_watchdog_timer_set(struct ssb_chipcommon *cc,
 +					  u32 ticks);
 +
++u32 ssb_chipco_gpio_in(struct ssb_chipcommon *cc, u32 mask);
++
++void ssb_chipco_gpio_out(struct ssb_chipcommon *cc, u32 mask, u32 value);
++
++void ssb_chipco_gpio_outen(struct ssb_chipcommon *cc, u32 mask, u32 value);
++
 +#ifdef CONFIG_SSB_SERIAL
 +extern int ssb_chipco_serial_init(struct ssb_chipcommon *cc,
 +				  struct ssb_serial_port *ports);
 +#endif /* CONFIG_SSB_SERIAL */
 +
 +#endif /* LINUX_SSB_CHIPCO_H_ */
---- linux-2.6.22.noarch/include/linux/ssb/ssb_driver_extif.h.orig	2007-08-14 14:06:59.000000000 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_extif.h	2007-08-14 14:06:59.000000000 -0400
-@@ -0,0 +1,198 @@
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_extif.h	2007-08-24 11:42:15.000000000 -0400
+@@ -0,0 +1,204 @@
 +/*
 + * Hardware-specific External Interface I/O core definitions
 + * for the BCM47xx family of SiliconBackplane-based chips.
@@ -1196,6 +1224,12 @@
 +extern void ssb_extif_timing_init(struct ssb_extif *extif,
 +				  unsigned long ns);
 +
++u32 ssb_extif_gpio_in(struct ssb_extif *extif, u32 mask);
++
++void ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask, u32 value);
++
++void ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask, u32 value);
++
 +#ifdef CONFIG_SSB_SERIAL
 +extern int ssb_extif_serial_init(struct ssb_extif *extif,
 +				 struct ssb_serial_port *ports);
@@ -1221,8 +1255,8 @@
 +
 +#endif /* CONFIG_SSB_DRIVER_EXTIF */
 +#endif /* LINUX_SSB_EXTIFCORE_H_ */
---- linux-2.6.22.noarch/include/linux/ssb/ssb_driver_mips.h.orig	2007-08-14 14:06:59.000000000 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_mips.h	2007-08-14 14:06:59.000000000 -0400
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_mips.h	2007-08-24 11:42:09.000000000 -0400
 @@ -0,0 +1,46 @@
 +#ifndef LINUX_SSB_MIPSCORE_H_
 +#define LINUX_SSB_MIPSCORE_H_
@@ -1270,8 +1304,8 @@
 +#endif /* CONFIG_SSB_DRIVER_MIPS */
 +
 +#endif /* LINUX_SSB_MIPSCORE_H_ */
---- linux-2.6.22.noarch/include/linux/ssb/ssb_regs.h.orig	2007-08-14 14:06:59.000000000 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb_regs.h	2007-08-14 14:06:59.000000000 -0400
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb_regs.h	2007-08-24 11:42:15.000000000 -0400
 @@ -0,0 +1,292 @@
 +#ifndef LINUX_SSB_REGS_H_
 +#define LINUX_SSB_REGS_H_
@@ -1280,24 +1314,24 @@
 +/* SiliconBackplane Address Map.
 + * All regions may not exist on all chips.
 + */
-+#define SSB_SDRAM_BASE		0x00000000	/* Physical SDRAM */
-+#define SSB_PCI_MEM		0x08000000	/* Host Mode sb2pcitranslation0 (64 MB) */
-+#define SSB_PCI_CFG		0x0c000000	/* Host Mode sb2pcitranslation1 (64 MB) */
-+#define	SSB_SDRAM_SWAPPED	0x10000000	/* Byteswapped Physical SDRAM */
-+#define SSB_ENUM_BASE    	0x18000000	/* Enumeration space base */
-+#define	SSB_ENUM_LIMIT		0x18010000	/* Enumeration space limit */
-+
-+#define	SSB_FLASH2		0x1c000000	/* Flash Region 2 (region 1 shadowed here) */
-+#define	SSB_FLASH2_SZ		0x02000000	/* Size of Flash Region 2 */
-+
-+#define	SSB_EXTIF_BASE		0x1f000000	/* External Interface region base address */
-+#define	SSB_FLASH1		0x1fc00000	/* Flash Region 1 */
-+#define	SSB_FLASH1_SZ		0x00400000	/* Size of Flash Region 1 */
-+
-+#define SSB_PCI_DMA		0x40000000	/* Client Mode sb2pcitranslation2 (1 GB) */
-+#define SSB_PCI_DMA_SZ		0x40000000	/* Client Mode sb2pcitranslation2 size in bytes */
-+#define SSB_PCIE_DMA_L32	0x00000000	/* PCIE Client Mode sb2pcitranslation2 (2 ZettaBytes), low 32 bits */
-+#define SSB_PCIE_DMA_H32	0x80000000	/* PCIE Client Mode sb2pcitranslation2 (2 ZettaBytes), high 32 bits */
++#define SSB_SDRAM_BASE		0x00000000U	/* Physical SDRAM */
++#define SSB_PCI_MEM		0x08000000U	/* Host Mode sb2pcitranslation0 (64 MB) */
++#define SSB_PCI_CFG		0x0c000000U	/* Host Mode sb2pcitranslation1 (64 MB) */
++#define	SSB_SDRAM_SWAPPED	0x10000000U	/* Byteswapped Physical SDRAM */
++#define SSB_ENUM_BASE    	0x18000000U	/* Enumeration space base */
++#define	SSB_ENUM_LIMIT		0x18010000U	/* Enumeration space limit */
++
++#define	SSB_FLASH2		0x1c000000U	/* Flash Region 2 (region 1 shadowed here) */
++#define	SSB_FLASH2_SZ		0x02000000U	/* Size of Flash Region 2 */
++
++#define	SSB_EXTIF_BASE		0x1f000000U	/* External Interface region base address */
++#define	SSB_FLASH1		0x1fc00000U	/* Flash Region 1 */
++#define	SSB_FLASH1_SZ		0x00400000U	/* Size of Flash Region 1 */
++
++#define SSB_PCI_DMA		0x40000000U	/* Client Mode sb2pcitranslation2 (1 GB) */
++#define SSB_PCI_DMA_SZ		0x40000000U	/* Client Mode sb2pcitranslation2 size in bytes */
++#define SSB_PCIE_DMA_L32	0x00000000U	/* PCIE Client Mode sb2pcitranslation2 (2 ZettaBytes), low 32 bits */
++#define SSB_PCIE_DMA_H32	0x80000000U	/* PCIE Client Mode sb2pcitranslation2 (2 ZettaBytes), high 32 bits */
 +#define	SSB_EUART		(SSB_EXTIF_BASE + 0x00800000)
 +#define	SSB_LED			(SSB_EXTIF_BASE + 0x00900000)
 +
@@ -1565,8 +1599,8 @@
 +
 +
 +#endif /* LINUX_SSB_REGS_H_ */
---- linux-2.6.22.noarch/include/linux/ssb/ssb_driver_pci.h.orig	2007-08-14 14:06:59.000000000 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_pci.h	2007-08-14 14:06:59.000000000 -0400
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb_driver_pci.h	2007-08-24 11:42:09.000000000 -0400
 @@ -0,0 +1,106 @@
 +#ifndef LINUX_SSB_PCICORE_H_
 +#define LINUX_SSB_PCICORE_H_
@@ -1674,9 +1708,9 @@
 +
 +#endif /* CONFIG_SSB_DRIVER_PCICORE */
 +#endif /* LINUX_SSB_PCICORE_H_ */
---- linux-2.6.22.noarch/include/linux/ssb/ssb.h.orig	2007-08-14 14:06:59.000000000 -0400
-+++ linux-2.6.22.noarch/include/linux/ssb/ssb.h	2007-08-14 14:06:59.000000000 -0400
-@@ -0,0 +1,432 @@
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/include/linux/ssb/ssb.h	2007-08-24 11:42:15.000000000 -0400
+@@ -0,0 +1,424 @@
 +#ifndef LINUX_SSB_H_
 +#define LINUX_SSB_H_
 +
@@ -1685,6 +1719,7 @@
 +#include <linux/types.h>
 +#include <linux/spinlock.h>
[...185824 lines suppressed...]
-@@ -0,0 +1,423 @@
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/drivers/ssb/driver_chipcommon.c	2007-08-24 11:42:15.000000000 -0400
+@@ -0,0 +1,446 @@
 +/*
 + * Sonics Silicon Backplane
 + * Broadcom ChipCommon core driver
@@ -99466,6 +138027,14 @@
 +	ssb_write32(cc->dev, offset, value);
 +}
 +
++static inline void chipco_write32_masked(struct ssb_chipcommon *cc, u16 offset,
++					 u32 mask, u32 value)
++{
++	value &= mask;
++	value |= chipco_read32(cc, offset) & ~mask;
++	chipco_write32(cc, offset, value);
++}
++
 +void ssb_chipco_set_clockmode(struct ssb_chipcommon *cc,
 +			      enum ssb_clkmode mode)
 +{
@@ -99771,6 +138340,21 @@
 +	chipco_write32(cc, SSB_CHIPCO_WATCHDOG, ticks);
 +}
 +
++u32 ssb_chipco_gpio_in(struct ssb_chipcommon *cc, u32 mask)
++{
++	return chipco_read32(cc, SSB_CHIPCO_GPIOIN) & mask;
++}
++
++void ssb_chipco_gpio_out(struct ssb_chipcommon *cc, u32 mask, u32 value)
++{
++	return chipco_write32_masked(cc, SSB_CHIPCO_GPIOOUT, mask, value);
++}
++
++void ssb_chipco_gpio_outen(struct ssb_chipcommon *cc, u32 mask, u32 value)
++{
++	return chipco_write32_masked(cc, SSB_CHIPCO_GPIOOUTEN, mask, value);
++}
++
 +#ifdef CONFIG_SSB_SERIAL
 +int ssb_chipco_serial_init(struct ssb_chipcommon *cc,
 +			   struct ssb_serial_port *ports)
@@ -99848,24 +138432,39 @@
 +	return nr_ports;
 +}
 +#endif /* CONFIG_SSB_SERIAL */
---- linux-2.6.22.noarch/drivers/ssb/Kconfig.orig	2007-08-14 14:06:59.000000000 -0400
-+++ linux-2.6.22.noarch/drivers/ssb/Kconfig	2007-08-14 14:09:01.000000000 -0400
-@@ -0,0 +1,92 @@
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/drivers/ssb/Kconfig	2007-08-24 11:42:15.000000000 -0400
+@@ -0,0 +1,117 @@
 +menu "Sonics Silicon Backplane"
 +
++config SSB_POSSIBLE
++	bool
++	depends on HAS_IOMEM
++	default y
++
 +config SSB
 +	tristate "Sonics Silicon Backplane support"
-+	depends on HAS_IOMEM
++	depends on SSB_POSSIBLE
 +	help
-+	  Support for the Sonics Silicon Backplane bus
++	  Support for the Sonics Silicon Backplane bus.
++	  You only need to enable this option, if you are
++	  configuring a kernel for an embedded system with
++	  this bus.
++	  It will be auto-selected if needed in other
++	  environments.
 +
-+	  The module will be called ssb
++	  The module will be called ssb.
 +
-+	  If unsure, say M
++	  If unsure, say N.
++
++config SSB_PCIHOST_POSSIBLE
++	bool
++	depends on SSB && PCI
++	default y
 +
 +config SSB_PCIHOST
 +	bool "Support for SSB on PCI-bus host"
-+	depends on SSB && PCI
++	depends on SSB_PCIHOST_POSSIBLE
 +	default y
 +	help
 +	  Support for a Sonics Silicon Backplane on top
@@ -99873,9 +138472,14 @@
 +
 +	  If unsure, say Y
 +
++config SSB_PCMCIAHOST_POSSIBLE
++	bool
++	depends on SSB && PCMCIA && EXPERIMENTAL
++	default y
++
 +config SSB_PCMCIAHOST
 +	bool "Support for SSB on PCMCIA-bus host (EXPERIMENTAL)"
-+	depends on SSB && PCMCIA && EXPERIMENTAL
++	depends on SSB_PCMCIAHOST_POSSIBLE
 +	help
 +	  Support for a Sonics Silicon Backplane on top
 +	  of a PCMCIA device.
@@ -99884,7 +138488,7 @@
 +
 +config SSB_SILENT
 +	bool "No SSB kernel messages"
-+	depends on SSB
++	depends on SSB && EMBEDDED
 +	help
 +	  This option turns off all Sonics Silicon Backplane printks.
 +	  Note that you won't be able to identify problems, once
@@ -99908,9 +138512,14 @@
 +	depends on SSB
 +	# ChipCommon and ExtIf serial support routines.
 +
++config SSB_DRIVER_PCICORE_POSSIBLE
++	bool
++	depends on SSB_PCIHOST
++	default y
++
 +config SSB_DRIVER_PCICORE
 +	bool "SSB PCI core driver"
-+	depends on SSB && SSB_PCIHOST
++	depends on SSB_DRIVER_PCICORE_POSSIBLE
 +	help
 +	  Driver for the Sonics Silicon Backplane attached
 +	  Broadcom PCI core.
@@ -99943,8 +138552,8 @@
 +	  If unsure, say N
 +
 +endmenu
---- linux-2.6.22.noarch/drivers/ssb/scan.c.orig	2007-08-14 14:06:59.000000000 -0400
-+++ linux-2.6.22.noarch/drivers/ssb/scan.c	2007-08-14 14:06:59.000000000 -0400
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/drivers/ssb/scan.c	2007-08-24 11:42:10.000000000 -0400
 @@ -0,0 +1,413 @@
 +/*
 + * Sonics Silicon Backplane
@@ -100359,9 +138968,9 @@
 +	ssb_iounmap(bus);
 +	goto out;
 +}
---- linux-2.6.22.noarch/drivers/ssb/driver_extif.c.orig	2007-08-14 14:06:59.000000000 -0400
-+++ linux-2.6.22.noarch/drivers/ssb/driver_extif.c	2007-08-14 14:06:59.000000000 -0400
-@@ -0,0 +1,104 @@
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/drivers/ssb/driver_extif.c	2007-08-24 11:42:15.000000000 -0400
+@@ -0,0 +1,129 @@
 +/*
 + * Sonics Silicon Backplane
 + * Broadcom EXTIF core driver
@@ -100391,6 +139000,14 @@
 +	ssb_write32(extif->dev, offset, value);
 +}
 +
++static inline void extif_write32_masked(struct ssb_extif *extif, u16 offset,
++					u32 mask, u32 value)
++{
++	value &= mask;
++	value |= extif_read32(extif, offset) & ~mask;
++	extif_write32(extif, offset, value);
++}
++
 +#ifdef CONFIG_SSB_SERIAL
 +static bool serial_exists(u8 *regs)
 +{
@@ -100466,8 +139083,25 @@
 +	*m = extif_read32(extif, SSB_EXTIF_CLOCK_SB);
 +}
 +
---- linux-2.6.22.noarch/drivers/ssb/driver_pcicore.c.orig	2007-08-14 14:06:59.000000000 -0400
-+++ linux-2.6.22.noarch/drivers/ssb/driver_pcicore.c	2007-08-14 14:09:01.000000000 -0400
++u32 ssb_extif_gpio_in(struct ssb_extif *extif, u32 mask)
++{
++	return extif_read32(extif, SSB_EXTIF_GPIO_IN) & mask;
++}
++
++void ssb_extif_gpio_out(struct ssb_extif *extif, u32 mask, u32 value)
++{
++	return extif_write32_masked(extif, SSB_EXTIF_GPIO_OUT(0),
++				   mask, value);
++}
++
++void ssb_extif_gpio_outen(struct ssb_extif *extif, u32 mask, u32 value)
++{
++	return extif_write32_masked(extif, SSB_EXTIF_GPIO_OUTEN(0),
++				   mask, value);
++}
++
+--- /dev/null	2007-08-24 08:13:44.541426538 -0400
++++ linux-2.6.22.noarch/drivers/ssb/driver_pcicore.c	2007-08-24 11:42:10.000000000 -0400
 @@ -0,0 +1,576 @@
 +/*
 + * Sonics Silicon Backplane


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/kernel-2.6.spec,v
retrieving revision 1.3330
retrieving revision 1.3331
diff -u -r1.3330 -r1.3331
--- kernel-2.6.spec	24 Aug 2007 17:44:57 -0000	1.3330
+++ kernel-2.6.spec	25 Aug 2007 02:33:52 -0000	1.3331
@@ -599,10 +599,9 @@
 Patch683: linux-2.6-bcm43xx-pci-neuter.patch
 Patch690: git-wireless-dev.patch
 Patch691: linux-2.6-mac80211-local-mcast-filter.patch
-Patch692: linux-2.6-mac80211-probe-hidden-essid.patch
 Patch700: linux-2.6-iwlwifi-fw-name-compat.patch
-Patch701: linux-2.6-rt2x00-usb-1_1-timeout.patch
-Patch702: linux-2.6-b43-module-alias.patch
+Patch701: linux-2.6-b43-module-alias.patch
+Patch702: linux-2.6-b43-use-old-fw.patch
 Patch710: linux-2.6-e1000-ich9.patch
 Patch711: linux-2.6-netdev-forcedeth-realtek-oui.patch
 Patch713: linux-2.6-net-atl1-fix-typo-in-dma-setup.patch
@@ -1309,16 +1308,14 @@
 ApplyPatch git-wireless-dev.patch
 # mac80211: Filter locally-originated multicast frames echoed by AP
 ApplyPatch linux-2.6-mac80211-local-mcast-filter.patch
-# mac80211: probe for hidden SSIDs when SSID not found
-ApplyPatch linux-2.6-mac80211-probe-hidden-essid.patch
 # temp compat patch for iwlwifi firmware filenames
 ApplyPatch linux-2.6-iwlwifi-fw-name-compat.patch
-# temp make rt2x00 play nice w/ USB 1.1
-ApplyPatch linux-2.6-rt2x00-usb-1_1-timeout.patch
 # avoid bcm3xx vs bcm43xx-mac80211 PCI ID conflicts
 ApplyPatch linux-2.6-bcm43xx-pci-neuter.patch
 # add module alias for "bcm43xx-mac80211"
 ApplyPatch linux-2.6-b43-module-alias.patch
+# use old-style firmware for b43
+ApplyPatch linux-2.6-b43-use-old-fw.patch
 
 # add patch from markmc so that e1000 supports ICH9
 ApplyPatch linux-2.6-e1000-ich9.patch
@@ -2305,6 +2302,11 @@
 %endif
 
 %changelog
+* Fri Aug 24 2007 John W. Linville <linville at redhat.com>
+- Update wireless-dev bits (mac80211, rt2x00, b43, ssb)
+- Add patch to keep old firmware format for b43
+- Add at76_usb driver
+
 * Fri Aug 24 2007 Chuck Ebbert <cebbert at redhat.com>
 - CFS scheduler v20.3
 


--- linux-2.6-mac80211-probe-hidden-essid.patch DELETED ---


--- linux-2.6-rt2x00-usb-1_1-timeout.patch DELETED ---




More information about the fedora-extras-commits mailing list