Subject: [RFC PATCH 04/11] OMAP: Add early device for system control module

From: [email-masked] (Cousson, Benoit)
Date: Fri, 25 May 2012 14:32:41 +0200

On 5/25/2012 10:25 AM, Eduardo Valentin wrote:
> This is a way to add an early device for system control module.
> the code is also requesting for driver registration and probing.
> Done at early_initcall because at that time, ioremapping is possible.
>
> Signed-off-by: Eduardo Valentin<[email-masked]>
> ---
>   arch/arm/mach-omap2/devices.c |   29 +++++++++++++++++++++++++++++
>   1 files changed, 29 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
> index 9332673..58cc5c3 100644
> --- a/arch/arm/mach-omap2/devices.c
> +++ b/arch/arm/mach-omap2/devices.c
> @@ -40,6 +40,35 @@
>   #define L3_MODULES_MAX_LEN 12
>   #define L3_MODULES 3
>
> +static struct resource control_resources[] = {
> +	[0] = {
> +		.start	= 0x4a002000,
> +		.end	= 0x4a0027ff,
> +		.flags	= IORESOURCE_MEM,
> +	},
> +};

I guess you should be able to do use DT to build the early device as well.
It will avoid hard coding some physical address inside the devices.

Regards,
Benoit

> +static struct platform_device control_device = {
> +	.name		= "omap-control-core",
> +	.id		= 0,
> +	.resource	= control_resources,
> +	.num_resources	= ARRAY_SIZE(control_resources),
> +};
> +
> +static struct platform_device *early_devices[] __initdata = {
> +	&control_device,
> +};
> +
> +static int __init plat_early_device_setup(void)
> +{
> +	early_platform_add_devices(early_devices,
> +				   ARRAY_SIZE(early_devices));
> +	early_platform_driver_register_all("early_omap_control");
> +	early_platform_driver_probe("early_omap_control", 1, false);
> +
> +	return 0;
> +}
> +early_initcall(plat_early_device_setup);
> +
>   static int omap_init_control(void)
>   {
>   	struct omap_hwmod		*oh;