From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Date: Fri, 20 Jan 2017 07:07:49 -0700 Subject: [U-Boot] [PATCH v4 14/17] dm: video: Refactor lcd_simplefb to prepare for driver model In-Reply-To: <20170120140752.16296-1-sjg@chromium.org> References: <20170120140752.16296-1-sjg@chromium.org> Message-ID: <20170120140752.16296-15-sjg@chromium.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 --- Changes in v4: None Changes in v3: None 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 2ba00f6d34c..e479b492b88 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.11.0.483.g087da7b7c-goog