From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Date: Mon, 12 Feb 2018 07:35:08 -0700 Subject: [U-Boot] About convert to LIVE DT In-Reply-To: <2367025a-5978-d9ea-ca55-1a618b621e68@rock-chips.com> References: <8e7fdaaa-7096-fbbe-5388-2d784e23c78e@rock-chips.com> <2367025a-5978-d9ea-ca55-1a618b621e68@rock-chips.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Kever, On 4 February 2018 at 18:00, Kever Yang wrote: > > > On 02/04/2018 09:40 PM, Simon Glass wrote: >> Hi Kever, >> >> On 4 February 2018 at 00:44, Kever Yang 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. > > 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