/branches/18.06.1/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; |