kernel: fix some mistakes in ssb patch refresh in r22766, r22767 and r22768.
authorHauke Mehrtens <hauke@hauke-m.de>
Sun, 22 Aug 2010 19:22:01 +0000 (19:22 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 22 Aug 2010 19:22:01 +0000 (19:22 +0000)
SVN-Revision: 22774

target/linux/generic/patches-2.6.32/975-ssb_update.patch
target/linux/generic/patches-2.6.32/977-ssb_export_fallback_sprom.patch
target/linux/generic/patches-2.6.33/975-ssb_update.patch
target/linux/generic/patches-2.6.34/975-ssb_update.patch
target/linux/generic/patches-2.6.34/977-ssb_export_fallback_sprom.patch

index e9568f42b66452c8c7844d9a54fa14ddcb0942d9..373df1a62de598e2db980037bfb7541b2b6b16ec 100644 (file)
        }
  
        return err;
---- a/drivers/ssb/pci.c
-+++ b/drivers/ssb/pci.c
-@@ -17,6 +17,7 @@
- #include <linux/ssb/ssb.h>
- #include <linux/ssb/ssb_regs.h>
-+#include <linux/slab.h>
- #include <linux/pci.h>
- #include <linux/delay.h>
-@@ -642,6 +643,14 @@ static int ssb_pci_sprom_get(struct ssb_
-       }
-       ssb_dprintk(KERN_INFO PFX "SPROM offset is 0x%x\n", bus->sprom_offset);
-+      if (!ssb_is_sprom_available(bus)) {
-+              ssb_printk(KERN_ERR PFX "No SPROM available!\n");
-+              return -ENODEV;
-+      }
-+
-+      bus->sprom_offset = (bus->chipco.dev->id.revision < 31) ?
-+              SSB_SPROM_BASE1 : SSB_SPROM_BASE31;
-+
-       buf = kcalloc(SSB_SPROMSIZE_WORDS_R123, sizeof(u16), GFP_KERNEL);
-       if (!buf)
-               goto out;
 --- a/drivers/ssb/pcihost_wrapper.c
 +++ b/drivers/ssb/pcihost_wrapper.c
 @@ -12,6 +12,7 @@
        if (err)
                ssb_printk(KERN_ERR PFX "SPROM write: Could not thaw all devices\n");
  out_unlock:
-@@ -192,5 +189,19 @@ bool ssb_is_sprom_available(struct ssb_b
-           bus->chipco.dev->id.revision >= 31)
-               return bus->chipco.capabilities & SSB_CHIPCO_CAP_SPROM;
-+      return true;
-+}
-+
-+/* http://bcm-v4.sipsolutions.net/802.11/IsSpromAvailable */
-+bool ssb_is_sprom_available(struct ssb_bus *bus)
-+{
-+      /* status register only exists on chipcomon rev >= 11 and we need check
-+         for >= 31 only */
-+      /* this routine differs from specs as we do not access SPROM directly
-+         on PCMCIA */
-+      if (bus->bustype == SSB_BUSTYPE_PCI &&
-+          bus->chipco.dev->id.revision >= 31)
-+              return bus->chipco.capabilities & SSB_CHIPCO_CAP_SPROM;
-+
-       return true;
- }
 --- a/drivers/ssb/ssb_private.h
 +++ b/drivers/ssb/ssb_private.h
 @@ -176,19 +176,27 @@ extern const struct ssb_sprom *ssb_get_f
  
        /* See enum ssb_quirks */
        unsigned int quirks;
