sandbox: Support changing the LCD colour depth

Add a new device-tree property to control the colour depth. At present we
support 16bpp and 32bpp.

While we are here, update the code to use livetree.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Anatolij Gustschin <agust@denx.de>
This commit is contained in:
Simon Glass 2020-02-03 07:36:14 -07:00
parent 6be88c7282
commit a466db5adb
3 changed files with 9 additions and 6 deletions

View file

@ -83,6 +83,7 @@
compatible = "sandbox,lcd-sdl"; compatible = "sandbox,lcd-sdl";
xres = <1366>; xres = <1366>;
yres = <768>; yres = <768>;
log2-depth = <5>;
}; };
leds { leds {

View file

@ -2,7 +2,10 @@ Sandbox LCD
=========== ===========
This uses the displaymode.txt binding except that only xres and yres are This uses the displaymode.txt binding except that only xres and yres are
required properties. required properties. Also an additional optional property is defined:
log2-depth: Log base 2 of the U-Boot display buffer depth (4=16bpp, 5=32bpp).
If not provided, a value of 4 is used.
Example: Example:
@ -10,4 +13,5 @@ Example:
compatible = "sandbox,lcd-sdl"; compatible = "sandbox,lcd-sdl";
xres = <800>; xres = <800>;
yres = <600>; yres = <600>;
log2-depth = <5>;
}; };

View file

@ -47,13 +47,11 @@ static int sandbox_sdl_bind(struct udevice *dev)
{ {
struct video_uc_platdata *uc_plat = dev_get_uclass_platdata(dev); struct video_uc_platdata *uc_plat = dev_get_uclass_platdata(dev);
struct sandbox_sdl_plat *plat = dev_get_platdata(dev); struct sandbox_sdl_plat *plat = dev_get_platdata(dev);
const void *blob = gd->fdt_blob;
int node = dev_of_offset(dev);
int ret = 0; int ret = 0;
plat->xres = fdtdec_get_int(blob, node, "xres", LCD_MAX_WIDTH); plat->xres = dev_read_u32_default(dev, "xres", LCD_MAX_WIDTH);
plat->yres = fdtdec_get_int(blob, node, "yres", LCD_MAX_HEIGHT); plat->yres = dev_read_u32_default(dev, "yres", LCD_MAX_HEIGHT);
plat->bpix = VIDEO_BPP16; plat->bpix = dev_read_u32_default(dev, "log2-depth", VIDEO_BPP16);
uc_plat->size = plat->xres * plat->yres * (1 << plat->bpix) / 8; uc_plat->size = plat->xres * plat->yres * (1 << plat->bpix) / 8;
debug("%s: Frame buffer size %x\n", __func__, uc_plat->size); debug("%s: Frame buffer size %x\n", __func__, uc_plat->size);