瀏覽代碼

kernel: bcma: update to wireless-testing master-2013-10-01

Signed-off-by: Hauke Mehrtens <[email protected]>

SVN-Revision: 38290
Hauke Mehrtens 12 年之前
父節點
當前提交
fa839274b0

+ 17 - 13
target/linux/generic/patches-3.10/025-bcma_backport.patch

@@ -678,14 +678,20 @@
  /**************************************************
   * Workarounds.
   **************************************************/
-@@ -203,6 +210,25 @@ static void bcma_core_pci_config_fixup(s
- 	}
+@@ -229,6 +236,32 @@ void bcma_core_pci_init(struct bcma_drv_
+ 		bcma_core_pci_clientmode_init(pc);
  }
  
-+static void bcma_core_pci_power_save(struct bcma_drv_pci *pc, bool up)
++void bcma_core_pci_power_save(struct bcma_bus *bus, bool up)
 +{
++	struct bcma_drv_pci *pc;
 +	u16 data;
 +
++	if (bus->hosttype != BCMA_HOSTTYPE_PCI)
++		return;
++
++	pc = &bus->drv_pci[0];
++
 +	if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) {
 +		data = up ? 0x74 : 0x7C;
 +		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
@@ -700,11 +706,12 @@
 +					 BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
 +	}
 +}
++EXPORT_SYMBOL_GPL(bcma_core_pci_power_save);
 +
- /**************************************************
-  * Init.
-  **************************************************/
-@@ -262,7 +288,7 @@ out:
+ int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core,
+ 			  bool enable)
+ {
+@@ -262,7 +295,7 @@ out:
  }
  EXPORT_SYMBOL_GPL(bcma_core_pci_irq_ctl);
  
@@ -713,7 +720,7 @@
  {
  	u32 w;
  
-@@ -274,4 +300,33 @@ void bcma_core_pci_extend_L1timer(struct
+@@ -274,4 +307,29 @@ void bcma_core_pci_extend_L1timer(struct
  	bcma_pcie_write(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG, w);
  	bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG);
  }
@@ -728,8 +735,6 @@
 +
 +	pc = &bus->drv_pci[0];
 +
-+	bcma_core_pci_power_save(pc, true);
-+
 +	bcma_core_pci_extend_L1timer(pc, true);
 +}
 +EXPORT_SYMBOL_GPL(bcma_core_pci_up);
@@ -744,8 +749,6 @@
 +	pc = &bus->drv_pci[0];
 +
 +	bcma_core_pci_extend_L1timer(pc, false);
-+
-+	bcma_core_pci_power_save(pc, false);
 +}
 +EXPORT_SYMBOL_GPL(bcma_core_pci_down);
 --- a/drivers/bcma/driver_pci_host.c
@@ -899,13 +902,14 @@
  
  #ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE
  struct bcma_drv_pci_host {
-@@ -219,7 +240,8 @@ struct bcma_drv_pci {
+@@ -219,7 +240,9 @@ struct bcma_drv_pci {
  extern void bcma_core_pci_init(struct bcma_drv_pci *pc);
  extern int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc,
  				 struct bcma_device *core, bool enable);
 -extern void bcma_core_pci_extend_L1timer(struct bcma_drv_pci *pc, bool extend);
 +extern void bcma_core_pci_up(struct bcma_bus *bus);
 +extern void bcma_core_pci_down(struct bcma_bus *bus);
++extern void bcma_core_pci_power_save(struct bcma_bus *bus, bool up);
  
  extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev);
  extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev);

+ 53 - 49
target/linux/generic/patches-3.3/025-bcma_backport.patch