-@@ -393,6 +397,9 @@ extern void ssb_bus_unregister(struct ss
- /* Does the device have an SPROM? */
- extern bool ssb_is_sprom_available(struct ssb_bus *bus);
-+
-+/* Does the device have an SPROM? */
-+extern bool ssb_is_sprom_available(struct ssb_bus *bus);
- /* Set a fallback SPROM.
-  * See kdoc at the function definition for complete documentation. */
 --- a/include/linux/ssb/ssb_regs.h
 +++ b/include/linux/ssb/ssb_regs.h
 @@ -198,63 +198,63 @@
index 3fab483858259f60fb082257543bfa7417e665a4..2a22a3a38f215a2344a00847ec94a77ef9dc034f 100644 (file)
@@ -10,7 +10,7 @@
  bool ssb_is_sprom_available(struct ssb_bus *bus)
 --- a/include/linux/ssb/ssb.h
 +++ b/include/linux/ssb/ssb.h
-@@ -404,6 +404,7 @@ extern bool ssb_is_sprom_available(struc
+@@ -401,6 +401,7 @@ extern bool ssb_is_sprom_available(struc
  /* Set a fallback SPROM.
   * See kdoc at the function definition for complete documentation. */
  extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom);
index 1776520b8022715c059852c75cad4b7e1e949e71..e994a8a502f99ea79f95a70dbc82fe9a275a8a9a 100644 (file)
        }
  
        return err;
---- a/drivers/ssb/sprom.c
-+++ b/drivers/ssb/sprom.c
-@@ -190,3 +190,17 @@ bool ssb_is_sprom_available(struct ssb_b
-       return true;
- }
-+
-+/* http://bcm-v4.sipsolutions.net/802.11/IsSpromAvailable */
-+bool ssb_is_sprom_available(struct ssb_bus *bus)
-+{
-+      /* status register only exists on chipcomon rev >= 11 and we need check
-+         for >= 31 only */
-+      /* this routine differs from specs as we do not access SPROM directly
-+         on PCMCIA */
-+      if (bus->bustype == SSB_BUSTYPE_PCI &&
-+          bus->chipco.dev->id.revision >= 31)
-+              return bus->chipco.capabilities & SSB_CHIPCO_CAP_SPROM;
-+
-+      return true;
-+}
 --- a/drivers/ssb/ssb_private.h
 +++ b/drivers/ssb/ssb_private.h
 @@ -196,7 +196,7 @@ extern int ssb_devices_thaw(struct ssb_f
 +#endif /* CONFIG_SSB_B43_PCI_BRIDGE */
  
  #endif /* LINUX_SSB_PRIVATE_H_ */
---- a/include/linux/ssb/ssb.h
-+++ b/include/linux/ssb/ssb.h
-@@ -305,6 +305,7 @@ struct ssb_bus {
-       /* ID information about the Chip. */
-       u16 chip_id;
-       u16 chip_rev;
-+      u16 sprom_offset;
-       u16 sprom_size;         /* number of words in sprom */
-       u16 sprom_offset;
-       u8 chip_package;
-@@ -395,6 +396,9 @@ extern int ssb_bus_sdiobus_register(stru
- extern void ssb_bus_unregister(struct ssb_bus *bus);
-+/* Does the device have an SPROM? */
-+extern bool ssb_is_sprom_available(struct ssb_bus *bus);
-+
- /* Set a fallback SPROM.
-  * See kdoc at the function definition for complete documentation. */
- extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom);
 --- a/include/linux/ssb/ssb_driver_chipcommon.h
 +++ b/include/linux/ssb/ssb_driver_chipcommon.h
 @@ -54,6 +54,7 @@
index 45be0b7ae84006650186682cf48d459117483d84..e9b06d06bf00d1cdb1a262e37d09cf4000ab6657 100644 (file)
        u32 pmucap;
  
        if (!(cc->capabilities & SSB_CHIPCO_CAP_PMU))
-@@ -516,15 +516,12 @@ void ssb_pmu_init(struct ssb_chipcommon
+@@ -516,15 +516,12 @@ void ssb_pmu_init(struct ssb_chipcommon 
        ssb_dprintk(KERN_DEBUG PFX "Found rev %u PMU (capabilities 0x%08X)\n",
                    cc->pmu.rev, pmucap);
  
  /* Helper to extract some _offset, which is one of the SSB_SPROM_XXX defines. */
  #define SPEX16(_outvar, _offset, _mask, _shift)       \
        out->_outvar = ((in[SPOFF(_offset)] & (_mask)) >> (_shift))
-@@ -623,6 +623,28 @@ static int ssb_pci_sprom_get(struct ssb_
-       if (!ssb_is_sprom_available(bus)) {
-               ssb_printk(KERN_ERR PFX "No SPROM available!\n");
-+              return -ENODEV;
-+      }
-+      if (bus->chipco.dev) {  /* can be unavailible! */
-+              /*
-+               * get SPROM offset: SSB_SPROM_BASE1 except for
-+               * chipcommon rev >= 31 or chip ID is 0x4312 and
-+               * chipcommon status & 3 == 2
-+               */
-+              if (bus->chipco.dev->id.revision >= 31)
-+                      bus->sprom_offset = SSB_SPROM_BASE31;
-+              else if (bus->chip_id == 0x4312 &&
-+                       (bus->chipco.status & 0x03) == 2)
-+                      bus->sprom_offset = SSB_SPROM_BASE31;
-+              else
-+                      bus->sprom_offset = SSB_SPROM_BASE1;
-+      } else {
-+              bus->sprom_offset = SSB_SPROM_BASE1;
-+      }
-+      ssb_dprintk(KERN_INFO PFX "SPROM offset is 0x%x\n", bus->sprom_offset);
-+
-+      if (!ssb_is_sprom_available(bus)) {
-+              ssb_printk(KERN_ERR PFX "No SPROM available!\n");
-               return -ENODEV;
-       }
-       if (bus->chipco.dev) {  /* can be unavailible! */
 --- a/include/linux/ssb/ssb.h
 +++ b/include/linux/ssb/ssb.h
 @@ -167,7 +167,7 @@ struct ssb_device {
  
        struct ssb_bus *bus;
        struct ssb_device_id id;
-@@ -398,6 +398,9 @@ extern void ssb_bus_unregister(struct ss
- /* Does the device have an SPROM? */
- extern bool ssb_is_sprom_available(struct ssb_bus *bus);
-+/* Does the device have an SPROM? */
-+extern bool ssb_is_sprom_available(struct ssb_bus *bus);
-+
- /* Set a fallback SPROM.
-  * See kdoc at the function definition for complete documentation. */
- extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom);
-@@ -470,14 +473,6 @@ extern u32 ssb_dma_translation(struct ss
+@@ -470,14 +470,6 @@ extern u32 ssb_dma_translation(struct ss
  #define SSB_DMA_TRANSLATION_MASK      0xC0000000
  #define SSB_DMA_TRANSLATION_SHIFT     30
  
  static inline void __cold __ssb_dma_not_implemented(struct ssb_device *dev)
  {
  #ifdef CONFIG_SSB_DEBUG
-@@ -486,155 +481,6 @@ static inline void __cold __ssb_dma_not_
+@@ -486,155 +478,6 @@ static inline void __cold __ssb_dma_not_
  #endif /* DEBUG */
  }
  
index 3fab483858259f60fb082257543bfa7417e665a4..2a22a3a38f215a2344a00847ec94a77ef9dc034f 100644 (file)
@@ -10,7 +10,7 @@
  bool ssb_is_sprom_available(struct ssb_bus *bus)
 --- a/include/linux/ssb/ssb.h
 +++ b/include/linux/ssb/ssb.h
-@@ -404,6 +404,7 @@ extern bool ssb_is_sprom_available(struc
+@@ -401,6 +401,7 @@ extern bool ssb_is_sprom_available(struc
  /* Set a fallback SPROM.
   * See kdoc at the function definition for complete documentation. */
  extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom);