123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- --- 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;
- @@ -633,8 +634,11 @@ static int bcma_device_probe(struct devi
- drv);
- int err = 0;
-
- + get_device(dev);
- if (adrv->probe)
- err = adrv->probe(core);
- + if (err)
- + put_device(dev);
-
- return err;
- }
- @@ -647,6 +651,7 @@ static int bcma_device_remove(struct dev
-
- if (adrv->remove)
- adrv->remove(core);
- + put_device(dev);
-
- return 0;
- }
|