Re: [PATCH] of: Overlay manager

From: John Stultz
Date: Thu Sep 08 2016 - 19:36:49 EST


On Thu, Sep 8, 2016 at 4:33 PM, Frank Rowand <frowand.list@xxxxxxxxx> wrote:
> On 09/08/16 14:15, Dmitry Shmidt wrote:
>> On Thu, Sep 8, 2016 at 2:08 PM, Frank Rowand <frowand.list@xxxxxxxxx> wrote:
>>> On 09/08/16 13:35, dimitrysh@xxxxxxxxxx wrote:
>>>> From e14eb45fa5a93c1bff8a6dfe7b6756e4ad72c579 Mon Sep 17 00:00:00 2001
>>>> From: Dmitry Shmidt <dimitrysh@xxxxxxxxxx>
>>>> Date: Wed, 24 Aug 2016 13:25:52 -0700
>>>> Subject: [PATCH] of: Overlay manager
>>>>
>>>> Overlay manager processes DT entries on demand.
>>>> It is chosen by CONFIG_OF_OVERLAY_MGR option.
>>>> These entries can be chosen from kernel command line:
>>>> overlay_mgr.overlay_dt_entry=hardware_cfg_0
>>>> DT contains main overlay_mng entry with all possible
>>>> HW config setups. And then kernel command line option
>>>> will allow to choose between them.
>>>>
>>>> Kernel DT entry:
>>>> overlay_mgr {
>>>> compatible = "linux,overlay_manager";
>>>> hardware_cfg_0 {
>>>> overlay@0 {
>>>> fragment@0 {
>>>> __overlay__ {
>>>> };
>>>> };
>>>> };
>>>> overlay@1 {
>>>> fragment@0 {
>>>> __overlay__ {
>>>> };
>>>> };
>>>> };
>>>> };
>>>> };
>>>
>>> What problem(s) are you trying to solve with this?
>>
>> Currently the Linux kernel doesn't provide a way for boot time
>> selection of different possible board configurations, when the board
>> peripherals are specified via Device Tree.
>>
>> Thus, this patch provides a driver which takes a boot option to
>> apply pre-defined device-tree overlay fragments on bootup. This
>> allows a single kernel/devicetree to be able to support a number of
>> different configurations by only changing a boot argument.
>>
>>> What is the use case?
>>
>> It is usually useful for development board when you can use
>> different peripherals. For example you want to use special
>> LCD panel. Using it will go on account of other stuff like GPIOs,
>> so you don't want it all the time. And it is not convenient to
>> apply new patches and to recompile the kernel. And this code
>> allows to choose LCD panel configuration from command line.
>
> In other words, you want to be able to make configuration choices
> at boot time.
>
> The hardware is not different between boots, but you may want to use
> it in different ways, with a boot time selection.

The hardware may actually be different between boots, as different
mezzanine or shields might be attached.

The idea is to have a single kernel/dts that can function with an
array of plug-able (but unfortunately not probe-able attachments).

thanks
-john