@@ -2248,7 +2248,7 @@
  }
  
  /**************************************************
-@@ -138,88 +150,127 @@ static void bcma_pcie_mdio_write(struct
+@@ -138,88 +150,134 @@ static void bcma_pcie_mdio_write(struct
  
  static u8 bcma_pcicore_polarity_workaround(struct bcma_drv_pci *pc)
  {
@@ -2301,18 +2301,12 @@
 +			(val16 & ~BCMA_CORE_PCI_SPROM_PI_MASK);
 +		pcicore_write16(pc, regoff, val16);
 +	}
- }
- 
--/**************************************************
-- * Init.
-- **************************************************/
--
--static void bcma_core_pci_clientmode_init(struct bcma_drv_pci *pc)
++}
++
 +/* Fix MISC config to allow coming out of L2/L3-Ready state w/o PRST */
 +/* Needs to happen when coming out of 'standby'/'hibernate' */
 +static void bcma_core_pci_config_fixup(struct bcma_drv_pci *pc)
- {
--	bcma_pcicore_serdes_workaround(pc);
++{
 +	u16 val16;
 +	uint regoff;
 +
@@ -2326,13 +2320,23 @@
 +	}
  }
  
--static bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc)
-+static void bcma_core_pci_power_save(struct bcma_drv_pci *pc, bool up)
+ /**************************************************
+  * Init.
+  **************************************************/
+ 
+-static void bcma_core_pci_clientmode_init(struct bcma_drv_pci *pc)
++static void __devinit bcma_core_pci_clientmode_init(struct bcma_drv_pci *pc)
  {
++	bcma_core_pci_fixcfg(pc);
+ 	bcma_pcicore_serdes_workaround(pc);
++	bcma_core_pci_config_fixup(pc);
+ }
+ 
+-static bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc)
+-{
 -	struct bcma_bus *bus = pc->core->bus;
 -	u16 chipid_top;
-+	u16 data;
- 
+-
 -	chipid_top = (bus->chipinfo.id & 0xFF00);
 -	if (chipid_top != 0x4700 &&
 -	    chipid_top != 0x5300)
@@ -2342,39 +2346,17 @@
 -	if (bus->sprom.boardflags_lo & SSB_BFL_NOPCI)
 -		return false;
 -#endif /* CONFIG_SSB_DRIVER_PCICORE */
-+	if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) {
-+		data = up ? 0x74 : 0x7C;
-+		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
-+					 BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64);
-+		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
-+					 BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
-+	} else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) {
-+		data = up ? 0x75 : 0x7D;
-+		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
-+					 BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65);
-+		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
-+					 BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
-+	}
-+}
- 
+-
 -#if 0
 -	/* TODO: on BCMA we use address from EROM instead of magic formula */
 -	u32 tmp;
 -	return !mips_busprobe32(tmp, (bus->mmio +
 -		(pc->core->core_index * BCMA_CORE_SIZE)));
 -#endif
-+/**************************************************
-+ * Init.
-+ **************************************************/
- 
+-
 -	return true;
-+static void __devinit bcma_core_pci_clientmode_init(struct bcma_drv_pci *pc)
-+{
-+	bcma_core_pci_fixcfg(pc);
-+	bcma_pcicore_serdes_workaround(pc);
-+	bcma_core_pci_config_fixup(pc);
- }
- 
+-}
+-
 -void bcma_core_pci_init(struct bcma_drv_pci *pc)
 +void __devinit bcma_core_pci_init(struct bcma_drv_pci *pc)
  {
@@ -2390,13 +2372,38 @@
 -		pr_err("Driver compiled without support for hostmode PCI\n");
  #endif /* CONFIG_BCMA_DRIVER_PCI_HOSTMODE */
 -	} else {
--		bcma_core_pci_clientmode_init(pc);
++
++	if (!pc->hostmode)
+ 		bcma_core_pci_clientmode_init(pc);
 -	}
++}
++
++void bcma_core_pci_power_save(struct bcma_bus *bus, bool up)
++{
++	struct bcma_drv_pci *pc;
++	u16 data;
  
 -	pc->setup_done = true;
-+	if (!pc->hostmode)
-+		bcma_core_pci_clientmode_init(pc);
++	if (bus->hosttype != BCMA_HOSTTYPE_PCI)
++		return;
++
++	pc = &bus->drv_pci[0];
++
++	if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) {
++		data = up ? 0x74 : 0x7C;
++		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
++					 BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64);
++		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
++					 BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
++	} else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) {
++		data = up ? 0x75 : 0x7D;
++		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
++					 BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65);
++		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
++					 BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
++	}
  }
