mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-01 08:59:33 +00:00
fdt: add new fdt_fixup_display function to configure display
Add 'fdt_fixup_display' function to fixup device-tree native-mode property of display-timings node to select timings for a specific display. This is useful if a device-tree has configurations for multiple display timings for undetectable displays. see kernel Documentation/devicetree/bindings/video/display-timing.txt Signed-off-by: Tim Harvey <tharvey@gateworks.com> Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
78c5a18087
commit
08daa258e6
2 changed files with 42 additions and 0 deletions
|
@ -1560,3 +1560,32 @@ 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 -FDT_ERR_NOTFOUND;
|
||||
|
||||
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 h = fdt_get_phandle(blob, off);
|
||||
debug("%s:0x%x\n", fdt_get_name(blob, off, NULL),
|
||||
fdt32_to_cpu(h));
|
||||
if (strcasecmp(fdt_get_name(blob, off, NULL), display) == 0)
|
||||
return fdt_setprop_u32(blob, toff, "native-mode", h);
|
||||
}
|
||||
return toff;
|
||||
}
|
||||
|
|
|
@ -47,6 +47,19 @@ 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);
|
||||
|
||||
/**
|
||||
* Update native-mode property of display-timings node to the phandle
|
||||
* of the timings matching a display by name (case insensitive).
|
||||
*
|
||||
* see kernel Documentation/devicetree/bindings/video/display-timing.txt
|
||||
*
|
||||
* @param blob FDT blob to update
|
||||
* @param path path within dt
|
||||
* @param display name of display timing to match
|
||||
* @return 0 if ok, or -FDT_ERR_... on error
|
||||
*/
|
||||
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);
|
||||
#else
|
||||
|
|
Loading…
Reference in a new issue