- n = fdt_getprop(blob, off, "panel-name", &len);
- if (!n) {
- n = fdt_get_name(blob, off, NULL);
- if (strcasecmp(n, name) == 0) {
- break;
- }
- } else {
- int found = 0;
-
- for (endp = n + len; n < endp; n += strlen(n) + 1) {
- debug("Checking panel-name '%s'\n", n);
- if (strcasecmp(n, name) == 0) {
- debug("Using node %s @ %04x\n",
- fdt_get_name(blob, off, NULL), off);
- found = 1;
- break;
- }
- }
- if (found)
- break;
- }
+ off = fdt_path_offset(blob, "display/display-timings");
+ off = karo_fdt_find_panel(blob, off, name);
+ panel_off = fdt_path_offset(blob, panel_name);
+ if (panel_off > 0) {
+ char *pn;
+
+ name = fdt_getprop(blob, off, "u-boot,panel-name",
+ NULL);
+ if (!name)
+ return 0;
+ pn = strdup(name);
+ if (!pn)
+ return -ENOMEM;
+ debug("%s@%d: Updating 'compatible' property of '%s' from '%s' to '%s'\n",
+ __func__, __LINE__, fdt_get_name(blob, panel_off, NULL),
+ (char *)fdt_getprop(blob, panel_off, "compatible", NULL),
+ pn);
+
+ ret = fdt_setprop_string(blob, panel_off, "compatible",
+ pn);
+ if (ret)
+ printf("Failed to set 'compatible' property of node '%s': %s\n",
+ fdt_get_name(blob, panel_off, NULL),
+ fdt_strerror(off));
+ free(pn);