++EXPORT_SYMBOL_GPL(bcma_core_pci_power_save);
  
  int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core,
  			  bool enable)
@@ -2419,7 +2426,7 @@
  	err = pci_read_config_dword(pdev, BCMA_PCI_IRQMASK, &tmp);
  	if (err)
  		goto out;
-@@ -236,3 +287,46 @@ out:
+@@ -236,3 +294,42 @@ out:
  	return err;
  }
  EXPORT_SYMBOL_GPL(bcma_core_pci_irq_ctl);
@@ -2446,8 +2453,6 @@
 +
 +	pc = &bus->drv_pci[0];
 +
-+	bcma_core_pci_power_save(pc, true);
-+
 +	bcma_core_pci_extend_L1timer(pc, true);
 +}
 +EXPORT_SYMBOL_GPL(bcma_core_pci_up);
@@ -2462,8 +2467,6 @@
 +	pc = &bus->drv_pci[0];
 +
 +	bcma_core_pci_extend_L1timer(pc, false);
-+
-+	bcma_core_pci_power_save(pc, false);
 +}
 +EXPORT_SYMBOL_GPL(bcma_core_pci_down);
 --- a/drivers/bcma/driver_pci_host.c
@@ -5558,7 +5561,7 @@
  
  /* SBtoPCIx */
  #define BCMA_CORE_PCI_SBTOPCI_MEM		0x00000000
-@@ -72,20 +108,142 @@ struct pci_dev;
+@@ -72,20 +108,143 @@ struct pci_dev;
  #define  BCMA_CORE_PCI_SBTOPCI_RC_READL		0x00000010 /* Memory read line */
  #define  BCMA_CORE_PCI_SBTOPCI_RC_READM		0x00000020 /* Memory read multiple */
  
@@ -5697,6 +5700,7 @@
  				 struct bcma_device *core, bool enable);
 +extern void bcma_core_pci_up(struct bcma_bus *bus);
 +extern void bcma_core_pci_down(struct bcma_bus *bus);
++extern void bcma_core_pci_power_save(struct bcma_bus *bus, bool up);
 +
 +extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev);
 +extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev);

+ 17 - 13
target/linux/generic/patches-3.6/025-bcma_backport.patch

@@ -1684,14 +1684,20 @@
  /**************************************************
   * Workarounds.
   **************************************************/
-@@ -203,6 +210,25 @@ static void bcma_core_pci_config_fixup(s
- 	}
+@@ -229,6 +236,32 @@ void __devinit bcma_core_pci_init(struct
+ 		bcma_core_pci_clientmode_init(pc);
  }
  
-+static void bcma_core_pci_power_save(struct bcma_drv_pci *pc, bool up)
++void bcma_core_pci_power_save(struct bcma_bus *bus, bool up)
 +{
++	struct bcma_drv_pci *pc;
 +	u16 data;
 +
++	if (bus->hosttype != BCMA_HOSTTYPE_PCI)
++		return;
++
++	pc = &bus->drv_pci[0];
++
 +	if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) {
 +		data = up ? 0x74 : 0x7C;
 +		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
@@ -1706,11 +1712,12 @@
 +					 BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
 +	}
 +}
++EXPORT_SYMBOL_GPL(bcma_core_pci_power_save);
 +
- /**************************************************
-  * Init.
-  **************************************************/
-@@ -262,7 +288,7 @@ out:
+ int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core,
+ 			  bool enable)
+ {
+@@ -262,7 +295,7 @@ out:
  }
  EXPORT_SYMBOL_GPL(bcma_core_pci_irq_ctl);
  
@@ -1719,7 +1726,7 @@
  {
  	u32 w;
  
-@@ -274,4 +300,33 @@ void bcma_core_pci_extend_L1timer(struct
+@@ -274,4 +307,29 @@ void bcma_core_pci_extend_L1timer(struct
  	bcma_pcie_write(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG, w);
  	bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG);
  }
@@ -1734,8 +1741,6 @@
 +
 +	pc = &bus->drv_pci[0];
 +
-+	bcma_core_pci_power_save(pc, true);
-+
 +	bcma_core_pci_extend_L1timer(pc, true);
 +}
 +EXPORT_SYMBOL_GPL(bcma_core_pci_up);
