Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53b15ef3 authored by David S. Miller's avatar David S. Miller
Browse files

Merge tag 'master-2014-11-20' of...

Merge tag 'master-2014-11-20' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next



John W. Linville says:

====================
pull request: wireless-next 2014-11-21

Please pull this batch of updates intended for the 3.19 stream...

For the mac80211 bits, Johannes says:

"It has been a while since my last pull request, so we accumulated
another relatively large set of changes:
 * TDLS off-channel support set from Arik/Liad, with some support
   patches I did
 * custom regulatory fixes from Arik
 * minstrel VHT fix (and a small optimisation) from Felix
 * add back radiotap vendor namespace support (myself)
 * random MAC address scanning for cfg80211/mac80211/hwsim (myself)
 * CSA improvements (Luca)
 * WoWLAN Net Detect (wake on network found) support (Luca)
 * and lots of other smaller changes from many people"

For the Bluetooth bits, Johan says:

"Here's another set of patches for 3.19. Most of it is again fixes and
cleanups to ieee802154 related code from Alexander Aring. We've also got
better handling of hardware error events along with a proper API for HCI
drivers to notify the HCI core of such situations. There's also a minor
fix for mgmt events as well as a sparse warning fix. The code for
sending HCI commands synchronously also gets a fix where we might loose
the completion event in the case of very fast HW (particularly easily
reproducible with an emulated HCI device)."

And...

"Here's another bluetooth-next pull request for 3.19. We've got:

 - Various fixes, cleanups and improvements to ieee802154/mac802154
 - Support for a Broadcom BCM20702A1 variant
 - Lots of lockdep fixes
 - Fixed handling of LE CoC errors that should trigger SMP"

For the Atheros bits, Kalle says:

"One ath6kl patch and rest for ath10k, but nothing really major which
stands out. Most notable:

o fix resume (Bartosz)

o firmware restart is now faster and more reliable (Michal)

o it's now possible to test hardware restart functionality without
  crashing the firmware using hw-restart parameter with
  simulate_fw_crash debugfs file (Michal)"

On top of that...both ath9k and mwifiex get their usual level of
updates.  Of note is the ath9k spectral scan work from Oleksij Rempel.

I also pulled from the wireless tree in order to avoid some merge issues.

Please let me know if there are problems!
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents b48c5ec5 9e6f3f47
Loading
Loading
Loading
Loading
+21 −0
Original line number Original line Diff line number Diff line
@@ -8,6 +8,11 @@ Required properties:


The cores on the AXI bus are automatically detected by bcma with the
The cores on the AXI bus are automatically detected by bcma with the
memory ranges they are using and they get registered afterwards.
memory ranges they are using and they get registered afterwards.
Automatic detection of the IRQ number is not working on
BCM47xx/BCM53xx ARM SoCs. To assign IRQ numbers to the cores, provide
them manually through device tree. Use an interrupt-map to specify the
IRQ used by the devices on the bus. The first address is just an index,
because we do not have any special register.


The top-level axi bus may contain children representing attached cores
The top-level axi bus may contain children representing attached cores
(devices). This is needed since some hardware details can't be auto
(devices). This is needed since some hardware details can't be auto
@@ -22,6 +27,22 @@ Example:
		ranges = <0x00000000 0x18000000 0x00100000>;
		ranges = <0x00000000 0x18000000 0x00100000>;
		#address-cells = <1>;
		#address-cells = <1>;
		#size-cells = <1>;
		#size-cells = <1>;
		#interrupt-cells = <1>;
		interrupt-map-mask = <0x000fffff 0xffff>;
		interrupt-map =
			/* Ethernet Controller 0 */
			<0x00024000 0 &gic GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,

			/* Ethernet Controller 1 */
			<0x00025000 0 &gic GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;

			/* PCIe Controller 0 */
			<0x00012000 0 &gic GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
			<0x00012000 1 &gic GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>,
			<0x00012000 2 &gic GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
			<0x00012000 3 &gic GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
			<0x00012000 4 &gic GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
			<0x00012000 5 &gic GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;


		chipcommon {
		chipcommon {
			reg = <0x00000000 0x1000>;
			reg = <0x00000000 0x1000>;
+1 −1
Original line number Original line Diff line number Diff line
@@ -339,7 +339,7 @@ void bcma_chipco_serial_init(struct bcma_drv_cc *cc)
		return;
		return;
	}
	}


	irq = bcma_core_irq(cc->core);
	irq = bcma_core_irq(cc->core, 0);


	/* Determine the registers of the UARTs */
	/* Determine the registers of the UARTs */
	cc->nr_serial_ports = (cc->capabilities & BCMA_CC_CAP_NRUART);
	cc->nr_serial_ports = (cc->capabilities & BCMA_CC_CAP_NRUART);
