aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/backport-4.9/070-bcma-from-4.11.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/backport-4.9/070-bcma-from-4.11.patch')
-rw-r--r--target/linux/generic/backport-4.9/070-bcma-from-4.11.patch85
1 files changed, 85 insertions, 0 deletions
diff --git a/target/linux/generic/backport-4.9/070-bcma-from-4.11.patch b/target/linux/generic/backport-4.9/070-bcma-from-4.11.patch
new file mode 100644
index 0000000000..a3b0321986
--- /dev/null
+++ b/target/linux/generic/backport-4.9/070-bcma-from-4.11.patch
@@ -0,0 +1,85 @@
+--- a/drivers/bcma/main.c
++++ b/drivers/bcma/main.c
+@@ -136,17 +136,17 @@ static bool bcma_is_core_needed_early(u1
+ return false;
+ }
+
+-static struct device_node *bcma_of_find_child_device(struct platform_device *parent,
++static struct device_node *bcma_of_find_child_device(struct device *parent,
+ struct bcma_device *core)
+ {
+ struct device_node *node;
+ u64 size;
+ const __be32 *reg;
+
+- if (!parent || !parent->dev.of_node)
++ if (!parent->of_node)
+ return NULL;
+
+- for_each_child_of_node(parent->dev.of_node, node) {
++ for_each_child_of_node(parent->of_node, node) {
+ reg = of_get_address(node, 0, &size, NULL);
+ if (!reg)
+ continue;
+@@ -156,7 +156,7 @@ static struct device_node *bcma_of_find_
+ return NULL;
+ }
+
+-static int bcma_of_irq_parse(struct platform_device *parent,
++static int bcma_of_irq_parse(struct device *parent,
+ struct bcma_device *core,
+ struct of_phandle_args *out_irq, int num)
+ {
+@@ -169,7 +169,7 @@ static int bcma_of_irq_parse(struct plat
+ return rc;
+ }
+
+- out_irq->np = parent->dev.of_node;
++ out_irq->np = parent->of_node;
+ out_irq->args_count = 1;
+ out_irq->args[0] = num;
+
+@@ -177,13 +177,13 @@ static int bcma_of_irq_parse(struct plat
+ return of_irq_parse_raw(laddr, out_irq);
+ }
+
+-static unsigned int bcma_of_get_irq(struct platform_device *parent,
++static unsigned int bcma_of_get_irq(struct device *parent,
+ struct bcma_device *core, int num)
+ {
+ struct of_phandle_args out_irq;
+ int ret;
+
+- if (!IS_ENABLED(CONFIG_OF_IRQ) || !parent || !parent->dev.of_node)
++ if (!IS_ENABLED(CONFIG_OF_IRQ) || !parent->of_node)
+ return 0;
+
+ ret = bcma_of_irq_parse(parent, core, &out_irq, num);
+@@ -196,7 +196,7 @@ static unsigned int bcma_of_get_irq(stru
+ return irq_create_of_mapping(&out_irq);
+ }
+
+-static void bcma_of_fill_device(struct platform_device *parent,
++static void bcma_of_fill_device(struct device *parent,
+ struct bcma_device *core)
+ {
+ struct device_node *node;
+@@ -227,7 +227,7 @@ unsigned int bcma_core_irq(struct bcma_d
+ return mips_irq <= 4 ? mips_irq + 2 : 0;
+ }
+ if (bus->host_pdev)
+- return bcma_of_get_irq(bus->host_pdev, core, num);
++ return bcma_of_get_irq(&bus->host_pdev->dev, core, num);
+ return 0;
+ case BCMA_HOSTTYPE_SDIO:
+ return 0;
+@@ -253,7 +253,8 @@ void bcma_prepare_core(struct bcma_bus *
+ if (IS_ENABLED(CONFIG_OF) && bus->host_pdev) {
+ core->dma_dev = &bus->host_pdev->dev;
+ core->dev.parent = &bus->host_pdev->dev;
+- bcma_of_fill_device(bus->host_pdev, core);
++ 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;