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