All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bryan Wu <cooloney@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 1/3] image: introduce genimg_get_kernel_addr()
Date: Mon,  4 Aug 2014 17:43:26 -0700	[thread overview]
Message-ID: <1407199408-4348-2-git-send-email-pengw@nvidia.com> (raw)
In-Reply-To: <1407199408-4348-1-git-send-email-pengw@nvidia.com>

Kernel address is normally stored as a string argument of bootm or bootz.
This function is taken out from boot_get_kernel() of bootm.c, which can be
reused by others.

Signed-off-by: Bryan Wu <pengw@nvidia.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
---
 common/image.c  | 32 ++++++++++++++++++++++++++++++++
 include/image.h | 12 ++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/common/image.c b/common/image.c
index 11b3cf5..36fe487 100644
--- a/common/image.c
+++ b/common/image.c
@@ -642,6 +642,38 @@ int genimg_get_comp_id(const char *name)
 }
 
 #ifndef USE_HOSTCC
+ulong genimg_get_kernel_addr(char * const img_addr)
+{
+#if defined(CONFIG_FIT)
+	const char *fit_uname_config = NULL;
+	const char *fit_uname_kernel = NULL;
+#endif
+	ulong kernel_addr;
+
+	/* find out kernel image address */
+	if (!img_addr) {
+		kernel_addr = load_addr;
+		debug("*  kernel: default image load address = 0x%08lx\n",
+		      load_addr);
+#if defined(CONFIG_FIT)
+	} else if (fit_parse_conf(img_addr, load_addr, &kernel_addr,
+				  fit_uname_config)) {
+		debug("*  kernel: config '%s' from image at 0x%08lx\n",
+		      *fit_uname_config, kernel_addr);
+	} else if (fit_parse_subimage(img_addr, load_addr, &kernel_addr,
+				     fit_uname_kernel)) {
+		debug("*  kernel: subimage '%s' from image at 0x%08lx\n",
+		      *fit_uname_kernel, kernel_addr);
+#endif
+	} else {
+		kernel_addr = simple_strtoul(img_addr, NULL, 16);
+		debug("*  kernel: cmdline image address = 0x%08lx\n",
+		      kernel_addr);
+	}
+
+	return kernel_addr;
+}
+
 /**
  * genimg_get_format - get image format type
  * @img_addr: image start address
diff --git a/include/image.h b/include/image.h
index 3e8f78d..049a400 100644
--- a/include/image.h
+++ b/include/image.h
@@ -424,6 +424,18 @@ enum fit_load_op {
 #define IMAGE_FORMAT_FIT	0x02	/* new, libfdt based format */
 #define IMAGE_FORMAT_ANDROID	0x03	/* Android boot image */
 
+/**
+ * genimg_get_kernel_addr - get the real kernel address
+ * @img_addr: a string might contain real image address. If img_addr is NULL,
+ *            return kernel_addr as load_addr.
+ *
+ * genimg_get_kernel_addr() get the real kernel start address from a string
+ * which is normally the first argv of bootm/bootz
+ *
+ * returns:
+ *     kernel start address
+ */
+ulong genimg_get_kernel_addr(char * const img_addr);
 int genimg_get_format(const void *img_addr);
 int genimg_has_config(bootm_headers_t *images);
 ulong genimg_get_image(ulong img_addr);
-- 
1.9.1

  reply	other threads:[~2014-08-05  0:43 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-05  0:43 [U-Boot] [PATCH v2 0/3] introduce genimg_get_kernel_addr() Bryan Wu
2014-08-05  0:43 ` Bryan Wu [this message]
2014-08-05 12:07   ` [U-Boot] [PATCH v2 1/3] image: " Simon Glass
2014-08-05  0:43 ` [U-Boot] [PATCH v2 2/3] pxe: detect image format before calling bootm/bootz Bryan Wu
2014-08-05  0:43 ` [U-Boot] [PATCH v2 3/3] bootm: use genimg_get_kernel_addr() Bryan Wu
2014-08-05 12:08   ` Simon Glass
2014-08-15  1:00   ` York Sun
2014-08-15  1:05     ` Bryan Wu
2014-08-15  1:15       ` York Sun
2014-08-15  1:38     ` Tom Rini
2014-08-15  1:42       ` York Sun
2014-08-15  3:48         ` Simon Glass
2014-08-15  4:02           ` Bryan Wu

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=1407199408-4348-2-git-send-email-pengw@nvidia.com \
    --to=cooloney@gmail.com \
    --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.