SOURCES (LINUX_2_6): kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch...
zbyniu
zbyniu at pld-linux.org
Sat Dec 9 11:23:44 CET 2006
Author: zbyniu Date: Sat Dec 9 10:23:43 2006 GMT
Module: SOURCES Tag: LINUX_2_6
---- Log message:
- up, not all in sources
---- Files affected:
SOURCES:
kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch (1.1 -> 1.1.2.1)
---- Diffs:
================================================================
Index: SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch
diff -u SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch:1.1 SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch:1.1.2.1
--- SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch:1.1 Mon Oct 16 00:36:49 2006
+++ SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch Sat Dec 9 11:23:38 2006
@@ -1,31 +1,3 @@
-Index: linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx_dma.h
-===================================================================
---- linux-2.6.18.orig/drivers/net/wireless/bcm43xx/bcm43xx_dma.h
-+++ linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx_dma.h
-@@ -314,6 +314,23 @@ int bcm43xx_dma_tx(struct bcm43xx_privat
- struct ieee80211_txb *txb);
- void bcm43xx_dma_rx(struct bcm43xx_dmaring *ring);
-
-+/* Helper function that returns the dma mask for this device. */
-+static inline
-+u64 bcm43xx_get_supported_dma_mask(struct bcm43xx_private *bcm)
-+{
-+ int dma64 = bcm43xx_read32(bcm, BCM43xx_CIR_SBTMSTATEHIGH) &
-+ BCM43xx_SBTMSTATEHIGH_DMA64BIT;
-+ u16 mmio_base = bcm43xx_dmacontroller_base(dma64, 0);
-+ u32 mask = BCM43xx_DMA32_TXADDREXT_MASK;
-+
-+ if (dma64)
-+ return DMA_64BIT_MASK;
-+ bcm43xx_write32(bcm, mmio_base + BCM43xx_DMA32_TXCTL, mask);
-+ if (bcm43xx_read32(bcm, mmio_base + BCM43xx_DMA32_TXCTL) & mask)
-+ return DMA_32BIT_MASK;
-+ return DMA_30BIT_MASK;
-+}
-+
- #else /* CONFIG_BCM43XX_DMA */
-
-
Index: linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx_main.c
===================================================================
--- linux-2.6.18.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -96,22 +68,6 @@
bcm43xx_write32(bcm, BCM43xx_CIR_SBIMCONFIGLOW, sbimconfiglow);
}
-@@ -2924,10 +2925,13 @@ static int bcm43xx_wireless_core_init(st
- bcm43xx_write16(bcm, 0x043C, 0x000C);
-
- if (active_wlcore) {
-- if (bcm43xx_using_pio(bcm))
-+ if (bcm43xx_using_pio(bcm)) {
- err = bcm43xx_pio_init(bcm);
-- else
-+ } else {
- err = bcm43xx_dma_init(bcm);
-+ if (err == -ENOSYS)
-+ err = bcm43xx_pio_init(bcm);
-+ }
- if (err)
- goto err_chip_cleanup;
- }
@@ -2983,22 +2987,64 @@ static void bcm43xx_pcicore_broadcast_va
static int bcm43xx_pcicore_commit_settings(struct bcm43xx_private *bcm)
@@ -266,87 +222,6 @@
phy_rev_ok = 0;
bcm->ieee->modulation = IEEE80211_OFDM_MODULATION |
IEEE80211_CCK_MODULATION;
-@@ -3986,8 +4058,6 @@ static int bcm43xx_init_private(struct b
- struct net_device *net_dev,
- struct pci_dev *pci_dev)
- {
-- int err;
--
- bcm43xx_set_status(bcm, BCM43xx_STAT_UNINIT);
- bcm->ieee = netdev_priv(net_dev);
- bcm->softmac = ieee80211_priv(net_dev);
-@@ -4005,22 +4075,8 @@ static int bcm43xx_init_private(struct b
- (void (*)(unsigned long))bcm43xx_interrupt_tasklet,
- (unsigned long)bcm);
- tasklet_disable_nosync(&bcm->isr_tasklet);
-- if (modparam_pio) {
-+ if (modparam_pio)
- bcm->__using_pio = 1;
-- } else {
-- err = pci_set_dma_mask(pci_dev, DMA_30BIT_MASK);
-- err |= pci_set_consistent_dma_mask(pci_dev, DMA_30BIT_MASK);
-- if (err) {
--#ifdef CONFIG_BCM43XX_PIO
-- printk(KERN_WARNING PFX "DMA not supported. Falling back to PIO.\n");
-- bcm->__using_pio = 1;
--#else
-- printk(KERN_ERR PFX "FATAL: DMA not supported and PIO not configured. "
-- "Recompile the driver with PIO support, please.\n");
-- return -ENODEV;
--#endif /* CONFIG_BCM43XX_PIO */
-- }
-- }
- bcm->rts_threshold = BCM43xx_DEFAULT_RTS_THRESHOLD;
-
- /* default to sw encryption for now */
-Index: linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx_dma.c
-===================================================================
---- linux-2.6.18.orig/drivers/net/wireless/bcm43xx/bcm43xx_dma.c
-+++ linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx_dma.c
-@@ -705,11 +705,30 @@ int bcm43xx_dma_init(struct bcm43xx_priv
- struct bcm43xx_dmaring *ring;
- int err = -ENOMEM;
- int dma64 = 0;
-- u32 sbtmstatehi;
-+ u64 mask = bcm43xx_get_supported_dma_mask(bcm);
-+ int nobits;
-
-- sbtmstatehi = bcm43xx_read32(bcm, BCM43xx_CIR_SBTMSTATEHIGH);
-- if (sbtmstatehi & BCM43xx_SBTMSTATEHIGH_DMA64BIT)
-+ if (mask == DMA_64BIT_MASK) {
- dma64 = 1;
-+ nobits = 64;
-+ } else if (mask == DMA_32BIT_MASK)
-+ nobits = 32;
-+ else
-+ nobits = 30;
-+ err = pci_set_dma_mask(bcm->pci_dev, mask);
-+ err |= pci_set_consistent_dma_mask(bcm->pci_dev, mask);
-+ if (err) {
-+#ifdef CONFIG_BCM43XX_PIO
-+ printk(KERN_WARNING PFX "DMA not supported on this device."
-+ " Falling back to PIO.\n");
-+ bcm->__using_pio = 1;
-+ return -ENOSYS;
-+#else
-+ printk(KERN_ERR PFX "FATAL: DMA not supported and PIO not configured. "
-+ "Please recompile the driver with PIO support.\n");
-+ return -ENODEV;
-+#endif /* CONFIG_BCM43XX_PIO */
-+ }
-
- /* setup TX DMA channels. */
- ring = bcm43xx_setup_dmaring(bcm, 0, 1, dma64);
-@@ -755,8 +774,7 @@ int bcm43xx_dma_init(struct bcm43xx_priv
- dma->rx_ring3 = ring;
- }
-
-- dprintk(KERN_INFO PFX "%s DMA initialized\n",
-- dma64 ? "64-bit" : "32-bit");
-+ dprintk(KERN_INFO PFX "%d-bit DMA initialized\n", nobits);
- err = 0;
- out:
- return err;
Index: linux-2.6.18/drivers/net/wireless/bcm43xx/bcm43xx.h
===================================================================
--- linux-2.6.18.orig/drivers/net/wireless/bcm43xx/bcm43xx.h
================================================================
---- CVS-web:
http://cvs.pld-linux.org/SOURCES/kernel-bcm43xx-patch_2.6.18.1_for_PCI-E.patch?r1=1.1&r2=1.1.2.1&f=u
More information about the pld-cvs-commit
mailing list