+2 −2
Original line number Original line Diff line number Diff line
@@ -152,7 +152,7 @@ static int bcma_gpio_irq_domain_init(struct bcma_drv_cc *cc)
					 handle_simple_irq);
					 handle_simple_irq);
	}
	}


	hwirq = bcma_core_irq(cc->core);
	hwirq = bcma_core_irq(cc->core, 0);
	err = request_irq(hwirq, bcma_gpio_irq_handler, IRQF_SHARED, "gpio",
	err = request_irq(hwirq, bcma_gpio_irq_handler, IRQF_SHARED, "gpio",
			  cc);
			  cc);
	if (err)
	if (err)
@@ -183,7 +183,7 @@ static void bcma_gpio_irq_domain_exit(struct bcma_drv_cc *cc)
		return;
		return;


	bcma_cc_mask32(cc, BCMA_CC_IRQMASK, ~BCMA_CC_IRQ_GPIO);
	bcma_cc_mask32(cc, BCMA_CC_IRQMASK, ~BCMA_CC_IRQ_GPIO);
	free_irq(bcma_core_irq(cc->core), cc);
	free_irq(bcma_core_irq(cc->core, 0), cc);
	for (gpio = 0; gpio < chip->ngpio; gpio++) {
	for (gpio = 0; gpio < chip->ngpio; gpio++) {
		int irq = irq_find_mapping(cc->irq_domain, gpio);
		int irq = irq_find_mapping(cc->irq_domain, gpio);


+2 −9
Original line number Original line Diff line number Diff line
@@ -115,7 +115,7 @@ static u32 bcma_core_mips_irqflag(struct bcma_device *dev)
 * If disabled, 5 is returned.
 * If disabled, 5 is returned.
 * If not supported, 6 is returned.
 * If not supported, 6 is returned.
 */
 */
static unsigned int bcma_core_mips_irq(struct bcma_device *dev)
unsigned int bcma_core_mips_irq(struct bcma_device *dev)
{
{
	struct bcma_device *mdev = dev->bus->drv_mips.core;
	struct bcma_device *mdev = dev->bus->drv_mips.core;
	u32 irqflag;
	u32 irqflag;
@@ -133,13 +133,6 @@ static unsigned int bcma_core_mips_irq(struct bcma_device *dev)
	return 5;
	return 5;
}
}


unsigned int bcma_core_irq(struct bcma_device *dev)
{
	unsigned int mips_irq = bcma_core_mips_irq(dev);
	return mips_irq <= 4 ? mips_irq + 2 : 0;
}
EXPORT_SYMBOL(bcma_core_irq);

static void bcma_core_mips_set_irq(struct bcma_device *dev, unsigned int irq)
static void bcma_core_mips_set_irq(struct bcma_device *dev, unsigned int irq)
{
{
	unsigned int oldirq = bcma_core_mips_irq(dev);
	unsigned int oldirq = bcma_core_mips_irq(dev);
@@ -423,7 +416,7 @@ void bcma_core_mips_init(struct bcma_drv_mips *mcore)
		break;
		break;
	default:
	default:
		list_for_each_entry(core, &bus->cores, list) {
		list_for_each_entry(core, &bus->cores, list) {
			core->irq = bcma_core_irq(core);
			core->irq = bcma_core_irq(core, 0);
		}
		}
		bcma_err(bus,
		bcma_err(bus,
			 "Unknown device (0x%x) found, can not configure IRQs\n",
			 "Unknown device (0x%x) found, can not configure IRQs\n",
+2 −2
Original line number Original line Diff line number Diff line
@@ -593,7 +593,7 @@ int bcma_core_pci_plat_dev_init(struct pci_dev *dev)
	pr_info("PCI: Fixing up device %s\n", pci_name(dev));
	pr_info("PCI: Fixing up device %s\n", pci_name(dev));


	/* Fix up interrupt lines */
	/* Fix up interrupt lines */
	dev->irq = bcma_core_irq(pc_host->pdev->core);
	dev->irq = bcma_core_irq(pc_host->pdev->core, 0);
	pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
	pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);


	readrq = pcie_get_readrq(dev);
	readrq = pcie_get_readrq(dev);
@@ -617,6 +617,6 @@ int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev)


	pc_host = container_of(dev->bus->ops, struct bcma_drv_pci_host,
	pc_host = container_of(dev->bus->ops, struct bcma_drv_pci_host,
			       pci_ops);
			       pci_ops);
	return bcma_core_irq(pc_host->pdev->core);
	return bcma_core_irq(pc_host->pdev->core, 0);
}
}
EXPORT_SYMBOL(bcma_core_pci_pcibios_map_irq);
EXPORT_SYMBOL(bcma_core_pci_pcibios_map_irq);
Loading