common: convert compulab splash load code to common code
Move board/compulab/common/splash.c code to common/splash_source.c to make it available for everybody. This move renames cl_splash_screen_prepare() to splash_source_load(), and the compilation of this code is conditional on CONFIG_SPLASH_SOURCE. splash_source features: * Provide a standardized way for declaring board specific splash screen locations * Provide existing routines for auto loading the splash image from the locations as declared by the board * Introduce the "splashsource" environment variable, which makes it possible to select the splash image source. cm-t35 and cm-fx6 are updated to use the modified version. Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il> Cc: Stefano Babic <sbabic@denx.de> Cc: Tom Rini <trini@ti.com> Cc: Igor Grinberg <grinberg@compulab.co.il> Cc: Anatolij Gustschin <agust@denx.de> Reviewed-by: Tom Rini <trini@ti.com> Acked-by: Igor Grinberg <grinberg@compulab.co.il>
This commit is contained in:
parent
3a236a3563
commit
f82eb2fa5d
@ -15,6 +15,7 @@
|
||||
#include <netdev.h>
|
||||
#include <fdt_support.h>
|
||||
#include <sata.h>
|
||||
#include <splash.h>
|
||||
#include <asm/arch/crm_regs.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/arch/iomux.h>
|
||||
@ -42,8 +43,8 @@ static struct splash_location cm_fx6_splash_locations[] = {
|
||||
|
||||
int splash_screen_prepare(void)
|
||||
{
|
||||
return cl_splash_screen_prepare(cm_fx6_splash_locations,
|
||||
ARRAY_SIZE(cm_fx6_splash_locations));
|
||||
return splash_source_load(cm_fx6_splash_locations,
|
||||
ARRAY_SIZE(cm_fx6_splash_locations));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <i2c.h>
|
||||
#include <usb.h>
|
||||
#include <mmc.h>
|
||||
#include <splash.h>
|
||||
#include <twl4030.h>
|
||||
#include <linux/compiler.h>
|
||||
|
||||
@ -69,8 +70,8 @@ struct splash_location splash_locations[] = {
|
||||
|
||||
int splash_screen_prepare(void)
|
||||
{
|
||||
return cl_splash_screen_prepare(splash_locations,
|
||||
ARRAY_SIZE(splash_locations));
|
||||
return splash_source_load(splash_locations,
|
||||
ARRAY_SIZE(splash_locations));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -9,5 +9,4 @@
|
||||
obj-y += common.o
|
||||
obj-$(CONFIG_SYS_I2C) += eeprom.o
|
||||
obj-$(CONFIG_LCD) += omap3_display.o
|
||||
obj-$(CONFIG_SPLASH_SCREEN) += splash.o
|
||||
obj-$(CONFIG_SMC911X) += omap3_smc911x.o
|
||||
|
@ -24,27 +24,6 @@ static inline int cl_usb_hub_init(int gpio, const char *label)
|
||||
static inline void cl_usb_hub_deinit(int gpio) {}
|
||||
#endif /* CONFIG_CMD_USB */
|
||||
|
||||
enum splash_storage {
|
||||
SPLASH_STORAGE_NAND,
|
||||
SPLASH_STORAGE_SF,
|
||||
};
|
||||
|
||||
struct splash_location {
|
||||
char *name;
|
||||
enum splash_storage storage;
|
||||
u32 offset; /* offset from start of storage */
|
||||
};
|
||||
|
||||
#ifdef CONFIG_SPLASH_SCREEN
|
||||
int cl_splash_screen_prepare(struct splash_location *locations, uint size);
|
||||
#else /* !CONFIG_SPLASH_SCREEN */
|
||||
static inline int cl_splash_screen_prepare(struct splash_location *locations,
|
||||
uint size)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
#endif /* CONFIG_SPLASH_SCREEN */
|
||||
|
||||
#ifdef CONFIG_SMC911X
|
||||
int cl_omap3_smc911x_init(int id, int cs, u32 base_addr,
|
||||
int (*reset)(int), int rst_gpio);
|
||||
|
@ -196,6 +196,7 @@ obj-$(CONFIG_CMD_KGDB) += kgdb.o kgdb_stubs.o
|
||||
obj-$(CONFIG_I2C_EDID) += edid.o
|
||||
obj-$(CONFIG_KALLSYMS) += kallsyms.o
|
||||
obj-y += splash.o
|
||||
obj-$(CONFIG_SPLASH_SOURCE) += splash_source.o
|
||||
obj-$(CONFIG_LCD) += lcd.o lcd_console.o
|
||||
obj-$(CONFIG_LYNXKDI) += lynxkdi.o
|
||||
obj-$(CONFIG_MENU) += menu.o
|
||||
|
@ -9,10 +9,10 @@
|
||||
#include <common.h>
|
||||
#include <nand.h>
|
||||
#include <errno.h>
|
||||
#include <splash.h>
|
||||
#include <spi_flash.h>
|
||||
#include <spi.h>
|
||||
#include <bmp_layout.h>
|
||||
#include "common.h"
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
@ -98,8 +98,7 @@ static int splash_load_raw(struct splash_location *location, u32 bmp_load_addr)
|
||||
return splash_storage_read(location, bmp_load_addr, bmp_size);
|
||||
|
||||
splash_address_too_high:
|
||||
printf("Error: splashimage address too high. Data overwrites U-Boot "
|
||||
"and/or placed beyond DRAM boundaries.\n");
|
||||
printf("Error: splashimage address too high. Data overwrites U-Boot and/or placed beyond DRAM boundaries.\n");
|
||||
|
||||
return -EFAULT;
|
||||
}
|
||||
@ -141,7 +140,19 @@ static struct splash_location *select_splash_location(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int cl_splash_screen_prepare(struct splash_location *locations, uint size)
|
||||
/**
|
||||
* splash_source_load - load splash image from a supported location.
|
||||
*
|
||||
* Select a splash image location based on the value of splashsource environment
|
||||
* variable and the board supported splash source locations, and load a
|
||||
* splashimage to the address pointed to by splashimage environment variable.
|
||||
*
|
||||
* @locations: An array of supported splash locations.
|
||||
* @size: Size of splash_locations array.
|
||||
*
|
||||
* @return: 0 on success, negative value on failure.
|
||||
*/
|
||||
int splash_source_load(struct splash_location *locations, uint size)
|
||||
{
|
||||
struct splash_location *splash_location;
|
||||
char *env_splashimage_value;
|
@ -6,3 +6,16 @@ common/splash.c. It is called as part of the splash screen display
|
||||
sequence. It gives the board an opportunity to prepare the splash
|
||||
image data before it is processed and sent to the frame buffer by
|
||||
U-Boot. Define your own version to use this feature.
|
||||
|
||||
CONFIG_SPLASH_SOURCE
|
||||
|
||||
Use the splash_source.c library. This library provides facilities to declare
|
||||
board specific splash image locations, routines for loading splash image from
|
||||
supported locations, and a way of controlling the selected splash location
|
||||
using the "splashsource" environment variable.
|
||||
|
||||
splashsource works as follows:
|
||||
- If splashsource is set to a supported location name as defined by board code,
|
||||
use that splash location.
|
||||
- If splashsource is undefined, use the first splash location as default.
|
||||
- If splashsource is set to an unsupported value, do not load a splash screen.
|
||||
|
@ -313,6 +313,7 @@
|
||||
#define CONFIG_VIDEO_SW_CURSOR
|
||||
|
||||
#define CONFIG_SPLASH_SCREEN
|
||||
#define CONFIG_SPLASH_SOURCE
|
||||
#define CONFIG_CMD_BMP
|
||||
#define CONFIG_VIDEO_BMP_RLE8
|
||||
|
||||
|
@ -310,6 +310,7 @@
|
||||
|
||||
#define CONFIG_LCD
|
||||
#define CONFIG_SPLASH_SCREEN
|
||||
#define CONFIG_SPLASH_SOURCE
|
||||
#define CONFIG_CMD_BMP
|
||||
#define CONFIG_BMP_16BPP
|
||||
#define CONFIG_SCF0403_LCD
|
||||
|
@ -22,7 +22,18 @@
|
||||
#ifndef _SPLASH_H_
|
||||
#define _SPLASH_H_
|
||||
|
||||
enum splash_storage {
|
||||
SPLASH_STORAGE_NAND,
|
||||
SPLASH_STORAGE_SF,
|
||||
};
|
||||
|
||||
struct splash_location {
|
||||
char *name;
|
||||
enum splash_storage storage;
|
||||
u32 offset; /* offset from start of storage */
|
||||
};
|
||||
|
||||
int splash_source_load(struct splash_location *locations, uint size);
|
||||
int splash_screen_prepare(void);
|
||||
|
||||
#ifdef CONFIG_SPLASH_SCREEN_ALIGN
|
||||
|
Loading…
Reference in New Issue
Block a user