From: Nikita Kiryanov <nikita@compulab.co.il>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH V2 7/7] cm-t35: add support for loading splash image from NAND
Date: Sun, 10 Feb 2013 13:17:04 +0200 [thread overview]
Message-ID: <511781B0.7000608@compulab.co.il> (raw)
In-Reply-To: <1359618000-19069-8-git-send-email-nikita@compulab.co.il>
Following the discussion in "Create an API for safely accessing BMP
header fields",
this patch should be reverted to V1:
http://patchwork.ozlabs.org/patch/207950/
On 01/31/2013 09:40 AM, Nikita Kiryanov wrote:
> Add support for loading splash image from NAND
>
> Cc: Anatolij Gustschin <agust@denx.de>
> Cc: Jeroen Hofstee <jeroen@myspectrum.nl>
> Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
> Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
> ---
> Changes in V2:
> - Added fix to bmp_load_addr to comply with what happens in lcd.c
> following patch number 3.
>
> board/cm_t35/cm_t35.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++
> include/configs/cm_t35.h | 4 +++
> 2 files changed, 69 insertions(+)
>
> diff --git a/board/cm_t35/cm_t35.c b/board/cm_t35/cm_t35.c
> index 8f3d735..5fd71f9 100644
> --- a/board/cm_t35/cm_t35.c
> +++ b/board/cm_t35/cm_t35.c
> @@ -33,7 +33,9 @@
> #include <net.h>
> #include <i2c.h>
> #include <usb.h>
> +#include <nand.h>
> #include <twl4030.h>
> +#include <bmp_layout.h>
> #include <linux/compiler.h>
>
> #include <asm/io.h>
> @@ -75,6 +77,69 @@ static u32 gpmc_nand_config[GPMC_MAX_REG] = {
> 0,
> };
>
> +#ifdef CONFIG_LCD
> +#ifdef CONFIG_CMD_NAND
> +static int splash_load_from_nand(u32 bmp_load_addr)
> +{
> + struct bmp_header *bmp_hdr;
> + int res, splash_screen_nand_offset = 0x100000;
> + size_t bmp_size, bmp_header_size = sizeof(struct bmp_header);
> +
> + if (bmp_load_addr + bmp_header_size >= gd->start_addr_sp)
> + goto splash_address_too_high;
> +
> + res = nand_read_skip_bad(&nand_info[nand_curr_device],
> + splash_screen_nand_offset, &bmp_header_size,
> + (u_char *)bmp_load_addr);
> + if (res < 0)
> + return res;
> +
> + bmp_hdr = (struct bmp_header *)bmp_load_addr;
> + bmp_size = le32_to_cpu(bmp_hdr->file_size);
> +
> + if (bmp_load_addr + bmp_size >= gd->start_addr_sp)
> + goto splash_address_too_high;
> +
> + return nand_read_skip_bad(&nand_info[nand_curr_device],
> + splash_screen_nand_offset, &bmp_size,
> + (u_char *)bmp_load_addr);
> +
> +splash_address_too_high:
> + printf("Error: splashimage address too high. Data overwrites U-Boot "
> + "and/or placed beyond DRAM boundaries.\n");
> +
> + return -1;
> +}
> +#else
> +static inline int splash_load_from_nand(void)
> +{
> + return -1;
> +}
> +#endif /* CONFIG_CMD_NAND */
> +
> +int board_splash_screen_prepare(void)
> +{
> + char *env_splashimage_value;
> + u32 bmp_load_addr;
> +
> + env_splashimage_value = getenv("splashimage");
> + if (env_splashimage_value == NULL)
> + return -1;
> +
> + bmp_load_addr = simple_strtoul(env_splashimage_value, 0, 16);
> + if (bmp_load_addr == 0) {
> + printf("Error: bad splashimage address specified\n");
> + return -1;
> + }
> +
> + /* Fix bmp_load_addr to the alignment that lcd.c expects */
> + if (bmp_load_addr % 4 != 2)
> + bmp_load_addr += (bmp_load_addr % 4) ?: 2;
> +
> + return splash_load_from_nand(bmp_load_addr);
> +}
> +#endif /* CONFIG_LCD */
> +
> /*
> * Routine: board_init
> * Description: hardware init.
> diff --git a/include/configs/cm_t35.h b/include/configs/cm_t35.h
> index 46d35ba..53c4e3c 100644
> --- a/include/configs/cm_t35.h
> +++ b/include/configs/cm_t35.h
> @@ -344,5 +344,9 @@
> #define LCD_BPP LCD_COLOR16
>
> #define CONFIG_LCD
> +#define CONFIG_SPLASH_SCREEN
> +#define CONFIG_CMD_BMP
> +#define CONFIG_BMP_16BPP
> +#define CONFIG_SPLASH_SCREEN_PREPARE
>
> #endif /* __CONFIG_H */
>
--
Regards,
Nikita.
next prev parent reply other threads:[~2013-02-10 11:17 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-31 7:39 [U-Boot] [PATCH V3 0/7] Add splash screen for CM-T35 Nikita Kiryanov
2013-01-31 7:39 ` [U-Boot] [PATCH V3 1/7] omap3: add useful dss defines Nikita Kiryanov
2013-01-31 7:39 ` [U-Boot] [PATCH V3 2/7] omap3: allow dynamic selection of gfx_format Nikita Kiryanov
2013-01-31 7:39 ` [U-Boot] [PATCH V2 3/7] lcd: prevent unaligned memory access when displaying splash screen Nikita Kiryanov
2013-02-10 11:14 ` Nikita Kiryanov
2013-01-31 7:39 ` [U-Boot] [PATCH V1 4/7] lcd: add option for board specific splash screen preparation Nikita Kiryanov
2013-01-31 7:39 ` [U-Boot] [PATCH V3 5/7] cm-t35: add support for dvi displays Nikita Kiryanov
2013-01-31 7:39 ` [U-Boot] [PATCH V2 6/7] cm-t35: add support for user defined lcd parameters Nikita Kiryanov
2013-01-31 7:40 ` [U-Boot] [PATCH V2 7/7] cm-t35: add support for loading splash image from NAND Nikita Kiryanov
2013-02-10 11:17 ` Nikita Kiryanov [this message]
2013-03-10 11:21 ` [U-Boot] [PATCH V3 0/7] Add splash screen for CM-T35 Nikita Kiryanov
-- strict thread matches above, loose matches on Subject: below --
2013-01-29 12:42 [U-Boot] [PATCH V2 " Nikita Kiryanov
2013-01-29 12:42 ` [U-Boot] [PATCH V2 7/7] cm-t35: add support for loading splash image from NAND Nikita Kiryanov
2013-01-29 13:50 ` Wolfgang Denk
2013-01-30 8:08 ` Nikita Kiryanov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=511781B0.7000608@compulab.co.il \
--to=nikita@compulab.co.il \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.