mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-01 00:49:43 +00:00
- various fixes to the sandbox display support
- support for showing a logo without splash screen config - support for BMP drawing to depths other than 16bpp - tests for the different types of supported BMP images - support showing a logo when running coreboot via qemu -----BEGIN PGP SIGNATURE----- iGwEABECACwWIQSC4hxrSoIUVfFO0kRM6ATMmsalXAUCYcsdCQ4cYWd1c3RAZGVu eC5kZQAKCRBM6ATMmsalXCLhAJ9pLJE3SpQRzpm+Nu4EMbCDzZKr+wCfbxnAZ9LC zS1XZ6u9Se4ysDb+PYs= =Hf5j -----END PGP SIGNATURE----- Merge tag 'video-next-20211228' of https://source.denx.de/u-boot/custodians/u-boot-video into next - various fixes to the sandbox display support - support for showing a logo without splash screen config - support for BMP drawing to depths other than 16bpp - tests for the different types of supported BMP images - support showing a logo when running coreboot via qemu
This commit is contained in:
commit
87a9aa604d
106 changed files with 687 additions and 547 deletions
1
.gitattributes
vendored
1
.gitattributes
vendored
|
@ -3,3 +3,4 @@
|
|||
# Denote all files that are truly binary and should not be modified
|
||||
*.bmp binary
|
||||
*.ttf binary
|
||||
*.gz binary
|
||||
|
|
1
README
1
README
|
@ -1017,7 +1017,6 @@ The following options need to be configured:
|
|||
CONFIG_CFB_CONSOLE
|
||||
CONFIG_VIDEO_SW_CURSOR
|
||||
CONFIG_VGA_AS_SINGLE_DEVICE
|
||||
CONFIG_VIDEO_LOGO
|
||||
CONFIG_VIDEO_BMP_LOGO
|
||||
|
||||
The DIU driver will look for the 'video-mode' environment
|
||||
|
|
|
@ -44,6 +44,9 @@ struct buf_info {
|
|||
* @stopping: true if audio will stop once it runs out of data
|
||||
* @texture: SDL texture to use for U-Boot display contents
|
||||
* @renderer: SDL renderer to use
|
||||
* @screen: SDL window to use
|
||||
* @src_depth: Number of bits per pixel in the source frame buffer (that we read
|
||||
* from and render to SDL)
|
||||
*/
|
||||
static struct sdl_info {
|
||||
int width;
|
||||
|
@ -61,6 +64,8 @@ static struct sdl_info {
|
|||
bool stopping;
|
||||
SDL_Texture *texture;
|
||||
SDL_Renderer *renderer;
|
||||
SDL_Window *screen;
|
||||
int src_depth;
|
||||
} sdl;
|
||||
|
||||
static void sandbox_sdl_poll_events(void)
|
||||
|
@ -98,6 +103,23 @@ static int sandbox_sdl_ensure_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int sandbox_sdl_remove_display(void)
|
||||
{
|
||||
if (!sdl.renderer) {
|
||||
printf("SDL renderer does not exist\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
SDL_DestroyTexture(sdl.texture);
|
||||
SDL_DestroyRenderer(sdl.renderer);
|
||||
SDL_DestroyWindow(sdl.screen);
|
||||
sdl.texture = NULL;
|
||||
sdl.renderer = NULL;
|
||||
sdl.screen = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sandbox_sdl_init_display(int width, int height, int log2_bpp,
|
||||
bool double_size)
|
||||
{
|
||||
|
@ -109,6 +131,9 @@ int sandbox_sdl_init_display(int width, int height, int log2_bpp,
|
|||
err = sandbox_sdl_ensure_init();
|
||||
if (err)
|
||||
return err;
|
||||
if (sdl.renderer)
|
||||
sandbox_sdl_remove_display();
|
||||
|
||||
if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) {
|
||||
printf("Unable to initialise SDL LCD: %s\n", SDL_GetError());
|
||||
return -EPERM;
|
||||
|
@ -126,22 +151,20 @@ int sandbox_sdl_init_display(int width, int height, int log2_bpp,
|
|||
if (!SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "1"))
|
||||
printf("Unable to init hinting: %s", SDL_GetError());
|
||||
|
||||
sdl.src_depth = 1 << log2_bpp;
|
||||
if (log2_bpp != 4 && log2_bpp != 5)
|
||||
log2_bpp = 5;
|
||||
sdl.depth = 1 << log2_bpp;
|
||||
sdl.pitch = sdl.width * sdl.depth / 8;
|
||||
SDL_Window *screen = SDL_CreateWindow("U-Boot", SDL_WINDOWPOS_UNDEFINED,
|
||||
SDL_WINDOWPOS_UNDEFINED,
|
||||
sdl.vis_width, sdl.vis_height,
|
||||
SDL_WINDOW_RESIZABLE);
|
||||
if (!screen) {
|
||||
sdl.screen = SDL_CreateWindow("U-Boot", SDL_WINDOWPOS_UNDEFINED,
|
||||
SDL_WINDOWPOS_UNDEFINED, sdl.vis_width,
|
||||
sdl.vis_height, SDL_WINDOW_RESIZABLE);
|
||||
if (!sdl.screen) {
|
||||
printf("Unable to initialise SDL screen: %s\n",
|
||||
SDL_GetError());
|
||||
return -EIO;
|
||||
}
|
||||
if (log2_bpp != 4 && log2_bpp != 5) {
|
||||
printf("U-Boot SDL does not support depth %d\n", log2_bpp);
|
||||
return -EINVAL;
|
||||
}
|
||||
sdl.renderer = SDL_CreateRenderer(screen, -1,
|
||||
sdl.renderer = SDL_CreateRenderer(sdl.screen, -1,
|
||||
SDL_RENDERER_ACCELERATED |
|
||||
SDL_RENDERER_PRESENTVSYNC);
|
||||
if (!sdl.renderer) {
|
||||
|
@ -165,6 +188,55 @@ int sandbox_sdl_init_display(int width, int height, int log2_bpp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int copy_to_texture(void *lcd_base)
|
||||
{
|
||||
char *dest;
|
||||
int pitch, x, y;
|
||||
int src_pitch;
|
||||
void *pixels;
|
||||
char *src;
|
||||
int ret;
|
||||
|
||||
if (sdl.src_depth == sdl.depth) {
|
||||
SDL_UpdateTexture(sdl.texture, NULL, lcd_base, sdl.pitch);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* We only support copying from an 8bpp to a 32bpp texture since the
|
||||
* other cases are supported directly by the texture.
|
||||
*/
|
||||
if (sdl.depth != 32 && sdl.src_depth != 8) {
|
||||
printf("Need depth 32bpp for copy\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = SDL_LockTexture(sdl.texture, NULL, &pixels, &pitch);
|
||||
if (ret) {
|
||||
printf("SDL lock %d: %s\n", ret, SDL_GetError());
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Copy the pixels one by one */
|
||||
src_pitch = sdl.width * sdl.src_depth / 8;
|
||||
for (y = 0; y < sdl.height; y++) {
|
||||
char val;
|
||||
|
||||
dest = pixels + y * pitch;
|
||||
src = lcd_base + src_pitch * y;
|
||||
for (x = 0; x < sdl.width; x++, dest += 4) {
|
||||
val = *src++;
|
||||
dest[0] = val;
|
||||
dest[1] = val;
|
||||
dest[2] = val;
|
||||
dest[3] = 0;
|
||||
}
|
||||
}
|
||||
SDL_UnlockTexture(sdl.texture);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sandbox_sdl_sync(void *lcd_base)
|
||||
{
|
||||
struct SDL_Rect rect;
|
||||
|
@ -173,7 +245,11 @@ int sandbox_sdl_sync(void *lcd_base)
|
|||
if (!sdl.texture)
|
||||
return 0;
|
||||
SDL_RenderClear(sdl.renderer);
|
||||
SDL_UpdateTexture(sdl.texture, NULL, lcd_base, sdl.pitch);
|
||||
ret = copy_to_texture(lcd_base);
|
||||
if (ret) {
|
||||
printf("copy_to_texture: %d: %s\n", ret, SDL_GetError());
|
||||
return -EIO;
|
||||
}
|
||||
ret = SDL_RenderCopy(sdl.renderer, sdl.texture, NULL, NULL);
|
||||
if (ret) {
|
||||
printf("SDL copy %d: %s\n", ret, SDL_GetError());
|
||||
|
|
|
@ -25,6 +25,13 @@
|
|||
int sandbox_sdl_init_display(int width, int height, int log2_bpp,
|
||||
bool double_size);
|
||||
|
||||
/**
|
||||
* sandbox_sdl_remove_display() - Remove the SDL screen
|
||||
*
|
||||
* @return 0 if OK, -ENOENT if the SDL had not been inited.
|
||||
*/
|
||||
int sandbox_sdl_remove_display(void);
|
||||
|
||||
/**
|
||||
* sandbox_sdl_sync() - Sync current U-Boot LCD frame buffer to SDL
|
||||
*
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
#ifndef __ASM_TEST_H
|
||||
#define __ASM_TEST_H
|
||||
|
||||
#include <video.h>
|
||||
|
||||
/* The sandbox driver always permits an I2C device with this address */
|
||||
#define SANDBOX_I2C_TEST_ADDR 0x59
|
||||
|
||||
|
@ -285,4 +287,20 @@ void sandbox_cros_ec_set_test_flags(struct udevice *dev, uint flags);
|
|||
*/
|
||||
int sandbox_cros_ec_get_pwm_duty(struct udevice *dev, uint index, uint *duty);
|
||||
|
||||
/**
|
||||
* sandbox_sdl_set_bpp() - Set the depth of the sandbox display
|
||||
*
|
||||
* The device must not be active when this function is called. It activiates it
|
||||
* before returning.
|
||||
*
|
||||
* This updates the depth value and adjusts a few other settings accordingly.
|
||||
* It must be called before the display is probed.
|
||||
*
|
||||
* @dev: Device to adjust
|
||||
* @l2bpp: depth to set
|
||||
* @return 0 if the device was already active, other error if it fails to probe
|
||||
* after the change
|
||||
*/
|
||||
int sandbox_sdl_set_bpp(struct udevice *dev, enum video_log2_bpp l2bpp);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -4,10 +4,11 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/cb_sysinfo.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <splash.h>
|
||||
#include <init.h>
|
||||
#include <smbios.h>
|
||||
#include <asm/cb_sysinfo.h>
|
||||
#include <asm/global_data.h>
|
||||
|
||||
int board_early_init_r(void)
|
||||
{
|
||||
|
@ -65,3 +66,18 @@ fallback:
|
|||
return checkboard();
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct splash_location coreboot_splash_locations[] = {
|
||||
{
|
||||
.name = "virtio_fs",
|
||||
.storage = SPLASH_STORAGE_VIRTIO,
|
||||
.flags = SPLASH_STORAGE_RAW,
|
||||
.devpart = "0",
|
||||
},
|
||||
};
|
||||
|
||||
int splash_screen_prepare(void)
|
||||
{
|
||||
return splash_source_load(coreboot_splash_locations,
|
||||
ARRAY_SIZE(coreboot_splash_locations));
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <command.h>
|
||||
#include <env.h>
|
||||
#include <gzip.h>
|
||||
#include <mapmem.h>
|
||||
#include <part.h>
|
||||
|
||||
static int do_unzip(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
|
@ -28,7 +29,8 @@ static int do_unzip(struct cmd_tbl *cmdtp, int flag, int argc,
|
|||
return CMD_RET_USAGE;
|
||||
}
|
||||
|
||||
if (gunzip((void *) dst, dst_len, (void *) src, &src_len) != 0)
|
||||
if (gunzip(map_sysmem(dst, dst_len), dst_len, map_sysmem(src, 0),
|
||||
&src_len) != 0)
|
||||
return 1;
|
||||
|
||||
printf("Uncompressed size: %lu = 0x%lX\n", src_len, src_len);
|
||||
|
|
|
@ -348,6 +348,7 @@ static void console_puts_select(int file, bool serial_only, const char *s)
|
|||
|
||||
void console_puts_select_stderr(bool serial_only, const char *s)
|
||||
{
|
||||
if (gd->flags & GD_FLG_DEVINIT)
|
||||
console_puts_select(stderr, serial_only, s);
|
||||
}
|
||||
|
||||
|
@ -401,7 +402,8 @@ static inline void console_putc(int file, const char c)
|
|||
|
||||
void console_puts_select(int file, bool serial_only, const char *s)
|
||||
{
|
||||
if (serial_only == console_dev_is_serial(stdio_devices[file]))
|
||||
if ((gd->flags & GD_FLG_DEVINIT) &&
|
||||
serial_only == console_dev_is_serial(stdio_devices[file]))
|
||||
stdio_devices[file]->puts(stdio_devices[file], s);
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ static struct splash_location default_splash_locations[] = {
|
|||
},
|
||||
};
|
||||
|
||||
#if defined(CONFIG_DM_VIDEO) && defined(CONFIG_VIDEO_LOGO)
|
||||
#ifdef CONFIG_VIDEO_LOGO
|
||||
|
||||
#include <bmp_logo_data.h>
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <spi_flash.h>
|
||||
#include <splash.h>
|
||||
#include <usb.h>
|
||||
#include <virtio.h>
|
||||
#include <asm/global_data.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
@ -179,6 +180,16 @@ static inline int splash_init_sata(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
static int splash_init_virtio(void)
|
||||
{
|
||||
if (!IS_ENABLED(CONFIG_VIRTIO)) {
|
||||
printf("Cannot load splash image: no virtio support\n");
|
||||
return -ENOSYS;
|
||||
} else {
|
||||
return virtio_init();
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CMD_UBIFS
|
||||
static int splash_mount_ubifs(struct splash_location *location)
|
||||
{
|
||||
|
@ -233,6 +244,9 @@ static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr)
|
|||
if (location->storage == SPLASH_STORAGE_SATA)
|
||||
res = splash_init_sata();
|
||||
|
||||
if (location->storage == SPLASH_STORAGE_VIRTIO)
|
||||
res = splash_init_virtio();
|
||||
|
||||
if (location->ubivol != NULL)
|
||||
res = splash_mount_ubifs(location);
|
||||
|
||||
|
|
|
@ -106,6 +106,7 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -109,6 +109,7 @@ CONFIG_SYSRESET_WATCHDOG=y
|
|||
CONFIG_USB=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_DISPLAY=y
|
||||
CONFIG_VIDEO_IPUV3=y
|
||||
|
|
|
@ -109,6 +109,7 @@ CONFIG_SYSRESET_WATCHDOG=y
|
|||
CONFIG_USB=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_DISPLAY=y
|
||||
CONFIG_VIDEO_IPUV3=y
|
||||
|
|
|
@ -106,6 +106,7 @@ CONFIG_USB=y
|
|||
CONFIG_USB_KEYBOARD=y
|
||||
CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_VIDEO_IPUV3=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SOURCE=y
|
||||
|
|
|
@ -79,6 +79,7 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
|
|
|
@ -95,6 +95,7 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_VIDEO_MXS=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
|
|
|
@ -104,6 +104,7 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -91,6 +91,7 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_VIDEO_MXS=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
|
|
|
@ -84,6 +84,7 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x1b67
|
|||
CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
|
|
|
@ -99,6 +99,7 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP16 is not set
|
||||
CONFIG_VIDEO_FSL_DCU_FB=y
|
||||
|
|
|
@ -51,5 +51,6 @@ CONFIG_ATMEL_PIT_TIMER=y
|
|||
CONFIG_USB=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
# CONFIG_VIDEO_LOGO is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_CMD_DHRYSTONE=y
|
||||
|
|
|
@ -140,6 +140,7 @@ CONFIG_USB_GADGET_DOWNLOAD=y
|
|||
CONFIG_USB_ETHER=y
|
||||
CONFIG_USB_ETH_CDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_BACKLIGHT is not set
|
||||
# CONFIG_CMD_VIDCONSOLE is not set
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
|
|
|
@ -144,6 +144,7 @@ CONFIG_USB_GADGET_DOWNLOAD=y
|
|||
CONFIG_USB_ETHER=y
|
||||
CONFIG_USB_ETH_CDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_BACKLIGHT is not set
|
||||
# CONFIG_CMD_VIDCONSOLE is not set
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
|
|
|
@ -148,6 +148,7 @@ CONFIG_USB_GADGET_DOWNLOAD=y
|
|||
CONFIG_USB_ETHER=y
|
||||
CONFIG_USB_ETH_CDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_BACKLIGHT is not set
|
||||
# CONFIG_CMD_VIDCONSOLE is not set
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
|
|
|
@ -66,6 +66,7 @@ CONFIG_PINCTRL_IMX6=y
|
|||
CONFIG_MXC_UART=y
|
||||
CONFIG_IMX_THERMAL=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -67,6 +67,7 @@ CONFIG_PINCTRL_IMX6=y
|
|||
CONFIG_MXC_UART=y
|
||||
CONFIG_IMX_THERMAL=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -84,6 +84,7 @@ CONFIG_PINCTRL_IMX6=y
|
|||
CONFIG_MXC_UART=y
|
||||
CONFIG_IMX_THERMAL=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -67,6 +67,7 @@ CONFIG_PINCTRL_IMX6=y
|
|||
CONFIG_MXC_UART=y
|
||||
CONFIG_IMX_THERMAL=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -72,6 +72,7 @@ CONFIG_USB=y
|
|||
# CONFIG_SPL_DM_USB is not set
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_BACKLIGHT_GPIO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_VIDEO_MXS=y
|
||||
|
|
|
@ -110,6 +110,7 @@ CONFIG_USB_ETHER_ASIX=y
|
|||
CONFIG_USB_ETHER_MCS7830=y
|
||||
CONFIG_USB_ETHER_SMSC95XX=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -57,6 +57,7 @@ CONFIG_USB=y
|
|||
CONFIG_USB_HOST_ETHER=y
|
||||
CONFIG_USB_ETHER_ASIX=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_BACKLIGHT is not set
|
||||
# CONFIG_CMD_VIDCONSOLE is not set
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
|
|
|
@ -70,6 +70,7 @@ CONFIG_IMX_THERMAL=y
|
|||
CONFIG_USB=y
|
||||
CONFIG_USB_KEYBOARD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_BACKLIGHT is not set
|
||||
# CONFIG_CMD_VIDCONSOLE is not set
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
|
|
|
@ -111,6 +111,7 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -118,6 +118,7 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
|
|||
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -94,6 +94,7 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
|
|||
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_VIDEO_MXS=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
|
|
|
@ -84,6 +84,7 @@ CONFIG_IMX_THERMAL=y
|
|||
CONFIG_USB=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_VIDEO_MXS=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
|
|
|
@ -85,6 +85,7 @@ CONFIG_USB_GADGET=y
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_ETHER=y
|
||||
CONFIG_USB_ETH_CDC=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -105,6 +105,7 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -85,6 +85,7 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
|
|||
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
|
|
|
@ -85,6 +85,7 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
|
|||
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
|
|
|
@ -82,6 +82,7 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
|
|||
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_BACKLIGHT is not set
|
||||
# CONFIG_CMD_VIDCONSOLE is not set
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
|
|
|
@ -79,6 +79,7 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
|
|||
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_VIDEO_MXS=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
|
|
|
@ -83,6 +83,7 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_VIDEO_MXS=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
|
|
|
@ -85,6 +85,7 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
|
|||
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_VIDEO_MXS=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
|
|
|
@ -85,6 +85,7 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
|
|||
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
|
|
|
@ -85,6 +85,7 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
|
|||
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
||||
CONFIG_CI_UDC=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
CONFIG_SPLASH_SCREEN=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
|
|
|
@ -69,6 +69,7 @@ CONFIG_USB=y
|
|||
CONFIG_USB_HOST_ETHER=y
|
||||
CONFIG_USB_ETHER_ASIX=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_BACKLIGHT is not set
|
||||
# CONFIG_CMD_VIDCONSOLE is not set
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
|
|
|
@ -50,6 +50,7 @@ CONFIG_DM_PMIC=y
|
|||
CONFIG_DM_REGULATOR=y
|
||||
CONFIG_CONS_INDEX=0
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
CONFIG_DISPLAY=y
|
||||
CONFIG_VIDEO_NX=y
|
||||
CONFIG_VIDEO_NX_RGB=y
|
||||
|
|
|
@ -285,6 +285,8 @@ CONFIG_OSD=y
|
|||
CONFIG_SANDBOX_OSD=y
|
||||
CONFIG_SPLASH_SCREEN_ALIGN=y
|
||||
CONFIG_VIDEO_BMP_RLE8=y
|
||||
CONFIG_BMP_16BPP=y
|
||||
CONFIG_BMP_24BPP=y
|
||||
CONFIG_W1=y
|
||||
CONFIG_W1_GPIO=y
|
||||
CONFIG_W1_EEPROM=y
|
||||
|
|
|
@ -198,6 +198,8 @@ CONFIG_VIDEO_SANDBOX_SDL=y
|
|||
CONFIG_OSD=y
|
||||
CONFIG_SANDBOX_OSD=y
|
||||
CONFIG_VIDEO_BMP_RLE8=y
|
||||
CONFIG_BMP_16BPP=y
|
||||
CONFIG_BMP_24BPP=y
|
||||
CONFIG_CMD_DHRYSTONE=y
|
||||
CONFIG_RSA_VERIFY_WITH_PKEY=y
|
||||
CONFIG_TPM=y
|
||||
|
|
|
@ -94,6 +94,7 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
|
|||
CONFIG_CI_UDC=y
|
||||
CONFIG_USB_GADGET_DOWNLOAD=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
# CONFIG_VIDEO_LOGO is not set
|
||||
# CONFIG_BACKLIGHT is not set
|
||||
# CONFIG_CMD_VIDCONSOLE is not set
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
|
|
|
@ -74,6 +74,7 @@ CONFIG_MXC_UART=y
|
|||
CONFIG_DM_THERMAL=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_DM_VIDEO=y
|
||||
CONFIG_VIDEO_LOGO=y
|
||||
# CONFIG_VIDEO_BPP8 is not set
|
||||
# CONFIG_VIDEO_BPP32 is not set
|
||||
CONFIG_SYS_WHITE_ON_BLACK=y
|
||||
|
|
|
@ -14,6 +14,17 @@ config DM_VIDEO
|
|||
option compiles in the video uclass and routes all LCD/video access
|
||||
through this.
|
||||
|
||||
config VIDEO_LOGO
|
||||
bool "Show the U-Boot logo on the display"
|
||||
depends on DM_VIDEO
|
||||
default y if !SPLASH_SCREEN
|
||||
select VIDEO_BMP_RLE8
|
||||
help
|
||||
This enables showing the U-Boot logo on the display when a video
|
||||
device is probed. It appears at the top right. The logo itself is at
|
||||
tools/logos/u-boot_logo.bmp and looks best when the display has a
|
||||
black background.
|
||||
|
||||
config BACKLIGHT
|
||||
bool "Enable panel backlight uclass support"
|
||||
depends on DM_VIDEO
|
||||
|
|
|
@ -17,6 +17,9 @@ obj-$(CONFIG_DM_VIDEO) += video_bmp.o
|
|||
obj-$(CONFIG_PANEL) += panel-uclass.o
|
||||
obj-$(CONFIG_DM_PANEL_HX8238D) += hx8238d.o
|
||||
obj-$(CONFIG_SIMPLE_PANEL) += simple_panel.o
|
||||
|
||||
obj-$(CONFIG_VIDEO_LOGO) += u_boot_logo.o
|
||||
|
||||
endif
|
||||
|
||||
obj-${CONFIG_EXYNOS_FB} += exynos/
|
||||
|
|
|
@ -42,11 +42,6 @@
|
|||
* VIDEO_TSTC_FCT - keyboard_tstc function
|
||||
* VIDEO_GETC_FCT - keyboard_getc function
|
||||
*
|
||||
* CONFIG_VIDEO_LOGO - display Linux Logo in upper left corner.
|
||||
* Use CONFIG_SPLASH_SCREEN_ALIGN with
|
||||
* environment variable "splashpos" to place
|
||||
* the logo on other position. In this case
|
||||
* no CONSOLE_EXTRA_INFO is possible.
|
||||
* CONFIG_VIDEO_BMP_LOGO - use bmp_logo instead of linux_logo
|
||||
* CONFIG_CONSOLE_EXTRA_INFO - display additional board information
|
||||
* strings that normaly goes to serial
|
||||
|
@ -127,34 +122,6 @@ void console_cursor(int state);
|
|||
#define CURSOR_SET video_set_cursor()
|
||||
#endif /* CONFIG_VIDEO_SW_CURSOR */
|
||||
|
||||
#ifdef CONFIG_VIDEO_LOGO
|
||||
#ifdef CONFIG_VIDEO_BMP_LOGO
|
||||
#include <bmp_logo.h>
|
||||
#include <bmp_logo_data.h>
|
||||
#define VIDEO_LOGO_WIDTH BMP_LOGO_WIDTH
|
||||
#define VIDEO_LOGO_HEIGHT BMP_LOGO_HEIGHT
|
||||
#define VIDEO_LOGO_LUT_OFFSET BMP_LOGO_OFFSET
|
||||
#define VIDEO_LOGO_COLORS BMP_LOGO_COLORS
|
||||
|
||||
#else /* CONFIG_VIDEO_BMP_LOGO */
|
||||
#define LINUX_LOGO_WIDTH 80
|
||||
#define LINUX_LOGO_HEIGHT 80
|
||||
#define LINUX_LOGO_COLORS 214
|
||||
#define LINUX_LOGO_LUT_OFFSET 0x20
|
||||
#define __initdata
|
||||
#include <linux_logo.h>
|
||||
#define VIDEO_LOGO_WIDTH LINUX_LOGO_WIDTH
|
||||
#define VIDEO_LOGO_HEIGHT LINUX_LOGO_HEIGHT
|
||||
#define VIDEO_LOGO_LUT_OFFSET LINUX_LOGO_LUT_OFFSET
|
||||
#define VIDEO_LOGO_COLORS LINUX_LOGO_COLORS
|
||||
#endif /* CONFIG_VIDEO_BMP_LOGO */
|
||||
#define VIDEO_INFO_X (VIDEO_LOGO_WIDTH)
|
||||
#define VIDEO_INFO_Y (VIDEO_FONT_HEIGHT/2)
|
||||
#else /* CONFIG_VIDEO_LOGO */
|
||||
#define VIDEO_LOGO_WIDTH 0
|
||||
#define VIDEO_LOGO_HEIGHT 0
|
||||
#endif /* CONFIG_VIDEO_LOGO */
|
||||
|
||||
#define VIDEO_COLS VIDEO_VISIBLE_COLS
|
||||
#define VIDEO_ROWS VIDEO_VISIBLE_ROWS
|
||||
#ifndef VIDEO_LINE_LEN
|
||||
|
@ -163,11 +130,7 @@ void console_cursor(int state);
|
|||
#define VIDEO_SIZE (VIDEO_ROWS * VIDEO_LINE_LEN)
|
||||
#define VIDEO_BURST_LEN (VIDEO_COLS/8)
|
||||
|
||||
#ifdef CONFIG_VIDEO_LOGO
|
||||
#define CONSOLE_ROWS ((VIDEO_ROWS - video_logo_height) / VIDEO_FONT_HEIGHT)
|
||||
#else
|
||||
#define CONSOLE_ROWS (VIDEO_ROWS / VIDEO_FONT_HEIGHT)
|
||||
#endif
|
||||
|
||||
#define CONSOLE_COLS (VIDEO_COLS / VIDEO_FONT_WIDTH)
|
||||
#define CONSOLE_ROW_SIZE (VIDEO_FONT_HEIGHT * VIDEO_LINE_LEN)
|
||||
|
@ -214,7 +177,7 @@ static GraphicDevice *pGD; /* Pointer to Graphic array */
|
|||
static void *video_fb_address; /* frame buffer address */
|
||||
static void *video_console_address; /* console buffer start address */
|
||||
|
||||
static int video_logo_height = VIDEO_LOGO_HEIGHT;
|
||||
static int video_logo_height; /* not supported anymore */
|
||||
|
||||
static int __maybe_unused cursor_state;
|
||||
static int __maybe_unused old_col;
|
||||
|
@ -1670,292 +1633,6 @@ int video_display_bitmap(ulong bmp_image, int x, int y)
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef CONFIG_VIDEO_LOGO
|
||||
static int video_logo_xpos;
|
||||
static int video_logo_ypos;
|
||||
|
||||
static void plot_logo_or_black(void *screen, int x, int y, int black);
|
||||
|
||||
static void logo_plot(void *screen, int x, int y)
|
||||
{
|
||||
plot_logo_or_black(screen, x, y, 0);
|
||||
}
|
||||
|
||||
static void logo_black(void)
|
||||
{
|
||||
plot_logo_or_black(video_fb_address, video_logo_xpos, video_logo_ypos,
|
||||
1);
|
||||
}
|
||||
|
||||
static int do_clrlogo(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
char *const argv[])
|
||||
{
|
||||
if (argc != 1)
|
||||
return cmd_usage(cmdtp);
|
||||
|
||||
logo_black();
|
||||
return 0;
|
||||
}
|
||||
|
||||
U_BOOT_CMD(
|
||||
clrlogo, 1, 0, do_clrlogo,
|
||||
"fill the boot logo area with black",
|
||||
" "
|
||||
);
|
||||
|
||||
static void plot_logo_or_black(void *screen, int x, int y, int black)
|
||||
{
|
||||
|
||||
int xcount, i;
|
||||
int skip = VIDEO_LINE_LEN - VIDEO_LOGO_WIDTH * VIDEO_PIXEL_SIZE;
|
||||
int ycount = video_logo_height;
|
||||
unsigned char r, g, b, *logo_red, *logo_blue, *logo_green;
|
||||
unsigned char *source;
|
||||
unsigned char *dest;
|
||||
|
||||
#ifdef CONFIG_SPLASH_SCREEN_ALIGN
|
||||
if (x == BMP_ALIGN_CENTER)
|
||||
x = max(0, (int)(VIDEO_VISIBLE_COLS - VIDEO_LOGO_WIDTH) / 2);
|
||||
else if (x < 0)
|
||||
x = max(0, (int)(VIDEO_VISIBLE_COLS - VIDEO_LOGO_WIDTH + x + 1));
|
||||
|
||||
if (y == BMP_ALIGN_CENTER)
|
||||
y = max(0, (int)(VIDEO_VISIBLE_ROWS - VIDEO_LOGO_HEIGHT) / 2);
|
||||
else if (y < 0)
|
||||
y = max(0, (int)(VIDEO_VISIBLE_ROWS - VIDEO_LOGO_HEIGHT + y + 1));
|
||||
#endif /* CONFIG_SPLASH_SCREEN_ALIGN */
|
||||
|
||||
dest = (unsigned char *)screen + y * VIDEO_LINE_LEN + x * VIDEO_PIXEL_SIZE;
|
||||
|
||||
#ifdef CONFIG_VIDEO_BMP_LOGO
|
||||
source = bmp_logo_bitmap;
|
||||
|
||||
/* Allocate temporary space for computing colormap */
|
||||
logo_red = malloc(BMP_LOGO_COLORS);
|
||||
logo_green = malloc(BMP_LOGO_COLORS);
|
||||
logo_blue = malloc(BMP_LOGO_COLORS);
|
||||
/* Compute color map */
|
||||
for (i = 0; i < VIDEO_LOGO_COLORS; i++) {
|
||||
logo_red[i] = (bmp_logo_palette[i] & 0x0f00) >> 4;
|
||||
logo_green[i] = (bmp_logo_palette[i] & 0x00f0);
|
||||
logo_blue[i] = (bmp_logo_palette[i] & 0x000f) << 4;
|
||||
}
|
||||
#else
|
||||
source = linux_logo;
|
||||
logo_red = linux_logo_red;
|
||||
logo_green = linux_logo_green;
|
||||
logo_blue = linux_logo_blue;
|
||||
#endif
|
||||
|
||||
if (VIDEO_DATA_FORMAT == GDF__8BIT_INDEX) {
|
||||
for (i = 0; i < VIDEO_LOGO_COLORS; i++) {
|
||||
video_set_lut(i + VIDEO_LOGO_LUT_OFFSET,
|
||||
logo_red[i], logo_green[i],
|
||||
logo_blue[i]);
|
||||
}
|
||||
}
|
||||
|
||||
while (ycount--) {
|
||||
#if defined(VIDEO_FB_16BPP_PIXEL_SWAP)
|
||||
int xpos = x;
|
||||
#endif
|
||||
xcount = VIDEO_LOGO_WIDTH;
|
||||
while (xcount--) {
|
||||
if (black) {
|
||||
r = 0x00;
|
||||
g = 0x00;
|
||||
b = 0x00;
|
||||
} else {
|
||||
r = logo_red[*source - VIDEO_LOGO_LUT_OFFSET];
|
||||
g = logo_green[*source - VIDEO_LOGO_LUT_OFFSET];
|
||||
b = logo_blue[*source - VIDEO_LOGO_LUT_OFFSET];
|
||||
}
|
||||
|
||||
switch (VIDEO_DATA_FORMAT) {
|
||||
case GDF__8BIT_INDEX:
|
||||
*dest = *source;
|
||||
break;
|
||||
case GDF__8BIT_332RGB:
|
||||
*dest = ((r >> 5) << 5) |
|
||||
((g >> 5) << 2) |
|
||||
(b >> 6);
|
||||
break;
|
||||
case GDF_15BIT_555RGB:
|
||||
#if defined(VIDEO_FB_16BPP_PIXEL_SWAP)
|
||||
fill_555rgb_pswap(dest, xpos++, r, g, b);
|
||||
#else
|
||||
*(unsigned short *) dest =
|
||||
SWAP16((unsigned short) (
|
||||
((r >> 3) << 10) |
|
||||
((g >> 3) << 5) |
|
||||
(b >> 3)));
|
||||
#endif
|
||||
break;
|
||||
case GDF_16BIT_565RGB:
|
||||
*(unsigned short *) dest =
|
||||
SWAP16((unsigned short) (
|
||||
((r >> 3) << 11) |
|
||||
((g >> 2) << 5) |
|
||||
(b >> 3)));
|
||||
break;
|
||||
case GDF_32BIT_X888RGB:
|
||||
*(u32 *) dest =
|
||||
SWAP32((u32) (
|
||||
(r << 16) |
|
||||
(g << 8) |
|
||||
b));
|
||||
break;
|
||||
case GDF_24BIT_888RGB:
|
||||
#ifdef VIDEO_FB_LITTLE_ENDIAN
|
||||
dest[0] = b;
|
||||
dest[1] = g;
|
||||
dest[2] = r;
|
||||
#else
|
||||
dest[0] = r;
|
||||
dest[1] = g;
|
||||
dest[2] = b;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
source++;
|
||||
dest += VIDEO_PIXEL_SIZE;
|
||||
}
|
||||
dest += skip;
|
||||
}
|
||||
#ifdef CONFIG_VIDEO_BMP_LOGO
|
||||
free(logo_red);
|
||||
free(logo_green);
|
||||
free(logo_blue);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void *video_logo(void)
|
||||
{
|
||||
char info[128];
|
||||
__maybe_unused int y_off = 0;
|
||||
__maybe_unused ulong addr;
|
||||
__maybe_unused char *s;
|
||||
__maybe_unused int len, ret, space;
|
||||
|
||||
splash_get_pos(&video_logo_xpos, &video_logo_ypos);
|
||||
|
||||
#ifdef CONFIG_SPLASH_SCREEN
|
||||
s = env_get("splashimage");
|
||||
if (s != NULL) {
|
||||
ret = splash_screen_prepare();
|
||||
if (ret < 0)
|
||||
return video_fb_address;
|
||||
addr = hextoul(s, NULL);
|
||||
|
||||
if (video_display_bitmap(addr,
|
||||
video_logo_xpos,
|
||||
video_logo_ypos) == 0) {
|
||||
video_logo_height = 0;
|
||||
return ((void *) (video_fb_address));
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_SPLASH_SCREEN */
|
||||
|
||||
logo_plot(video_fb_address, video_logo_xpos, video_logo_ypos);
|
||||
|
||||
#ifdef CONFIG_SPLASH_SCREEN_ALIGN
|
||||
/*
|
||||
* when using splashpos for video_logo, skip any info
|
||||
* output on video console if the logo is not at 0,0
|
||||
*/
|
||||
if (video_logo_xpos || video_logo_ypos) {
|
||||
/*
|
||||
* video_logo_height is used in text and cursor offset
|
||||
* calculations. Since the console is below the logo,
|
||||
* we need to adjust the logo height
|
||||
*/
|
||||
if (video_logo_ypos == BMP_ALIGN_CENTER)
|
||||
video_logo_height += max(0, (int)(VIDEO_VISIBLE_ROWS -
|
||||
VIDEO_LOGO_HEIGHT) / 2);
|
||||
else if (video_logo_ypos > 0)
|
||||
video_logo_height += video_logo_ypos;
|
||||
|
||||
return video_fb_address + video_logo_height * VIDEO_LINE_LEN;
|
||||
}
|
||||
#endif
|
||||
if (board_cfb_skip())
|
||||
return 0;
|
||||
|
||||
sprintf(info, " %s", version_string);
|
||||
|
||||
#ifndef CONFIG_HIDE_LOGO_VERSION
|
||||
space = (VIDEO_COLS - VIDEO_INFO_X) / VIDEO_FONT_WIDTH;
|
||||
len = strlen(info);
|
||||
|
||||
if (len > space) {
|
||||
int xx = VIDEO_INFO_X, yy = VIDEO_INFO_Y;
|
||||
uchar *p = (uchar *) info;
|
||||
|
||||
while (len) {
|
||||
if (len > space) {
|
||||
video_drawchars(xx, yy, p, space);
|
||||
len -= space;
|
||||
|
||||
p = (uchar *)p + space;
|
||||
|
||||
if (!y_off) {
|
||||
xx += VIDEO_FONT_WIDTH;
|
||||
space--;
|
||||
}
|
||||
yy += VIDEO_FONT_HEIGHT;
|
||||
|
||||
y_off++;
|
||||
} else {
|
||||
video_drawchars(xx, yy, p, len);
|
||||
len = 0;
|
||||
}
|
||||
}
|
||||
} else
|
||||
video_drawstring(VIDEO_INFO_X, VIDEO_INFO_Y, (uchar *) info);
|
||||
|
||||
#ifdef CONFIG_CONSOLE_EXTRA_INFO
|
||||
{
|
||||
int i, n =
|
||||
((video_logo_height -
|
||||
VIDEO_FONT_HEIGHT) / VIDEO_FONT_HEIGHT);
|
||||
|
||||
for (i = 1; i < n; i++) {
|
||||
video_get_info_str(i, info);
|
||||
if (!*info)
|
||||
continue;
|
||||
|
||||
len = strlen(info);
|
||||
if (len > space) {
|
||||
video_drawchars(VIDEO_INFO_X,
|
||||
VIDEO_INFO_Y +
|
||||
(i + y_off) *
|
||||
VIDEO_FONT_HEIGHT,
|
||||
(uchar *) info, space);
|
||||
y_off++;
|
||||
video_drawchars(VIDEO_INFO_X +
|
||||
VIDEO_FONT_WIDTH,
|
||||
VIDEO_INFO_Y +
|
||||
(i + y_off) *
|
||||
VIDEO_FONT_HEIGHT,
|
||||
(uchar *) info + space,
|
||||
len - space);
|
||||
} else {
|
||||
video_drawstring(VIDEO_INFO_X,
|
||||
VIDEO_INFO_Y +
|
||||
(i + y_off) *
|
||||
VIDEO_FONT_HEIGHT,
|
||||
(uchar *) info);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return (video_fb_address + video_logo_height * VIDEO_LINE_LEN);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int cfb_fb_is_in_dram(void)
|
||||
{
|
||||
struct bd_info *bd = gd->bd;
|
||||
|
|
|
@ -274,6 +274,27 @@ static int console_truetype_putc_xy(struct udevice *dev, uint x, uint y,
|
|||
*/
|
||||
for (row = 0; row < height; row++) {
|
||||
switch (vid_priv->bpix) {
|
||||
case VIDEO_BPP8:
|
||||
if (IS_ENABLED(CONFIG_VIDEO_BPP8)) {
|
||||
u8 *dst = line + xoff;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < width; i++) {
|
||||
int val = *bits;
|
||||
int out;
|
||||
|
||||
if (vid_priv->colour_bg)
|
||||
val = 255 - val;
|
||||
out = val;
|
||||
if (vid_priv->colour_fg)
|
||||
*dst++ |= out;
|
||||
else
|
||||
*dst++ &= out;
|
||||
bits++;
|
||||
}
|
||||
end = dst;
|
||||
}
|
||||
break;
|
||||
#ifdef CONFIG_VIDEO_BPP16
|
||||
case VIDEO_BPP16: {
|
||||
uint16_t *dst = (uint16_t *)line + xoff;
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <asm/sdl.h>
|
||||
#include <asm/state.h>
|
||||
#include <asm/u-boot-sandbox.h>
|
||||
#include <dm/device-internal.h>
|
||||
#include <dm/test.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
@ -43,27 +44,86 @@ static int sandbox_sdl_probe(struct udevice *dev)
|
|||
uc_priv->vidconsole_drv_name = plat->vidconsole_drv_name;
|
||||
uc_priv->font_size = plat->font_size;
|
||||
if (IS_ENABLED(CONFIG_VIDEO_COPY))
|
||||
uc_plat->copy_base = uc_plat->base - uc_plat->size / 2;
|
||||
uc_plat->copy_base = uc_plat->base + uc_plat->size / 2;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void set_bpp(struct udevice *dev, enum video_log2_bpp l2bpp)
|
||||
{
|
||||
struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
|
||||
struct sandbox_sdl_plat *plat = dev_get_plat(dev);
|
||||
|
||||
plat->bpix = l2bpp;
|
||||
|
||||
uc_plat->size = plat->xres * plat->yres * VNBYTES(plat->bpix);
|
||||
|
||||
/*
|
||||
* Set up to the maximum size we'll ever need. This is a strange case.
|
||||
* The video memory is allocated by video_post_bind() called from
|
||||
* board_init_r(). If a test changes the reoslution so it needs more
|
||||
* memory later (with sandbox_sdl_set_bpp()), it is too late to make
|
||||
* the frame buffer larger.
|
||||
*
|
||||
* So use a maximum size here.
|
||||
*/
|
||||
uc_plat->size = max(uc_plat->size, 1920U * 1080 * VNBYTES(VIDEO_BPP32));
|
||||
|
||||
/* Allow space for two buffers, the lower one being the copy buffer */
|
||||
log_debug("Frame buffer size %x\n", uc_plat->size);
|
||||
|
||||
/*
|
||||
* If a copy framebuffer is used, double the size and use the last half
|
||||
* as the copy, with the first half as the normal frame buffer.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_VIDEO_COPY))
|
||||
uc_plat->size *= 2;
|
||||
}
|
||||
|
||||
int sandbox_sdl_set_bpp(struct udevice *dev, enum video_log2_bpp l2bpp)
|
||||
{
|
||||
struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
|
||||
int ret;
|
||||
|
||||
if (device_active(dev))
|
||||
return -EINVAL;
|
||||
sandbox_sdl_remove_display();
|
||||
|
||||
uc_plat->hide_logo = true;
|
||||
set_bpp(dev, l2bpp);
|
||||
|
||||
ret = device_probe(dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sandbox_sdl_remove(struct udevice *dev)
|
||||
{
|
||||
/*
|
||||
* Removing the display it a bit annoying when running unit tests, since
|
||||
* they remove all devices. It is nice to be able to see what the test
|
||||
* wrote onto the display. So this comment is just here to show how to
|
||||
* do it, if we want to make it optional one day.
|
||||
*
|
||||
* sandbox_sdl_remove_display();
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sandbox_sdl_bind(struct udevice *dev)
|
||||
{
|
||||
struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
|
||||
struct sandbox_sdl_plat *plat = dev_get_plat(dev);
|
||||
enum video_log2_bpp l2bpp;
|
||||
int ret = 0;
|
||||
|
||||
plat->xres = dev_read_u32_default(dev, "xres", LCD_MAX_WIDTH);
|
||||
plat->yres = dev_read_u32_default(dev, "yres", LCD_MAX_HEIGHT);
|
||||
plat->bpix = dev_read_u32_default(dev, "log2-depth", VIDEO_BPP16);
|
||||
l2bpp = dev_read_u32_default(dev, "log2-depth", VIDEO_BPP16);
|
||||
plat->rot = dev_read_u32_default(dev, "rotate", 0);
|
||||
uc_plat->size = plat->xres * plat->yres * (1 << plat->bpix) / 8;
|
||||
|
||||
/* Allow space for two buffers, the lower one being the copy buffer */
|
||||
log_debug("Frame buffer size %x\n", uc_plat->size);
|
||||
if (IS_ENABLED(CONFIG_VIDEO_COPY))
|
||||
uc_plat->size *= 2;
|
||||
set_bpp(dev, l2bpp);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -79,5 +139,6 @@ U_BOOT_DRIVER(sandbox_lcd_sdl) = {
|
|||
.of_match = sandbox_sdl_ids,
|
||||
.bind = sandbox_sdl_bind,
|
||||
.probe = sandbox_sdl_probe,
|
||||
.remove = sandbox_sdl_remove,
|
||||
.plat_auto = sizeof(struct sandbox_sdl_plat),
|
||||
};
|
||||
|
|
BIN
drivers/video/u_boot_logo.bmp
Normal file
BIN
drivers/video/u_boot_logo.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.8 KiB |
|
@ -279,10 +279,10 @@ int video_sync_copy(struct udevice *dev, void *from, void *to)
|
|||
*/
|
||||
if (offset < -priv->fb_size || offset > 2 * priv->fb_size) {
|
||||
#ifdef DEBUG
|
||||
char str[80];
|
||||
char str[120];
|
||||
|
||||
snprintf(str, sizeof(str),
|
||||
"[sync_copy fb=%p, from=%p, to=%p, offset=%lx]",
|
||||
"[** FAULT sync_copy fb=%p, from=%p, to=%p, offset=%lx]",
|
||||
priv->fb, from, to, offset);
|
||||
console_puts_select_stderr(true, str);
|
||||
#endif
|
||||
|
@ -319,23 +319,20 @@ int video_sync_copy_all(struct udevice *dev)
|
|||
|
||||
#endif
|
||||
|
||||
/* Set up the colour map */
|
||||
static int video_pre_probe(struct udevice *dev)
|
||||
#define SPLASH_DECL(_name) \
|
||||
extern u8 __splash_ ## _name ## _begin[]; \
|
||||
extern u8 __splash_ ## _name ## _end[]
|
||||
|
||||
#define SPLASH_START(_name) __splash_ ## _name ## _begin
|
||||
|
||||
SPLASH_DECL(u_boot_logo);
|
||||
|
||||
static int show_splash(struct udevice *dev)
|
||||
{
|
||||
struct video_priv *priv = dev_get_uclass_priv(dev);
|
||||
u8 *data = SPLASH_START(u_boot_logo);
|
||||
int ret;
|
||||
|
||||
priv->cmap = calloc(256, sizeof(ushort));
|
||||
if (!priv->cmap)
|
||||
return -ENOMEM;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int video_pre_remove(struct udevice *dev)
|
||||
{
|
||||
struct video_priv *priv = dev_get_uclass_priv(dev);
|
||||
|
||||
free(priv->cmap);
|
||||
ret = video_bmp_display(dev, map_to_sysmem(data), -4, 4, true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -405,6 +402,14 @@ static int video_post_probe(struct udevice *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
if (IS_ENABLED(CONFIG_VIDEO_LOGO) && !plat->hide_logo) {
|
||||
ret = show_splash(dev);
|
||||
if (ret) {
|
||||
log_debug("Cannot show splash screen\n");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
|
@ -447,9 +452,7 @@ UCLASS_DRIVER(video) = {
|
|||
.name = "video",
|
||||
.flags = DM_UC_FLAG_SEQ_ALIAS,
|
||||
.post_bind = video_post_bind,
|
||||
.pre_probe = video_pre_probe,
|
||||
.post_probe = video_post_probe,
|
||||
.pre_remove = video_pre_remove,
|
||||
.priv_auto = sizeof(struct video_uc_priv),
|
||||
.per_device_auto = sizeof(struct video_priv),
|
||||
.per_device_plat_auto = sizeof(struct video_uc_plat),
|
||||
|
|
|
@ -13,34 +13,90 @@
|
|||
#include <watchdog.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
||||
#ifdef CONFIG_VIDEO_BMP_RLE8
|
||||
#define BMP_RLE8_ESCAPE 0
|
||||
#define BMP_RLE8_EOL 0
|
||||
#define BMP_RLE8_EOBMP 1
|
||||
#define BMP_RLE8_DELTA 2
|
||||
|
||||
static void draw_unencoded_bitmap(ushort **fbp, uchar *bmap, ushort *cmap,
|
||||
/**
|
||||
* get_bmp_col_16bpp() - Convert a colour-table entry into a 16bpp pixel value
|
||||
*
|
||||
* @return value to write to the 16bpp frame buffer for this palette entry
|
||||
*/
|
||||
static uint get_bmp_col_16bpp(struct bmp_color_table_entry cte)
|
||||
{
|
||||
return ((cte.red << 8) & 0xf800) |
|
||||
((cte.green << 3) & 0x07e0) |
|
||||
((cte.blue >> 3) & 0x001f);
|
||||
}
|
||||
|
||||
/**
|
||||
* write_pix8() - Write a pixel from a BMP image into the framebuffer
|
||||
*
|
||||
* This handles frame buffers with 8, 16, 24 or 32 bits per pixel
|
||||
*
|
||||
* @fb: Place in frame buffer to update
|
||||
* @bpix: Frame buffer bits-per-pixel, which controls how many bytes are written
|
||||
* @palette: BMP palette table
|
||||
* @bmap: Pointer to BMP bitmap position to write. This contains a single byte
|
||||
* which is either written directly (bpix == 8) or used to look up the
|
||||
* palette to get a colour to write
|
||||
*/
|
||||
static void write_pix8(u8 *fb, uint bpix, struct bmp_color_table_entry *palette,
|
||||
u8 *bmap)
|
||||
{
|
||||
if (bpix == 8) {
|
||||
*fb++ = *bmap;
|
||||
} else if (bpix == 16) {
|
||||
*(u16 *)fb = get_bmp_col_16bpp(palette[*bmap]);
|
||||
} else {
|
||||
/* Only support big endian */
|
||||
struct bmp_color_table_entry *cte = &palette[*bmap];
|
||||
|
||||
if (bpix == 24) {
|
||||
*fb++ = cte->red;
|
||||
*fb++ = cte->green;
|
||||
*fb++ = cte->blue;
|
||||
} else {
|
||||
*fb++ = cte->blue;
|
||||
*fb++ = cte->green;
|
||||
*fb++ = cte->red;
|
||||
*fb++ = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void draw_unencoded_bitmap(u8 **fbp, uint bpix, uchar *bmap,
|
||||
struct bmp_color_table_entry *palette,
|
||||
int cnt)
|
||||
{
|
||||
u8 *fb = *fbp;
|
||||
|
||||
while (cnt > 0) {
|
||||
*(*fbp)++ = cmap[*bmap++];
|
||||
write_pix8(fb, bpix, palette, bmap++);
|
||||
fb += bpix / 8;
|
||||
cnt--;
|
||||
}
|
||||
*fbp = fb;
|
||||
}
|
||||
|
||||
static void draw_encoded_bitmap(ushort **fbp, ushort col, int cnt)
|
||||
static void draw_encoded_bitmap(u8 **fbp, uint bpix,
|
||||
struct bmp_color_table_entry *palette, u8 *bmap,
|
||||
int cnt)
|
||||
{
|
||||
ushort *fb = *fbp;
|
||||
u8 *fb = *fbp;
|
||||
|
||||
while (cnt > 0) {
|
||||
*fb++ = col;
|
||||
write_pix8(fb, bpix, palette, bmap);
|
||||
fb += bpix / 8;
|
||||
cnt--;
|
||||
}
|
||||
*fbp = fb;
|
||||
}
|
||||
|
||||
static void video_display_rle8_bitmap(struct udevice *dev,
|
||||
struct bmp_image *bmp, ushort *cmap,
|
||||
struct bmp_image *bmp, uint bpix,
|
||||
struct bmp_color_table_entry *palette,
|
||||
uchar *fb, int x_off, int y_off,
|
||||
ulong width, ulong height)
|
||||
{
|
||||
|
@ -49,6 +105,7 @@ static void video_display_rle8_bitmap(struct udevice *dev,
|
|||
ulong cnt, runlen;
|
||||
int x, y;
|
||||
int decode = 1;
|
||||
uint bytes_per_pixel = bpix / 8;
|
||||
|
||||
debug("%s\n", __func__);
|
||||
bmap = (uchar *)bmp + get_unaligned_le32(&bmp->header.data_offset);
|
||||
|
@ -64,8 +121,8 @@ static void video_display_rle8_bitmap(struct udevice *dev,
|
|||
bmap += 2;
|
||||
x = 0;
|
||||
y--;
|
||||
/* 16bpix, 2-byte per pixel, width should *2 */
|
||||
fb -= (width * 2 + priv->line_length);
|
||||
fb -= width * bytes_per_pixel +
|
||||
priv->line_length;
|
||||
break;
|
||||
case BMP_RLE8_EOBMP:
|
||||
/* end of bitmap */
|
||||
|
@ -75,9 +132,9 @@ static void video_display_rle8_bitmap(struct udevice *dev,
|
|||
/* delta run */
|
||||
x += bmap[2];
|
||||
y -= bmap[3];
|
||||
/* 16bpix, 2-byte per pixel, x should *2 */
|
||||
fb = (uchar *)(priv->fb + (y + y_off - 1)
|
||||
* priv->line_length + (x + x_off) * 2);
|
||||
fb = (uchar *)(priv->fb +
|
||||
(y + y_off - 1) * priv->line_length +
|
||||
(x + x_off) * bytes_per_pixel);
|
||||
bmap += 4;
|
||||
break;
|
||||
default:
|
||||
|
@ -91,8 +148,8 @@ static void video_display_rle8_bitmap(struct udevice *dev,
|
|||
else
|
||||
cnt = runlen;
|
||||
draw_unencoded_bitmap(
|
||||
(ushort **)&fb,
|
||||
bmap, cmap, cnt);
|
||||
&fb, bpix,
|
||||
bmap, palette, cnt);
|
||||
}
|
||||
x += runlen;
|
||||
}
|
||||
|
@ -116,8 +173,8 @@ static void video_display_rle8_bitmap(struct udevice *dev,
|
|||
cnt = width - x;
|
||||
else
|
||||
cnt = runlen;
|
||||
draw_encoded_bitmap((ushort **)&fb,
|
||||
cmap[bmap[1]], cnt);
|
||||
draw_encoded_bitmap(&fb, bpix, palette,
|
||||
&bmap[1], cnt);
|
||||
}
|
||||
x += runlen;
|
||||
}
|
||||
|
@ -125,20 +182,6 @@ static void video_display_rle8_bitmap(struct udevice *dev,
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
__weak void fb_put_byte(uchar **fb, uchar **from)
|
||||
{
|
||||
*(*fb)++ = *(*from)++;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BMP_16BPP)
|
||||
__weak void fb_put_word(uchar **fb, uchar **from)
|
||||
{
|
||||
*(*fb)++ = *(*from)++;
|
||||
*(*fb)++ = *(*from)++;
|
||||
}
|
||||
#endif /* CONFIG_BMP_16BPP */
|
||||
|
||||
/**
|
||||
* video_splash_align_axis() - Align a single coordinate
|
||||
|
@ -169,28 +212,10 @@ static void video_splash_align_axis(int *axis, unsigned long panel_size,
|
|||
*axis = max(0, (int)axis_alignment);
|
||||
}
|
||||
|
||||
static void video_set_cmap(struct udevice *dev,
|
||||
struct bmp_color_table_entry *cte, unsigned colours)
|
||||
{
|
||||
struct video_priv *priv = dev_get_uclass_priv(dev);
|
||||
int i;
|
||||
ushort *cmap = priv->cmap;
|
||||
|
||||
debug("%s: colours=%d\n", __func__, colours);
|
||||
for (i = 0; i < colours; ++i) {
|
||||
*cmap = ((cte->red << 8) & 0xf800) |
|
||||
((cte->green << 3) & 0x07e0) |
|
||||
((cte->blue >> 3) & 0x001f);
|
||||
cmap++;
|
||||
cte++;
|
||||
}
|
||||
}
|
||||
|
||||
int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y,
|
||||
bool align)
|
||||
{
|
||||
struct video_priv *priv = dev_get_uclass_priv(dev);
|
||||
ushort *cmap_base = NULL;
|
||||
int i, j;
|
||||
uchar *start, *fb;
|
||||
struct bmp_image *bmp = map_sysmem(bmp_image, 0);
|
||||
|
@ -246,9 +271,6 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y,
|
|||
debug("Display-bmp: %d x %d with %d colours, display %d\n",
|
||||
(int)width, (int)height, (int)colours, 1 << bpix);
|
||||
|
||||
if (bmp_bpix == 8)
|
||||
video_set_cmap(dev, palette, colours);
|
||||
|
||||
padded_width = (width & 0x3 ? (width & ~0x3) + 4 : width);
|
||||
|
||||
if (align) {
|
||||
|
@ -270,23 +292,19 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y,
|
|||
|
||||
switch (bmp_bpix) {
|
||||
case 1:
|
||||
case 8: {
|
||||
struct bmp_color_table_entry *cte;
|
||||
cmap_base = priv->cmap;
|
||||
#ifdef CONFIG_VIDEO_BMP_RLE8
|
||||
u32 compression = get_unaligned_le32(&bmp->header.compression);
|
||||
case 8:
|
||||
if (IS_ENABLED(CONFIG_VIDEO_BMP_RLE8)) {
|
||||
u32 compression = get_unaligned_le32(
|
||||
&bmp->header.compression);
|
||||
debug("compressed %d %d\n", compression, BMP_BI_RLE8);
|
||||
if (compression == BMP_BI_RLE8) {
|
||||
if (bpix != 16) {
|
||||
/* TODO implement render code for bpix != 16 */
|
||||
printf("Error: only support 16 bpix");
|
||||
return -EPROTONOSUPPORT;
|
||||
}
|
||||
video_display_rle8_bitmap(dev, bmp, cmap_base, fb, x,
|
||||
y, width, height);
|
||||
video_display_rle8_bitmap(dev, bmp, bpix, palette, fb,
|
||||
x, y, width, height);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Not compressed */
|
||||
byte_width = width * (bpix / 8);
|
||||
if (!byte_width)
|
||||
byte_width = width;
|
||||
|
@ -294,81 +312,64 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y,
|
|||
for (i = 0; i < height; ++i) {
|
||||
WATCHDOG_RESET();
|
||||
for (j = 0; j < width; j++) {
|
||||
if (bpix == 8) {
|
||||
fb_put_byte(&fb, &bmap);
|
||||
} else if (bpix == 16) {
|
||||
*(uint16_t *)fb = cmap_base[*bmap];
|
||||
write_pix8(fb, bpix, palette, bmap);
|
||||
bmap++;
|
||||
fb += sizeof(uint16_t) / sizeof(*fb);
|
||||
} else {
|
||||
/* Only support big endian */
|
||||
cte = &palette[*bmap];
|
||||
bmap++;
|
||||
if (bpix == 24) {
|
||||
*(fb++) = cte->red;
|
||||
*(fb++) = cte->green;
|
||||
*(fb++) = cte->blue;
|
||||
} else {
|
||||
*(fb++) = cte->blue;
|
||||
*(fb++) = cte->green;
|
||||
*(fb++) = cte->red;
|
||||
*(fb++) = 0;
|
||||
}
|
||||
}
|
||||
fb += bpix / 8;
|
||||
}
|
||||
bmap += (padded_width - width);
|
||||
fb -= byte_width + priv->line_length;
|
||||
}
|
||||
break;
|
||||
}
|
||||
#if defined(CONFIG_BMP_16BPP)
|
||||
case 16:
|
||||
if (IS_ENABLED(CONFIG_BMP_16BPP)) {
|
||||
for (i = 0; i < height; ++i) {
|
||||
WATCHDOG_RESET();
|
||||
for (j = 0; j < width; j++)
|
||||
fb_put_word(&fb, &bmap);
|
||||
|
||||
for (j = 0; j < width; j++) {
|
||||
*fb++ = *bmap++;
|
||||
*fb++ = *bmap++;
|
||||
}
|
||||
bmap += (padded_width - width);
|
||||
fb -= width * 2 + priv->line_length;
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif /* CONFIG_BMP_16BPP */
|
||||
#if defined(CONFIG_BMP_24BPP)
|
||||
case 24:
|
||||
if (IS_ENABLED(CONFIG_BMP_24BPP)) {
|
||||
for (i = 0; i < height; ++i) {
|
||||
for (j = 0; j < width; j++) {
|
||||
if (bpix == 16) {
|
||||
/* 16bit 555RGB format */
|
||||
*(u16 *)fb = ((bmap[2] >> 3) << 10) |
|
||||
((bmap[1] >> 3) << 5) |
|
||||
/* 16bit 565RGB format */
|
||||
*(u16 *)fb = ((bmap[2] >> 3)
|
||||
<< 11) |
|
||||
((bmap[1] >> 2) << 5) |
|
||||
(bmap[0] >> 3);
|
||||
bmap += 3;
|
||||
fb += 2;
|
||||
} else {
|
||||
*(fb++) = *(bmap++);
|
||||
*(fb++) = *(bmap++);
|
||||
*(fb++) = *(bmap++);
|
||||
*(fb++) = 0;
|
||||
*fb++ = *bmap++;
|
||||
*fb++ = *bmap++;
|
||||
*fb++ = *bmap++;
|
||||
*fb++ = 0;
|
||||
}
|
||||
}
|
||||
fb -= priv->line_length + width * (bpix / 8);
|
||||
bmap += (padded_width - width);
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif /* CONFIG_BMP_24BPP */
|
||||
#if defined(CONFIG_BMP_32BPP)
|
||||
case 32:
|
||||
if (IS_ENABLED(CONFIG_BMP_32BPP)) {
|
||||
for (i = 0; i < height; ++i) {
|
||||
for (j = 0; j < width; j++) {
|
||||
*(fb++) = *(bmap++);
|
||||
*(fb++) = *(bmap++);
|
||||
*(fb++) = *(bmap++);
|
||||
*(fb++) = *(bmap++);
|
||||
*fb++ = *bmap++;
|
||||
*fb++ = *bmap++;
|
||||
*fb++ = *bmap++;
|
||||
*fb++ = *bmap++;
|
||||
}
|
||||
fb -= priv->line_length + width * (bpix / 8);
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif /* CONFIG_BMP_32BPP */
|
||||
default:
|
||||
break;
|
||||
};
|
||||
|
|
|
@ -373,7 +373,6 @@
|
|||
#undef CONFIG_FSL_DIU_FB /* RDB doesn't support DIU */
|
||||
#ifdef CONFIG_FSL_DIU_FB
|
||||
#define CONFIG_SYS_DIU_ADDR (CONFIG_SYS_CCSRBAR + 0x180000)
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define CONFIG_CFI_FLASH_USE_WEAK_ACCESSORS
|
||||
/*
|
||||
|
|
|
@ -362,7 +362,6 @@
|
|||
#ifdef CONFIG_FSL_DIU_FB
|
||||
#define CONFIG_FSL_DIU_CH7301
|
||||
#define CONFIG_SYS_DIU_ADDR (CONFIG_SYS_CCSRBAR + 0x180000)
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -45,7 +45,6 @@
|
|||
#define CONFIG_USBD_HS
|
||||
|
||||
/* Framebuffer and LCD */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define CONFIG_IMX_HDMI
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
|
|
|
@ -443,7 +443,6 @@
|
|||
/* Framebuffer */
|
||||
/* check this console not needed, after test remove it */
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
|
||||
#define CONFIG_IMX6_PWM_PER_CLK 66000000
|
||||
|
|
|
@ -176,7 +176,6 @@
|
|||
/* Display */
|
||||
#define CONFIG_IMX_HDMI
|
||||
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
|
||||
/* EEPROM */
|
||||
|
|
|
@ -164,7 +164,6 @@
|
|||
|
||||
#if defined(CONFIG_DM_VIDEO)
|
||||
#define MXS_LCDIF_BASE MX6UL_LCDIF1_BASE_ADDR
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#endif
|
||||
|
||||
|
|
|
@ -35,7 +35,6 @@
|
|||
#define CONFIG_USBD_HS
|
||||
|
||||
/* Framebuffer and LCD */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define CONFIG_IMX_HDMI
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
|
|
|
@ -197,7 +197,6 @@
|
|||
#define CONFIG_USBD_HS
|
||||
|
||||
#if defined(CONFIG_DM_VIDEO)
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#endif
|
||||
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
#include <linux/sizes.h>
|
||||
|
||||
#ifdef CONFIG_VIDEO_FSL_DCU_FB
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define CONFIG_SYS_FSL_DCU_LE
|
||||
|
||||
|
|
|
@ -10,6 +10,9 @@
|
|||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
#define SPLASH_SETTINGS "splashsource=virtio_fs\0" \
|
||||
"splashimage=0x1000000\0"
|
||||
|
||||
#include <configs/x86-common.h>
|
||||
|
||||
#define CONFIG_SYS_MONITOR_LEN (1 << 20)
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
#endif
|
||||
|
||||
/* Framebuffer */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define CONFIG_IMX_HDMI
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
|
|
|
@ -72,7 +72,6 @@
|
|||
#define CONFIG_USBD_HS
|
||||
|
||||
/* Framebuffer and LCD */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_IMX_HDMI
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
|
|
|
@ -154,7 +154,6 @@
|
|||
#ifdef CONFIG_VIDEO_IPUV3
|
||||
# define CONFIG_IMX_VIDEO_SKIP
|
||||
|
||||
# define CONFIG_VIDEO_LOGO
|
||||
# define CONFIG_VIDEO_BMP_LOGO
|
||||
#endif
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
DMAMEM_SZ_ALL)
|
||||
|
||||
#ifdef CONFIG_DM_VIDEO
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
|
|
|
@ -308,7 +308,6 @@
|
|||
* Video
|
||||
*/
|
||||
#ifdef CONFIG_VIDEO_FSL_DCU_FB
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
|
||||
#define CONFIG_FSL_DIU_CH7301
|
||||
|
|
|
@ -199,7 +199,6 @@
|
|||
* Video
|
||||
*/
|
||||
#ifdef CONFIG_VIDEO_FSL_DCU_FB
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
|
||||
#define CONFIG_FSL_DCU_SII9022A
|
||||
|
|
|
@ -110,7 +110,6 @@
|
|||
/*
|
||||
* LCD
|
||||
*/
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (2 << 20)
|
||||
|
||||
/* LVDS display */
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
|
||||
/* Framebuffer support */
|
||||
#ifdef CONFIG_DM_VIDEO
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (512 << 10)
|
||||
#endif
|
||||
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
|
||||
/* Framebuffer support */
|
||||
#ifdef CONFIG_DM_VIDEO
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (512 << 10)
|
||||
#endif
|
||||
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
#define CONFIG_MXC_USB_FLAGS MXC_EHCI_POWER_PINS_ENABLED
|
||||
|
||||
/* Framebuffer and LCD */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
|
||||
#define CONFIG_ETHPRIME "FEC0"
|
||||
|
||||
|
|
|
@ -132,6 +132,5 @@
|
|||
#endif
|
||||
|
||||
/* Framebuffer and LCD */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
|
||||
#endif /* __CONFIG_H */
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#endif
|
||||
|
||||
/* Framebuffer */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define CONFIG_IMX_HDMI
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
|
|
|
@ -153,7 +153,6 @@
|
|||
/* Environment organization */
|
||||
|
||||
/* Framebuffer */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define CONFIG_IMX_HDMI
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
|
|
|
@ -148,7 +148,6 @@
|
|||
|
||||
#ifndef CONFIG_SPL_BUILD
|
||||
#ifdef CONFIG_DM_VIDEO
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define MXS_LCDIF_BASE MX6SX_LCDIF1_BASE_ADDR
|
||||
#endif
|
||||
|
|
|
@ -149,7 +149,6 @@
|
|||
|
||||
#ifndef CONFIG_SPL_BUILD
|
||||
#if defined(CONFIG_DM_VIDEO)
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define MXS_LCDIF_BASE MX6UL_LCDIF1_BASE_ADDR
|
||||
#endif
|
||||
|
|
|
@ -123,7 +123,6 @@
|
|||
#define CONFIG_USBD_HS
|
||||
|
||||
#ifdef CONFIG_DM_VIDEO
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#endif
|
||||
|
||||
|
|
|
@ -74,7 +74,6 @@
|
|||
* Framebuffer
|
||||
*/
|
||||
/* Video console */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define VIDEO_FB_16BPP_PIXEL_SWAP
|
||||
#define VIDEO_FB_16BPP_WORD_SWAP
|
||||
|
||||
|
|
|
@ -86,7 +86,6 @@
|
|||
#endif
|
||||
|
||||
/* Video output */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_IMX_HDMI
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
/* LCD */
|
||||
#ifndef CONFIG_SPL_BUILD
|
||||
#ifdef CONFIG_DM_VIDEO
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define MXS_LCDIF_BASE MX6UL_LCDIF1_BASE_ADDR
|
||||
#endif
|
||||
|
|
|
@ -136,7 +136,6 @@
|
|||
#define CONFIG_FEC_MXC_PHYADDR 1
|
||||
|
||||
/* Framebuffer */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define CONFIG_IMX_HDMI
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
|
|
|
@ -131,7 +131,6 @@
|
|||
#define CONFIG_BOARD_SIZE_LIMIT 715776
|
||||
|
||||
#ifdef CONFIG_DM_VIDEO
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define MXS_LCDIF_BASE MX6UL_LCDIF1_BASE_ADDR
|
||||
#endif
|
||||
|
|
|
@ -121,7 +121,6 @@
|
|||
#define CONFIG_POWER_PFUZE3000_I2C_ADDR 0x08
|
||||
|
||||
#ifdef CONFIG_DM_VIDEO
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#endif
|
||||
|
||||
|
|
|
@ -76,7 +76,6 @@
|
|||
|
||||
#if defined(CONFIG_VIDEO)
|
||||
#define CONFIG_VIDEO_DA8XX
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define DA8XX_LCD_CNTL_BASE LCD_CNTL_BASE
|
||||
#define PWM_TICKS 0x1388
|
||||
|
|
|
@ -69,7 +69,6 @@
|
|||
|
||||
#if defined(CONFIG_VIDEO)
|
||||
#define CONFIG_VIDEO_DA8XX
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define DA8XX_LCD_CNTL_BASE LCD_CNTL_BASE
|
||||
|
||||
|
|
|
@ -121,8 +121,6 @@
|
|||
* VIDEO
|
||||
*/
|
||||
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
|
||||
#ifdef CONFIG_VIDEO_LOGO
|
||||
#ifdef CONFIG_SPLASH_SCREEN
|
||||
#define SPLASH_FILE logo.bmp
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
#define CONFIG_MXC_USB_FLAGS 0
|
||||
|
||||
/* Framebuffer */
|
||||
#define CONFIG_VIDEO_LOGO
|
||||
#define CONFIG_VIDEO_BMP_LOGO
|
||||
#define CONFIG_IMX_HDMI
|
||||
#define CONFIG_IMX_VIDEO_SKIP
|
||||
|
|
|
@ -81,9 +81,14 @@
|
|||
#define DISTRO_BOOTENV
|
||||
#endif
|
||||
|
||||
#ifndef SPLASH_SETTINGS
|
||||
#define SPLASH_SETTINGS
|
||||
#endif
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
DISTRO_BOOTENV \
|
||||
CONFIG_STD_DEVICES_SETTINGS \
|
||||
SPLASH_SETTINGS \
|
||||
"pciconfighost=1\0" \
|
||||
"netdev=eth0\0" \
|
||||
"consoledev=ttyS0\0" \
|
||||
|
|
|
@ -30,6 +30,7 @@ enum splash_storage {
|
|||
SPLASH_STORAGE_MMC,
|
||||
SPLASH_STORAGE_USB,
|
||||
SPLASH_STORAGE_SATA,
|
||||
SPLASH_STORAGE_VIRTIO,
|
||||
};
|
||||
|
||||
enum splash_flags {
|
||||
|
|
|
@ -30,12 +30,14 @@ struct udevice;
|
|||
* @base: Base address of frame buffer, 0 if not yet known
|
||||
* @copy_base: Base address of a hardware copy of the frame buffer. See
|
||||
* CONFIG_VIDEO_COPY.
|
||||
* @hide_logo: Hide the logo (used for testing)
|
||||
*/
|
||||
struct video_uc_plat {
|
||||
uint align;
|
||||
uint size;
|
||||
ulong base;
|
||||
ulong copy_base;
|
||||
bool hide_logo;
|
||||
};
|
||||
|
||||
enum video_polarity {
|
||||
|
@ -93,7 +95,6 @@ enum video_format {
|
|||
* @colour_bg: Background colour (pixel value)
|
||||
* @flush_dcache: true to enable flushing of the data cache after
|
||||
* the LCD is updated
|
||||
* @cmap: Colour map for 8-bit-per-pixel displays
|
||||
* @fg_col_idx: Foreground color code (bit 3 = bold, bit 0-2 = color)
|
||||
* @bg_col_idx: Background color code (bit 3 = bold, bit 0-2 = color)
|
||||
*/
|
||||
|
@ -118,7 +119,6 @@ struct video_priv {
|
|||
u32 colour_fg;
|
||||
u32 colour_bg;
|
||||
bool flush_dcache;
|
||||
ushort *cmap;
|
||||
u8 fg_col_idx;
|
||||
u8 bg_col_idx;
|
||||
};
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#ifndef __VIRTIO_H__
|
||||
#define __VIRTIO_H__
|
||||
|
||||
#include <virtio_types.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/bug.h>
|
||||
#define VIRTIO_ID_NET 1 /* virtio net */
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue