Skip to contentSkip to conversation

Add support for additional splash screen locations

PATCH Superseded Nikita Kiryanov 2 participants 11 messages Oct 29, 2015 – Nov 16, 2015

lore
Share & tools
lore
#0 lore raw

v2 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.

Changes in V2:
- Rebased over current mainline.
- Added "splashfile" env variable to select splash file name dynamically. Also available: default value "splash.bmp"
- Added documentation for the feature.
- Refactored device initialization code so that #ifdefs are outside of the functions. This affects patches 3 and 4.

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 filesystem 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         | 125 +++++++++++++++++++++++++++++++++++++----
 doc/README.splashprepare       |   5 ++
 include/splash.h               |  10 ++++
 5 files changed, 150 insertions(+), 10 deletions(-)
Signature · 1 line
1.9.1
#1 lore raw

PATCH v2 1/5 splash_source: rename *_read() to *_read_raw()

Rename raw read functions to *_read_raw() in preparation for supporting read_fs() feature.

---
Changes in V2:
- No changes.

 common/splash_source.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
common/splash_source.c +9 -9
index d1bb5a4..4820c12 100644
@@ -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
#2 lore raw

PATCH v2 2/5 splash_source: add support for filesystem formatted mmc

In reply to Nikita Kiryanov

Add support for loading splash image from an SD card formatted with a filesystem. Update boards to maintain original behavior where needed.

---
Changes in V2:
- Added "splashfile" env variable to select splash file name dynamically. Also available: default value "splash.bmp"
- Added documentation for the feature.

 board/compulab/cm_fx6/cm_fx6.c |  1 +
 board/compulab/cm_t35/cm_t35.c |  1 +
 common/splash_source.c         | 58 +++++++++++++++++++++++++++++++++++++++++-
 doc/README.splashprepare       |  5 ++++
 include/splash.h               |  8 ++++++
 5 files changed, 72 insertions(+), 1 deletion(-)
board/compulab/cm_fx6/cm_fx6.c +1 -0
index 01871e1..202a178 100644
@@ -39,6 +39,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
index ccefc40..189d903 100644
@@ -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 +57 -1

74 lines not on this page · raw message

doc/README.splashprepare +5 -0
index a0f0f3c..56c1bef 100644
@@ -19,3 +19,8 @@ splashsource works as follows:
   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.
+
+A splash source location can describe either storage with raw data, or storage
+formatted with a file system. In case of a filesystem, the splash screen data is
+loaded as a file. The name of the splash screen file can be controlled with the
+environment variable "splashfile".
include/splash.h +8 -0
index 7ae7a68..d1fba69 100644
@@ -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
#3 lore raw

PATCH v2 3/5 splash_source: add support for filesystem formatted usb

In reply to Nikita Kiryanov

Add support for loading splash image from USB drive formatted with a filesystem.

---
Changes in V2:
- Refactored device initialization code so that #ifdefs are outside of the functions. This affects patches 3 and 4.

 common/splash_source.c | 31 ++++++++++++++++++++++++++++++-
 include/splash.h       |  1 +
 2 files changed, 31 insertions(+), 1 deletion(-)
common/splash_source.c +30 -1
index 7de8695..cf47569 100644
@@ -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;
@@ -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;
include/splash.h +1 -0
index d1fba69..b728bd6 100644
@@ -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
#4 lore raw

PATCH v2 4/5 splash_source: add support for filesystem formatted sata

In reply to Nikita Kiryanov

Add support for loading splashimage from filesystem formatted sata storage.

---
Changes in V2:
- Refactored device initialization code so that #ifdefs are outside of the functions.

 common/splash_source.c | 20 ++++++++++++++++++++
 include/splash.h       |  1 +
 2 files changed, 21 insertions(+)
common/splash_source.c +20 -0
index cf47569..a09dd4b 100644
@@ -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;
@@ -146,6 +150,19 @@ static inline int splash_init_usb(void)
 }
 #endif
 
