diff options
Diffstat (limited to 'common/fdt_support.c')
| -rw-r--r-- | common/fdt_support.c | 29 | 
1 files changed, 29 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 |