From mboxrd@z Thu Jan 1 00:00:00 1970 From: Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= Date: Wed, 30 Jan 2008 09:08:49 +0100 Subject: [U-Boot-Users] [PATCH] make the machid configurable via the environment (Was: [PATCH] Changed load address and entry point for uImage to ZRELADDR + 6MB) In-Reply-To: <20080116205131.GA3605@digi.com> References: <1200469629509-git-send-email-vivek.kutal@celunite.com> <20080116081303.GA25437@uranus.ravnborg.org> <20080116100904.GA4487@digi.com> <20080116163434.GA2955@digi.com> <20080116181027.GB29568@uranus.ravnborg.org> <20080116205131.GA3605@digi.com> Message-ID: <20080130080849.GA25875@digi.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello Nicolas, Nicolas Pitre wrote: > > But does U-Boot properly provide machine information to the kernel these > > days? I have been and still being burned by U-Boot hardcoding the > > _wrong_ machine ID, and therefore custom built kernels from k.o simply > > won't boot on those boards without hacking the kernel source. > With "our" U-Boot you can override the compiled-in machid with an > environment variable. I didn't implement this patch but I think it's > not that difficult. I will check tomorrow if I can easily get a patch > out of our scm. It took a bit longer, but here it comes. This is on top of todays u-boot. I didn't tested this patch in that version, but this is how it is done in our version of U-Boot (that is considerable older). Switching the machid is also very convenient because we have modules that can be plugged on different base boards and so can use different machids. Best regards Uwe --->8--- From: Uwe Kleine-K?nig make the machid configurable via the environment If the variable "machid" exists, let do_bootm_linux use that instead of bd->bi_arch_number. Signed-off-by: Uwe Kleine-K?nig --- lib_arm/armlinux.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/lib_arm/armlinux.c b/lib_arm/armlinux.c index 6d32a41..62185f0 100644 --- a/lib_arm/armlinux.c +++ b/lib_arm/armlinux.c @@ -78,6 +78,8 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], void (*theKernel)(int zero, int arch, uint params); image_header_t *hdr = &header; bd_t *bd = gd->bd; + int machid = bd->bi_arch_number; + char *s; #ifdef CONFIG_CMDLINE_TAG char *commandline = getenv ("bootargs"); @@ -85,6 +87,12 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], theKernel = (void (*)(int, int, uint))ntohl(hdr->ih_ep); + s = getenv ("machid"); + if (s) { + machid = simple_strtoul (s, NULL, 16); + printf ("Using machid 0x%x from environment\n", machid); + } + /* * Check if there is an initrd image */ @@ -260,7 +268,7 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], cleanup_before_linux (); - theKernel (0, bd->bi_arch_number, bd->bi_boot_params); + theKernel (0, machid, bd->bi_boot_params); } -- 1.5.3.8 -- Uwe Kleine-K?nig, Software Engineer Digi International GmbH Branch Breisach, K?ferstrasse 8, 79206 Breisach, Germany Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962