|
@@ -1189,3 +1189,32 @@ int fdt_alloc_phandle(void *blob)
|
|
|
|
|
|
return phandle + 1;
|
|
|
}
|
|
|
+
|
|
|
+#if defined(CONFIG_VIDEO)
|
|
|
+int fdt_add_edid(void *blob, const char *compat, unsigned char *edid_buf)
|
|
|
+{
|
|
|
+ int noff;
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ noff = fdt_node_offset_by_compatible(blob, -1, compat);
|
|
|
+ if (noff != -FDT_ERR_NOTFOUND) {
|
|
|
+ debug("%s: %s\n", fdt_get_name(blob, noff, 0), compat);
|
|
|
+add_edid:
|
|
|
+ ret = fdt_setprop(blob, noff, "edid", edid_buf, 128);
|
|
|
+ if (ret == -FDT_ERR_NOSPACE) {
|
|
|
+ ret = fdt_increase_size(blob, 512);
|
|
|
+ if (!ret)
|
|
|
+ goto add_edid;
|
|
|
+ else
|
|
|
+ goto err_size;
|
|
|
+ } else if (ret < 0) {
|
|
|
+ printf("Can't add property: %s\n", fdt_strerror(ret));
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+err_size:
|
|
|
+ printf("Can't increase blob size: %s\n", fdt_strerror(ret));
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+#endif
|