@@ -1750,8 +1755,6 @@
 +	pc = &bus->drv_pci[0];
 +
 +	bcma_core_pci_extend_L1timer(pc, false);
-+
-+	bcma_core_pci_power_save(pc, false);
 +}
 +EXPORT_SYMBOL_GPL(bcma_core_pci_down);
 --- a/drivers/bcma/driver_pci_host.c
@@ -3210,13 +3213,14 @@
  
  #ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE
  struct bcma_drv_pci_host {
-@@ -217,7 +240,8 @@ struct bcma_drv_pci {
+@@ -217,7 +240,9 @@ struct bcma_drv_pci {
  extern void __devinit bcma_core_pci_init(struct bcma_drv_pci *pc);
  extern int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc,
  				 struct bcma_device *core, bool enable);
 -extern void bcma_core_pci_extend_L1timer(struct bcma_drv_pci *pc, bool extend);
 +extern void bcma_core_pci_up(struct bcma_bus *bus);
 +extern void bcma_core_pci_down(struct bcma_bus *bus);
++extern void bcma_core_pci_power_save(struct bcma_bus *bus, bool up);
  
  extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev);
  extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev);

+ 17 - 13
target/linux/generic/patches-3.8/025-bcma_backport.patch

@@ -1769,13 +1769,14 @@
  
  #ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE
  struct bcma_drv_pci_host {
-@@ -217,7 +240,8 @@ struct bcma_drv_pci {
+@@ -217,7 +240,9 @@ struct bcma_drv_pci {
  extern void bcma_core_pci_init(struct bcma_drv_pci *pc);
  extern int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc,
  				 struct bcma_device *core, bool enable);
 -extern void bcma_core_pci_extend_L1timer(struct bcma_drv_pci *pc, bool extend);
 +extern void bcma_core_pci_up(struct bcma_bus *bus);
 +extern void bcma_core_pci_down(struct bcma_bus *bus);
++extern void bcma_core_pci_power_save(struct bcma_bus *bus, bool up);
  
  extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev);
  extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev);
@@ -1832,14 +1833,20 @@
  /**************************************************
   * Workarounds.
   **************************************************/
-@@ -203,6 +210,25 @@ static void bcma_core_pci_config_fixup(s
- 	}
+@@ -229,6 +236,32 @@ void bcma_core_pci_init(struct bcma_drv_
+ 		bcma_core_pci_clientmode_init(pc);
  }
  
-+static void bcma_core_pci_power_save(struct bcma_drv_pci *pc, bool up)
++void bcma_core_pci_power_save(struct bcma_bus *bus, bool up)
 +{
++	struct bcma_drv_pci *pc;
 +	u16 data;
 +
++	if (bus->hosttype != BCMA_HOSTTYPE_PCI)
++		return;
++
++	pc = &bus->drv_pci[0];
++
 +	if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) {
 +		data = up ? 0x74 : 0x7C;
 +		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
@@ -1854,11 +1861,12 @@
 +					 BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
 +	}
 +}
++EXPORT_SYMBOL_GPL(bcma_core_pci_power_save);
 +
- /**************************************************
-  * Init.
-  **************************************************/
-@@ -262,7 +288,7 @@ out:
+ int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core,
+ 			  bool enable)
+ {
+@@ -262,7 +295,7 @@ out:
  }
  EXPORT_SYMBOL_GPL(bcma_core_pci_irq_ctl);
  
@@ -1867,7 +1875,7 @@
  {
  	u32 w;
  
-@@ -274,4 +300,33 @@ void bcma_core_pci_extend_L1timer(struct
+@@ -274,4 +307,29 @@ void bcma_core_pci_extend_L1timer(struct
  	bcma_pcie_write(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG, w);
  	bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG);
  }
@@ -1882,8 +1890,6 @@
 +
 +	pc = &bus->drv_pci[0];
 +
-+	bcma_core_pci_power_save(pc, true);
-+
 +	bcma_core_pci_extend_L1timer(pc, true);
 +}
 +EXPORT_SYMBOL_GPL(bcma_core_pci_up);
