compulab: splash: support loading splash from sf

Add support for loading splash from sf.

Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
[grinberg@compulab.co.il: staticize the sf global variable]
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Igor Grinberg <grinberg@compulab.co.il>
This commit is contained in:
Nikita Kiryanov 2015-01-14 10:42:52 +02:00 committed by Stefano Babic
parent fd29dd554a
commit 7e8d7f2ac2
2 changed files with 28 additions and 0 deletions

View file

@ -26,6 +26,7 @@ static inline void cl_usb_hub_deinit(int gpio) {}
enum splash_storage {
SPLASH_STORAGE_NAND,
SPLASH_STORAGE_SF,
};
struct splash_location {

View file

@ -9,11 +9,36 @@
#include <common.h>
#include <nand.h>
#include <errno.h>
#include <spi_flash.h>
#include <spi.h>
#include <bmp_layout.h>
#include "common.h"
DECLARE_GLOBAL_DATA_PTR;
#ifdef CONFIG_SPI_FLASH
static struct spi_flash *sf;
static int splash_sf_read(u32 bmp_load_addr, int offset, size_t read_size)
{
if (!sf) {
sf = spi_flash_probe(CONFIG_SF_DEFAULT_BUS,
CONFIG_SF_DEFAULT_CS,
CONFIG_SF_DEFAULT_SPEED,
CONFIG_SF_DEFAULT_MODE);
if (!sf)
return -ENODEV;
}
return spi_flash_read(sf, offset, read_size, (void *)bmp_load_addr);
}
#else
static int splash_sf_read(u32 bmp_load_addr, int offset, size_t read_size)
{
debug("%s: sf support not available\n", __func__);
return -ENOSYS;
}
#endif
#ifdef CONFIG_CMD_NAND
static int splash_nand_read(u32 bmp_load_addr, int offset, size_t read_size)
{
@ -42,6 +67,8 @@ static int splash_storage_read(struct splash_location *location,
switch (location->storage) {
case SPLASH_STORAGE_NAND:
return splash_nand_read(bmp_load_addr, offset, read_size);
case SPLASH_STORAGE_SF:
return splash_sf_read(bmp_load_addr, offset, read_size);
default:
printf("Unknown splash location\n");
}