+#ifdef CONFIG_CMD_SATA
+static int splash_init_sata(void)
+{
+	return sata_initialize();
+}
+#else
+static inline int splash_init_sata(void)
+{
+	printf("Cannot load splash image: no SATA 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)
@@ -161,6 +178,9 @@ static int splash_load_fs(struct splash_location *location, u32 bmp_load_addr)
 	if (location->storage == SPLASH_STORAGE_USB)
 		res = splash_init_usb();
 
+	if (location->storage == SPLASH_STORAGE_SATA)
+		res = splash_init_sata();
+
 	if (res)
 		return res;
 
include/splash.h +1 -0
index b728bd6..f0755ca 100644
@@ -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
#5 lore raw

PATCH v2 5/5 arm: mx6: cm-fx6: add splash locations to cm-fx6

In reply to Nikita Kiryanov

Add the following splash locations to cm-fx6:
* filesystem formatted mmc
* filesystem formatted usb
* filesystem formatted sata

---
Changes in V2:
- No changes.

 board/compulab/cm_fx6/cm_fx6.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
board/compulab/cm_fx6/cm_fx6.c +18 -0
index 202a178..a21e7b0 100644
@@ -42,6 +42,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
#6 lore raw

v2 cover Add support for additional splash screen locations

In reply to Nikita Kiryanov

Ping!

Quoted 35 lines · Nikita Kiryanov

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.

Changes in V2:
- Rebased over current mainline.
- Added "splashfile" env variable to select splash file name dynamically. Also available: default value "splash.bmp"
- Added documentation for the feature.
- Refactored device initialization code so that #ifdefs are outside of the functions. This affects patches 3 and 4.

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 filesystem 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         | 125 +++++++++++++++++++++++++++++++++++++----
 doc/README.splashprepare       |   5 ++
 include/splash.h               |  10 ++++
 5 files changed, 150 insertions(+), 10 deletions(-)
Signature · 1 line
1.9.1
#7 lore raw

v2 cover Add support for additional splash screen locations

Ping^2!

Quoted 43 lines · Nikita Kiryanov

Ping!

Quoted 25 lines · Nikita Kiryanov

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.

Changes in V2:
- Rebased over current mainline.
- Added "splashfile" env variable to select splash file name dynamically. Also available: default value "splash.bmp"
- Added documentation for the feature.
- Refactored device initialization code so that #ifdefs are outside of the functions. This affects patches 3 and 4.

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 filesystem formatted sata
arm: mx6: cm-fx6: add splash locations to cm-fx6

Quoted 10 lines
 board/compulab/cm_fx6/cm_fx6.c |  19 +++++++
 board/compulab/cm_t35/cm_t35.c |   1 +
 common/splash_source.c         | 125 +++++++++++++++++++++++++++++++++++++----
 doc/README.splashprepare       |   5 ++
 include/splash.h               |  10 ++++
 5 files changed, 150 insertions(+), 10 deletions(-)
Signature · 1 line
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

#8 lore raw

v2 cover Add support for additional splash screen locations

Adding Stefano to CC.

Quoted 51 lines · Nikita Kiryanov

Ping^2!

Quoted 35 lines · Nikita Kiryanov

Ping!

Quoted 32 lines · Nikita Kiryanov

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.

Changes in V2:
- Rebased over current mainline.
- Added "splashfile" env variable to select splash file name dynamically. Also available: default value "splash.bmp"
- Added documentation for the feature.
- Refactored device initialization code so that #ifdefs are outside of the functions. This affects patches 3 and 4.

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 filesystem 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         | 125 +++++++++++++++++++++++++++++++++++++----
 doc/README.splashprepare       |   5 ++
 include/splash.h               |  10 ++++
 5 files changed, 150 insertions(+), 10 deletions(-)
Quoted 8 lines
Quoted 3 lines
Signature · 1 line
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

#9 lore raw

v2 cover Add support for additional splash screen locations

Hi Nikita,

Quoted 4 lines · Nikita Kiryanov

Adding Stefano to CC.

Quoted 2 lines · Nikita Kiryanov

Ping^2!

Do not worry, I will merge the series today.

Best regards,
Stefano

Quoted 49 lines
Quoted 49 lines · Nikita Kiryanov
Quoted 35 lines

Ping!

Quoted 32 lines · Nikita Kiryanov

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.

Changes in V2:
- Rebased over current mainline.
- Added "splashfile" env variable to select splash file name dynamically. Also available: default value "splash.bmp"
- Added documentation for the feature.
- Refactored device initialization code so that #ifdefs are outside of the functions. This affects patches 3 and 4.

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 filesystem 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         | 125 +++++++++++++++++++++++++++++++++++++----
 doc/README.splashprepare       |   5 ++
 include/splash.h               |  10 ++++
 5 files changed, 150 insertions(+), 10 deletions(-)
Quoted 8 lines
Quoted 3 lines
Signature · 1 line
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
#10 lore raw

v2 cover Add support for additional splash screen locations

In reply to Nikita Kiryanov

Hi Nikita,

Quoted 2 lines · Nikita Kiryanov

Ping^2!

Applied (whole series) to u-boot-imx, thanks !

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================