From 8fae77fc9bb783fcaeb58d94e1ce05ef41fe193c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Tue, 21 Mar 2017 09:26:02 +0100
Subject: [PATCH] kernel: update bcma including recent changes for 4.12
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This adds support for describing GPIO chips placed on PCIe cards. Thanks
to this we get working 2.4 GHz LED on Tenda AC9.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 .../905-BCM53573-minor-hacks.patch            |  4 +--
 .../905-BCM53573-minor-hacks.patch            |  4 +--
 .../patches-4.4/026-bcma-from-4.12.patch      | 35 +++++++++++++++++++
 .../patches-4.9/072-bcma-from-4.12.patch      | 35 +++++++++++++++++++
 4 files changed, 74 insertions(+), 4 deletions(-)

diff --git a/target/linux/bcm53xx/patches-4.4/905-BCM53573-minor-hacks.patch b/target/linux/bcm53xx/patches-4.4/905-BCM53573-minor-hacks.patch
index e48d3aa678..52a32a00c2 100644
--- a/target/linux/bcm53xx/patches-4.4/905-BCM53573-minor-hacks.patch
+++ b/target/linux/bcm53xx/patches-4.4/905-BCM53573-minor-hacks.patch
@@ -29,7 +29,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
  		#size-cells = <1>;
 --- a/drivers/bcma/main.c
 +++ b/drivers/bcma/main.c
-@@ -352,14 +352,6 @@ static int bcma_register_devices(struct
+@@ -348,14 +348,6 @@ static int bcma_register_devices(struct
  	}
  #endif
  
@@ -44,7 +44,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
  #ifdef CONFIG_BCMA_NFLASH
  	if (bus->drv_cc.nflash.present) {
  		err = platform_device_register(&bcma_nflash_dev);
-@@ -440,6 +432,14 @@ int bcma_bus_register(struct bcma_bus *b
+@@ -436,6 +428,14 @@ int bcma_bus_register(struct bcma_bus *b
  			bcma_register_core(bus, core);
  	}
  
diff --git a/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch b/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
index fad36a6655..a2f15e56b2 100644
--- a/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
+++ b/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
@@ -29,7 +29,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
  		#size-cells = <1>;
 --- a/drivers/bcma/main.c
 +++ b/drivers/bcma/main.c
-@@ -352,14 +352,6 @@ static int bcma_register_devices(struct
+@@ -348,14 +348,6 @@ static int bcma_register_devices(struct
  	}
  #endif
  
@@ -44,7 +44,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
  #ifdef CONFIG_BCMA_NFLASH
  	if (bus->drv_cc.nflash.present) {
  		err = platform_device_register(&bcma_nflash_dev);
-@@ -440,6 +432,14 @@ int bcma_bus_register(struct bcma_bus *b
+@@ -436,6 +428,14 @@ int bcma_bus_register(struct bcma_bus *b
  			bcma_register_core(bus, core);
  	}
  
diff --git a/target/linux/generic/patches-4.4/026-bcma-from-4.12.patch b/target/linux/generic/patches-4.4/026-bcma-from-4.12.patch
index ab8a212940..bd7d643cbb 100644
--- a/target/linux/generic/patches-4.4/026-bcma-from-4.12.patch
+++ b/target/linux/generic/patches-4.4/026-bcma-from-4.12.patch
@@ -10,3 +10,38 @@
  #endif
  	switch (bus->chipinfo.id) {
  	case BCMA_CHIP_ID_BCM4707:
+--- a/drivers/bcma/main.c
++++ b/drivers/bcma/main.c
+@@ -201,9 +201,6 @@ static void bcma_of_fill_device(struct d
+ {
+ 	struct device_node *node;
+ 
+-	if (!IS_ENABLED(CONFIG_OF_IRQ))
+-		return;
+-
+ 	node = bcma_of_find_child_device(parent, core);
+ 	if (node)
+ 		core->dev.of_node = node;
+@@ -242,19 +239,18 @@ void bcma_prepare_core(struct bcma_bus *
+ 	core->dev.release = bcma_release_core_dev;
+ 	core->dev.bus = &bcma_bus_type;
+ 	dev_set_name(&core->dev, "bcma%d:%d", bus->num, core->core_index);
++	core->dev.parent = bcma_bus_get_host_dev(bus);
++	if (core->dev.parent)
++		bcma_of_fill_device(core->dev.parent, core);
+ 
+ 	switch (bus->hosttype) {
+ 	case BCMA_HOSTTYPE_PCI:
+-		core->dev.parent = &bus->host_pci->dev;
+ 		core->dma_dev = &bus->host_pci->dev;
+ 		core->irq = bus->host_pci->irq;
+ 		break;
+ 	case BCMA_HOSTTYPE_SOC:
+ 		if (IS_ENABLED(CONFIG_OF) && bus->host_pdev) {
+ 			core->dma_dev = &bus->host_pdev->dev;
+-			core->dev.parent = &bus->host_pdev->dev;
+-			if (core->dev.parent)
+-				bcma_of_fill_device(core->dev.parent, core);
+ 		} else {
+ 			core->dev.dma_mask = &core->dev.coherent_dma_mask;
+ 			core->dma_dev = &core->dev;
diff --git a/target/linux/generic/patches-4.9/072-bcma-from-4.12.patch b/target/linux/generic/patches-4.9/072-bcma-from-4.12.patch
index 1c3efea172..23f2656ab5 100644
--- a/target/linux/generic/patches-4.9/072-bcma-from-4.12.patch
+++ b/target/linux/generic/patches-4.9/072-bcma-from-4.12.patch
@@ -10,3 +10,38 @@
  #endif
  	switch (bus->chipinfo.id) {
  	case BCMA_CHIP_ID_BCM4707:
+--- a/drivers/bcma/main.c
++++ b/drivers/bcma/main.c
+@@ -201,9 +201,6 @@ static void bcma_of_fill_device(struct d
+ {
+ 	struct device_node *node;
+ 
+-	if (!IS_ENABLED(CONFIG_OF_IRQ))
+-		return;
+-
+ 	node = bcma_of_find_child_device(parent, core);
+ 	if (node)
+ 		core->dev.of_node = node;
+@@ -242,19 +239,18 @@ void bcma_prepare_core(struct bcma_bus *
+ 	core->dev.release = bcma_release_core_dev;
+ 	core->dev.bus = &bcma_bus_type;
+ 	dev_set_name(&core->dev, "bcma%d:%d", bus->num, core->core_index);
++	core->dev.parent = bcma_bus_get_host_dev(bus);
++	if (core->dev.parent)
++		bcma_of_fill_device(core->dev.parent, core);
+ 
+ 	switch (bus->hosttype) {
+ 	case BCMA_HOSTTYPE_PCI:
+-		core->dev.parent = &bus->host_pci->dev;
+ 		core->dma_dev = &bus->host_pci->dev;
+ 		core->irq = bus->host_pci->irq;
+ 		break;
+ 	case BCMA_HOSTTYPE_SOC:
+ 		if (IS_ENABLED(CONFIG_OF) && bus->host_pdev) {
+ 			core->dma_dev = &bus->host_pdev->dev;
+-			core->dev.parent = &bus->host_pdev->dev;
+-			if (core->dev.parent)
+-				bcma_of_fill_device(core->dev.parent, core);
+ 		} else {
+ 			core->dev.dma_mask = &core->dev.coherent_dma_mask;
+ 			core->dma_dev = &core->dev;
-- 
GitLab