/*
- * Common LCD routines for supported CPUs
+ * Common LCD routines
*
* (C) Copyright 2001-2002
* Wolfgang Denk, DENX Software Engineering -- wd@denx.de
* SPDX-License-Identifier: GPL-2.0+
*/
-/************************************************************************/
-/* ** HEADER FILES */
-/************************************************************************/
-
/* #define DEBUG */
-
#include <config.h>
#include <common.h>
#include <command.h>
#include <asm/io.h>
#include <asm/unaligned.h>
#include <fdt_support.h>
+#include <video_font.h>
#if defined(CONFIG_LCD_DT_SIMPLEFB)
#include <libfdt.h>
#endif
-/************************************************************************/
-/* ** FONT DATA */
-/************************************************************************/
-#include <video_font.h> /* Get font data, width and height */
-
-/************************************************************************/
-/* ** LOGO DATA */
-/************************************************************************/
#ifdef CONFIG_LCD_LOGO
-# include <bmp_logo.h> /* Get logo data, width and height */
-# include <bmp_logo_data.h>
-# if (CONSOLE_COLOR_WHITE >= BMP_LOGO_OFFSET) && (LCD_BPP < LCD_COLOR16)
-# error Default Color Map overlaps with Logo Color Map
-# endif
+#include <bmp_logo.h>
+#include <bmp_logo_data.h>
+#if (CONSOLE_COLOR_WHITE >= BMP_LOGO_OFFSET) && (LCD_BPP != LCD_COLOR16)
+#error Default Color Map overlaps with Logo Color Map
+#endif
#endif
#ifdef CONFIG_SANDBOX
#if (LCD_BPP != LCD_COLOR8) && (LCD_BPP != LCD_COLOR16) && \
(LCD_BPP != LCD_COLOR32)
-# error Unsupported LCD BPP.
+#error Unsupported LCD BPP.
#endif
DECLARE_GLOBAL_DATA_PTR;
static int lcd_init(void *lcdbase);
-
static void *lcd_logo(void);
-
static void lcd_setfgcolor(int color);
static void lcd_setbgcolor(int color);
static int lcd_color_fg;
static int lcd_color_bg;
int lcd_line_length;
-
char lcd_is_enabled = 0;
-
static void *lcd_base; /* Start of framebuffer memory */
-
static char lcd_flush_dcache; /* 1 to flush dcache after each lcd update */
-/************************************************************************/
-
/* Flush LCD activity to the caches */
void lcd_sync(void)
{
lcd_flush_dcache = (flush != 0);
}
-/*----------------------------------------------------------------------*/
-
static void lcd_stub_putc(struct stdio_dev *dev, const char c)
{
lcd_putc(c);
lcd_puts(s);
}
-/************************************************************************/
-/** Small utility to check that you got the colours right */
-/************************************************************************/
+/* Small utility to check that you got the colours right */
#ifdef LCD_TEST_PATTERN
#define N_BLK_VERT 2
}
#endif /* LCD_TEST_PATTERN */
-
-/************************************************************************/
-/* ** GENERIC Initialization Routines */
-/************************************************************************/
/*
* With most lcd drivers the line length is set up
* by calculating it from panel_info parameters. Some
lcd_base = map_sysmem(gd->fb_base, 0);
- lcd_init(lcd_base); /* LCD initialization */
+ lcd_init(lcd_base);
/* Device initialization */
memset(&lcddev, 0, sizeof(lcddev));
return (rc == 0) ? 1 : rc;
}
-/*----------------------------------------------------------------------*/
void lcd_clear(void)
{
short console_rows, console_cols;
lcd_clear();
return 0;
}
-
-U_BOOT_CMD(
- cls, 1, 1, do_lcd_clear,
- "clear screen",
- ""
-);
-
-/*----------------------------------------------------------------------*/
+U_BOOT_CMD(cls, 1, 1, do_lcd_clear, "clear screen", "");
static int lcd_init(void *lcdbase)
{
- /* Initialize the lcd controller */
debug("[LCD] Initializing %ux%ux%u LCD framebuffer at %p\n",
panel_info.vl_col, panel_info.vl_row, NBITS(panel_info.vl_bpix),
lcdbase);
return 0;
}
-
-/************************************************************************/
-/* ** ROM capable initialization part - needed to reserve FB memory */
-/************************************************************************/
/*
* This is called early in the system initialization to grab memory
* for the LCD controller.
return addr;
}
-/*----------------------------------------------------------------------*/
-
static void lcd_setfgcolor(int color)
{
lcd_color_fg = color;
return lcd_color_fg;
}
-/*----------------------------------------------------------------------*/
-
static void lcd_setbgcolor(int color)
{
lcd_color_bg = color;
return lcd_color_bg;
}
-/************************************************************************/
-/* ** Chipset depending Bitmap / Logo stuff... */
-/************************************************************************/
-
#ifdef CONFIG_LCD_LOGO
__weak void lcd_logo_set_cmap(void)
{
*cmap++ = bmp_logo_palette[i];
}
-void bitmap_plot(int x, int y)
+void lcd_logo_plot(int x, int y)
{
ushort i, j;
- uchar *bmap;
- uchar *fb;
- ushort *fb16;
+ uchar *bmap = &bmp_logo_bitmap[0];
unsigned bpix = NBITS(panel_info.vl_bpix);
+ uchar *fb = (uchar *)(lcd_base + y * lcd_line_length + x * bpix / 8);
+ ushort *fb16;
debug("Logo: width %d height %d colors %d\n",
BMP_LOGO_WIDTH, BMP_LOGO_HEIGHT, BMP_LOGO_COLORS);
- bmap = &bmp_logo_bitmap[0];
- fb = (uchar *)(lcd_base + y * lcd_line_length + x * bpix / 8);
-
if (bpix < 12) {
WATCHDOG_RESET();
lcd_logo_set_cmap();
lcd_sync();
}
#else
-static inline void bitmap_plot(int x, int y) {}
+static inline void lcd_logo_plot(int x, int y) {}
#endif /* CONFIG_LCD_LOGO */
-/*----------------------------------------------------------------------*/
#if defined(CONFIG_CMD_BMP) || defined(CONFIG_SPLASH_SCREEN)
-/*
- * Display the BMP file located at address bmp_image.
- * Only uncompressed.
- */
-
#ifdef CONFIG_SPLASH_SCREEN_ALIGN
#define BMP_ALIGN_CENTER 0x7FFF
}
#endif
-
#ifdef CONFIG_LCD_BMP_RLE8
-
#define BMP_RLE8_ESCAPE 0
#define BMP_RLE8_EOL 0
#define BMP_RLE8_EOBMP 1
(y + height - 1) * lcd_line_length + x * bpix / 8);
switch (bmp_bpix) {
- case 1: /* pass through */
+ case 1:
case 8: {
cmap_base = configuration_get_cmap();
#ifdef CONFIG_LCD_BMP_RLE8
}
#endif /* CONFIG_SPLASH_SCREEN */
- bitmap_plot(0, 0);
+ lcd_logo_plot(0, 0);
#ifdef CONFIG_LCD_INFO
lcd_set_col(LCD_INFO_X / VIDEO_FONT_WIDTH);