[PATCH 3/3] corenet: Switch to of_platform_default_populate

Scott Wood scott.wood at nxp.com
Tue Oct 25 08:43:01 AEDT 2016


On 10/23/2016 06:48 PM, Andy Fleming wrote:
> Many of the embedded powerpc boards use an array of device names
> to register the devices from the device tree. Instead, we can use
> of_platform_default_populate(), which will iterate through all the root nodes and register them.
> 
> Signed-off-by: Andy Fleming <afleming at gmail.com>
> ---
> This is necessary to enable the gpio power/reset pins on the Cyrus board.
> 
> I have confirmed that the PCI devices are registered and that the power/reset
> drivers are registered (and functional). I also tested USB, and saw the
> onboard MMC card report in, so some of the SoC devices are definitely there.
> 
> If this doesn't break the other corenet boards, I'd be happy to make the
> same change for the other powerpc boards.
> 
>  arch/powerpc/platforms/85xx/corenet_generic.c | 49 +--------------------------
>  1 file changed, 1 insertion(+), 48 deletions(-)
> 
> diff --git a/arch/powerpc/platforms/85xx/corenet_generic.c b/arch/powerpc/platforms/85xx/corenet_generic.c
> index 1179115..6347f20 100644
> --- a/arch/powerpc/platforms/85xx/corenet_generic.c
> +++ b/arch/powerpc/platforms/85xx/corenet_generic.c
> @@ -83,56 +83,9 @@ void __init corenet_gen_setup_arch(void)
>  	mpc85xx_qe_init();
>  }
>  
> -static const struct of_device_id of_device_ids[] = {
> -	{
> -		.compatible	= "simple-bus"
> -	},
> -	{
> -		.compatible	= "mdio-mux-gpio"
> -	},
> -	{
> -		.compatible	= "fsl,fpga-ngpixis"
> -	},
> -	{
> -		.compatible	= "fsl,fpga-qixis"
> -	},
> -	{
> -		.compatible	= "fsl,srio",
> -	},
> -	{
> -		.compatible	= "fsl,p4080-pcie",
> -	},
> -	{
> -		.compatible	= "fsl,qoriq-pcie-v2.2",
> -	},
> -	{
> -		.compatible	= "fsl,qoriq-pcie-v2.3",
> -	},
> -	{
> -		.compatible	= "fsl,qoriq-pcie-v2.4",
> -	},
> -	{
> -		.compatible	= "fsl,qoriq-pcie-v3.0",
> -	},
> -	{
> -		.compatible	= "fsl,qe",
> -	},
> -	{
> -		.compatible    = "fsl,fman",
> -	},
> -	/* The following two are for the Freescale hypervisor */
> -	{
> -		.name		= "hypervisor",
> -	},
> -	{
> -		.name		= "handles",
> -	},
> -	{}
> -};
> -
>  int __init corenet_gen_publish_devices(void)
>  {
> -	return of_platform_bus_probe(NULL, of_device_ids, NULL);
> +	return of_platform_default_populate(NULL, NULL, NULL);
>  }

I think we still need to specify some of these nodes.  Switching from
probe to populate will take care of probing device nodes under root
without listing each one, but it won't treat those nodes as buses unless
they have "simple-bus" or otherwise match the probe list.

-Scott



More information about the Linuxppc-dev mailing list