rpms/kernel/F-8 linux-2.6-b43-rev-d.patch, NONE, 1.1 linux-2.6-rtl8180.patch, NONE, 1.1 config-generic, 1.36, 1.37 kernel.spec, 1.264, 1.265 linux-2.6-ath5k.patch, 1.6, 1.7 linux-2.6-wireless-pending.patch, 1.12, 1.13 linux-2.6-wireless.patch, 1.11, 1.12 linux-2.6-drivers-ssb-debug-revision.patch, 1.1, NONE
John W. Linville (linville)
fedora-extras-commits at redhat.com
Fri Nov 16 04:01:18 UTC 2007
- Previous message: rpms/perl-Inline-Files/devel perl-Inline-Files.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2
- Next message: rpms/evince/devel tiff.patch,NONE,1.1 evince.spec,1.97,1.98
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: linville
Update of /cvs/pkgs/rpms/kernel/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv15505
Modified Files:
config-generic kernel.spec linux-2.6-ath5k.patch
linux-2.6-wireless-pending.patch linux-2.6-wireless.patch
Added Files:
linux-2.6-b43-rev-d.patch linux-2.6-rtl8180.patch
Removed Files:
linux-2.6-drivers-ssb-debug-revision.patch
Log Message:
wireless updates 2007-11-15
linux-2.6-b43-rev-d.patch:
--- NEW FILE linux-2.6-b43-rev-d.patch ---
diff -up linux-2.6.23.noarch/drivers/net/wireless/b43/dma.c.orig linux-2.6.23.noarch/drivers/net/wireless/b43/dma.c
--- linux-2.6.23.noarch/drivers/net/wireless/b43/dma.c.orig 2007-11-15 22:41:08.000000000 -0500
+++ linux-2.6.23.noarch/drivers/net/wireless/b43/dma.c 2007-11-15 22:44:59.000000000 -0500
@@ -165,7 +165,7 @@ static void op64_fill_descriptor(struct
addrhi = (((u64) dmaaddr >> 32) & ~SSB_DMA_TRANSLATION_MASK);
addrext = (((u64) dmaaddr >> 32) & SSB_DMA_TRANSLATION_MASK)
>> SSB_DMA_TRANSLATION_SHIFT;
- addrhi |= ssb_dma_translation(ring->dev->dev);
+ addrhi |= (ssb_dma_translation(ring->dev->dev) << 1);
if (slot == ring->nr_slots - 1)
ctl0 |= B43_DMA64_DCTL0_DTABLEEND;
if (start)
@@ -426,14 +426,15 @@ static inline
static int alloc_ringmemory(struct b43_dmaring *ring)
{
struct device *dev = ring->dev->dev->dev;
+ int size = (ring->dma64) ? 8192 : B43_DMA_RINGMEMSIZE;
- ring->descbase = dma_alloc_coherent(dev, B43_DMA_RINGMEMSIZE,
+ ring->descbase = dma_alloc_coherent(dev, size,
&(ring->dmabase), GFP_KERNEL);
if (!ring->descbase) {
b43err(ring->dev->wl, "DMA ringmemory allocation failed\n");
return -ENOMEM;
}
- memset(ring->descbase, 0, B43_DMA_RINGMEMSIZE);
+ memset(ring->descbase, 0, size);
return 0;
}
@@ -483,7 +484,7 @@ int b43_dmacontroller_rx_reset(struct b4
return 0;
}
-/* Reset the RX DMA channel */
+/* Reset the TX DMA channel */
int b43_dmacontroller_tx_reset(struct b43_wldev *dev, u16 mmio_base, int dma64)
{
int i;
@@ -636,18 +637,13 @@ static int dmacontroller_setup(struct b4
if (ring->dma64) {
u64 ringbase = (u64) (ring->dmabase);
- addrext = ((ringbase >> 32) & SSB_DMA_TRANSLATION_MASK)
- >> SSB_DMA_TRANSLATION_SHIFT;
- value = B43_DMA64_TXENABLE;
- value |= (addrext << B43_DMA64_TXADDREXT_SHIFT)
- & B43_DMA64_TXADDREXT_MASK;
- b43_dma_write(ring, B43_DMA64_TXCTL, value);
+ b43_dma_write(ring, B43_DMA64_TXCTL,
+ B43_DMA64_TXENABLE);
b43_dma_write(ring, B43_DMA64_TXRINGLO,
(ringbase & 0xFFFFFFFF));
b43_dma_write(ring, B43_DMA64_TXRINGHI,
((ringbase >> 32) &
- ~SSB_DMA_TRANSLATION_MASK)
- | trans);
+ 0xFFFFFFFF));
} else {
u32 ringbase = (u32) (ring->dmabase);
@@ -668,20 +664,16 @@ static int dmacontroller_setup(struct b4
if (ring->dma64) {
u64 ringbase = (u64) (ring->dmabase);
- addrext = ((ringbase >> 32) & SSB_DMA_TRANSLATION_MASK)
- >> SSB_DMA_TRANSLATION_SHIFT;
- value = (ring->frameoffset << B43_DMA64_RXFROFF_SHIFT);
- value |= B43_DMA64_RXENABLE;
- value |= (addrext << B43_DMA64_RXADDREXT_SHIFT)
- & B43_DMA64_RXADDREXT_MASK;
+ value = (ring->frameoffset << B43_DMA64_RXFROFF_SHIFT)
+ | B43_DMA64_RXENABLE;
b43_dma_write(ring, B43_DMA64_RXCTL, value);
b43_dma_write(ring, B43_DMA64_RXRINGLO,
(ringbase & 0xFFFFFFFF));
b43_dma_write(ring, B43_DMA64_RXRINGHI,
((ringbase >> 32) &
- ~SSB_DMA_TRANSLATION_MASK)
- | trans);
- b43_dma_write(ring, B43_DMA64_RXINDEX, 200);
+ 0xFFFFFFFF));
+ b43_dma_write(ring, B43_DMA64_RXINDEX, ring->nr_slots *
+ sizeof(struct b43_dmadesc64));
} else {
u32 ringbase = (u32) (ring->dmabase);
@@ -695,11 +687,12 @@ static int dmacontroller_setup(struct b4
b43_dma_write(ring, B43_DMA32_RXRING,
(ringbase & ~SSB_DMA_TRANSLATION_MASK)
| trans);
- b43_dma_write(ring, B43_DMA32_RXINDEX, 200);
+ b43_dma_write(ring, B43_DMA32_RXINDEX, ring->nr_slots *
+ sizeof(struct b43_dmadesc32));
}
}
- out:
+out:
return err;
}
diff -up linux-2.6.23.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.23.noarch/drivers/net/wireless/b43/main.c
--- linux-2.6.23.noarch/drivers/net/wireless/b43/main.c.orig 2007-11-15 22:41:09.000000000 -0500
+++ linux-2.6.23.noarch/drivers/net/wireless/b43/main.c 2007-11-15 22:44:59.000000000 -0500
@@ -93,6 +93,7 @@ static const struct ssb_device_id b43_ss
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 7),
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 9),
SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 10),
+ SSB_DEVICE(SSB_VENDOR_BROADCOM, SSB_DEV_80211, 13),
SSB_DEVTABLE_END
};
@@ -3063,7 +3064,7 @@ static int b43_phy_versioning(struct b43
unsupported = 1;
break;
case B43_PHYTYPE_G:
- if (phy_rev > 8)
+ if (phy_rev > 9)
unsupported = 1;
break;
default:
diff -up linux-2.6.23.noarch/drivers/net/wireless/b43/dma.h.orig linux-2.6.23.noarch/drivers/net/wireless/b43/dma.h
--- linux-2.6.23.noarch/drivers/net/wireless/b43/dma.h.orig 2007-11-15 22:41:09.000000000 -0500
+++ linux-2.6.23.noarch/drivers/net/wireless/b43/dma.h 2007-11-15 22:44:59.000000000 -0500
@@ -260,6 +260,13 @@ static inline u32 b43_dma_read(struct b4
static inline
void b43_dma_write(struct b43_dmaring *ring, u16 offset, u32 value)
{
+ /* temporary debugging code */
+ if (((offset == 8) || (offset == 0x28)) && ring->dma64 &&
+ ((value & 0x1FFF) != 0)) {
+ printk(KERN_ERR "b43: bad desc ring address for 64-bit DMA"
+ " - offset, value: 0x%.2X 0x%.4X\n", offset, value);
+ dump_stack();
+ }
b43_write32(ring->dev, ring->mmio_base + offset, value);
}
linux-2.6-rtl8180.patch:
--- NEW FILE linux-2.6-rtl8180.patch ---
diff -up linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.23.noarch/drivers/net/wireless/Kconfig
--- linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig 2007-11-15 14:01:43.000000000 -0500
+++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig 2007-11-15 14:08:21.000000000 -0500
@@ -546,6 +546,11 @@ config USB_ZD1201
To compile this driver as a module, choose M here: the
module will be called zd1201.
+config RTL8180
+ tristate "Realtek 8185 PCI support"
+ depends on MAC80211 && PCI && WLAN_80211 && EXPERIMENTAL
+ select EEPROM_93CX6
+
config RTL8187
tristate "Realtek 8187 USB support"
depends on MAC80211 && USB && WLAN_80211 && EXPERIMENTAL
diff -up linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig linux-2.6.23.noarch/drivers/net/wireless/Makefile
--- linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig 2007-11-15 14:01:43.000000000 -0500
+++ linux-2.6.23.noarch/drivers/net/wireless/Makefile 2007-11-15 14:08:21.000000000 -0500
@@ -50,7 +50,10 @@ obj-$(CONFIG_PCMCIA_WL3501) += wl3501_cs
obj-$(CONFIG_USB_ZD1201) += zd1201.o
obj-$(CONFIG_LIBERTAS) += libertas/
+rtl8180-objs := rtl8180_dev.o rtl8180_rtl8225.o
rtl8187-objs := rtl8187_dev.o rtl8187_rtl8225.o
+
+obj-$(CONFIG_RTL8180) += rtl8180.o
obj-$(CONFIG_RTL8187) += rtl8187.o
obj-$(CONFIG_ADM8211) += adm8211.o
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_dev.c
--- /dev/null 2007-11-12 23:12:46.917997680 -0500
+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_dev.c 2007-11-15 14:08:31.000000000 -0500
@@ -0,0 +1,1018 @@
+
+/*
+ * Linux device driver for RTL8180 / RTL8185
+ *
+ * Copyright 2007 Michael Wu <flamingice at sourmilk.net>
+ * Copyright 2007 Andrea Merello <andreamrl at tiscali.it>
+ *
+ * Based on the r8180 driver, which is:
+ * Copyright 2004-2005 Andrea Merello <andreamrl at tiscali.it>, et al.
+ *
+ * Thanks to Realtek for their support!
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/init.h>
+#include <linux/pci.h>
+#include <linux/delay.h>
+#include <linux/etherdevice.h>
+#include <linux/eeprom_93cx6.h>
+#include <net/mac80211.h>
+
+#include "rtl8180.h"
+#include "rtl8180_rtl8225.h"
+
+MODULE_AUTHOR("Michael Wu <flamingice at sourmilk.net>");
+MODULE_AUTHOR("Andrea Merello <andreamrl at tiscali.it>");
+MODULE_DESCRIPTION("RTL8180 / RTL8185 PCI wireless driver");
+MODULE_LICENSE("GPL");
+
+static struct pci_device_id rtl8180_table[] __devinitdata = {
+ { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8185) },
+ { }
+};
+
+MODULE_DEVICE_TABLE(pci, rtl8180_table);
+
+void rtl8180_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data)
+{
+ struct rtl8180_priv *priv = dev->priv;
+ int i = 10;
+ u32 buf;
+
+ buf = (data << 8) | addr;
+
+ rtl818x_iowrite32(priv, (__le32 __iomem *)&priv->map->PHY[0], buf | 0x80);
+ while (i--) {
+ rtl818x_iowrite32(priv, (__le32 __iomem *)&priv->map->PHY[0], buf);
+ if (rtl818x_ioread8(priv, &priv->map->PHY[2]) == (data & 0xFF))
+ return;
+ }
+}
+
+static void rtl8180_handle_rx(struct ieee80211_hw *dev)
+{
+ struct rtl8180_priv *priv = dev->priv;
+ unsigned int count = 32;
+
+ while (count--) {
+ struct rtl8180_rx_desc *entry = &priv->rx_ring[priv->rx_idx];
+ struct sk_buff *skb = priv->rx_buf[priv->rx_idx];
+ u32 flags = le32_to_cpu(entry->flags);
+
+ if (flags & RTL8180_RX_DESC_FLAG_OWN)
+ return;
+
+ if (unlikely(flags & (RTL8180_RX_DESC_FLAG_DMA_FAIL |
+ RTL8180_RX_DESC_FLAG_FOF |
+ RTL8180_RX_DESC_FLAG_RX_ERR)))
+ goto done;
+ else {
+ u32 flags2 = le32_to_cpu(entry->flags2);
+ struct ieee80211_rx_status rx_status = {0};
+ struct sk_buff *new_skb = dev_alloc_skb(MAX_RX_SIZE);
+ int rate;
+
+ if (unlikely(!new_skb))
+ goto done;
+
+ pci_unmap_single(priv->pdev,
+ *((dma_addr_t *)skb->cb),
+ MAX_RX_SIZE, PCI_DMA_FROMDEVICE);
+ skb_put(skb, flags & 0xFFF);
+
+ rate = (flags >> 20) & 0xF;
+ rx_status.antenna = (flags2 >> 15) & 1;
+ /* TODO: improve signal/rssi reporting */
+ rx_status.signal = flags2 & 0xFF;
+ rx_status.ssi = (flags2 >> 8) & 0x7F;
+ rx_status.rate = priv->rates[rate].rate;
+ rx_status.freq = dev->conf.freq;
+ rx_status.channel = dev->conf.channel;
+ rx_status.phymode = dev->conf.phymode;
+ rx_status.mactime = le64_to_cpu(entry->tsft);
+ ieee80211_rx_irqsafe(dev, skb, &rx_status);
+
+ skb = new_skb;
+ priv->rx_buf[priv->rx_idx] = skb;
+ *((dma_addr_t *) skb->cb) =
+ pci_map_single(priv->pdev, skb_tail_pointer(skb),
+ MAX_RX_SIZE, PCI_DMA_FROMDEVICE);
+ }
+
+ done:
+ entry->rx_buf = cpu_to_le32(*((dma_addr_t *)skb->cb));
+ entry->flags = cpu_to_le32(RTL8180_RX_DESC_FLAG_OWN |
+ MAX_RX_SIZE);
+ if (priv->rx_idx == 31)
+ entry->flags |= cpu_to_le32(RTL8180_RX_DESC_FLAG_EOR);
+ priv->rx_idx = (priv->rx_idx + 1) % 32;
+ }
+}
+
+static void rtl8180_handle_tx(struct ieee80211_hw *dev, unsigned int prio)
+{
+ struct rtl8180_priv *priv = dev->priv;
+ struct rtl8180_tx_ring *ring = &priv->tx_ring[prio];
+
+ while (skb_queue_len(&ring->queue)) {
+ struct rtl8180_tx_desc *entry = &ring->desc[ring->idx];
+ struct sk_buff *skb;
+ struct ieee80211_tx_status status = { {0} };
+ struct ieee80211_tx_control *control;
+ u32 flags = le32_to_cpu(entry->flags);
+
+ if (flags & RTL8180_TX_DESC_FLAG_OWN)
+ return;
+
+ ring->idx = (ring->idx + 1) % ring->entries;
+ skb = __skb_dequeue(&ring->queue);
+ pci_unmap_single(priv->pdev, le32_to_cpu(entry->tx_buf),
+ skb->len, PCI_DMA_TODEVICE);
+
+ control = *((struct ieee80211_tx_control **)skb->cb);
+ if (control)
+ memcpy(&status.control, control, sizeof(*control));
+ kfree(control);
+
+ if (!(status.control.flags & IEEE80211_TXCTL_NO_ACK)) {
+ if (flags & RTL8180_TX_DESC_FLAG_TX_OK)
+ status.flags = IEEE80211_TX_STATUS_ACK;
+ else
+ status.excessive_retries = 1;
+ }
+ status.retry_count = flags & 0xFF;
+
+ ieee80211_tx_status_irqsafe(dev, skb, &status);
+ if (ring->entries - skb_queue_len(&ring->queue) == 2)
+ ieee80211_wake_queue(dev, prio);
+ }
+}
+
+static irqreturn_t rtl8180_interrupt(int irq, void *dev_id)
+{
+ struct ieee80211_hw *dev = dev_id;
+ struct rtl8180_priv *priv = dev->priv;
+ u16 reg;
+
+ spin_lock(&priv->lock);
+ reg = rtl818x_ioread16(priv, &priv->map->INT_STATUS);
+ if (unlikely(reg == 0xFFFF)) {
+ spin_unlock(&priv->lock);
+ return IRQ_HANDLED;
+ }
[...1672 lines suppressed...]
+
+ rtl818x_iowrite8(priv, (u8 __iomem *)((void __iomem *)priv->map + 0x5B), 0x0D); msleep(1);
+
+ rtl8225z2_rf_set_tx_power(dev, 1);
+
+ /* RX antenna default to A */
+ rtl8225_write_phy_cck(dev, 0x10, 0x9b); msleep(1); /* B: 0xDB */
+ rtl8225_write_phy_ofdm(dev, 0x26, 0x90); msleep(1); /* B: 0x10 */
+
+ rtl818x_iowrite8(priv, &priv->map->TX_ANTENNA, 0x03); /* B: 0x00 */
+ msleep(1);
+ rtl818x_iowrite32(priv, (__le32 __iomem *)((void __iomem *)priv->map + 0x94), 0x15c00002);
+ rtl818x_iowrite16(priv, &priv->map->RFPinsEnable, 0x1FFF);
+}
+
+void rtl8225_rf_stop(struct ieee80211_hw *dev)
+{
+ struct rtl8180_priv *priv = dev->priv;
+ u8 reg;
+
+ rtl8225_write(dev, 0x4, 0x1f); msleep(1);
+
+ rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG);
+ reg = rtl818x_ioread8(priv, &priv->map->CONFIG3);
+ rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg | RTL818X_CONFIG3_ANAPARAM_WRITE);
+ rtl818x_iowrite32(priv, &priv->map->ANAPARAM2, RTL8225_ANAPARAM2_OFF);
+ rtl818x_iowrite32(priv, &priv->map->ANAPARAM, RTL8225_ANAPARAM_OFF);
+ rtl818x_iowrite8(priv, &priv->map->CONFIG3, reg & ~RTL818X_CONFIG3_ANAPARAM_WRITE);
+ rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL);
+}
+
+void rtl8225_rf_set_channel(struct ieee80211_hw *dev,
+ struct ieee80211_conf *conf)
+{
+ struct rtl8180_priv *priv = dev->priv;
+
+ if (priv->rf_init == rtl8225_rf_init)
+ rtl8225_rf_set_tx_power(dev, conf->channel);
+ else
+ rtl8225z2_rf_set_tx_power(dev, conf->channel);
+
+ rtl8225_write(dev, 0x7, rtl8225_chan[conf->channel - 1]);
+ msleep(10);
+
+ if (conf->flags & IEEE80211_CONF_SHORT_SLOT_TIME) {
+ rtl818x_iowrite8(priv, &priv->map->SLOT, 0x9);
+ rtl818x_iowrite8(priv, &priv->map->SIFS, 0x22);
+ rtl818x_iowrite8(priv, &priv->map->DIFS, 0x14);
+ rtl818x_iowrite8(priv, &priv->map->EIFS, 81);
+ rtl818x_iowrite8(priv, &priv->map->CW_VAL, 0x73);
+ } else {
+ rtl818x_iowrite8(priv, &priv->map->SLOT, 0x14);
+ rtl818x_iowrite8(priv, &priv->map->SIFS, 0x44);
+ rtl818x_iowrite8(priv, &priv->map->DIFS, 0x24);
+ rtl818x_iowrite8(priv, &priv->map->EIFS, 81);
+ rtl818x_iowrite8(priv, &priv->map->CW_VAL, 0xa5);
+ }
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180.h
--- /dev/null 2007-11-12 23:12:46.917997680 -0500
+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180.h 2007-11-15 14:08:21.000000000 -0500
@@ -0,0 +1,138 @@
+#ifndef RTL8180_H
+#define RTL8180_H
+
+#include "rtl818x.h"
+
+#define MAX_RX_SIZE IEEE80211_MAX_RTS_THRESHOLD
+
+#define RF_PARAM_DIGPHY (1 << 0)
+#define RF_PARAM_ANTBDEFAULT (1 << 1)
+#define RF_PARAM_CARRIERSENSE1 (1 << 2)
+#define RF_PARAM_CARRIERSENSE2 (1 << 3)
+
+enum rtl8180_tx_desc_flags {
+ RTL8180_TX_DESC_FLAG_NO_ENC = (1 << 15),
+ RTL8180_TX_DESC_FLAG_TX_OK = (1 << 15),
+ RTL8180_TX_DESC_FLAG_SPLCP = (1 << 16),
+ RTL8180_TX_DESC_FLAG_RX_UNDER = (1 << 16),
+ RTL8180_TX_DESC_FLAG_MOREFRAG = (1 << 17),
+ RTL8180_TX_DESC_FLAG_CTS = (1 << 18),
+ RTL8180_TX_DESC_FLAG_RTS = (1 << 23),
+ RTL8180_TX_DESC_FLAG_LS = (1 << 28),
+ RTL8180_TX_DESC_FLAG_FS = (1 << 29),
+ RTL8180_TX_DESC_FLAG_DMA = (1 << 30),
+ RTL8180_TX_DESC_FLAG_OWN = (1 << 31)
+};
+
+struct rtl8180_tx_desc {
+ __le32 flags;
+ __le16 rts_duration;
+ __le16 plcp_len;
+ __le32 tx_buf;
+ __le32 frame_len;
+ __le32 next_tx_desc;
+ u8 cw;
+ u8 retry_limit;
+ u8 agc;
+ u8 flags2;
+ u32 reserved[2];
+} __attribute__ ((packed));
+
+enum rtl8180_rx_desc_flags {
+ RTL8180_RX_DESC_FLAG_ICV_ERR = (1 << 12),
+ RTL8180_RX_DESC_FLAG_CRC32_ERR = (1 << 13),
+ RTL8180_RX_DESC_FLAG_PM = (1 << 14),
+ RTL8180_RX_DESC_FLAG_RX_ERR = (1 << 15),
+ RTL8180_RX_DESC_FLAG_BCAST = (1 << 16),
+ RTL8180_RX_DESC_FLAG_PAM = (1 << 17),
+ RTL8180_RX_DESC_FLAG_MCAST = (1 << 18),
+ RTL8180_RX_DESC_FLAG_SPLCP = (1 << 25),
+ RTL8180_RX_DESC_FLAG_FOF = (1 << 26),
+ RTL8180_RX_DESC_FLAG_DMA_FAIL = (1 << 27),
+ RTL8180_RX_DESC_FLAG_LS = (1 << 28),
+ RTL8180_RX_DESC_FLAG_FS = (1 << 29),
+ RTL8180_RX_DESC_FLAG_EOR = (1 << 30),
+ RTL8180_RX_DESC_FLAG_OWN = (1 << 31)
+};
+
+struct rtl8180_rx_desc {
+ __le32 flags;
+ __le32 flags2;
+ union {
+ __le32 rx_buf;
+ __le64 tsft;
+ };
+} __attribute__ ((packed));
+
+struct rtl8180_tx_ring {
+ struct rtl8180_tx_desc *desc;
+ dma_addr_t dma;
+ unsigned int idx;
+ unsigned int entries;
+ struct sk_buff_head queue;
+};
+
+struct rtl8180_priv {
+ /* common between rtl818x drivers */
+ struct rtl818x_csr __iomem *map;
+ void (*rf_init)(struct ieee80211_hw *);
+ void (*rf_stop)(struct ieee80211_hw *);
+ void (*rf_set_chan)(struct ieee80211_hw *, struct ieee80211_conf *);
+ int mode;
+ int if_id;
+
+ /* rtl8180 driver specific */
+ spinlock_t lock;
+ struct rtl8180_rx_desc *rx_ring;
+ dma_addr_t rx_ring_dma;
+ unsigned int rx_idx;
+ struct sk_buff *rx_buf[32];
+ struct rtl8180_tx_ring tx_ring[4];
+ struct ieee80211_channel channels[14];
+ struct ieee80211_rate rates[12];
+ struct ieee80211_hw_mode modes[2];
+ struct pci_dev *pdev;
+ u32 rx_conf;
+
+ int r8185;
+ u32 anaparam;
+ u16 rfparam;
+ u8 csthreshold;
+};
+
+void rtl8180_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data);
+
+static inline u8 rtl818x_ioread8(struct rtl8180_priv *priv, u8 __iomem *addr)
+{
+ return ioread8(addr);
+}
+
+static inline u16 rtl818x_ioread16(struct rtl8180_priv *priv, __le16 __iomem *addr)
+{
+ return ioread16(addr);
+}
+
+static inline u32 rtl818x_ioread32(struct rtl8180_priv *priv, __le32 __iomem *addr)
+{
+ return ioread32(addr);
+}
+
+static inline void rtl818x_iowrite8(struct rtl8180_priv *priv,
+ u8 __iomem *addr, u8 val)
+{
+ iowrite8(val, addr);
+}
+
+static inline void rtl818x_iowrite16(struct rtl8180_priv *priv,
+ __le16 __iomem *addr, u16 val)
+{
+ iowrite16(val, addr);
+}
+
+static inline void rtl818x_iowrite32(struct rtl8180_priv *priv,
+ __le32 __iomem *addr, u32 val)
+{
+ iowrite32(val, addr);
+}
+
+#endif /* RTL8180_H */
Index: config-generic
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/config-generic,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- config-generic 8 Nov 2007 22:06:15 -0000 1.36
+++ config-generic 16 Nov 2007 04:00:40 -0000 1.37
@@ -1245,7 +1245,10 @@
# CONFIG_IPW2200 is not set
# CONFIG_IPW2100_DEBUG is not set
# CONFIG_IPW2200_DEBUG is not set
-# CONFIG_LIBERTAS is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_CS=m
+# CONFIG_LIBERTAS_DEBUG is not set
CONFIG_IWL4965=m
CONFIG_IWL4965_DEBUG=y
@@ -1281,7 +1284,7 @@
CONFIG_RT61PCI_RFKILL=y
CONFIG_RT2500USB=m
CONFIG_RT73USB=m
-CONFIG_RTL818X=y
+CONFIG_RTL8180=m
CONFIG_RTL8187=m
CONFIG_TMD_HERMES=m
CONFIG_USB_ATMEL=m
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/kernel.spec,v
retrieving revision 1.264
retrieving revision 1.265
diff -u -r1.264 -r1.265
--- kernel.spec 15 Nov 2007 20:03:44 -0000 1.264
+++ kernel.spec 16 Nov 2007 04:00:40 -0000 1.265
@@ -673,7 +673,8 @@
Patch690: linux-2.6-at76.patch
Patch691: linux-2.6-ath5k.patch
Patch692: linux-2.6-zd1211rw-mac80211.patch
-Patch700: linux-2.6-drivers-ssb-debug-revision.patch
+Patch693: linux-2.6-rtl8180.patch
+Patch694: linux-2.6-b43-rev-d.patch
Patch710: linux-2.6-netdev-e1000e-01.patch
Patch711: linux-2.6-netdev-e1000e-02.patch
Patch712: linux-2.6-netdev-e1000e-03.patch
@@ -1284,9 +1285,8 @@
ApplyPatch linux-2.6-at76.patch
ApplyPatch linux-2.6-ath5k.patch
ApplyPatch linux-2.6-zd1211rw-mac80211.patch
-
-# debug the SSB driver
-ApplyPatch linux-2.6-drivers-ssb-debug-revision.patch
+ApplyPatch linux-2.6-rtl8180.patch
+ApplyPatch linux-2.6-b43-rev-d.patch
# latest Intel driver for ich9
ApplyPatch linux-2.6-netdev-e1000e-01.patch
@@ -1989,6 +1989,14 @@
%changelog
+* Thu Nov 15 2007 John W. Linville <linville at redhat.com>
+- wireless fixes from 2.6.24
+- wireless updates destined for 2.6.25
+- ath5k driver updates
+- add rtl8180 driver
+- enable libertas driver
+- add experimental b43 rev D support
+
* Thu Nov 15 2007 Chuck Ebbert <cebbert at redhat.com>
- Add DMI based autoloading for the Dell dcdbas driver (#248257)
linux-2.6-ath5k.patch:
Index: linux-2.6-ath5k.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-ath5k.patch,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- linux-2.6-ath5k.patch 8 Nov 2007 22:06:15 -0000 1.6
+++ linux-2.6-ath5k.patch 16 Nov 2007 04:00:40 -0000 1.7
@@ -1,7 +1,7 @@
diff -up linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.23.noarch/drivers/net/wireless/Kconfig
---- linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig 2007-11-08 16:48:58.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig 2007-11-08 16:50:01.000000000 -0500
-@@ -598,6 +598,19 @@ config P54_PCI
+--- linux-2.6.23.noarch/drivers/net/wireless/Kconfig.orig 2007-11-15 12:47:29.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig 2007-11-15 13:14:13.000000000 -0500
+@@ -598,6 +598,24 @@ config P54_PCI
tristate "Prism54 PCI support"
depends on P54_COMMON && PCI
@@ -10,8 +10,13 @@
+ depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL
+ default m
+ ---help---
-+ This module adds support for atheros 5xxx (e.g. 5212) wireless
-+ cards. If you have this card in your PC, select this to be build.
++ This module adds support for wireless adapters based on
++ Atheros 5xxx chipset.
++
++ Currently the following chip versions are supported:
++
++ MAC: AR5211 AR5212
++ PHY: RF5111/2111 RF5112/2112 RF5413/2413
+
+ This driver uses the kernel's mac80211 subsystem.
+
@@ -22,8 +27,8 @@
source "drivers/net/wireless/bcm43xx/Kconfig"
source "drivers/net/wireless/b43/Kconfig"
diff -up linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig linux-2.6.23.noarch/drivers/net/wireless/Makefile
---- linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig 2007-11-08 16:48:58.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Makefile 2007-11-08 16:49:33.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/Makefile.orig 2007-11-15 12:47:29.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Makefile 2007-11-15 13:13:38.000000000 -0500
@@ -62,3 +62,5 @@ obj-$(CONFIG_RT2X00) += rt2x00/
obj-$(CONFIG_P54_COMMON) += p54common.o
obj-$(CONFIG_P54_USB) += p54usb.o
@@ -31,9 +36,9 @@
+
+obj-$(CONFIG_ATH5K) += ath5k/
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/initvals.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/initvals.c 2007-11-08 16:49:33.000000000 -0500
-@@ -0,0 +1,1102 @@
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/initvals.c 2007-11-15 13:13:38.000000000 -0500
+@@ -0,0 +1,1332 @@
+/*
+ * Initial register settings functions
+ *
@@ -891,6 +896,230 @@
+ { 0x642c0140, 0x642c0140, 0x6442c160, 0x6442c160, 0x6442c160 } },
+};
+
++/* Initial mode-specific settings for RF5413/5414 */
++static const struct ath5k_ini_mode rf5413_ini_mode[] = {
++ { AR5K_TXCFG,
++ { 0x00000015, 0x00000015, 0x00000015, 0x00000015, 0x00000015, } },
++ { AR5K_USEC_5211,
++ { 0x128d93a7, 0x128d93a7, 0x04e01395, 0x12e013ab, 0x12e013ab, } },
++ { AR5K_PHY_TURBO,
++ { 0x00000000, 0x00000003, 0x00000000, 0x00000000, 0x00000003, } },
++ { 0x9820,
++ { 0x02020200, 0x02020200, 0x02010200, 0x02020200, 0x02020200, } },
++ { 0x9824,
++ { 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, } },
++ { 0x9828,
++ { 0x0a020001, 0x0a020001, 0x05020100, 0x0a020001, 0x0a020001, } },
++ { 0x9834,
++ { 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, 0x00000e0e, } },
++ { 0x9838,
++ { 0x00000007, 0x00000007, 0x0000000b, 0x0000000b, 0x0000000b, } },
++ { 0x9844,
++ { 0x1372161c, 0x13721c25, 0x13721728, 0x137216a2, 0x13721c25, } },
++ { 0x9848,
++ { 0x0018fa61, 0x0018fa61, 0x001a1a63, 0x001a1a63, 0x001a1a63, } },
++ { 0x9850,
++ { 0x0c98b4e0, 0x0c98b4e0, 0x0c98b0da, 0x0c98b0da, 0x0c98b0da, } },
++ { AR5K_PHY_SIG,
++ { 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, } },
++ { AR5K_PHY_AGCCOARSE,
++ { 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, 0x3139605e, } },
++ { AR5K_PHY_AGCCTL,
++ { 0x00009d10, 0x00009d10, 0x00009d18, 0x00009d10, 0x00009d10, } },
++ { AR5K_PHY_NF,
++ { 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, 0x0001ce00, } },
++ { AR5K_PHY_ADCSAT,
++ { 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, 0x409a4190, } },
++ { 0x986c,
++ { 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, 0x050cb081, } },
++ { AR5K_PHY_RX_DELAY,
++ { 0x000007d0, 0x000007d0, 0x0000044c, 0x00000898, 0x00000898, } },
++ { 0x9918,
++ { 0x000001b8, 0x000001b8, 0x00000084, 0x00000108, 0x000001b8, } },
++ { 0x9924,
++ { 0x10058a05, 0x10058a05, 0x10058a05, 0x10058a05, 0x10058a05, } },
++ { AR5K_PHY_FRAME_CTL_5211,
++ { 0xf7b81000, 0xf7b81000, 0xf7b80d00, 0xf7b81000, 0xf7b81000, } },
++ { 0xa230,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000108, 0x00000000, } },
++ { AR5K_PHY_CCKTXCTL,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0xa208,
++ { 0xd6be6788, 0xd6be6788, 0xd03e6788, 0xd03e6788, 0xd03e6788, } },
++ { AR5K_PHY_GAIN_2GHZ,
++ { 0x002ec1e0, 0x002ec1e0, 0x002ac120, 0x002ac120, 0x002ac120, } },
++ { 0xa21c,
++ { 0x1883800a, 0x1883800a, 0x1863800a, 0x1883800a, 0x1883800a, } },
++ { 0xa300,
++ { 0x18010000, 0x18010000, 0x18010000, 0x18010000, 0x18010000, } },
++ { 0xa304,
++ { 0x30032602, 0x30032602, 0x30032602, 0x30032602, 0x30032602, } },
++ { 0xa308,
++ { 0x48073e06, 0x48073e06, 0x48073e06, 0x48073e06, 0x48073e06, } },
++ { 0xa30c,
++ { 0x560b4c0a, 0x560b4c0a, 0x560b4c0a, 0x560b4c0a, 0x560b4c0a, } },
++ { 0xa310,
++ { 0x641a600f, 0x641a600f, 0x641a600f, 0x641a600f, 0x641a600f, } },
++ { 0xa314,
++ { 0x784f6e1b, 0x784f6e1b, 0x784f6e1b, 0x784f6e1b, 0x784f6e1b, } },
++ { 0xa318,
++ { 0x868f7c5a, 0x868f7c5a, 0x868f7c5a, 0x868f7c5a, 0x868f7c5a, } },
++ { 0xa31c,
++ { 0x90cf865b, 0x90cf865b, 0x8ecf865b, 0x8ecf865b, 0x8ecf865b, } },
++ { 0xa320,
++ { 0x9d4f970f, 0x9d4f970f, 0x9b4f970f, 0x9b4f970f, 0x9b4f970f, } },
++ { 0xa324,
++ { 0xa7cfa38f, 0xa7cfa38f, 0xa3cf9f8f, 0xa3cf9f8f, 0xa3cf9f8f, } },
++ { 0xa328,
++ { 0xb55faf1f, 0xb55faf1f, 0xb35faf1f, 0xb35faf1f, 0xb35faf1f, } },
++ { 0xa32c,
++ { 0xbddfb99f, 0xbddfb99f, 0xbbdfb99f, 0xbbdfb99f, 0xbbdfb99f, } },
++ { 0xa330,
++ { 0xcb7fc53f, 0xcb7fc53f, 0xcb7fc73f, 0xcb7fc73f, 0xcb7fc73f, } },
++ { 0xa334,
++ { 0xd5ffd1bf, 0xd5ffd1bf, 0xd3ffd1bf, 0xd3ffd1bf, 0xd3ffd1bf, } },
++ { AR5K_DCU_FP,
++ { 0x000003e0, 0x000003e0, 0x000003e0, 0x000003e0, 0x000003e0, } },
++ { 0x4068,
++ { 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, } },
++ { 0x8060,
++ { 0x0000000f, 0x0000000f, 0x0000000f, 0x0000000f, 0x0000000f, } },
++ { 0x809c,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x80a0,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x8118,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x811c,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x8120,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x8124,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x8128,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x812c,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x8130,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x8134,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x8138,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x813c,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x8140,
++ { 0x800003f9, 0x800003f9, 0x800003f9, 0x800003f9, 0x800003f9, } },
++ { 0x8144,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { AR5K_PHY_AGC,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x982c,
++ { 0x0000a000, 0x0000a000, 0x0000a000, 0x0000a000, 0x0000a000, } },
++ { 0x983c,
++ { 0x00200400, 0x00200400, 0x00200400, 0x00200400, 0x00200400, } },
++ { 0x984c,
++ { 0x1284233c, 0x1284233c, 0x1284233c, 0x1284233c, 0x1284233c, } },
++ { AR5K_PHY_SCR,
++ { 0x0000001f, 0x0000001f, 0x0000001f, 0x0000001f, 0x0000001f, } },
++ { AR5K_PHY_SLMT,
++ { 0x00000080, 0x00000080, 0x00000080, 0x00000080, 0x00000080, } },
++ { AR5K_PHY_SCAL,
++ { 0x0000000e, 0x0000000e, 0x0000000e, 0x0000000e, 0x0000000e, } },
++ { 0x9958,
++ { 0x00081fff, 0x00081fff, 0x00081fff, 0x00081fff, 0x00081fff, } },
++ { 0x9980,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x9984,
++ { 0x02800000, 0x02800000, 0x02800000, 0x02800000, 0x02800000, } },
++ { 0x99a0,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x99e0,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0x99e4,
++ { 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, } },
++ { 0x99e8,
++ { 0x3c466478, 0x3c466478, 0x3c466478, 0x3c466478, 0x3c466478, } },
++ { 0x99ec,
++ { 0x000000aa, 0x000000aa, 0x000000aa, 0x000000aa, 0x000000aa, } },
++ { AR5K_PHY_SCLOCK,
++ { 0x0000000c, 0x0000000c, 0x0000000c, 0x0000000c, 0x0000000c, } },
++ { AR5K_PHY_SDELAY,
++ { 0x000000ff, 0x000000ff, 0x000000ff, 0x000000ff, 0x000000ff, } },
++ { AR5K_PHY_SPENDING,
++ { 0x00000014, 0x00000014, 0x00000014, 0x00000014, 0x00000014, } },
++ { 0xa228,
++ { 0x000009b5, 0x000009b5, 0x000009b5, 0x000009b5, 0x000009b5, } },
++ { 0xa23c,
++ { 0x93c889af, 0x93c889af, 0x93c889af, 0x93c889af, 0x93c889af, } },
++ { 0xa24c,
++ { 0x00000001, 0x00000001, 0x00000001, 0x00000001, 0x00000001, } },
++ { 0xa250,
++ { 0x0000a000, 0x0000a000, 0x0000a000, 0x0000a000, 0x0000a000, } },
++ { 0xa254,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0xa258,
++ { 0x0cc75380, 0x0cc75380, 0x0cc75380, 0x0cc75380, 0x0cc75380, } },
++ { 0xa25c,
++ { 0x0f0f0f01, 0x0f0f0f01, 0x0f0f0f01, 0x0f0f0f01, 0x0f0f0f01, } },
++ { 0xa260,
++ { 0x5f690f01, 0x5f690f01, 0x5f690f01, 0x5f690f01, 0x5f690f01, } },
++ { 0xa264,
++ { 0x00418a11, 0x00418a11, 0x00418a11, 0x00418a11, 0x00418a11, } },
++ { 0xa268,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0xa26c,
++ { 0x0c30c16a, 0x0c30c16a, 0x0c30c16a, 0x0c30c16a, 0x0c30c16a, } },
++ { 0xa270,
++ { 0x00820820, 0x00820820, 0x00820820, 0x00820820, 0x00820820, } },
++ { 0xa274,
++ { 0x081b7caa, 0x081b7caa, 0x081b7caa, 0x081b7caa, 0x081b7caa, } },
++ { 0xa278,
++ { 0x1ce739ce, 0x1ce739ce, 0x1ce739ce, 0x1ce739ce, 0x1ce739ce, } },
++ { 0xa27c,
++ { 0x051701ce, 0x051701ce, 0x051701ce, 0x051701ce, 0x051701ce, } },
++ { 0xa338,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0xa33c,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0xa340,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0xa344,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, } },
++ { 0xa348,
++ { 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, } },
++ { 0xa34c,
++ { 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, } },
++ { 0xa350,
++ { 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, } },
++ { 0xa354,
++ { 0x0003ffff, 0x0003ffff, 0x0003ffff, 0x0003ffff, 0x0003ffff, } },
++ { 0xa358,
++ { 0x79a8aa1f, 0x79a8aa1f, 0x79a8aa1f, 0x79a8aa1f, 0x79a8aa1f, } },
++ { 0xa35c,
++ { 0x066c420f, 0x066c420f, 0x066c420f, 0x066c420f, 0x066c420f, } },
++ { 0xa360,
++ { 0x0f282207, 0x0f282207, 0x0f282207, 0x0f282207, 0x0f282207, } },
++ { 0xa364,
++ { 0x17601685, 0x17601685, 0x17601685, 0x17601685, 0x17601685, } },
++ { 0xa368,
++ { 0x1f801104, 0x1f801104, 0x1f801104, 0x1f801104, 0x1f801104, } },
++ { 0xa36c,
++ { 0x37a00c03, 0x37a00c03, 0x37a00c03, 0x37a00c03, 0x37a00c03, } },
++ { 0xa370,
++ { 0x3fc40883, 0x3fc40883, 0x3fc40883, 0x3fc40883, 0x3fc40883, } },
++ { 0xa374,
++ { 0x57c00803, 0x57c00803, 0x57c00803, 0x57c00803, 0x57c00803, } },
++ { 0xa378,
++ { 0x5fd80682, 0x5fd80682, 0x5fd80682, 0x5fd80682, 0x5fd80682, } },
++ { 0xa37c,
++ { 0x7fe00482, 0x7fe00482, 0x7fe00482, 0x7fe00482, 0x7fe00482, } },
++ { 0xa380,
++ { 0x7f3c7bba, 0x7f3c7bba, 0x7f3c7bba, 0x7f3c7bba, 0x7f3c7bba, } },
++ { 0xa384,
++ { 0xf3307ff0, 0xf3307ff0, 0xf3307ff0, 0xf3307ff0, 0xf3307ff0, } },
++};
++
+/*
+ * Initial BaseBand Gain settings for RF5111/5112 (only AR5210 comes with
+ * RF5110 so initial BB Gain settings are included in AR5K_AR5210_INI)
@@ -1086,14 +1315,19 @@
+ if (ah->ah_version == AR5K_AR5212) {
+ ath5k_hw_ini_mode_registers(ah, ARRAY_SIZE(ar5212_ini_mode),
+ ar5212_ini_mode, mode);
-+ if (ah->ah_radio == AR5K_RF5111)
++ if (ah->ah_radio == AR5K_RF5111){
+ ath5k_hw_ini_mode_registers(ah,
+ ARRAY_SIZE(ar5212_rf5111_ini_mode),
+ ar5212_rf5111_ini_mode, mode);
-+ else if (ah->ah_radio == AR5K_RF5112)
++ } else if (ah->ah_radio == AR5K_RF5112){
+ ath5k_hw_ini_mode_registers(ah,
+ ARRAY_SIZE(ar5212_rf5112_ini_mode),
+ ar5212_rf5112_ini_mode, mode);
++ } else if (ah->ah_radio == AR5K_RF5413){
++ ath5k_hw_ini_mode_registers(ah,
++ ARRAY_SIZE(rf5413_ini_mode),
++ rf5413_ini_mode, mode);
++ }
+ }
+ /*For 5211*/
+ if (ah->ah_version == AR5K_AR5211)
@@ -1108,9 +1342,10 @@
+ if (ah->ah_version == AR5K_AR5212) {
+ ath5k_hw_ini_registers(ah, ARRAY_SIZE(ar5212_ini),
+ ar5212_ini, change_channel);
-+ if (ah->ah_radio == AR5K_RF5112) {
++ if (ah->ah_radio >= AR5K_RF5112) {
+ ath5k_hw_reg_write(ah, AR5K_PHY_PAPD_PROBE_INI_5112,
+ AR5K_PHY_PAPD_PROBE);
++ /* Same for RF5413/5414 */
+ ath5k_hw_ini_registers(ah,
+ ARRAY_SIZE(rf5112_ini_bbgain),
+ rf5112_ini_bbgain, change_channel);
@@ -1137,9 +1372,9 @@
+ return 0;
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.c 2007-11-08 16:49:33.000000000 -0500
-@@ -0,0 +1,4395 @@
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.c 2007-11-15 13:13:38.000000000 -0500
+@@ -0,0 +1,4400 @@
+ /*
+ * Copyright (c) 2004-2007 Reyk Floeter <reyk at openbsd.org>
+ * Copyright (c) 2006-2007 Nick Kossifidis <mickflemm at gmail.com>
@@ -1368,11 +1603,15 @@
+ ah->ah_radio_2ghz_revision = 0;
+
+ /* Identify the radio chip*/
-+ if (ah->ah_version == AR5K_AR5210)
++ if (ah->ah_version == AR5K_AR5210) {
+ ah->ah_radio = AR5K_RF5110;
-+ else
-+ ah->ah_radio = ah->ah_radio_5ghz_revision <
-+ AR5K_SREV_RAD_5112 ? AR5K_RF5111 : AR5K_RF5112;
++ } else if (ah->ah_radio_5ghz_revision < AR5K_SREV_RAD_5112) {
++ ah->ah_radio = AR5K_RF5111;
++ } else if (ah->ah_radio_5ghz_revision < AR5K_SREV_RAD_SC1) {
++ ah->ah_radio = AR5K_RF5112;
++ } else {
++ ah->ah_radio = AR5K_RF5413;
++ }
+
+ ah->ah_phy = AR5K_PHY(0);
+
@@ -1595,9 +1834,9 @@
+ kfree(ah);
+}
+
-+/*
-+ * Reset function and helpers
-+ */
++/****************************\
++ Reset function and helpers
++\****************************/
+
+/**
+ * ath5k_hw_write_ofdm_timings - set OFDM timings on AR5212
@@ -1779,7 +2018,8 @@
+ */
+ if (ah->ah_version != AR5K_AR5210) {
+ if (ah->ah_radio != AR5K_RF5111 &&
-+ ah->ah_radio != AR5K_RF5112) {
++ ah->ah_radio != AR5K_RF5112 &&
++ ah->ah_radio != AR5K_RF5413) {
+ AR5K_PRINTF("invalid phy radio: %u\n", ah->ah_radio);
+ return -EINVAL;
+ }
@@ -1861,7 +2101,7 @@
+ AR5K_SREV_RAD_5112A) {
+ ath5k_hw_reg_write(ah, AR5K_PHY_CCKTXCTL_WORLD,
+ AR5K_PHY_CCKTXCTL);
-+ if (channel->val & CHANNEL_A)
++ if (channel->val & CHANNEL_5GHZ)
+ data = 0xffb81020;
+ else
+ data = 0xffb80d20;
@@ -5536,8 +5776,8 @@
+ return -EIO;
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.c 2007-11-08 16:49:33.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.c 2007-11-15 13:13:38.000000000 -0500
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2004, 2005 Reyk Floeter <reyk at vantronix.net>
@@ -5661,15 +5901,15 @@
+}
+
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/Makefile
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/Makefile 2007-11-08 16:49:33.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/Makefile 2007-11-15 13:13:38.000000000 -0500
@@ -0,0 +1,2 @@
+ath5k-objs = base.o hw.o regdom.o initvals.o phy.o
+obj-$(CONFIG_ATH5K) += ath5k.o
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.c 2007-11-08 16:49:33.000000000 -0500
-@@ -0,0 +1,2914 @@
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.c 2007-11-15 13:13:38.000000000 -0500
+@@ -0,0 +1,2932 @@
+/*-
+ * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting
+ * Copyright (c) 2004-2005 Atheros Communications, Inc.
@@ -5767,7 +6007,7 @@
+ ATH_LED_RX,
+};
+
-+static int ath5k_calinterval = 1; /* Calibrate PHY every 1 sec (TODO: Fixme) */
++static int ath5k_calinterval = 10; /* Calibrate PHY every 10 secs (TODO: Fixme) */
+
+#if AR_DEBUG
+static unsigned int ath5k_debug;
@@ -6242,22 +6482,40 @@
+ if (ret)
+ goto err_ah;
+
-+ dev_info(&pdev->dev, "Atheros AR%s chip found: MAC 0x%x, PHY: 0x%x\n",
++ dev_info(&pdev->dev, "Atheros AR%s chip found (MAC: 0x%x, PHY: 0x%x)\n",
+ ath5k_chip_name(AR5K_VERSION_VER,sc->ah->ah_mac_srev),
+ sc->ah->ah_mac_srev,
+ sc->ah->ah_phy_revision);
+
-+ if(sc->ah->ah_radio_5ghz_revision && !sc->ah->ah_radio_2ghz_revision){
-+ dev_info(&pdev->dev, "RF%s radio found (0x%x)\n",
-+ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
-+ sc->ah->ah_radio_5ghz_revision);
-+ } else if(sc->ah->ah_radio_5ghz_revision && sc->ah->ah_radio_2ghz_revision){
-+ dev_info(&pdev->dev, "RF%s 5GHz radio found (0x%x)\n",
-+ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
-+ sc->ah->ah_radio_5ghz_revision);
-+ dev_info(&pdev->dev, "RF%s 2GHz radio found (0x%x)\n",
-+ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_2ghz_revision),
-+ sc->ah->ah_radio_2ghz_revision);
++ if(!sc->ah->ah_single_chip){
++ /* Single chip radio (!RF5111) */
++ if(sc->ah->ah_radio_5ghz_revision && !sc->ah->ah_radio_2ghz_revision) {
++ /* No 5GHz support -> report 2GHz radio */
++ if(!test_bit(MODE_IEEE80211A, sc->ah->ah_capabilities.cap_mode)){
++ dev_info(&pdev->dev, "RF%s 2GHz radio found (0x%x)\n",
++ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
++ sc->ah->ah_radio_5ghz_revision);
++ /* No 2GHz support (5110 and some 5Ghz only cards) -> report 5Ghz radio */
++ } else if(!test_bit(MODE_IEEE80211B, sc->ah->ah_capabilities.cap_mode)){
++ dev_info(&pdev->dev, "RF%s 5GHz radio found (0x%x)\n",
++ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
++ sc->ah->ah_radio_5ghz_revision);
++ /* Multiband radio */
++ } else {
++ dev_info(&pdev->dev, "RF%s multiband radio found (0x%x)\n",
++ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
++ sc->ah->ah_radio_5ghz_revision);
++ }
++ }
++ /* Multi chip radio (RF5111 - RF2111) -> report both 2GHz/5GHz radios */
++ else if(sc->ah->ah_radio_5ghz_revision && sc->ah->ah_radio_2ghz_revision){
++ dev_info(&pdev->dev, "RF%s 5GHz radio found (0x%x)\n",
++ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
++ sc->ah->ah_radio_5ghz_revision);
++ dev_info(&pdev->dev, "RF%s 2GHz radio found (0x%x)\n",
++ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_2ghz_revision),
++ sc->ah->ah_radio_2ghz_revision);
++ }
+ }
+
+
@@ -8585,8 +8843,8 @@
+}
+
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/reg.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/reg.h 2007-11-08 16:49:33.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/reg.h 2007-11-15 13:13:38.000000000 -0500
@@ -0,0 +1,1983 @@
+/*
+ * Copyright (c) 2007 Nick Kossifidis <mickflemm at gmail.com>
@@ -10572,8 +10830,8 @@
+#define AR5K_PHY_GAIN_2GHZ_MARGIN_TXRX_S 18
+#define AR5K_PHY_GAIN_2GHZ_INI_5111 0x6480416c
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.h 2007-11-08 16:49:33.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.h 2007-11-15 13:13:38.000000000 -0500
@@ -0,0 +1,500 @@
+/*
+ * Copyright (c) 2004, 2005 Reyk Floeter <reyk at openbsd.org>
@@ -11076,9 +11334,9 @@
+
+#endif
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/phy.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/phy.c 2007-11-08 16:49:33.000000000 -0500
-@@ -0,0 +1,1687 @@
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/phy.c 2007-11-15 13:13:38.000000000 -0500
+@@ -0,0 +1,1907 @@
+/*
+ * PHY functions
+ *
@@ -11538,6 +11796,97 @@
+ { 0x00000003, 0x00000003, 0x00000003, 0x00000003, 0x00000003 } },
+};
+
++/* RF5413/5414 mode-specific init registers */
++static const struct ath5k_ini_rf rfregs_5413[] = {
++ { 1, 0x98d4,
++ /* mode a/XR mode aTurbo mode b mode g mode gTurbo */
++ { 0x00000020, 0x00000020, 0x00000020, 0x00000020, 0x00000020 } },
++ { 2, 0x98d0,
++ { 0x00000008, 0x00000008, 0x00000008, 0x00000008, 0x00000008 } },
++ { 3, 0x98dc,
++ { 0x00a000c0, 0x00a000c0, 0x00e000c0, 0x00e000c0, 0x00e000c0 } },
++ { 6, 0x989c,
++ { 0x33000000, 0x33000000, 0x33000000, 0x33000000, 0x33000000 } },
++ { 6, 0x989c,
++ { 0x01000000, 0x01000000, 0x01000000, 0x01000000, 0x01000000 } },
++ { 6, 0x989c,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } },
++ { 6, 0x989c,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } },
++ { 6, 0x989c,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } },
++ { 6, 0x989c,
++ { 0x1f000000, 0x1f000000, 0x1f000000, 0x1f000000, 0x1f000000 } },
++ { 6, 0x989c,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } },
++ { 6, 0x989c,
++ { 0x00b80000, 0x00b80000, 0x00b80000, 0x00b80000, 0x00b80000 } },
++ { 6, 0x989c,
++ { 0x00b70000, 0x00b70000, 0x00b70000, 0x00b70000, 0x00b70000 } },
++ { 6, 0x989c,
++ { 0x00840000, 0x00840000, 0x00840000, 0x00840000, 0x00840000 } },
++ { 6, 0x989c,
++ { 0x00980000, 0x00980000, 0x00980000, 0x00980000, 0x00980000 } },
++ { 6, 0x989c,
++ { 0x00c00000, 0x00c00000, 0x00c00000, 0x00c00000, 0x00c00000 } },
++ { 6, 0x989c,
++ { 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000 } },
++ { 6, 0x989c,
++ { 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000 } },
++ { 6, 0x989c,
++ { 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000 } },
++ { 6, 0x989c,
++ { 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000, 0x00ff0000 } },
++ { 6, 0x989c,
++ { 0x00d70000, 0x00d70000, 0x00d70000, 0x00d70000, 0x00d70000 } },
++ { 6, 0x989c,
++ { 0x00610000, 0x00610000, 0x00610000, 0x00610000, 0x00610000 } },
++ { 6, 0x989c,
++ { 0x00fe0000, 0x00fe0000, 0x00fe0000, 0x00fe0000, 0x00fe0000 } },
++ { 6, 0x989c,
++ { 0x00de0000, 0x00de0000, 0x00de0000, 0x00de0000, 0x00de0000 } },
++ { 6, 0x989c,
++ { 0x007f0000, 0x007f0000, 0x007f0000, 0x007f0000, 0x007f0000 } },
++ { 6, 0x989c,
++ { 0x043d0000, 0x043d0000, 0x043d0000, 0x043d0000, 0x043d0000 } },
++ { 6, 0x989c,
++ { 0x00770000, 0x00770000, 0x00770000, 0x00770000, 0x00770000 } },
++ { 6, 0x989c,
++ { 0x00440000, 0x00440000, 0x00440000, 0x00440000, 0x00440000 } },
++ { 6, 0x989c,
++ { 0x00980000, 0x00980000, 0x00980000, 0x00980000, 0x00980000 } },
++ { 6, 0x989c,
++ { 0x00100080, 0x00100080, 0x00100080, 0x00100080, 0x00100080 } },
++ { 6, 0x989c,
++ { 0x0005c034, 0x0005c034, 0x0005c034, 0x0005c034, 0x0005c034 } },
++ { 6, 0x989c,
++ { 0x003100f0, 0x003100f0, 0x003100f0, 0x003100f0, 0x003100f0 } },
++ { 6, 0x989c,
++ { 0x000c011f, 0x000c011f, 0x000c011f, 0x000c011f, 0x000c011f } },
++ { 6, 0x989c,
++ { 0x00510040, 0x00510040, 0x005100a0, 0x005100a0, 0x005100a0 } },
++ { 6, 0x989c,
++ { 0x0050006a, 0x0050006a, 0x005000dd, 0x005000dd, 0x005000dd } },
++ { 6, 0x989c,
++ { 0x00000001, 0x00000001, 0x00000000, 0x00000000, 0x00000000 } },
++ { 6, 0x989c,
++ { 0x00004044, 0x00004044, 0x00004044, 0x00004044, 0x00004044 } },
++ { 6, 0x989c,
++ { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 } },
++ { 6, 0x989c,
++ { 0x000060c0, 0x000060c0, 0x000060c0, 0x000060c0, 0x000060c0 } },
++ { 6, 0x989c,
++ { 0x00002c00, 0x00002c00, 0x00003600, 0x00003600, 0x00003600 } },
++ { 6, 0x98c8,
++ { 0x00000403, 0x00000403, 0x00040403, 0x00040403, 0x00040403 } },
++ { 7, 0x989c,
++ { 0x00006400, 0x00006400, 0x00006400, 0x00006400, 0x00006400 } },
++ { 7, 0x989c,
++ { 0x00000800, 0x00000800, 0x00000800, 0x00000800, 0x00000800 } },
++ { 7, 0x98cc,
++ { 0x0000000e, 0x0000000e, 0x0000000e, 0x0000000e, 0x0000000e } },
++};
++
+
+/* Initial RF Gain settings for RF5112 */
+static const struct ath5k_ini_rfgain rfgain_5112[] = {
@@ -11608,6 +11957,75 @@
+ { AR5K_RF_GAIN(63), { 0x000000fc, 0x000000fc } },
+};
+
++/* Initial RF Gain settings for RF5413 */
++static const struct ath5k_ini_rfgain rfgain_5413[] = {
++ /* 5Ghz 2Ghz */
++ { AR5K_RF_GAIN(0), { 0x00000000, 0x00000000 } },
++ { AR5K_RF_GAIN(1), { 0x00000040, 0x00000040 } },
++ { AR5K_RF_GAIN(2), { 0x00000080, 0x00000080 } },
++ { AR5K_RF_GAIN(3), { 0x000001a1, 0x00000161 } },
++ { AR5K_RF_GAIN(4), { 0x000001e1, 0x000001a1 } },
++ { AR5K_RF_GAIN(5), { 0x00000021, 0x000001e1 } },
++ { AR5K_RF_GAIN(6), { 0x00000061, 0x00000021 } },
++ { AR5K_RF_GAIN(7), { 0x00000188, 0x00000061 } },
++ { AR5K_RF_GAIN(8), { 0x000001c8, 0x00000188 } },
++ { AR5K_RF_GAIN(9), { 0x00000008, 0x000001c8 } },
++ { AR5K_RF_GAIN(10), { 0x00000048, 0x00000008 } },
++ { AR5K_RF_GAIN(11), { 0x00000088, 0x00000048 } },
++ { AR5K_RF_GAIN(12), { 0x000001a9, 0x00000088 } },
++ { AR5K_RF_GAIN(13), { 0x000001e9, 0x00000169 } },
++ { AR5K_RF_GAIN(14), { 0x00000029, 0x000001a9 } },
++ { AR5K_RF_GAIN(15), { 0x00000069, 0x000001e9 } },
++ { AR5K_RF_GAIN(16), { 0x000001d0, 0x00000029 } },
++ { AR5K_RF_GAIN(17), { 0x00000010, 0x00000069 } },
++ { AR5K_RF_GAIN(18), { 0x00000050, 0x00000190 } },
++ { AR5K_RF_GAIN(19), { 0x00000090, 0x000001d0 } },
++ { AR5K_RF_GAIN(20), { 0x000001b1, 0x00000010 } },
++ { AR5K_RF_GAIN(21), { 0x000001f1, 0x00000050 } },
++ { AR5K_RF_GAIN(22), { 0x00000031, 0x00000090 } },
++ { AR5K_RF_GAIN(23), { 0x00000071, 0x00000171 } },
++ { AR5K_RF_GAIN(24), { 0x000001b8, 0x000001b1 } },
++ { AR5K_RF_GAIN(25), { 0x000001f8, 0x000001f1 } },
++ { AR5K_RF_GAIN(26), { 0x00000038, 0x00000031 } },
++ { AR5K_RF_GAIN(27), { 0x00000078, 0x00000071 } },
++ { AR5K_RF_GAIN(28), { 0x00000199, 0x00000198 } },
++ { AR5K_RF_GAIN(29), { 0x000001d9, 0x000001d8 } },
++ { AR5K_RF_GAIN(30), { 0x00000019, 0x00000018 } },
++ { AR5K_RF_GAIN(31), { 0x00000059, 0x00000058 } },
++ { AR5K_RF_GAIN(32), { 0x00000099, 0x00000098 } },
++ { AR5K_RF_GAIN(33), { 0x000000d9, 0x00000179 } },
++ { AR5K_RF_GAIN(34), { 0x000000f9, 0x000001b9 } },
++ { AR5K_RF_GAIN(35), { 0x000000f9, 0x000001f9 } },
++ { AR5K_RF_GAIN(36), { 0x000000f9, 0x00000039 } },
++ { AR5K_RF_GAIN(37), { 0x000000f9, 0x00000079 } },
++ { AR5K_RF_GAIN(38), { 0x000000f9, 0x000000b9 } },
++ { AR5K_RF_GAIN(39), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(40), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(41), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(42), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(43), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(44), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(45), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(46), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(47), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(48), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(49), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(50), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(51), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(52), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(53), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(54), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(55), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(56), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(57), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(58), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(59), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(60), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(61), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(62), { 0x000000f9, 0x000000f9 } },
++ { AR5K_RF_GAIN(63), { 0x000000f9, 0x000000f9 } },
++};
++
+static const struct ath5k_gain_opt rfgain_opt_5112 = {
+ 1,
+ 8,
@@ -11758,6 +12176,7 @@
+ go = &rfgain_opt_5111;
+ break;
+ case AR5K_RF5112:
++ case AR5K_RF5413: /* ??? */
+ go = &rfgain_opt_5112;
+ break;
+ default:
@@ -12005,6 +12424,56 @@
+}
+
+/*
++ * Initialize RF5413/5414
++ */
++static int ath5k_hw_rf5413_rfregs(struct ath5k_hw *ah,
++ struct ieee80211_channel *channel, unsigned int mode)
++{
++ const struct ath5k_ini_rf *rf_ini;
++ u32 *rf;
++ unsigned int rf_size, i;
++ int bank = -1;
++
++ AR5K_ASSERT_ENTRY(mode, AR5K_INI_VAL_MAX);
++
++ rf = ah->ah_rf_banks;
++
++ rf_ini = rfregs_5413;
++ rf_size = ARRAY_SIZE(rfregs_5413);
++
++ /* Copy values to modify them */
++ for (i = 0; i < rf_size; i++) {
++ if (rf_ini[i].rf_bank >= AR5K_RF5112_INI_RF_MAX_BANKS) {
++ AR5K_PRINT("invalid bank\n");
++ return -EINVAL;
++ }
++
++ if (bank != rf_ini[i].rf_bank) {
++ bank = rf_ini[i].rf_bank;
++ ah->ah_offset[bank] = i;
++ }
++
++ rf[i] = rf_ini[i].rf_value[mode];
++ }
++
++ /*
++ * After compairing dumps from different cards
++ * we get the same RF_BUFFER settings (diff returns
++ * 0 lines). It seems that RF_BUFFER settings are static
++ * and are written unmodified (no EEPROM stuff
++ * is used because calibration data would be
++ * different between different cards and would result
++ * different RF_BUFFER settings)
++ */
++
++ /* Write RF values */
++ for (i = 0; i < rf_size; i++)
++ ath5k_hw_reg_write(ah, rf[i], rf_ini[i].rf_register);
++
++ return 0;
++}
++
++/*
+ * Initialize RF
+ */
+int ath5k_hw_rfregs(struct ath5k_hw *ah, struct ieee80211_channel *channel,
@@ -12025,6 +12494,10 @@
+ ah->ah_rf_banks_size = sizeof(rfregs_5112);
+ func = ath5k_hw_rf5112_rfregs;
+ break;
++ case AR5K_RF5413:
++ ah->ah_rf_banks_size = sizeof(rfregs_5413);
++ func = ath5k_hw_rf5413_rfregs;
++ break;
+ default:
+ return -EINVAL;
+ }
@@ -12059,6 +12532,10 @@
+ ath5k_rfg = rfgain_5112;
+ size = ARRAY_SIZE(rfgain_5112);
+ break;
++ case AR5K_RF5413:
++ ath5k_rfg = rfgain_5413;
++ size = ARRAY_SIZE(rfgain_5413);
++ break;
+ default:
+ return -EINVAL;
+ }
@@ -12102,7 +12579,7 @@
+ if (type == AR5K_PHY_PAPD_PROBE_TYPE_CCK)
+ ah->ah_gain.g_current += AR5K_GAIN_CCK_PROBE_CORR;
+
-+ if (ah->ah_radio == AR5K_RF5112) {
++ if (ah->ah_radio >= AR5K_RF5112) {
+ ath5k_hw_rfregs_gainf_corr(ah);
+ ah->ah_gain.g_current =
+ ah->ah_gain.g_current>=ah->ah_gain.g_f_corr ?
@@ -12133,6 +12610,7 @@
+ ah->ah_gain.g_active = 1;
+ break;
+ case AR5K_RF5112:
++ case AR5K_RF5413: /* ??? */
+ ah->ah_gain.g_step_idx = rfgain_opt_5112.go_default;
+ ah->ah_gain.g_step =
+ &rfgain_opt_5112.go_step[ah->ah_gain.g_step_idx];
@@ -12283,7 +12761,7 @@
+}
+
+/*
-+ * Set channel on 5112
++ * Set channel on 5112 and newer
+ */
+static int ath5k_hw_rf5112_channel(struct ath5k_hw *ah,
+ struct ieee80211_channel *channel)
@@ -12767,8 +13245,8 @@
+ return ath5k_hw_txpower(ah, channel, power);
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.h 2007-11-08 16:49:33.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.h 2007-11-15 13:13:38.000000000 -0500
@@ -0,0 +1,175 @@
+/*-
+ * Copyright (c) 2002-2007 Sam Leffler, Errno Consulting
@@ -12946,8 +13424,8 @@
+
+#endif
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.h 2007-11-08 16:49:33.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.h 2007-11-15 13:13:38.000000000 -0500
@@ -0,0 +1,588 @@
+/*
+ * Copyright (c) 2004-2007 Reyk Floeter <reyk at openbsd.org>
@@ -13538,9 +14016,9 @@
+ return retval;
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/ath5k.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/ath5k.h 2007-11-08 16:49:33.000000000 -0500
-@@ -0,0 +1,1135 @@
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/ath5k.h 2007-11-15 13:13:38.000000000 -0500
+@@ -0,0 +1,1136 @@
+/*
+ * Copyright (c) 2004-2007 Reyk Floeter <reyk at openbsd.org>
+ * Copyright (c) 2006-2007 Nick Kossifidis <mickflemm at gmail.com>
@@ -13674,6 +14152,7 @@
+ AR5K_RF5110 = 0,
+ AR5K_RF5111 = 1,
+ AR5K_RF5112 = 2,
++ AR5K_RF5413 = 3,
+};
+
+/*
@@ -14677,18 +15156,21 @@
+
+#endif
diff -up linux-2.6.23.noarch/MAINTAINERS.orig linux-2.6.23.noarch/MAINTAINERS
---- linux-2.6.23.noarch/MAINTAINERS.orig 2007-11-08 16:48:58.000000000 -0500
-+++ linux-2.6.23.noarch/MAINTAINERS 2007-11-08 16:49:33.000000000 -0500
-@@ -642,6 +642,14 @@ M: ecashin at coraid.com
+--- linux-2.6.23.noarch/MAINTAINERS.orig 2007-11-15 12:47:29.000000000 -0500
++++ linux-2.6.23.noarch/MAINTAINERS 2007-11-15 13:13:38.000000000 -0500
+@@ -642,6 +642,17 @@ M: ecashin at coraid.com
W: http://www.coraid.com/support/linux
S: Supported
+ATHEROS ATH5K WIRELESS DRIVER
+P: Jiri Slaby
+M: jirislaby at gmail.com
++P: Nick Kossifidis
++M: mickflemm at gmail.com
+P: Luis R. Rodriguez
+M: mcgrof at gmail.com
+L: linux-wireless at vger.kernel.org
++L: ath5k-devel at lists.ath5k.org
+S: Maintained
+
ATL1 ETHERNET DRIVER
linux-2.6-wireless-pending.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.12 -r 1.13 linux-2.6-wireless-pending.patch
Index: linux-2.6-wireless-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-wireless-pending.patch,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- linux-2.6-wireless-pending.patch 8 Nov 2007 22:06:16 -0000 1.12
+++ linux-2.6-wireless-pending.patch 16 Nov 2007 04:00:40 -0000 1.13
@@ -1,6 +1,455 @@
+diff -up linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c.orig linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c
+--- linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c.orig 2007-11-15 22:18:11.000000000 -0500
++++ linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c 2007-11-15 22:19:59.000000000 -0500
+@@ -27,6 +27,7 @@ static const struct pci_device_id b43_pc
+ { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4321) },
+ { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4324) },
+ { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4325) },
++ { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4328) },
+ { 0, },
+ };
+ MODULE_DEVICE_TABLE(pci, b43_pci_bridge_tbl);
+diff -up linux-2.6.23.noarch/drivers/ssb/pci.c.orig linux-2.6.23.noarch/drivers/ssb/pci.c
+--- linux-2.6.23.noarch/drivers/ssb/pci.c.orig 2007-11-15 22:18:11.000000000 -0500
++++ linux-2.6.23.noarch/drivers/ssb/pci.c 2007-11-15 22:19:59.000000000 -0500
+@@ -212,29 +212,29 @@ static inline u8 ssb_crc8(u8 crc, u8 dat
+ return t[crc ^ data];
+ }
+
+-static u8 ssb_sprom_crc(const u16 *sprom)
++static u8 ssb_sprom_crc(const u16 *sprom, u16 size)
+ {
+ int word;
+ u8 crc = 0xFF;
+
+- for (word = 0; word < SSB_SPROMSIZE_WORDS - 1; word++) {
++ for (word = 0; word < size - 1; word++) {
+ crc = ssb_crc8(crc, sprom[word] & 0x00FF);
+ crc = ssb_crc8(crc, (sprom[word] & 0xFF00) >> 8);
+ }
+- crc = ssb_crc8(crc, sprom[SPOFF(SSB_SPROM_REVISION)] & 0x00FF);
++ crc = ssb_crc8(crc, sprom[size - 1] & 0x00FF);
+ crc ^= 0xFF;
+
+ return crc;
+ }
+
+-static int sprom_check_crc(const u16 *sprom)
++static int sprom_check_crc(const u16 *sprom, u16 size)
+ {
+ u8 crc;
+ u8 expected_crc;
+ u16 tmp;
+
+- crc = ssb_sprom_crc(sprom);
+- tmp = sprom[SPOFF(SSB_SPROM_REVISION)] & SSB_SPROM_REVISION_CRC;
++ crc = ssb_sprom_crc(sprom, size);
++ tmp = sprom[size - 1] & SSB_SPROM_REVISION_CRC;
+ expected_crc = tmp >> SSB_SPROM_REVISION_CRC_SHIFT;
+ if (crc != expected_crc)
+ return -EPROTO;
+@@ -246,7 +246,7 @@ static void sprom_do_read(struct ssb_bus
+ {
+ int i;
+
+- for (i = 0; i < SSB_SPROMSIZE_WORDS; i++)
++ for (i = 0; i < bus->sprom_size; i++)
+ sprom[i] = readw(bus->mmio + SSB_SPROM_BASE + (i * 2));
+ }
+
+@@ -255,6 +255,7 @@ static int sprom_do_write(struct ssb_bus
+ struct pci_dev *pdev = bus->host_pci;
+ int i, err;
+ u32 spromctl;
++ u16 size = bus->sprom_size;
+
+ ssb_printk(KERN_NOTICE PFX "Writing SPROM. Do NOT turn off the power! Please stand by...\n");
+ err = pci_read_config_dword(pdev, SSB_SPROMCTL, &spromctl);
+@@ -266,12 +267,12 @@ static int sprom_do_write(struct ssb_bus
+ goto err_ctlreg;
+ ssb_printk(KERN_NOTICE PFX "[ 0%%");
+ msleep(500);
+- for (i = 0; i < SSB_SPROMSIZE_WORDS; i++) {
+- if (i == SSB_SPROMSIZE_WORDS / 4)
++ for (i = 0; i < size; i++) {
++ if (i == size / 4)
+ ssb_printk("25%%");
+- else if (i == SSB_SPROMSIZE_WORDS / 2)
++ else if (i == size / 2)
+ ssb_printk("50%%");
+- else if (i == (SSB_SPROMSIZE_WORDS / 4) * 3)
++ else if (i == (size * 3) / 4)
+ ssb_printk("75%%");
+ else if (i % 2)
+ ssb_printk(".");
+@@ -296,38 +297,38 @@ err_ctlreg:
+ return err;
+ }
+
+-static void sprom_extract_r1(struct ssb_sprom_r1 *out, const u16 *in)
++static void sprom_extract_r123(struct ssb_sprom *out, const u16 *in)
+ {
+ int i;
+ u16 v;
++ u16 loc[3];
+
+- SPEX(pci_spid, SSB_SPROM1_SPID, 0xFFFF, 0);
+- SPEX(pci_svid, SSB_SPROM1_SVID, 0xFFFF, 0);
+- SPEX(pci_pid, SSB_SPROM1_PID, 0xFFFF, 0);
++ if (out->revision == 3) { /* rev 3 moved MAC */
++ loc[0] = SSB_SPROM3_IL0MAC;
++ loc[1] = SSB_SPROM3_ET0MAC;
++ loc[2] = SSB_SPROM3_ET1MAC;
++ } else {
++ loc[0] = SSB_SPROM1_IL0MAC;
++ loc[1] = SSB_SPROM1_ET0MAC;
++ loc[2] = SSB_SPROM1_ET1MAC;
++ }
+ for (i = 0; i < 3; i++) {
+- v = in[SPOFF(SSB_SPROM1_IL0MAC) + i];
++ v = in[SPOFF(loc[0]) + i];
+ *(((__be16 *)out->il0mac) + i) = cpu_to_be16(v);
+ }
+ for (i = 0; i < 3; i++) {
+- v = in[SPOFF(SSB_SPROM1_ET0MAC) + i];
++ v = in[SPOFF(loc[1]) + i];
+ *(((__be16 *)out->et0mac) + i) = cpu_to_be16(v);
+ }
+ for (i = 0; i < 3; i++) {
+- v = in[SPOFF(SSB_SPROM1_ET1MAC) + i];
++ v = in[SPOFF(loc[2]) + i];
+ *(((__be16 *)out->et1mac) + i) = cpu_to_be16(v);
+ }
+ SPEX(et0phyaddr, SSB_SPROM1_ETHPHY, SSB_SPROM1_ETHPHY_ET0A, 0);
+ SPEX(et1phyaddr, SSB_SPROM1_ETHPHY, SSB_SPROM1_ETHPHY_ET1A,
+ SSB_SPROM1_ETHPHY_ET1A_SHIFT);
+- SPEX(et0mdcport, SSB_SPROM1_ETHPHY, SSB_SPROM1_ETHPHY_ET0M, 14);
+- SPEX(et1mdcport, SSB_SPROM1_ETHPHY, SSB_SPROM1_ETHPHY_ET1M, 15);
+- SPEX(board_rev, SSB_SPROM1_BINF, SSB_SPROM1_BINF_BREV, 0);
+ SPEX(country_code, SSB_SPROM1_BINF, SSB_SPROM1_BINF_CCODE,
+ SSB_SPROM1_BINF_CCODE_SHIFT);
+- SPEX(antenna_a, SSB_SPROM1_BINF, SSB_SPROM1_BINF_ANTA,
+- SSB_SPROM1_BINF_ANTA_SHIFT);
+- SPEX(antenna_bg, SSB_SPROM1_BINF, SSB_SPROM1_BINF_ANTBG,
+- SSB_SPROM1_BINF_ANTBG_SHIFT);
+ SPEX(pa0b0, SSB_SPROM1_PA0B0, 0xFFFF, 0);
+ SPEX(pa0b1, SSB_SPROM1_PA0B1, 0xFFFF, 0);
+ SPEX(pa0b2, SSB_SPROM1_PA0B2, 0xFFFF, 0);
+@@ -350,97 +351,75 @@ static void sprom_extract_r1(struct ssb_
+ SPEX(antenna_gain_a, SSB_SPROM1_AGAIN, SSB_SPROM1_AGAIN_A, 0);
+ SPEX(antenna_gain_bg, SSB_SPROM1_AGAIN, SSB_SPROM1_AGAIN_BG,
+ SSB_SPROM1_AGAIN_BG_SHIFT);
+- for (i = 0; i < 4; i++) {
+- v = in[SPOFF(SSB_SPROM1_OEM) + i];
+- *(((__le16 *)out->oem) + i) = cpu_to_le16(v);
+- }
+ }
+
+-static void sprom_extract_r2(struct ssb_sprom_r2 *out, const u16 *in)
++static void sprom_extract_r4(struct ssb_sprom *out, const u16 *in)
+ {
+ int i;
+ u16 v;
+
+- SPEX(boardflags_hi, SSB_SPROM2_BFLHI, 0xFFFF, 0);
+- SPEX(maxpwr_a_hi, SSB_SPROM2_MAXP_A, SSB_SPROM2_MAXP_A_HI, 0);
+- SPEX(maxpwr_a_lo, SSB_SPROM2_MAXP_A, SSB_SPROM2_MAXP_A_LO,
+- SSB_SPROM2_MAXP_A_LO_SHIFT);
+- SPEX(pa1lob0, SSB_SPROM2_PA1LOB0, 0xFFFF, 0);
+- SPEX(pa1lob1, SSB_SPROM2_PA1LOB1, 0xFFFF, 0);
+- SPEX(pa1lob2, SSB_SPROM2_PA1LOB2, 0xFFFF, 0);
+- SPEX(pa1hib0, SSB_SPROM2_PA1HIB0, 0xFFFF, 0);
+- SPEX(pa1hib1, SSB_SPROM2_PA1HIB1, 0xFFFF, 0);
+- SPEX(pa1hib2, SSB_SPROM2_PA1HIB2, 0xFFFF, 0);
+- SPEX(ofdm_pwr_off, SSB_SPROM2_OPO, SSB_SPROM2_OPO_VALUE, 0);
+- for (i = 0; i < 4; i++) {
+- v = in[SPOFF(SSB_SPROM2_CCODE) + i];
+- *(((__le16 *)out->country_str) + i) = cpu_to_le16(v);
++ /* extract the equivalent of the r1 variables */
++ for (i = 0; i < 3; i++) {
++ v = in[SPOFF(SSB_SPROM4_IL0MAC) + i];
++ *(((__be16 *)out->il0mac) + i) = cpu_to_be16(v);
+ }
++ for (i = 0; i < 3; i++) {
++ v = in[SPOFF(SSB_SPROM4_ET0MAC) + i];
++ *(((__be16 *)out->et0mac) + i) = cpu_to_be16(v);
++ }
++ for (i = 0; i < 3; i++) {
++ v = in[SPOFF(SSB_SPROM4_ET1MAC) + i];
++ *(((__be16 *)out->et1mac) + i) = cpu_to_be16(v);
++ }
++ SPEX(et0phyaddr, SSB_SPROM4_ETHPHY, SSB_SPROM4_ETHPHY_ET0A, 0);
++ SPEX(et1phyaddr, SSB_SPROM4_ETHPHY, SSB_SPROM4_ETHPHY_ET1A,
++ SSB_SPROM4_ETHPHY_ET1A_SHIFT);
++ SPEX(country_code, SSB_SPROM4_CCODE, 0xFFFF, 0);
++ SPEX(boardflags_lo, SSB_SPROM4_BFLLO, 0xFFFF, 0);
++ SPEX(antenna_gain_a, SSB_SPROM4_AGAIN, SSB_SPROM4_AGAIN_0, 0);
++ SPEX(antenna_gain_bg, SSB_SPROM4_AGAIN, SSB_SPROM4_AGAIN_1,
++ SSB_SPROM4_AGAIN_1_SHIFT);
++ SPEX(maxpwr_bg, SSB_SPROM4_MAXP_BG, SSB_SPROM4_MAXP_BG_MASK, 0);
++ SPEX(itssi_bg, SSB_SPROM4_MAXP_BG, SSB_SPROM4_ITSSI_BG,
++ SSB_SPROM4_ITSSI_BG_SHIFT);
[...50750 lines suppressed...]
++
++/* SPROM Revision 3 (inherits most data from rev 2) */
++#define SSB_SPROM3_IL0MAC 0x104A /* 6 bytes MAC address for 802.11b/g */
++#define SSB_SPROM3_ET0MAC 0x1050 /* 6 bytes MAC address for Ethernet ?? */
++#define SSB_SPROM3_ET1MAC 0x1050 /* 6 bytes MAC address for 802.11a ?? */
+ #define SSB_SPROM3_OFDMAPO 0x102C /* A-PHY OFDM Mid Power Offset (4 bytes, BigEndian) */
+ #define SSB_SPROM3_OFDMALPO 0x1030 /* A-PHY OFDM Low Power Offset (4 bytes, BigEndian) */
+ #define SSB_SPROM3_OFDMAHPO 0x1034 /* A-PHY OFDM High Power Offset (4 bytes, BigEndian) */
+@@ -251,6 +264,48 @@
+ #define SSB_SPROM3_CCKPO_11M_SHIFT 12
+ #define SSB_SPROM3_OFDMGPO 0x107A /* G-PHY OFDM Power Offset (4 bytes, BigEndian) */
+
++/* SPROM Revision 4 entries with ?? in comment are unknown */
++#define SSB_SPROM4_IL0MAC 0x104C /* 6 byte MAC address for a/b/g/n */
++#define SSB_SPROM4_ET0MAC 0x1018 /* 6 bytes MAC address for Ethernet ?? */
++#define SSB_SPROM4_ET1MAC 0x1018 /* 6 bytes MAC address for 802.11a ?? */
++#define SSB_SPROM4_ETHPHY 0x105A /* Ethernet PHY settings ?? */
++#define SSB_SPROM4_ETHPHY_ET0A 0x001F /* MII Address for enet0 */
++#define SSB_SPROM4_ETHPHY_ET1A 0x03E0 /* MII Address for enet1 */
++#define SSB_SPROM4_ETHPHY_ET1A_SHIFT 5
++#define SSB_SPROM4_ETHPHY_ET0M (1<<14) /* MDIO for enet0 */
++#define SSB_SPROM4_ETHPHY_ET1M (1<<15) /* MDIO for enet1 */
++#define SSB_SPROM4_CCODE 0x1052 /* Country Code (2 bytes) */
++#define SSB_SPROM4_ANT_A 0x105D /* A Antennas */
++#define SSB_SPROM4_ANT_BG 0x105C /* B/G Antennas */
++#define SSB_SPROM4_BFLLO 0x1044 /* Boardflags (low 16 bits) */
++#define SSB_SPROM4_AGAIN 0x105E /* Antenna Gain (in dBm Q5.2) */
++#define SSB_SPROM4_AGAIN_0 0x00FF /* Antenna 0 */
++#define SSB_SPROM4_AGAIN_1 0xFF00 /* Antenna 1 */
++#define SSB_SPROM4_AGAIN_1_SHIFT 8
++#define SSB_SPROM4_BFLHI 0x1046 /* Board Flags Hi */
++#define SSB_SPROM4_MAXP_BG 0x1080 /* Max Power BG in path 1 */
++#define SSB_SPROM4_MAXP_BG_MASK 0x00FF /* Mask for Max Power BG */
++#define SSB_SPROM4_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */
++#define SSB_SPROM4_ITSSI_BG_SHIFT 8
++#define SSB_SPROM4_MAXP_A 0x108A /* Max Power A in path 1 */
++#define SSB_SPROM4_MAXP_A_MASK 0x00FF /* Mask for Max Power A */
++#define SSB_SPROM4_ITSSI_A 0xFF00 /* Mask for path 1 itssi_a */
++#define SSB_SPROM4_ITSSI_A_SHIFT 8
++#define SSB_SPROM4_GPIOA 0x1056 /* Gen. Purpose IO # 0 and 1 */
++#define SSB_SPROM4_GPIOA_P0 0x00FF /* Pin 0 */
++#define SSB_SPROM4_GPIOA_P1 0xFF00 /* Pin 1 */
++#define SSB_SPROM4_GPIOA_P1_SHIFT 8
++#define SSB_SPROM4_GPIOB 0x1058 /* Gen. Purpose IO # 2 and 3 */
++#define SSB_SPROM4_GPIOB_P2 0x00FF /* Pin 2 */
++#define SSB_SPROM4_GPIOB_P3 0xFF00 /* Pin 3 */
++#define SSB_SPROM4_GPIOB_P3_SHIFT 8
++#define SSB_SPROM4_PA0B0 0x1082 /* The paXbY locations are */
++#define SSB_SPROM4_PA0B1 0x1084 /* only guesses */
++#define SSB_SPROM4_PA0B2 0x1086
++#define SSB_SPROM4_PA1B0 0x108E
++#define SSB_SPROM4_PA1B1 0x1090
++#define SSB_SPROM4_PA1B2 0x1092
++
+ /* Values for SSB_SPROM1_BINF_CCODE */
+ enum {
+ SSB_SPROM1CCODE_WORLD = 0,
+diff -up linux-2.6.23.noarch/include/linux/ssb/ssb.h.orig linux-2.6.23.noarch/include/linux/ssb/ssb.h
+--- linux-2.6.23.noarch/include/linux/ssb/ssb.h.orig 2007-11-15 22:18:12.000000000 -0500
++++ linux-2.6.23.noarch/include/linux/ssb/ssb.h 2007-11-15 22:19:59.000000000 -0500
+@@ -15,22 +15,13 @@ struct pcmcia_device;
+ struct ssb_bus;
+ struct ssb_driver;
+
+-
+-struct ssb_sprom_r1 {
+- u16 pci_spid; /* Subsystem Product ID for PCI */
+- u16 pci_svid; /* Subsystem Vendor ID for PCI */
+- u16 pci_pid; /* Product ID for PCI */
++struct ssb_sprom {
+ u8 il0mac[6]; /* MAC address for 802.11b/g */
+ u8 et0mac[6]; /* MAC address for Ethernet */
+ u8 et1mac[6]; /* MAC address for 802.11a */
+- u8 et0phyaddr:5; /* MII address for enet0 */
+- u8 et1phyaddr:5; /* MII address for enet1 */
+- u8 et0mdcport:1; /* MDIO for enet0 */
+- u8 et1mdcport:1; /* MDIO for enet1 */
+- u8 board_rev; /* Board revision */
+- u8 country_code:4; /* Country Code */
+- u8 antenna_a:2; /* Antenna 0/1 available for A-PHY */
+- u8 antenna_bg:2; /* Antenna 0/1 available for B-PHY and G-PHY */
++ u8 et0phyaddr; /* MII address for enet0 */
++ u8 et1phyaddr; /* MII address for enet1 */
++ u8 country_code; /* Country Code */
+ u16 pa0b0;
+ u16 pa0b1;
+ u16 pa0b2;
+@@ -41,61 +32,15 @@ struct ssb_sprom_r1 {
+ u8 gpio1; /* GPIO pin 1 */
+ u8 gpio2; /* GPIO pin 2 */
+ u8 gpio3; /* GPIO pin 3 */
+- u16 maxpwr_a; /* A-PHY Power Amplifier Max Power (in dBm Q5.2) */
+- u16 maxpwr_bg; /* B/G-PHY Power Amplifier Max Power (in dBm Q5.2) */
++ u16 maxpwr_a; /* A-PHY Amplifier Max Power (in dBm Q5.2) */
++ u16 maxpwr_bg; /* B/G-PHY Amplifier Max Power (in dBm Q5.2) */
+ u8 itssi_a; /* Idle TSSI Target for A-PHY */
+ u8 itssi_bg; /* Idle TSSI Target for B/G-PHY */
+ u16 boardflags_lo; /* Boardflags (low 16 bits) */
+ u8 antenna_gain_a; /* A-PHY Antenna gain (in dBm Q5.2) */
+ u8 antenna_gain_bg; /* B/G-PHY Antenna gain (in dBm Q5.2) */
+- u8 oem[8]; /* OEM string (rev 1 only) */
+-};
+-
+-struct ssb_sprom_r2 {
+- u16 boardflags_hi; /* Boardflags (high 16 bits) */
+- u8 maxpwr_a_lo; /* A-PHY Max Power Low */
+- u8 maxpwr_a_hi; /* A-PHY Max Power High */
+- u16 pa1lob0; /* A-PHY PA Low Settings */
+- u16 pa1lob1; /* A-PHY PA Low Settings */
+- u16 pa1lob2; /* A-PHY PA Low Settings */
+- u16 pa1hib0; /* A-PHY PA High Settings */
+- u16 pa1hib1; /* A-PHY PA High Settings */
+- u16 pa1hib2; /* A-PHY PA High Settings */
+- u8 ofdm_pwr_off; /* OFDM Power Offset from CCK Level */
+- u8 country_str[2]; /* Two char Country Code */
+-};
+
+-struct ssb_sprom_r3 {
+- u32 ofdmapo; /* A-PHY OFDM Mid Power Offset */
+- u32 ofdmalpo; /* A-PHY OFDM Low Power Offset */
+- u32 ofdmahpo; /* A-PHY OFDM High Power Offset */
+- u8 gpioldc_on_cnt; /* GPIO LED Powersave Duty Cycle ON count */
+- u8 gpioldc_off_cnt; /* GPIO LED Powersave Duty Cycle OFF count */
+- u8 cckpo_1M:4; /* CCK Power Offset for Rate 1M */
+- u8 cckpo_2M:4; /* CCK Power Offset for Rate 2M */
+- u8 cckpo_55M:4; /* CCK Power Offset for Rate 5.5M */
+- u8 cckpo_11M:4; /* CCK Power Offset for Rate 11M */
+- u32 ofdmgpo; /* G-PHY OFDM Power Offset */
+-};
+-
+-struct ssb_sprom_r4 {
+- /* TODO */
+-};
+-
+-struct ssb_sprom {
+- u8 revision;
+- u8 crc;
+- /* The valid r# fields are selected by the "revision".
+- * Revision 3 and lower inherit from lower revisions.
+- */
+- union {
+- struct {
+- struct ssb_sprom_r1 r1;
+- struct ssb_sprom_r2 r2;
+- struct ssb_sprom_r3 r3;
+- };
+- struct ssb_sprom_r4 r4;
+- };
++ /* TODO - add any parameters needed from rev 2, 3, or 4 SPROMs */
+ };
+
+ /* Information about the PCB the circuitry is soldered on. */
+@@ -288,6 +233,7 @@ struct ssb_bus {
+ /* ID information about the Chip. */
+ u16 chip_id;
+ u16 chip_rev;
++ u16 sprom_size; /* number of words in sprom */
+ u8 chip_package;
+
+ /* List of devices (cores) on the backplane. */
+diff -up linux-2.6.23.noarch/MAINTAINERS.orig linux-2.6.23.noarch/MAINTAINERS
+--- linux-2.6.23.noarch/MAINTAINERS.orig 2007-11-15 22:18:12.000000000 -0500
++++ linux-2.6.23.noarch/MAINTAINERS 2007-11-15 22:19:56.000000000 -0500
+@@ -2063,10 +2063,12 @@ W: http://sourceforge.net/projects/e1000
+ S: Supported
+
+ INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
+-P: Yi Zhu
++P: Zhu Yi
+ M: yi.zhu at intel.com
+ P: James Ketrenos
+ M: jketreno at linux.intel.com
++P: Reinette Chatre
++M: reinette.chatre at intel.com
+ L: linux-wireless at vger.kernel.org
+ L: ipw2100-devel at lists.sourceforge.net
+ L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
+@@ -2074,10 +2076,12 @@ W: http://ipw2100.sourceforge.net
+ S: Supported
+
+ INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
+-P: Yi Zhu
++P: Zhu Yi
+ M: yi.zhu at intel.com
+ P: James Ketrenos
+ M: jketreno at linux.intel.com
++P: Reinette Chatre
++M: reinette.chatre at intel.com
+ L: linux-wireless at vger.kernel.org
+ L: ipw2100-devel at lists.sourceforge.net
+ L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
+@@ -2087,6 +2091,8 @@ S: Supported
+ INTEL WIRELESS WIFI LINK (iwlwifi)
+ P: Zhu Yi
+ M: yi.zhu at intel.com
++P: Reinette Chatre
++M: reinette.chatre at intel.com
+ L: linux-wireless at vger.kernel.org
+ L: ipw3945-devel at lists.sourceforge.net
+ W: http://intellinuxwireless.org
linux-2.6-wireless.patch:
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.11 -r 1.12 linux-2.6-wireless.patch
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-wireless.patch,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- linux-2.6-wireless.patch 8 Nov 2007 22:06:16 -0000 1.11
+++ linux-2.6-wireless.patch 16 Nov 2007 04:00:40 -0000 1.12
@@ -1,6 +1,6 @@
diff -up linux-2.6.23.noarch/drivers/Kconfig.orig linux-2.6.23.noarch/drivers/Kconfig
---- linux-2.6.23.noarch/drivers/Kconfig.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/Kconfig 2007-11-07 21:34:29.000000000 -0500
+--- linux-2.6.23.noarch/drivers/Kconfig.orig 2007-11-15 20:56:59.000000000 -0500
++++ linux-2.6.23.noarch/drivers/Kconfig 2007-11-15 20:57:07.000000000 -0500
@@ -58,6 +58,8 @@ source "drivers/power/Kconfig"
source "drivers/hwmon/Kconfig"
@@ -11,8 +11,8 @@
source "drivers/media/Kconfig"
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/ssb_private.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/ssb_private.h 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/ssb_private.h 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,136 @@
+#ifndef LINUX_SSB_PRIVATE_H_
+#define LINUX_SSB_PRIVATE_H_
@@ -151,8 +151,8 @@
+
+#endif /* LINUX_SSB_PRIVATE_H_ */
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/driver_extif.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/driver_extif.c 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/driver_extif.c 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,129 @@
+/*
+ * Sonics Silicon Backplane
@@ -284,8 +284,8 @@
+}
+
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/scan.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/scan.c 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/scan.c 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,413 @@
+/*
+ * Sonics Silicon Backplane
@@ -701,8 +701,8 @@
+ goto out;
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/driver_pcicore.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/driver_pcicore.c 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/driver_pcicore.c 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,576 @@
+/*
+ * Sonics Silicon Backplane
@@ -1281,8 +1281,8 @@
+}
+EXPORT_SYMBOL(ssb_pcicore_dev_irqvecs_enable);
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/driver_chipcommon.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/driver_chipcommon.c 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/driver_chipcommon.c 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,445 @@
+/*
+ * Sonics Silicon Backplane
@@ -1730,8 +1730,8 @@
+}
+#endif /* CONFIG_SSB_SERIAL */
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/b43_pci_bridge.c 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,48 @@
+/*
+ * Broadcom 43xx PCI-SSB bridge module
@@ -1782,8 +1782,8 @@
+ ssb_pcihost_unregister(&b43_pci_bridge_driver);
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/Kconfig
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/Kconfig 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/Kconfig 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,117 @@
+menu "Sonics Silicon Backplane"
+
@@ -1903,8 +1903,8 @@
+
+endmenu
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/pci.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/pci.c 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/pci.c 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,740 @@
+/*
+ * Sonics Silicon Backplane PCI-Hostbus related functions.
@@ -2647,8 +2647,8 @@
+ return err;
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/pcmcia.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/pcmcia.c 2007-11-07 21:34:49.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/pcmcia.c 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,271 @@
+/*
+ * Sonics Silicon Backplane
@@ -2922,8 +2922,8 @@
+ return -ENODEV;
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/Makefile
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/Makefile 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/Makefile 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,18 @@
+# core
+ssb-y += main.o scan.o
@@ -2944,8 +2944,8 @@
+
+obj-$(CONFIG_SSB) += ssb.o
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/main.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/main.c 2007-11-07 21:34:49.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/main.c 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,1166 @@
+/*
+ * Sonics Silicon Backplane
@@ -4114,8 +4114,8 @@
+}
+module_exit(ssb_modexit)
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/driver_mipscore.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/driver_mipscore.c 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/driver_mipscore.c 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,224 @@
+/*
+ * Sonics Silicon Backplane
@@ -4342,8 +4342,8 @@
+ ssb_mips_flash_detect(mcore);
+}
diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/pcihost_wrapper.c
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/drivers/ssb/pcihost_wrapper.c 2007-11-07 21:34:29.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/drivers/ssb/pcihost_wrapper.c 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,104 @@
+/*
+ * Sonics Silicon Backplane
@@ -4450,8 +4450,8 @@
+}
+EXPORT_SYMBOL(ssb_pcihost_register);
diff -up linux-2.6.23.noarch/drivers/net/b44.c.orig linux-2.6.23.noarch/drivers/net/b44.c
---- linux-2.6.23.noarch/drivers/net/b44.c.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/b44.c 2007-11-07 21:34:29.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/b44.c.orig 2007-11-15 20:56:59.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/b44.c 2007-11-15 20:57:07.000000000 -0500
@@ -1,8 +1,11 @@
-/* b44.c: Broadcom 4400 device driver.
+/* b44.c: Broadcom 44xx/47xx Fast Ethernet device driver.
@@ -5790,8 +5790,8 @@
module_init(b44_init);
diff -up linux-2.6.23.noarch/drivers/net/Kconfig.orig linux-2.6.23.noarch/drivers/net/Kconfig
---- linux-2.6.23.noarch/drivers/net/Kconfig.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/Kconfig 2007-11-07 21:34:29.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/Kconfig.orig 2007-11-15 20:56:59.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/Kconfig 2007-11-15 20:57:07.000000000 -0500
@@ -1453,18 +1453,38 @@ config APRICOT
called apricot.
@@ -5836,8 +5836,8 @@
tristate "nForce Ethernet support"
depends on NET_PCI && PCI
diff -up linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c.orig linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c
---- linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c 2007-11-07 21:34:29.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c.orig 2007-11-15 20:56:59.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8187_dev.c 2007-11-15 20:57:07.000000000 -0500
@@ -36,11 +36,64 @@ static struct usb_device_id rtl8187_tabl
/* Netgear */
{USB_DEVICE(0x0846, 0x6100)},
@@ -6157,8 +6157,8 @@
dev->queues = 1;
dev->max_rssi = 65;
diff -up linux-2.6.23.noarch/drivers/net/wireless/zd1201.c.orig linux-2.6.23.noarch/drivers/net/wireless/zd1201.c
---- linux-2.6.23.noarch/drivers/net/wireless/zd1201.c.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/zd1201.c 2007-11-07 21:34:29.000000000 -0500
+--- linux-2.6.23.noarch/drivers/net/wireless/zd1201.c.orig 2007-11-15 20:56:59.000000000 -0500
[...3623 lines suppressed...]
/*
- * Copyright (C) 2006 Ivo van Doorn
@@ -131596,8 +131707,8 @@
+subsys_initcall(rfkill_init);
module_exit(rfkill_exit);
diff -up linux-2.6.23.noarch/include/net/iw_handler.h.orig linux-2.6.23.noarch/include/net/iw_handler.h
---- linux-2.6.23.noarch/include/net/iw_handler.h.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/include/net/iw_handler.h 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/include/net/iw_handler.h.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/include/net/iw_handler.h 2007-11-15 20:57:07.000000000 -0500
@@ -431,7 +431,13 @@ struct iw_public_data {
* Those may be called only within the kernel.
*/
@@ -131614,8 +131725,8 @@
/* Send a single event to user space */
extern void wireless_send_event(struct net_device * dev,
diff -up linux-2.6.23.noarch/include/net/ieee80211softmac.h.orig linux-2.6.23.noarch/include/net/ieee80211softmac.h
---- linux-2.6.23.noarch/include/net/ieee80211softmac.h.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/include/net/ieee80211softmac.h 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/include/net/ieee80211softmac.h.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/include/net/ieee80211softmac.h 2007-11-15 20:57:07.000000000 -0500
@@ -229,6 +229,8 @@ struct ieee80211softmac_device {
/* this lock protects this structure */
spinlock_t lock;
@@ -131626,8 +131737,8 @@
u8 scanning;
diff -up linux-2.6.23.noarch/include/net/cfg80211.h.orig linux-2.6.23.noarch/include/net/cfg80211.h
---- linux-2.6.23.noarch/include/net/cfg80211.h.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/include/net/cfg80211.h 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/include/net/cfg80211.h.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/include/net/cfg80211.h 2007-11-15 20:57:07.000000000 -0500
@@ -3,15 +3,15 @@
#include <linux/netlink.h>
@@ -131665,8 +131776,8 @@
#endif /* __NET_CFG80211_H */
diff -up linux-2.6.23.noarch/include/net/ieee80211_radiotap.h.orig linux-2.6.23.noarch/include/net/ieee80211_radiotap.h
---- linux-2.6.23.noarch/include/net/ieee80211_radiotap.h.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/include/net/ieee80211_radiotap.h 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/include/net/ieee80211_radiotap.h.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/include/net/ieee80211_radiotap.h 2007-11-15 20:57:07.000000000 -0500
@@ -40,6 +40,7 @@
#include <linux/if_ether.h>
@@ -131690,8 +131801,8 @@
+
#endif /* IEEE80211_RADIOTAP_H */
diff -up linux-2.6.23.noarch/include/net/mac80211.h.orig linux-2.6.23.noarch/include/net/mac80211.h
---- linux-2.6.23.noarch/include/net/mac80211.h.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/include/net/mac80211.h 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/include/net/mac80211.h.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/include/net/mac80211.h 2007-11-15 20:57:07.000000000 -0500
@@ -1,7 +1,9 @@
/*
- * Low-level hardware driver -- IEEE 802.11 driver (80211.o) interface
@@ -133382,8 +133493,8 @@
#define MAC_ARG(x) ((u8*)(x))[0], ((u8*)(x))[1], ((u8*)(x))[2], \
((u8*)(x))[3], ((u8*)(x))[4], ((u8*)(x))[5]
diff -up linux-2.6.23.noarch/include/linux/ieee80211.h.orig linux-2.6.23.noarch/include/linux/ieee80211.h
---- linux-2.6.23.noarch/include/linux/ieee80211.h.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/include/linux/ieee80211.h 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/include/linux/ieee80211.h.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/include/linux/ieee80211.h 2007-11-15 20:57:07.000000000 -0500
@@ -16,6 +16,7 @@
#define IEEE80211_H
@@ -133458,8 +133569,8 @@
+
#endif /* IEEE80211_H */
diff -up /dev/null linux-2.6.23.noarch/include/linux/ssb/ssb_driver_chipcommon.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/include/linux/ssb/ssb_driver_chipcommon.h 2007-11-07 21:34:30.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/include/linux/ssb/ssb_driver_chipcommon.h 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,396 @@
+#ifndef LINUX_SSB_CHIPCO_H_
+#define LINUX_SSB_CHIPCO_H_
@@ -133858,8 +133969,8 @@
+
+#endif /* LINUX_SSB_CHIPCO_H_ */
diff -up /dev/null linux-2.6.23.noarch/include/linux/ssb/ssb_driver_extif.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/include/linux/ssb/ssb_driver_extif.h 2007-11-07 21:34:30.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/include/linux/ssb/ssb_driver_extif.h 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,204 @@
+/*
+ * Hardware-specific External Interface I/O core definitions
@@ -134066,8 +134177,8 @@
+#endif /* CONFIG_SSB_DRIVER_EXTIF */
+#endif /* LINUX_SSB_EXTIFCORE_H_ */
diff -up /dev/null linux-2.6.23.noarch/include/linux/ssb/ssb_regs.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/include/linux/ssb/ssb_regs.h 2007-11-07 21:34:30.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/include/linux/ssb/ssb_regs.h 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,292 @@
+#ifndef LINUX_SSB_REGS_H_
+#define LINUX_SSB_REGS_H_
@@ -134362,8 +134473,8 @@
+
+#endif /* LINUX_SSB_REGS_H_ */
diff -up /dev/null linux-2.6.23.noarch/include/linux/ssb/ssb.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/include/linux/ssb/ssb.h 2007-11-07 21:34:30.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/include/linux/ssb/ssb.h 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,424 @@
+#ifndef LINUX_SSB_H_
+#define LINUX_SSB_H_
@@ -134790,8 +134901,8 @@
+
+#endif /* LINUX_SSB_H_ */
diff -up /dev/null linux-2.6.23.noarch/include/linux/ssb/ssb_driver_mips.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/include/linux/ssb/ssb_driver_mips.h 2007-11-07 21:34:30.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/include/linux/ssb/ssb_driver_mips.h 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,46 @@
+#ifndef LINUX_SSB_MIPSCORE_H_
+#define LINUX_SSB_MIPSCORE_H_
@@ -134840,8 +134951,8 @@
+
+#endif /* LINUX_SSB_MIPSCORE_H_ */
diff -up /dev/null linux-2.6.23.noarch/include/linux/ssb/ssb_driver_pci.h
---- /dev/null 2007-10-26 17:27:29.928203379 -0400
-+++ linux-2.6.23.noarch/include/linux/ssb/ssb_driver_pci.h 2007-11-07 21:34:30.000000000 -0500
+--- /dev/null 2007-11-12 23:12:46.917997680 -0500
++++ linux-2.6.23.noarch/include/linux/ssb/ssb_driver_pci.h 2007-11-15 20:57:07.000000000 -0500
@@ -0,0 +1,106 @@
+#ifndef LINUX_SSB_PCICORE_H_
+#define LINUX_SSB_PCICORE_H_
@@ -134950,8 +135061,8 @@
+#endif /* CONFIG_SSB_DRIVER_PCICORE */
+#endif /* LINUX_SSB_PCICORE_H_ */
diff -up linux-2.6.23.noarch/include/linux/nl80211.h.orig linux-2.6.23.noarch/include/linux/nl80211.h
---- linux-2.6.23.noarch/include/linux/nl80211.h.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/include/linux/nl80211.h 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/include/linux/nl80211.h.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/include/linux/nl80211.h 2007-11-15 20:57:07.000000000 -0500
@@ -7,7 +7,97 @@
*/
@@ -135074,8 +135185,8 @@
#endif /* __LINUX_NL80211_H */
diff -up linux-2.6.23.noarch/include/linux/mod_devicetable.h.orig linux-2.6.23.noarch/include/linux/mod_devicetable.h
---- linux-2.6.23.noarch/include/linux/mod_devicetable.h.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/include/linux/mod_devicetable.h 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/include/linux/mod_devicetable.h.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/include/linux/mod_devicetable.h 2007-11-15 20:57:07.000000000 -0500
@@ -340,4 +340,19 @@ struct parisc_device_id {
#define PA_HVERSION_ANY_ID 0xffff
#define PA_SVERSION_ANY_ID 0xffffffff
@@ -135097,8 +135208,8 @@
+
#endif /* LINUX_MOD_DEVICETABLE_H */
diff -up linux-2.6.23.noarch/include/linux/rfkill.h.orig linux-2.6.23.noarch/include/linux/rfkill.h
---- linux-2.6.23.noarch/include/linux/rfkill.h.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/include/linux/rfkill.h 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/include/linux/rfkill.h.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/include/linux/rfkill.h 2007-11-15 20:57:07.000000000 -0500
@@ -2,7 +2,7 @@
#define __RFKILL_H
@@ -135181,8 +135292,8 @@
#endif /* RFKILL_H */
diff -up linux-2.6.23.noarch/Documentation/networking/mac80211-injection.txt.orig linux-2.6.23.noarch/Documentation/networking/mac80211-injection.txt
---- linux-2.6.23.noarch/Documentation/networking/mac80211-injection.txt.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/Documentation/networking/mac80211-injection.txt 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/Documentation/networking/mac80211-injection.txt.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/Documentation/networking/mac80211-injection.txt 2007-11-15 20:57:07.000000000 -0500
@@ -13,15 +13,35 @@ The radiotap format is discussed in
./Documentation/networking/radiotap-headers.txt.
@@ -135226,8 +135337,8 @@
Here is an example valid radiotap header defining these three parameters
diff -up linux-2.6.23.noarch/MAINTAINERS.orig linux-2.6.23.noarch/MAINTAINERS
---- linux-2.6.23.noarch/MAINTAINERS.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/MAINTAINERS 2007-11-07 21:34:46.000000000 -0500
+--- linux-2.6.23.noarch/MAINTAINERS.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/MAINTAINERS 2007-11-15 20:57:07.000000000 -0500
@@ -284,6 +284,14 @@ M: corentin.labbe at geomatys.fr
L: lm-sensors at lm-sensors.org
S: Maintained
@@ -135370,8 +135481,8 @@
P: Mattia Dongili
M: malattia at linux.it
diff -up linux-2.6.23.noarch/CREDITS.orig linux-2.6.23.noarch/CREDITS
---- linux-2.6.23.noarch/CREDITS.orig 2007-11-07 21:34:15.000000000 -0500
-+++ linux-2.6.23.noarch/CREDITS 2007-11-07 21:34:30.000000000 -0500
+--- linux-2.6.23.noarch/CREDITS.orig 2007-11-15 20:57:00.000000000 -0500
++++ linux-2.6.23.noarch/CREDITS 2007-11-15 20:57:07.000000000 -0500
@@ -665,6 +665,11 @@ D: Minor updates to SCSI types, added /p
S: (ask for current address)
S: USA
--- linux-2.6-drivers-ssb-debug-revision.patch DELETED ---
- Previous message: rpms/perl-Inline-Files/devel perl-Inline-Files.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2
- Next message: rpms/evince/devel tiff.patch,NONE,1.1 evince.spec,1.97,1.98
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list