Add support for additional splash screen locations
cover Add support for additional splash screen locations
This series adds the following functionality to the splash_source library:
- load splash image from filesystem formatted usb storage
- load splash image from filesystem formatted mmc storage
- load splash image from filesystem formatted sata storage
Finally, use the new features on cm-fx6.
Nikita Kiryanov (5):
splash_source: rename *_read() to *_read_raw()
splash_source: add support for filesystem formatted mmc
splash_source: add support for filesystem formatted usb
splash_source: add support for fileystem formatted sata
arm: mx6: cm-fx6: add splash locations to cm-fx6
board/compulab/cm_fx6/cm_fx6.c | 19 +++++++++ board/compulab/cm_t35/cm_t35.c | 1 + common/splash_source.c | 89 +++++++++++++++++++++++++++++++++++++----- include/splash.h | 10 +++++ 4 files changed, 109 insertions(+), 10 deletions(-)
Signature · 1 line
1.9.1
PATCH 1/5 splash_source: rename *_read() to *_read_raw()
Rename raw read functions to *_read_raw() in preparation for supporting read_fs() feature.
--- common/splash_source.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
common/splash_source.c +9 -9
@@ -18,7 +18,7 @@ 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) +static int splash_sf_read_raw (u32 bmp_load_addr,int offset,size_t read_size) {if (!sf) { sf = spi_flash_probe(CONFIG_SF_DEFAULT_BUS,
@@ -32,7 +32,7 @@ static int splash_sf_read(u32 bmp_load_addr, int offset, size_t read_size) 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) +static int splash_sf_read_raw (u32 bmp_load_addr,int offset,size_t read_size) {debug ("%s: sf support not available\n" , __func__);return -ENOSYS ;
@@ -40,7 +40,7 @@ static int splash_sf_read(u32 bmp_load_addr, int offset, size_t read_size)#endif #ifdef CONFIG_CMD_NAND -static int splash_nand_read (u32 bmp_load_addr,int offset,size_t read_size) +static int splash_nand_read_raw (u32 bmp_load_addr,int offset,size_t read_size) { return nand_read_skip_bad(&nand_info[nand_curr_device], offset, &read_size, NULL,
@@ -48,14 +48,14 @@ static int splash_nand_read(u32 bmp_load_addr, int offset, size_t read_size) (u_char *)bmp_load_addr); }#else -static int splash_nand_read (u32 bmp_load_addr,int offset,size_t read_size) +static int splash_nand_read_raw (u32 bmp_load_addr,int offset,size_t read_size) {debug ("%s: nand support not available\n" , __func__);return -ENOSYS ; }#endif -static int splash_storage_read (struct splash_location *location, +static int splash_storage_read_raw (struct splash_location *location,u32 bmp_load_addr,size_t read_size) {u32 offset;
@@ -66,9 +66,9 @@ static int splash_storage_read(struct splash_location *location, offset = location->offset;switch (location->storage) {case SPLASH_STORAGE_NAND : -return splash_nand_read (bmp_load_addr, offset, read_size); +return splash_nand_read_raw (bmp_load_addr, offset, read_size);case SPLASH_STORAGE_SF : -return splash_sf_read (bmp_load_addr, offset, read_size); +return splash_sf_read_raw (bmp_load_addr, offset, read_size);default :printf ("Unknown splash location\n" ); }
@@ -85,7 +85,7 @@ static int splash_load_raw(struct splash_location *location, u32 bmp_load_addr)if (bmp_load_addr + bmp_header_size >= gd->start_addr_sp) goto splash_address_too_high; - res =splash_storage_read (location, bmp_load_addr, bmp_header_size); + res =splash_storage_read_raw (location, bmp_load_addr, bmp_header_size);if (res <0 )return res;
@@ -95,7 +95,7 @@ static int splash_load_raw(struct splash_location *location, u32 bmp_load_addr)if (bmp_load_addr + bmp_size >= gd->start_addr_sp) goto splash_address_too_high; -return splash_storage_read (location, bmp_load_addr, bmp_size); +return splash_storage_read_raw (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" );
Signature · 1 line
1.9.1
PATCH 1/5 splash_source: rename *_read() to *_read_raw()
Quoted 6 lines · Nikita Kiryanov
Rename raw read functions to
*_read_raw()in preparation for supportingread_fs()feature.Cc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Signed-off-by Nikita Kiryanov <[email protected]>
Signature · 2 lines
Regards, Igor.
PATCH 2/5 splash_source: add support for filesystem formatted mmc
In reply to Nikita KiryanovAdd support for loading splash image from an SD card formatted with a filesystem. Update boards to maintain original behavior where needed.
--- board/compulab/cm_fx6/cm_fx6.c | 1 + board/compulab/cm_t35/cm_t35.c | 1 + common/splash_source.c | 51 +++++++++++++++++++++++++++++++++++++++++- include/splash.h | 8 +++++++ 4 files changed, 60 insertions(+), 1 deletion(-)
board/compulab/cm_fx6/cm_fx6.c +1 -0
@@ -38,6 +38,7 @@ static struct splash_location cm_fx6_splash_locations[] = { { .name = "sf", .storage = SPLASH_STORAGE_SF, + .flags = SPLASH_STORAGE_RAW, .offset = 0x100000, }, };
board/compulab/cm_t35/cm_t35.c +1 -0
@@ -64,6 +64,7 @@ struct splash_location splash_locations[] = { { .name = "nand", .storage = SPLASH_STORAGE_NAND, + .flags = SPLASH_STORAGE_RAW, .offset = 0x100000, }, };
common/splash_source.c +50 -1
67 lines not on this page · raw message
include/splash.h +8 -0
@@ -27,12 +27,20 @@enum splash_storage {SPLASH_STORAGE_NAND ,SPLASH_STORAGE_SF , +SPLASH_STORAGE_MMC , +}; + +enum splash_flags { +SPLASH_STORAGE_RAW , +SPLASH_STORAGE_FS , };struct splash_location {char *name;enum splash_storage storage; +enum splash_flags flags;u32 offset;/* offset from start of storage */ +char *devpart;/* Use the load command dev:part conventions */ };int splash_source_load (struct splash_location *locations,uint size);
Signature · 1 line
1.9.1
PATCH 2/5 splash_source: add support for filesystem formatted mmc
Hi Nikita,
Quoted 7 lines · Nikita Kiryanov
Add support for loading splash image from an SD card formatted with a filesystem. Update boards to maintain original behavior where needed.
Cc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Signed-off-by Nikita Kiryanov <[email protected]>---
[...]
Quoted 4 lines
common/splash_source.c +0
-0
[...]
common/splash_source.c splash_address_too_high: · line 135
Quoted 10 lines
common/splash_source.c +10
-0+static int splash_load_fs (struct splash_location *location,u32 bmp_load_addr) +{ +int res; +loff_t bmp_size; + + res =splash_select_fs_dev (location); +if (res) +return res; + + res =fs_size ("splash.bmp" , &bmp_size);
The splash.bmp can be a default file name (which is selected through menuconfig), but I think, will it be better to make it a env variable?
Quoted 14 lines
common/splash_source.c +14
-0+if (res) { +printf ("Error (%d): cannot determine file size\n" , res); +return res; + } + +if (bmp_load_addr + bmp_size >= gd->start_addr_sp) { +printf ("Error: splashimage address too high. Data overwrites U-Boot and/or placed beyond DRAM boundaries.\n" ); +return -EFAULT ; + } + +splash_select_fs_dev (location); +return fs_read ("splash.bmp" , bmp_load_addr,0 ,0 ,NULL ); +} +
[...]
Signature · 2 lines
Regards, Igor.
PATCH 2/5 splash_source: add support for filesystem formatted mmc
Quoted 20 lines · Igor Grinberg
Hi Nikita,
Quoted 7 lines · Nikita Kiryanov
Add support for loading splash image from an SD card formatted with a filesystem. Update boards to maintain original behavior where needed.
Cc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Signed-off-by Nikita Kiryanov <[email protected]>---
[...]
Quoted 4 lines
common/splash_source.c +0
-0[...]
Quoted 13 lines
common/splash_source.c splash_address_too_high: · line 135
Quoted 10 lines
common/splash_source.c +10
-0+static int splash_load_fs (struct splash_location *location,u32 bmp_load_addr) +{ +int res; +loff_t bmp_size; + + res =splash_select_fs_dev (location); +if (res) +return res; + + res =fs_size ("splash.bmp" , &bmp_size);The splash.bmp can be a default file name (which is selected through menuconfig), but I think, will it be better to make it a env variable?
Well, the menuconfig part I think is best left to another series because it won't be a simple addition: default file name define would have to depend on CONFIG_SPLASH_SOURCE, which shouldn't exist as an option without CONFIG_SPLASH_SCREEN and its related defines, none of which have a fitting place in the current menuconfig hierarchy. Then there's the board config file changes these additions would cause.
As for the env variable suggestion though, that can be done.
Quoted 22 lines
Quoted 15 lines
common/splash_source.c +14
-0+if (res) { +printf ("Error (%d): cannot determine file size\n" , res); +return res; + } + +if (bmp_load_addr + bmp_size >= gd->start_addr_sp) { +printf ("Error: splashimage address too high. Data overwrites U-Boot and/or placed beyond DRAM boundaries.\n" ); +return -EFAULT ; + } + +splash_select_fs_dev (location); +return fs_read ("splash.bmp" , bmp_load_addr,0 ,0 ,NULL ); +} +[...]
Signature · 2 lines
Regards, Igor.
PATCH 3/5 splash_source: add support for filesystem formatted usb
In reply to Nikita KiryanovAdd support for loading splash image from USB drive formatted with a filesystem.
--- common/splash_source.c | 11 +++++++++++ include/splash.h | 1 + 2 files changed, 12 insertions(+)
common/splash_source.c +11 -0
@@ -12,6 +12,7 @@#include <splash.h> #include <spi_flash.h> #include <spi.h> +#include <usb.h> #include <bmp_layout.h> #include <fs.h>
@@ -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 ;
@@ -128,6 +132,13 @@ static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr)int res;loff_t bmp_size; +#ifdef CONFIG_USB_STORAGE +if (location->storage ==SPLASH_STORAGE_USB ) { +usb_init (); +usb_stor_scan (1 ); + } +#endif + res =splash_select_fs_dev (location);if (res)return res;
include/splash.h +1 -0
@@ -28,6 +28,7 @@ enum splash_storage {SPLASH_STORAGE_NAND ,SPLASH_STORAGE_SF ,SPLASH_STORAGE_MMC , + SPLASH_STORAGE_USB, }; enum splash_flags {
Signature · 1 line
1.9.1
PATCH 3/5 splash_source: add support for filesystem formatted usb
Quoted 6 lines · Nikita Kiryanov
Add support for loading splash image from USB drive formatted with a filesystem.
Cc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Signed-off-by Nikita Kiryanov <[email protected]>
[...]
common/splash_source.c static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr) · line 140
Quoted 6 lines
common/splash_source.c +6
-0+#ifdef CONFIG_USB_STORAGE +if (location->storage ==SPLASH_STORAGE_USB ) { +usb_init (); +usb_stor_scan (1 ); + } +#endif
Can we use IS_ENABLED() stuff here instead?
Signature · 2 lines
Regards, Igor.
PATCH 3/5 splash_source: add support for filesystem formatted usb
Quoted 10 lines · Igor Grinberg
Quoted 6 lines · Nikita Kiryanov
Add support for loading splash image from USB drive formatted with a filesystem.
Cc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Signed-off-by Nikita Kiryanov <[email protected]>[...]
Quoted 8 lines
common/splash_source.c static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr) · line 140
Quoted 6 lines
common/splash_source.c +6
-0+#ifdef CONFIG_USB_STORAGE +if (location->storage ==SPLASH_STORAGE_USB ) { +usb_init (); +usb_stor_scan (1 ); + } +#endif Can we use
IS_ENABLED()stuff here instead?
IS_ENABLED() does not prevent compile errors, only closes off certain code paths.
Quoted 6 lines
Signature · 3 lines
-- Regards, Igor.
PATCH 3/5 splash_source: add support for filesystem formatted usb
Quoted 20 lines · Nikita Kiryanov
Quoted 10 lines · Igor Grinberg
Quoted 6 lines · Nikita Kiryanov
Add support for loading splash image from USB drive formatted with a filesystem.
Cc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Signed-off-by Nikita Kiryanov <[email protected]>[...]
Quoted 8 lines
common/splash_source.c static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr) · line 140
Quoted 6 lines
common/splash_source.c +6
-0+#ifdef CONFIG_USB_STORAGE +if (location->storage ==SPLASH_STORAGE_USB ) { +usb_init (); +usb_stor_scan (1 ); + } +#endif Can we use
IS_ENABLED()stuff here instead?
Quoted 2 lines
IS_ENABLED()does not prevent compile errors, only closes off certain code paths.
Ok. Any other ways to not have that ifdefferry inside functions?
Signature · 2 lines
Regards, Igor.
PATCH 3/5 splash_source: add support for filesystem formatted usb
Quoted 21 lines · Igor Grinberg
Quoted 20 lines · Nikita Kiryanov
Quoted 18 lines · Igor Grinberg
Quoted 6 lines · Nikita Kiryanov
Add support for loading splash image from USB drive formatted with a filesystem.
Cc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Signed-off-by Nikita Kiryanov <[email protected]>[...]
common/splash_source.c static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr) · line 140
Quoted 6 lines
common/splash_source.c +6
-0+#ifdef CONFIG_USB_STORAGE +if (location->storage ==SPLASH_STORAGE_USB ) { +usb_init (); +usb_stor_scan (1 ); + } +#endif Can we use
IS_ENABLED()stuff here instead?
Quoted 4 lines
Quoted 2 lines
IS_ENABLED()does not prevent compile errors, only closes off certain code paths.Ok. Any other ways to not have that ifdefferry inside functions?
Well, I suppose I can take this out into its own function and stub it #ifndef. I'll do a V2.
Quoted 6 lines
Signature · 3 lines
-- Regards, Igor.
PATCH 4/5 splash_source: add support for fileystem formatted sata
In reply to Nikita KiryanovAdd support for loading splashimage from filesystem formatted sata storage.
--- common/splash_source.c | 9 +++++++++ include/splash.h | 1 + 2 files changed, 10 insertions(+)
common/splash_source.c +9 -0
@@ -13,6 +13,7 @@#include <spi_flash.h> #include <spi.h> #include <usb.h> +#include <sata.h> #include <bmp_layout.h> #include <fs.h>
@@ -116,6 +117,9 @@ static int splash_select_fs_dev(struct splash_location *location)case SPLASH_STORAGE_USB : res =fs_set_blk_dev ("usb" , location->devpart,FS_TYPE_ANY );break ; +case SPLASH_STORAGE_SATA : + res =fs_set_blk_dev ("sata" , location->devpart,FS_TYPE_ANY ); +break ;default :printf ("Error: unsupported location storage.\n" );return -ENODEV ;
@@ -139,6 +143,11 @@ static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr) }#endif +#ifdef CONFIG_CMD_SATA +if (location->storage ==SPLASH_STORAGE_SATA ) +sata_initialize (); +#endif + res =splash_select_fs_dev (location);if (res)return res;
include/splash.h +1 -0
@@ -29,6 +29,7 @@ enum splash_storage {SPLASH_STORAGE_SF ,SPLASH_STORAGE_MMC ,SPLASH_STORAGE_USB , + SPLASH_STORAGE_SATA, }; enum splash_flags {
Signature · 1 line
1.9.1
PATCH 5/5 arm: mx6: cm-fx6: add splash locations to cm-fx6
In reply to Nikita KiryanovAdd the following splash locations to cm-fx6:
* filesystem formatted mmc
* filesystem formatted usb
* filesystem formatted sata
--- board/compulab/cm_fx6/cm_fx6.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
board/compulab/cm_fx6/cm_fx6.c +18 -0
@@ -41,6 +41,24 @@ static struct splash_location cm_fx6_splash_locations[] = { .flags = SPLASH_STORAGE_RAW, .offset = 0x100000, }, + { + .name = "mmc_fs", + .storage = SPLASH_STORAGE_MMC, + .flags = SPLASH_STORAGE_FS, + .devpart = "2:1", + }, + { + .name = "usb_fs", + .storage = SPLASH_STORAGE_USB, + .flags = SPLASH_STORAGE_FS, + .devpart = "0:1", + }, + { + .name = "sata_fs", + .storage = SPLASH_STORAGE_SATA, + .flags = SPLASH_STORAGE_FS, + .devpart = "0:1", + }, }; int splash_screen_prepare(void)
Signature · 1 line
1.9.1
PATCH 5/5 arm: mx6: cm-fx6: add splash locations to cm-fx6
Quoted 8 lines · Nikita Kiryanov
Add the following splash locations to cm-fx6:
* filesystem formatted mmc
* filesystem formatted usb
* filesystem formatted sataCc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Signed-off-by Nikita Kiryanov <[email protected]>
Signature · 2 lines
Regards, Igor.
cover Add support for additional splash screen locations
In reply to Nikita KiryanovTitle correction: add support for additional splash image locations
Quoted 26 lines · Nikita Kiryanov
This series adds the following functionality to the
splash_sourcelibrary:
- load splash image from filesystem formatted usb storage
- load splash image from filesystem formatted mmc storage
- load splash image from filesystem formatted sata storageFinally, use the new features on cm-fx6.
Cc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Nikita Kiryanov (5):
splash_source: rename*_read()to*_read_raw()
splash_source: add support for filesystem formatted mmc
splash_source: add support for filesystem formatted usb
splash_source: add support for fileystem formatted sata
arm: mx6: cm-fx6: add splash locations to cm-fx6board/compulab/cm_fx6/cm_fx6.c | 19 +++++++++ board/compulab/cm_t35/cm_t35.c | 1 + common/splash_source.c | 89 +++++++++++++++++++++++++++++++++++++----- include/splash.h | 10 +++++ 4 files changed, 109 insertions(+), 10 deletions(-)Signature · 1 line
1.9.1
cover Add support for additional splash screen locations
In reply to Nikita KiryanovGentle ping.
Quoted 26 lines · Nikita Kiryanov
This series adds the following functionality to the
splash_sourcelibrary:
- load splash image from filesystem formatted usb storage
- load splash image from filesystem formatted mmc storage
- load splash image from filesystem formatted sata storageFinally, use the new features on cm-fx6.
Cc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Nikita Kiryanov (5):
splash_source: rename*_read()to*_read_raw()
splash_source: add support for filesystem formatted mmc
splash_source: add support for filesystem formatted usb
splash_source: add support for fileystem formatted sata
arm: mx6: cm-fx6: add splash locations to cm-fx6board/compulab/cm_fx6/cm_fx6.c | 19 +++++++++ board/compulab/cm_t35/cm_t35.c | 1 + common/splash_source.c | 89 +++++++++++++++++++++++++++++++++++++----- include/splash.h | 10 +++++ 4 files changed, 109 insertions(+), 10 deletions(-)Signature · 1 line
1.9.1
cover Add support for additional splash screen locations
In reply to Nikita KiryanovNow that the merge window is open: ping!
Quoted 26 lines · Nikita Kiryanov
This series adds the following functionality to the
splash_sourcelibrary:
- load splash image from filesystem formatted usb storage
- load splash image from filesystem formatted mmc storage
- load splash image from filesystem formatted sata storageFinally, use the new features on cm-fx6.
Cc Igor Grinberg <[email protected]>Cc Tom Rini <[email protected]>Nikita Kiryanov (5):
splash_source: rename*_read()to*_read_raw()
splash_source: add support for filesystem formatted mmc
splash_source: add support for filesystem formatted usb
splash_source: add support for fileystem formatted sata
arm: mx6: cm-fx6: add splash locations to cm-fx6board/compulab/cm_fx6/cm_fx6.c | 19 +++++++++ board/compulab/cm_t35/cm_t35.c | 1 + common/splash_source.c | 89 +++++++++++++++++++++++++++++++++++++----- include/splash.h | 10 +++++ 4 files changed, 109 insertions(+), 10 deletions(-)Signature · 1 line
1.9.1