summaryrefslogtreecommitdiff
path: root/common/lcd_simplefb.c
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2015-02-10 10:41:54 -0500
committerTom Rini <trini@ti.com>2015-02-10 10:41:54 -0500
commit0dac731d1932027f4f813ec7aede35d5e30dec0e (patch)
tree522a20ea29730f0b5be03c8ced3b16a37fc165fe /common/lcd_simplefb.c
parent307367eaffc8638e10ba1784fc66bfe623ae79e2 (diff)
parent7bf71d1f55d31a81ade8dd0fc72f06e4672689d0 (diff)
downloadu-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.c59
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);
+}