[U-Boot] About convert to LIVE DT
Kever Yang
kever.yang at rock-chips.com
Tue Feb 13 08:04:51 UTC 2018
Simon,
On 02/12/2018 10:35 PM, Simon Glass wrote:
> Hi Kever,
>
> On 4 February 2018 at 18:00, Kever Yang <kever.yang at rock-chips.com> wrote:
>>
>> On 02/04/2018 09:40 PM, Simon Glass wrote:
>>> Hi Kever,
>>>
>>> On 4 February 2018 at 00:44, Kever Yang <kever.yang at rock-chips.com> wrote:
>>>> Hi Simon, Philipp,
>>>>
>>>> When I try to convert to live dt, I fount there are many APIs work
>>>> in fdt are missing in live dt,
>>>>
>>>> do you have any suggestion to add these APIs in live dt quickly? I need:
>>>>
>>>> fdtdec_get_addr_size_auto_noparent
>>> dev_read_addr_size() - not having a parent doesn't happen with livetree
>>>
>>>> fdt_alloc_phandle
>>> We don't support changing the live tree yet.
>>>
>>>> fdt_device_is_available
>>> dev_read_enabled()
>>>
>>>> fdt_for_each_subnode
>>> dev_for_each_subnode()
>>>
>>>> fdt_getprop
>>> dev_read_prop()
>>>
>>>> fdt_getprop_u32_default_node
>>> This is an odd function. Can you first check that the property exists,
>>> and then use a dev_read_...() function to read it?
>>>
>>>> fdt_get_named_resource
>>> dev_read_resource_byname()
>>>
>>>> fdt_get_name
>>> dev_read_name() - although I see that the comment is wrong
>>>
>>>> fdt_get_path
>>> Not available but you can add it
>>>
>>>> fdt_get_phandle
>>> Why do you need this?
>> Most of the APIs are used in this file or other files in this folder,
>> https://github.com/rockchip-linux/u-boot/blob/release/drivers/video/drm/rockchip_display.c
>> It needs to handle quite complicated dts node for display system in
>> rockchip drm display driver(not upstream yet):
>> https://github.com/rockchip-linux/u-boot/blob/release/arch/arm/dts/rk3128.dtsi#L421
>> https://github.com/rockchip-linux/u-boot/blob/release/arch/arm/dts/rk3126-bnd-d708.dts#L114
> One difference I see with Linux is that U-Boot creates devices for all
> nodes automatically, provided that they have a compatible string and
> matching driver. This should simplify things in U-Boot.
>
> The supernode-at-depth function looks like it just takes the parent of
> the parent when an argument of -2 is used.
>
> The existing rockchip driver in U-Boot handles a similar binding,
> doesn't it? It has phandles and multiple nodes and subnodes.
Yes, but it does not able to migrate to support both live dt and fdt,
because there is no same api in live dt, and here is what I do locally
for live dt:
823 phandle = ofnode_read_u32_default(node, "connect",
-1);
824 if (phandle < 0)
{
825 printf("Warn: can't find connect node's
handle\n");
826
continue;
827
}
828 ep_node =
of_find_node_by_phandle(phandle);
829 if (!ofnode_valid(np_to_ofnode(ep_node)))
{
830 printf("Warn: can't find endpoint node from
phandle\n");
831
continue;
832
}
833 port_node =
of_get_parent(ep_node);
834 if (!ofnode_valid(np_to_ofnode(port_node)))
{
835 printf("Warn: can't find port node from
phandle\n");
836
continue;
837
}
838 vop_node =
of_get_parent(port_node);
839 if (!ofnode_valid(np_to_ofnode(vop_node)))
{
840 printf("Warn: can't find crtc node from
phandle\n");
841
continue;
842
}
843 ret =
uclass_get_device_by_ofnode(UCLASS_VIDEO_CRTC,
844
np_to_ofnode(vop_node),
845 &crtc_dev);
In usb phy, we have similar requirement, but only need find "-1" depth
parent.
Thanks,
- Kever
>
>> Thanks,
>> - Kever
>>>> fdt_node_depth
>>>> fdt_node_offset_by_phandle
>>>> fdt_node_offset_by_phandle_node
>>> uclass_get_device_by_phandle() or similar?
>>>
>>>> fdt_path_offset
>>> ofnode_path() although it does not return a device. Best avoided.
>>>
>>>> fdt_set_phandle
>>> You can't change the livtree at present.
>>>
>>>> fdt_stringlist_get
>>> dev_read_string_index()
>>>
>>>> fdt_stringlist_search
>>> dev_read_stringlist_search()
>>>
>>>> fdt_subnode_offset
>>> Why do you want that?
>>>
>>>> fdt_supernode_atdepth_offset
>>> This should be found by scanning, generally using separate drivers for
>>> each DT node.
>>>
>>> If you like you could send a patch with the info above, to
>>> doc/driver-model/livetree.txt to help others.
> Regards,
> Simon
>
More information about the U-Boot
mailing list