All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCHv5 5/7] spl: zImage support in Falcon mode
Date: Thu, 21 Jan 2016 07:07:01 +0100	[thread overview]
Message-ID: <56A07585.1070508@denx.de> (raw)
In-Reply-To: <20160117031503.GF28493@localhost.localdomain>

Hello Ladislav,

Am 17.01.2016 um 04:15 schrieb Ladislav Michl:
> Other payload than uImage is currently considered to be raw U-Boot
> image. Check also for zImage in Falcon mode.
>
> Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
> ---
>   arch/arm/lib/Makefile |  2 ++
>   arch/arm/lib/bootm.c  | 32 --------------------------------
>   arch/arm/lib/zimage.c | 40 ++++++++++++++++++++++++++++++++++++++++
>   common/spl/spl.c      | 23 +++++++++++++++++++++++
>   4 files changed, 65 insertions(+), 32 deletions(-)
>   create mode 100644 arch/arm/lib/zimage.c

Reviewed-by: Heiko Schocher <hs@denx.de>

bye,
Heiko
>
> diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
> index f3db7b5..07a9019 100644
> --- a/arch/arm/lib/Makefile
> +++ b/arch/arm/lib/Makefile
> @@ -26,11 +26,13 @@ endif
>   obj-$(CONFIG_CPU_V7M) += cmd_boot.o
>   obj-$(CONFIG_OF_LIBFDT) += bootm-fdt.o
>   obj-$(CONFIG_CMD_BOOTM) += bootm.o
> +obj-$(CONFIG_CMD_BOOTM) += zimage.o
>   obj-$(CONFIG_SYS_L2_PL310) += cache-pl310.o
>   obj-$(CONFIG_USE_ARCH_MEMSET) += memset.o
>   obj-$(CONFIG_USE_ARCH_MEMCPY) += memcpy.o
>   else
>   obj-$(CONFIG_SPL_FRAMEWORK) += spl.o
> +obj-$(CONFIG_SPL_FRAMEWORK) += zimage.o
>   endif
>   obj-$(CONFIG_SEMIHOSTING) += semihosting.o
>
> diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
> index a477cae..fbfc0ad 100644
> --- a/arch/arm/lib/bootm.c
> +++ b/arch/arm/lib/bootm.c
> @@ -348,38 +348,6 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
>   	return 0;
>   }
>
> -#ifdef CONFIG_CMD_BOOTZ
> -
> -struct zimage_header {
> -	uint32_t	code[9];
> -	uint32_t	zi_magic;
> -	uint32_t	zi_start;
> -	uint32_t	zi_end;
> -};
> -
> -#define	LINUX_ARM_ZIMAGE_MAGIC	0x016f2818
> -
> -int bootz_setup(ulong image, ulong *start, ulong *end)
> -{
> -	struct zimage_header *zi;
> -
> -	zi = (struct zimage_header *)map_sysmem(image, 0);
> -	if (zi->zi_magic != LINUX_ARM_ZIMAGE_MAGIC) {
> -		puts("Bad Linux ARM zImage magic!\n");
> -		return 1;
> -	}
> -
> -	*start = zi->zi_start;
> -	*end = zi->zi_end;
> -
> -	printf("Kernel image @ %#08lx [ %#08lx - %#08lx ]\n", image, *start,
> -	      *end);
> -
> -	return 0;
> -}
> -
> -#endif	/* CONFIG_CMD_BOOTZ */
> -
>   #if defined(CONFIG_BOOTM_VXWORKS)
>   void boot_prep_vxworks(bootm_headers_t *images)
>   {
> diff --git a/arch/arm/lib/zimage.c b/arch/arm/lib/zimage.c
> new file mode 100644
> index 0000000..f870d72
> --- /dev/null
> +++ b/arch/arm/lib/zimage.c
> @@ -0,0 +1,40 @@
> +/*
> + * Copyright (C) 2016
> + * Ladislav Michl <ladis@linux-mips.org>
> + *
> + * bootz code:
> + * Copyright (C) 2012 Marek Vasut <marek.vasut@gmail.com>
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +#include <common.h>
> +
> +#define	LINUX_ARM_ZIMAGE_MAGIC	0x016f2818
> +
> +struct arm_z_header {
> +	uint32_t	code[9];
> +	uint32_t	zi_magic;
> +	uint32_t	zi_start;
> +	uint32_t	zi_end;
> +} __attribute__ ((__packed__));
> +
> +int bootz_setup(ulong image, ulong *start, ulong *end)
> +{
> +	struct arm_z_header *zi = (struct arm_z_header *) image;
> +
> +	if (zi->zi_magic != LINUX_ARM_ZIMAGE_MAGIC) {
> +#ifndef CONFIG_SPL_FRAMEWORK
> +		puts("Bad Linux ARM zImage magic!\n");
> +#endif
> +		return 1;
> +	}
> +
> +	*start = zi->zi_start;
> +	*end = zi->zi_end;
> +#ifndef CONFIG_SPL_FRAMEWORK
> +	printf("Kernel image @ %#08lx [ %#08lx - %#08lx ]\n", image, *start,
> +	      *end);
> +#endif
> +
> +	return 0;
> +}
> diff --git a/common/spl/spl.c b/common/spl/spl.c
> index b945a48..7fd8e5d 100644
> --- a/common/spl/spl.c
> +++ b/common/spl/spl.c
> @@ -52,6 +52,15 @@ __weak int spl_start_uboot(void)
>   	puts("SPL: Direct Linux boot not active!\n");
>   	return 1;
>   }
> +
> +/*
> + * Weak default function for arch specific zImage check. Return zero
> + * and fill start and end address if image is recognized.
> + */
> +int __weak bootz_setup(ulong image, ulong *start, ulong *end)
> +{
> +	 return 1;
> +}
>   #endif
>
>   /*
> @@ -112,6 +121,20 @@ void spl_parse_image_header(const struct image_header *header)
>   		 */
>   		panic("** no mkimage signature but raw image not supported");
>   #else
> +#ifdef CONFIG_SPL_OS_BOOT
> +		ulong start, end;
> +
> +		if (!bootz_setup((ulong)header, &start, &end)) {
> +			spl_image.name = "Linux";
> +			spl_image.os = IH_OS_LINUX;
> +			spl_image.load_addr = CONFIG_SYS_LOAD_ADDR;
> +			spl_image.entry_point = CONFIG_SYS_LOAD_ADDR;
> +			spl_image.size = end - start;
> +			debug("spl: payload zImage, load addr: 0x%x size: %d\n",
> +				spl_image.load_addr, spl_image.size);
> +			return;
> +		}
> +#endif
>   		/* Signature not found - assume u-boot.bin */
>   		debug("mkimage signature not found - ih_magic = %x\n",
>   			header->ih_magic);
>

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

  reply	other threads:[~2016-01-21  6:07 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-17  3:09 [U-Boot] [PATCHv4 0/7] spl: Lightweight UBI and UBI fastmap support Ladislav Michl
2016-01-17  3:11 ` [U-Boot] [PATCHv4 1/7] mtd: Sort subsystem directories aplhabeticaly in Makefile Ladislav Michl
2016-01-21  6:04   ` Heiko Schocher
2016-01-17  3:12 ` [U-Boot] [PATCHv4 2/7] nand_spl_simple: Add a simple NAND read function Ladislav Michl
2016-01-21  6:05   ` Heiko Schocher
2016-01-17  3:13 ` [U-Boot] [PATCHv4 3/7] spl: Lightweight UBI and UBI fastmap support Ladislav Michl
2016-01-17  3:13 ` [U-Boot] [PATCHv4 4/7] spl: support loading from UBI volumes Ladislav Michl
2016-01-21  6:06   ` Heiko Schocher
2016-01-17  3:15 ` [U-Boot] [PATCHv5 5/7] spl: zImage support in Falcon mode Ladislav Michl
2016-01-21  6:07   ` Heiko Schocher [this message]
2016-01-17  3:16 ` [U-Boot] [PATCHv7 6/7] igep00x0: UBIize Ladislav Michl
2016-01-21  6:07   ` Heiko Schocher
2016-01-22 22:35     ` Enric Balletbo Serra
2016-01-24 13:44       ` Ladislav Michl
2016-01-25  6:39       ` Heiko Schocher
2016-01-25  7:26         ` Enric Balletbo Serra
2016-01-25  8:13           ` Heiko Schocher
2016-01-25 15:56           ` Ladislav Michl
2016-01-25 16:56             ` Enric Balletbo Serra
2016-04-13  5:19               ` Heiko Schocher
2016-04-13 11:39                 ` Enric Balletbo Serra
2016-04-19 10:15                   ` Enric Balletbo Serra
2016-06-04 20:48             ` [U-Boot] [RFC] runtime mtdparts_default; was: " Ladislav Michl
2016-01-25 15:13         ` [U-Boot] [PATCHv7 6/7] " Tom Rini
2016-01-25 15:35           ` Heiko Schocher
2016-01-17  3:16 ` [U-Boot] [PATCHv4 7/7] igep00x0: Falcon mode Ladislav Michl
2016-01-21  6:08   ` Heiko Schocher
2016-01-22 22:38     ` Enric Balletbo Serra

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=56A07585.1070508@denx.de \
    --to=hs@denx.de \
    --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.