@@ -1898,8 +1904,6 @@
 +	pc = &bus->drv_pci[0];
 +
 +	bcma_core_pci_extend_L1timer(pc, false);
-+
-+	bcma_core_pci_power_save(pc, false);
 +}
 +EXPORT_SYMBOL_GPL(bcma_core_pci_down);
 --- a/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c

+ 17 - 13
target/linux/generic/patches-3.9/025-bcma_backport.patch

@@ -1092,14 +1092,20 @@
  /**************************************************
   * Workarounds.
   **************************************************/
-@@ -203,6 +210,25 @@ static void bcma_core_pci_config_fixup(s
- 	}
+@@ -229,6 +236,32 @@ void bcma_core_pci_init(struct bcma_drv_
+ 		bcma_core_pci_clientmode_init(pc);
  }
  
-+static void bcma_core_pci_power_save(struct bcma_drv_pci *pc, bool up)
++void bcma_core_pci_power_save(struct bcma_bus *bus, bool up)
 +{
++	struct bcma_drv_pci *pc;
 +	u16 data;
 +
++	if (bus->hosttype != BCMA_HOSTTYPE_PCI)
++		return;
++
++	pc = &bus->drv_pci[0];
++
 +	if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) {
 +		data = up ? 0x74 : 0x7C;
 +		bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1,
@@ -1114,11 +1120,12 @@
 +					 BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data);
 +	}
 +}
++EXPORT_SYMBOL_GPL(bcma_core_pci_power_save);
 +
- /**************************************************
-  * Init.
-  **************************************************/
-@@ -262,7 +288,7 @@ out:
+ int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core,
+ 			  bool enable)
+ {
+@@ -262,7 +295,7 @@ out:
  }
  EXPORT_SYMBOL_GPL(bcma_core_pci_irq_ctl);
  
@@ -1127,7 +1134,7 @@
  {
  	u32 w;
  
-@@ -274,4 +300,33 @@ void bcma_core_pci_extend_L1timer(struct
+@@ -274,4 +307,29 @@ void bcma_core_pci_extend_L1timer(struct
  	bcma_pcie_write(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG, w);
  	bcma_pcie_read(pc, BCMA_CORE_PCI_DLLP_PMTHRESHREG);
  }
@@ -1142,8 +1149,6 @@
 +
 +	pc = &bus->drv_pci[0];
 +
-+	bcma_core_pci_power_save(pc, true);
-+
 +	bcma_core_pci_extend_L1timer(pc, true);
 +}
 +EXPORT_SYMBOL_GPL(bcma_core_pci_up);
@@ -1158,8 +1163,6 @@
 +	pc = &bus->drv_pci[0];
 +
 +	bcma_core_pci_extend_L1timer(pc, false);
-+
-+	bcma_core_pci_power_save(pc, false);
 +}
 +EXPORT_SYMBOL_GPL(bcma_core_pci_down);
 --- a/drivers/bcma/driver_pci_host.c
@@ -1218,13 +1221,14 @@
  
  #ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE
  struct bcma_drv_pci_host {
-@@ -219,7 +240,8 @@ struct bcma_drv_pci {
+@@ -219,7 +240,9 @@ struct bcma_drv_pci {
  extern void bcma_core_pci_init(struct bcma_drv_pci *pc);
  extern int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc,
  				 struct bcma_device *core, bool enable);
 -extern void bcma_core_pci_extend_L1timer(struct bcma_drv_pci *pc, bool extend);
 +extern void bcma_core_pci_up(struct bcma_bus *bus);
 +extern void bcma_core_pci_down(struct bcma_bus *bus);
++extern void bcma_core_pci_power_save(struct bcma_bus *bus, bool up);
  
  extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev);
  extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev);