[PATCH] bcma: populate bus DT subnodes as platform_device-s

Hauke Mehrtens hauke at hauke-m.de
Sun Aug 2 11:03:46 PDT 2015


On 06/28/2015 05:17 PM, Rafał Miłecki wrote:
> Our bus should allow defining children nodes as we may want to specify
> devices attached to the bus. This is required e.g. to specify NAND or
> ChipCommon cores and use bus's address and IRQ mappings.
> 
> Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
> ---
>  drivers/bcma/main.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c
> index 9635f10..5912847 100644
> --- a/drivers/bcma/main.c
> +++ b/drivers/bcma/main.c
> @@ -12,6 +12,7 @@
>  #include <linux/slab.h>
>  #include <linux/of_address.h>
>  #include <linux/of_irq.h>
> +#include <linux/of_platform.h>
>  
>  MODULE_DESCRIPTION("Broadcom's specific AMBA driver");
>  MODULE_LICENSE("GPL");
> @@ -409,6 +410,13 @@ int bcma_bus_register(struct bcma_bus *bus)
>  		bcma_core_pci_early_init(&bus->drv_pci[0]);
>  	}
>  
> +	if (bus->host_pdev) {

Here is an other problem. So many bugs in this line. ;-)
host_pdev is in a union so this is also true for PCIe devices, but then
the offset of the dev structure probably is wrong. You should check for
the hosttype. I will send a patch.

> +		struct device *dev = &bus->host_pdev->dev;
> +
> +		of_platform_populate(dev->of_node, of_default_bus_match_table,
> +				     NULL, dev);
> +	}
> +
>  	/* Cores providing flash access go before SPROM init */
>  	list_for_each_entry(core, &bus->cores, list) {
>  		if (bcma_is_core_needed_early(core->id.id))
> 




More information about the linux-arm-kernel mailing list