summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2017-04-05 16:23:43 -0600
committerTom Rini <trini@konsulko.com>2017-05-09 20:20:41 -0400
commitd08e42a8cb2a68ed6cdb7c615472934ea674eb15 (patch)
tree79f44c09e520d8ee31e5e0b750e0987f638456f4 /common
parent452614556c44d4dc508c3a9f3aff544334fce875 (diff)
dm: video: Add driver-model support to lcd_simplefb
Allow this to work with CONFIG_DM_VIDEO enabled. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Anatolij Gustschin <agust@denx.de>
Diffstat (limited to 'common')
-rw-r--r--common/lcd_simplefb.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/common/lcd_simplefb.c b/common/lcd_simplefb.c
index e479b492b88..d7e9fc9f65c 100644
--- a/common/lcd_simplefb.c
+++ b/common/lcd_simplefb.c
@@ -8,9 +8,11 @@
*/
#include <common.h>
+#include <dm.h>
#include <lcd.h>
#include <fdt_support.h>
#include <libfdt.h>
+#include <video.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -20,11 +22,27 @@ static int lcd_dt_simplefb_configure_node(void *blob, int off)
int bpix; /* log2 of bits per pixel */
const char *name;
ulong fb_base;
+#ifdef CONFIG_DM_VIDEO
+ struct video_uc_platdata *plat;
+ struct video_priv *uc_priv;
+ struct udevice *dev;
+ int ret;
+ ret = uclass_first_device_err(UCLASS_VIDEO, &dev);
+ if (ret)
+ return ret;
+ uc_priv = dev_get_uclass_priv(dev);
+ plat = dev_get_uclass_platdata(dev);
+ xsize = uc_priv->xsize;
+ ysize = uc_priv->ysize;
+ bpix = uc_priv->bpix;
+ fb_base = plat->base;
+#else
xsize = lcd_get_pixel_width();
ysize = lcd_get_pixel_height();
bpix = LCD_BPP;
fb_base = gd->fb_base;
+#endif
switch (bpix) {
case 4: /* VIDEO_BPP16 */
name = "r5g6b5";