diff options
| -rw-r--r-- | common/fdt_support.c | 29 | ||||
| -rw-r--r-- | include/fdt_support.h | 1 | 
2 files changed, 30 insertions, 0 deletions
| diff --git a/common/fdt_support.c b/common/fdt_support.c index 0ed6e7729..9b65a8adf 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -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 diff --git a/include/fdt_support.h b/include/fdt_support.h index fd94929ce..deb5dda5c 100644 --- a/include/fdt_support.h +++ b/include/fdt_support.h @@ -87,6 +87,7 @@ u64 fdt_translate_address(void *blob, int node_offset, const u32 *in_addr);  int fdt_node_offset_by_compat_reg(void *blob, const char *compat,  					phys_addr_t compat_off);  int fdt_alloc_phandle(void *blob); +int fdt_add_edid(void *blob, const char *compat, unsigned char *buf);  #endif /* ifdef CONFIG_OF_LIBFDT */  #endif /* ifndef __FDT_SUPPORT_H */ |