From 452614556c44d4dc508c3a9f3aff544334fce875 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 5 Apr 2017 16:23:42 -0600 Subject: [PATCH] dm: video: Refactor lcd_simplefb to prepare for driver model Adjust this function so that we can convert it to support CONFIG_DM_VIDEO without a lot of code duplication. Signed-off-by: Simon Glass Acked-by: Anatolij Gustschin --- common/lcd_simplefb.c | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/common/lcd_simplefb.c b/common/lcd_simplefb.c index 2ba00f6..e479b49 100644 --- a/common/lcd_simplefb.c +++ b/common/lcd_simplefb.c @@ -16,17 +16,28 @@ DECLARE_GLOBAL_DATA_PTR; static int lcd_dt_simplefb_configure_node(void *blob, int off) { - int vl_col = lcd_get_pixel_width(); - int vl_row = lcd_get_pixel_height(); -#if LCD_BPP == LCD_COLOR16 - return fdt_setup_simplefb_node(blob, off, gd->fb_base, vl_col, vl_row, - vl_col * 2, "r5g6b5"); -#elif LCD_BPP == LCD_COLOR32 - return fdt_setup_simplefb_node(blob, off, gd->fb_base, vl_col, vl_row, - vl_col * 4, "a8r8g8b8"); -#else - return -1; -#endif + int xsize, ysize; + int bpix; /* log2 of bits per pixel */ + const char *name; + ulong fb_base; + + xsize = lcd_get_pixel_width(); + ysize = lcd_get_pixel_height(); + bpix = LCD_BPP; + fb_base = gd->fb_base; + switch (bpix) { + case 4: /* VIDEO_BPP16 */ + name = "r5g6b5"; + break; + case 5: /* VIDEO_BPP32 */ + name = "a8r8g8b8"; + break; + default: + return -EINVAL; + } + + return fdt_setup_simplefb_node(blob, off, fb_base, xsize, ysize, + xsize * (1 << bpix) / 8, name); } int lcd_dt_simplefb_add_node(void *blob) -- 2.7.4