Add 'fdt_fixup_display' function to fixup device-tree for a specific display. This is useful if a device-tree has configurations for multiple display timings for undetectable displays.
Signed-off-by: Tim Harvey <thar...@gateworks.com> --- common/fdt_support.c | 31 +++++++++++++++++++++++++++++++ include/fdt_support.h | 1 + 2 files changed, 32 insertions(+) diff --git a/common/fdt_support.c b/common/fdt_support.c index 8266bca..60609e5 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -1560,3 +1560,34 @@ int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width, return 0; } + +/* + * Update native-mode in display-timings from display environment variable. + * The node to update are specified by path. + */ +int fdt_fixup_display(void *blob, const char *path, const char *display) +{ + int off, toff; + + if (!display || !path) + return -1; + + toff = fdt_path_offset(blob, path); + if (toff >= 0) + toff = fdt_subnode_offset(blob, toff, "display-timings"); + if (toff < 0) + return toff; + + for (off = fdt_first_subnode(blob, toff); + off >= 0; + off = fdt_next_subnode(blob, off)) { + uint32_t handle = fdt_get_phandle(blob, off); + debug("%s:0x%x\n", fdt_get_name(blob, off, NULL), + fdt32_to_cpu(handle)); + if (strcasecmp(fdt_get_name(blob, off, NULL), display) == 0) { + fdt_setprop_u32(blob, toff, "native-mode", handle); + break; + } + } + return toff; +} diff --git a/include/fdt_support.h b/include/fdt_support.h index ae5e8a3..98379d3 100644 --- a/include/fdt_support.h +++ b/include/fdt_support.h @@ -46,6 +46,7 @@ void fdt_fixup_ethernet(void *fdt); int fdt_find_and_setprop(void *fdt, const char *node, const char *prop, const void *val, int len, int create); void fdt_fixup_qe_firmware(void *fdt); +int fdt_fixup_display(void *blob, const char *path, const char *display); #if defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_MPH_USB) void fdt_fixup_dr_usb(void *blob, bd_t *bd); -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot