[RFC] ARM: OMAP: Remove nodes dynamically at runtime

Jon Hunter jon-hunter at ti.com
Fri Jul 6 04:21:14 EST 2012


Hi Rob,

Thanks for the feedback. Some how our mail server appeared to filter out your
response!

> On 06/21/2012 06:50 PM, Jon Hunter wrote:
>> 
>> On 06/21/2012 02:15 PM, Jon Hunter wrote:
>>> Hi all,
>>>
>>> I am in the process of adding a device-tree binding for OMAP timers and
>>> I have encountered a scenario where ideally it would be useful to remove
>>> a device-tree node at runtime.
>>>
>>> The scenario is this ...
>>>
>>> 1. OMAP3 devices may or may not have security features enabled. Security
>>>    enabled devices are known as high-secure (HS) and devices without 
>>>    security are known as general purpose (GP).
>>> 2. For OMAP3 devices there are 12 general purpose timers available.
>>> 3. On secure devices the 12th timer is reserved for secure usage and so
>>>    cannot be used by the kernel, where as for a GP device it is available.
>>> 4. We can detect the OMAP device type, secure or GP, at runtime via an
>>>    on-chip register.
>>> 5. Today, when not using DT, we do not register the 12th timer as a linux
>>>    device if the device is secure.
>>>
>>> When migrating the timers to DT, I need a way to prevent this 12th timer
>>> from being registered as a device on a secure device. The options I have
>>> considered are ...
>>>
>>> a. Have separate a omap3.dtsi for GP and secure devices or place the
>>>    node for the 12th timer in a omap3-gp.dtsi that is only used for
>>>    boards with GP devices. The downside of this is that for boards
>>>    that can support GP and secure device (such as the omap3 SDP) we
>>>    require a separate dtb blob.
>
> That's certainly not ideal since you can distinguish which device you
> are on. Does omap have a custom register for this because determining
> secure vs. non-secure mode is a common problem without a standard way to
> determine it.

Yes, unfortunately the register I was referring to is a custom OMAP register. 

>>>
>>> b. Remove the timer node dynamically at runtime using the
>>>    of_node_detach() API. In this solution we define a "ti,timer-secure"
>>>    property that the 12th timer on omap3 devices would have and at
>>>    runtime if we are a secure omap3 device, we search the timer nodes
>>>    for any nodes with this property and remove them.
>>>
>>> Option B, seems to be the better option but requires me to enable 
>>> CONFIG_OF_DYNAMIC for all omap devices and I was not sure if there is any
>>> downside to doing so. Enabling this feature does not seem to add much code
>>> as far as I can tell, however, I  wanted to get some feedback before
>>> proposing this. Also if there are any other options I should consider then
>>> please let me know.
>>>
>
> I would wonder if of_node_get/put calls are all properly implemented.
> They don't really matter until OF_DYNAMIC is enabled, but it would
> affect all ARM DT platforms once we enable multi-platform support.
>
> Option C - have the bootloader set nodes status property to disabled.
> 
> Option D - same as C, but do it in the kernel with prom_add_property.

Option D, sounds good to me. I will look into this.

Thanks
Jon


More information about the devicetree-discuss mailing list