Hi. On 05/29/2012 01:44 PM, Eduardo Valentin wrote: > On Fri, May 25, 2012 at 02:30:44PM +0200, Cousson Benoit wrote: >> On 5/25/2012 10:25 AM, Eduardo Valentin wrote: >>> From: Kishon Vijay Abraham I<kishon@xxxxxx> >>> >>> Extracts the device data from hwmod database and create a platform device >>> using omap device build. >>> >>> The device build is done during postcore_initcall. >> Do you still need that since you are supporting only DT? >> The device will be built automatically in the DT case. > In fact this is not needed for DT only probing. Dropping this one. Yes, platform device(struct platform_device) will be built automatically, but omap device(struct omap_device) will not be built. Also when omap device is allocated(omap_device_alloc) hwmod_clocks are registered, but in case of ctrl_module_core device - no new clock are registered. So, is it fine to drop omap device and skip omap_device_build() call? BR, Konstantin Baydarov. > >> Regards, >> Benoit >> >>> Signed-off-by: Kishon Vijay Abraham I<kishon@xxxxxx> >>> Signed-off-by: Eduardo Valentin<eduardo.valentin@xxxxxx> >>> --- >>> arch/arm/mach-omap2/devices.c | 26 ++++++++++++++++++++++++++ >>> 1 files changed, 26 insertions(+), 0 deletions(-) >>> >>> diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c >>> index 152c266..9332673 100644 >>> --- a/arch/arm/mach-omap2/devices.c >>> +++ b/arch/arm/mach-omap2/devices.c >>> @@ -40,6 +40,32 @@ >>> #define L3_MODULES_MAX_LEN 12 >>> #define L3_MODULES 3 >>> >>> +static int omap_init_control(void) >>> +{ >>> + struct omap_hwmod *oh; >>> + struct platform_device *pdev; >>> + const char *oh_name, *name; >>> + >>> + oh_name = "ctrl_module_core"; >>> + name = "omap-control-core"; >>> + >>> + oh = omap_hwmod_lookup(oh_name); >>> + if (!oh) { >>> + pr_err("Could not lookup hwmod for %s\n", oh_name); >>> + return PTR_ERR(oh); >>> + } >>> + >>> + pdev = omap_device_build(name, -1, oh, NULL, 0, NULL, 0, true); >>> + if (IS_ERR(pdev)) { >>> + pr_err("Could not build omap_device for %s %s\n", >>> + name, oh_name); >>> + return PTR_ERR(pdev); >>> + } >>> + >>> + return 0; >>> +} >>> +postcore_initcall(omap_init_control); >>> + >>> static int __init omap3_l3_init(void) >>> { >>> struct omap_hwmod *oh;