1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 00:32:04 +02:00
This commit is contained in:
Tom Rini
2014-11-25 11:09:48 -05:00
26 changed files with 1032 additions and 53 deletions

View File

@@ -1499,3 +1499,65 @@ int fdt_read_range(void *fdt, int node, int n, uint64_t *child_addr,
return 0;
}
/**
* fdt_setup_simplefb_node - Fill and enable a simplefb node
*
* @fdt: ptr to device tree
* @node: offset of the simplefb node
* @base_address: framebuffer base address
* @width: width in pixels
* @height: height in pixels
* @stride: bytes per line
* @format: pixel format string
*
* Convenience function to fill and enable a simplefb node.
*/
int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
u32 height, u32 stride, const char *format)
{
char name[32];
fdt32_t cells[4];
int i, addrc, sizec, ret;
of_bus_default_count_cells(fdt, fdt_parent_offset(fdt, node),
&addrc, &sizec);
i = 0;
if (addrc == 2)
cells[i++] = cpu_to_fdt32(base_address >> 32);
cells[i++] = cpu_to_fdt32(base_address);
if (sizec == 2)
cells[i++] = 0;
cells[i++] = cpu_to_fdt32(height * stride);
ret = fdt_setprop(fdt, node, "reg", cells, sizeof(cells[0]) * i);
if (ret < 0)
return ret;
snprintf(name, sizeof(name), "framebuffer@%llx", base_address);
ret = fdt_set_name(fdt, node, name);
if (ret < 0)
return ret;
ret = fdt_setprop_u32(fdt, node, "width", width);
if (ret < 0)
return ret;
ret = fdt_setprop_u32(fdt, node, "height", height);
if (ret < 0)
return ret;
ret = fdt_setprop_u32(fdt, node, "stride", stride);
if (ret < 0)
return ret;
ret = fdt_setprop_string(fdt, node, "format", format);
if (ret < 0)
return ret;
ret = fdt_setprop_string(fdt, node, "status", "okay");
if (ret < 0)
return ret;
return 0;
}