From 9bb4e9474281806986bc1c07f5f4b0ecc33d1bae Mon Sep 17 00:00:00 2001 From: Nikita Kiryanov Date: Thu, 29 Oct 2015 11:54:42 +0200 Subject: splash_source: add support for filesystem formatted usb Add support for loading splash image from USB drive formatted with a filesystem. Cc: Igor Grinberg Cc: Tom Rini Signed-off-by: Nikita Kiryanov --- common/splash_source.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'common/splash_source.c') diff --git a/common/splash_source.c b/common/splash_source.c index 7de8695375..cf475699f0 100644 --- a/common/splash_source.c +++ b/common/splash_source.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -112,6 +113,9 @@ static int splash_select_fs_dev(struct splash_location *location) case SPLASH_STORAGE_MMC: res = fs_set_blk_dev("mmc", location->devpart, FS_TYPE_ANY); break; + case SPLASH_STORAGE_USB: + res = fs_set_blk_dev("usb", location->devpart, FS_TYPE_ANY); + break; default: printf("Error: unsupported location storage.\n"); return -ENODEV; @@ -123,11 +127,30 @@ static int splash_select_fs_dev(struct splash_location *location) return res; } +#ifdef CONFIG_USB_STORAGE +static int splash_init_usb(void) +{ + int err; + + err = usb_init(); + if (err) + return err; + + return usb_stor_scan(1) < 0 ? -ENODEV : 0; +} +#else +static inline int splash_init_usb(void) +{ + printf("Cannot load splash image: no USB support\n"); + return -ENOSYS; +} +#endif + #define SPLASH_SOURCE_DEFAULT_FILE_NAME "splash.bmp" static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr) { - int res; + int res = 0; loff_t bmp_size; char *splash_file; @@ -135,6 +158,12 @@ static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr) if (!splash_file) splash_file = SPLASH_SOURCE_DEFAULT_FILE_NAME; + if (location->storage == SPLASH_STORAGE_USB) + res = splash_init_usb(); + + if (res) + return res; + res = splash_select_fs_dev(location); if (res) return res; -- cgit v1.2.3