diff options
author | Tom Rini <trini@ti.com> | 2015-02-10 10:41:54 -0500 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2015-02-10 10:41:54 -0500 |
commit | 0dac731d1932027f4f813ec7aede35d5e30dec0e (patch) | |
tree | 522a20ea29730f0b5be03c8ced3b16a37fc165fe /common/lcd_simplefb.c | |
parent | 307367eaffc8638e10ba1784fc66bfe623ae79e2 (diff) | |
parent | 7bf71d1f55d31a81ade8dd0fc72f06e4672689d0 (diff) | |
download | u-boot-imx-0dac731d1932027f4f813ec7aede35d5e30dec0e.zip u-boot-imx-0dac731d1932027f4f813ec7aede35d5e30dec0e.tar.gz u-boot-imx-0dac731d1932027f4f813ec7aede35d5e30dec0e.tar.bz2 |
Merge branch 'master' of git://git.denx.de/u-boot-video
Conflicts:
include/splash.h
Signed-off-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'common/lcd_simplefb.c')
-rw-r--r-- | common/lcd_simplefb.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/common/lcd_simplefb.c b/common/lcd_simplefb.c new file mode 100644 index 0000000..8db2add --- /dev/null +++ b/common/lcd_simplefb.c @@ -0,0 +1,59 @@ +/* + * Simplefb device tree support + * + * (C) Copyright 2015 + * Stephen Warren <swarren@wwwdotorg.org> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <lcd.h> +#include <fdt_support.h> +#include <libfdt.h> + +DECLARE_GLOBAL_DATA_PTR; + +static int lcd_dt_simplefb_configure_node(void *blob, int off) +{ +#if LCD_BPP == LCD_COLOR16 + int vl_col = lcd_get_pixel_width(); + int vl_row = lcd_get_pixel_height(); + return fdt_setup_simplefb_node(blob, off, gd->fb_base, vl_col, vl_row, + vl_col * 2, "r5g6b5"); +#else + return -1; +#endif +} + +int lcd_dt_simplefb_add_node(void *blob) +{ + static const char compat[] = "simple-framebuffer"; + static const char disabled[] = "disabled"; + int off, ret; + + off = fdt_add_subnode(blob, 0, "framebuffer"); + if (off < 0) + return -1; + + ret = fdt_setprop(blob, off, "status", disabled, sizeof(disabled)); + if (ret < 0) + return -1; + + ret = fdt_setprop(blob, off, "compatible", compat, sizeof(compat)); + if (ret < 0) + return -1; + + return lcd_dt_simplefb_configure_node(blob, off); +} + +int lcd_dt_simplefb_enable_existing_node(void *blob) +{ + int off; + + off = fdt_node_offset_by_compatible(blob, -1, "simple-framebuffer"); + if (off < 0) + return -1; + + return lcd_dt_simplefb_configure_node(blob, off); +} |