[RFC PATCH 03/11] arm: omap: device: create a device for system control module
Valentin, Eduardo
eduardo.valentin at ti.com
Fri Jun 15 05:22:26 EDT 2012
Hello Konstantin,
Sorry for the delayed reply.
On Thu, Jun 14, 2012 at 4:50 PM, Konstantin Baydarov
<kbaidarov at dev.rtsoft.ru> wrote:
> 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 at ti.com>
>>>>
>>>> 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.
The platform_device will be built as well as the omap_device. There
are hooks at the platform_device creation that will proceed with the
omap_device deployment. Please check:
arch/arm/plat-omap/omap_device.c: _omap_device_notifier_call and
omap_device_build_from_dt
> 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?
As explained above, when booting with DT, you will get both, pdev and omap_dev.
>
> BR,
> Konstantin Baydarov.
All best,
Eduardo
>
>>
>>> Regards,
>>> Benoit
>>>
>>>> Signed-off-by: Kishon Vijay Abraham I<kishon at ti.com>
>>>> Signed-off-by: Eduardo Valentin<eduardo.valentin at ti.com>
>>>> ---
>>>> 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;
>
--
Eduardo Valentin
More information about the linux-arm-kernel
mailing list