All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gary Bisson <gary.bisson@boundarydevices.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 4/5] board/boundarydevices: add i.MX8MQ support to u-boot scripts
Date: Thu, 19 Jul 2018 09:32:52 +0200	[thread overview]
Message-ID: <20180719073253.22433-5-gary.bisson@boundarydevices.com> (raw)
In-Reply-To: <20180719073253.22433-1-gary.bisson@boundarydevices.com>

- Update RAM address
- Update kernel image name for ARM64
- Update U-Boot boot command for ARM64
- Remove obsolete cmd_xxx_present check
- Remove obsolete wlan.mac parameter
- Add cmd_mipi command for MIPI-DSI interface

Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
---
 board/boundarydevices/common/boot.cmd    | 40 +++++++-------
 board/boundarydevices/common/upgrade.cmd | 69 +++++++++++++++++++++---
 2 files changed, 81 insertions(+), 28 deletions(-)

diff --git a/board/boundarydevices/common/boot.cmd b/board/boundarydevices/common/boot.cmd
index 7602b0139e..760363da9b 100644
--- a/board/boundarydevices/common/boot.cmd
+++ b/board/boundarydevices/common/boot.cmd
@@ -2,6 +2,8 @@ setenv bootargs ''
 
 setenv initrd_high 0xffffffff
 m4=''
+kernelimage=zImage
+bootcommand=bootz
 a_base=0x10000000
 if itest.s x51 == "x${imx_cpu}" ; then
 	a_base=0x90000000
@@ -9,10 +11,14 @@ elif itest.s x53 == "x${imx_cpu}"; then
 	a_base=0x70000000
 elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
 	a_base=0x80000000
-	if itest.s "x1" == "x$m4enabled" ; then
-		run m4boot;
-		m4='-m4';
-	fi
+elif itest.s x8MQ == "x${imx_cpu}"; then
+	a_base=0x40000000
+	kernelimage=Image
+	bootcommand=booti
+fi
+if itest.s "x1" == "x${m4enabled}" ; then
+	run m4boot;
+	m4='-m4';
 fi
 
 setexpr a_script  ${a_base} + 0x00800000
@@ -39,10 +45,12 @@ if itest.s "x" == "x${fdt_file}" ; then
 		fdt_file=imx6sx-${board}${m4}.dtb;
 	elif itest.s x7D == "x${imx_cpu}" ; then
 		fdt_file=imx7d-${board}${m4}.dtb;
+	elif itest.s x8MQ == "x${imx_cpu}" ; then
+		fdt_file=imx8mq-${board}${m4}.dtb;
 	elif itest.s x51 == "x${imx_cpu}" ; then
-		fdt_file=imx51-${board}${m4}.dtb;
+		fdt_file=imx51-${board}.dtb;
 	elif itest.s x53 == "x${imx_cpu}" ; then
-		fdt_file=imx53-${board}${m4}.dtb;
+		fdt_file=imx53-${board}.dtb;
 	else
 		fdt_file=imx6q-${board}.dtb;
 	fi
@@ -66,16 +74,12 @@ else
 	exit;
 fi
 
-cmd_xxx_present=
 fdt resize
 if itest.s "x" != "x${cmd_custom}" ; then
 	run cmd_custom
-	cmd_xxx_present=1;
 fi
-
 if itest.s "x" != "x${cmd_hdmi}" ; then
 	run cmd_hdmi
-	cmd_xxx_present=1;
 	if itest.s x == x${allow_noncea} ; then
 		setenv bootargs ${bootargs} mxc_hdmi.only_cea=1;
 		echo "only CEA modes allowed on HDMI port";
@@ -87,25 +91,18 @@ fi
 
 if itest.s "x" != "x${cmd_lcd}" ; then
 	run cmd_lcd
-	cmd_xxx_present=1;
 fi
 if itest.s "x" != "x${cmd_lcd2}" ; then
 	run cmd_lcd2
-	cmd_xxx_present=1;
 fi
 if itest.s "x" != "x${cmd_lvds}" ; then
 	run cmd_lvds
-	cmd_xxx_present=1;
 fi
 if itest.s "x" != "x${cmd_lvds2}" ; then
 	run cmd_lvds2
-	cmd_xxx_present=1;
 fi
-
-if itest.s "x" == "x${cmd_xxx_present}" ; then
-	echo "!!!!!!!!!!!!!!!!"
-	echo "warning: your u-boot may be outdated, please upgrade"
-	echo "!!!!!!!!!!!!!!!!"
+if itest.s "x" != "x${cmd_mipi}" ; then
+	run cmd_mipi
 fi
 
 if test "sata" = "${devtype}" ; then
@@ -126,7 +123,6 @@ fi
 
 if itest.s "x" != "x${wlmac}" ; then
 	setenv bootargs ${bootargs} wlcore.mac=${wlmac}
-	setenv bootargs ${bootargs} wlan.mac=${wlmac}
 fi
 
 if itest.s "x" != "x${gpumem}" ; then
@@ -149,7 +145,7 @@ if itest.s "x" != "x${show_env}" ; then
 	printenv
 fi
 
-if load ${devtype} ${devnum}:${distro_bootpart} ${a_zImage} ${prefix}zImage ; then
-	bootz ${a_zImage} - ${a_fdt}
+if load ${devtype} ${devnum}:${distro_bootpart} ${a_zImage} ${prefix}${kernelimage} ; then
+	${bootcommand} ${a_zImage} - ${a_fdt}
 fi
 echo "Error loading kernel image"
diff --git a/board/boundarydevices/common/upgrade.cmd b/board/boundarydevices/common/upgrade.cmd
index 249185dba4..24b705eb76 100644
--- a/board/boundarydevices/common/upgrade.cmd
+++ b/board/boundarydevices/common/upgrade.cmd
@@ -7,6 +7,7 @@ offset=0x400
 erase_size=0xC0000
 qspi_offset=0x0
 a_base=0x12000000
+block_size=0x200
 
 if itest.s x51 == "x${imx_cpu}"; then
 	a_base=0x92000000
@@ -14,6 +15,9 @@ elif itest.s x53 == "x${imx_cpu}"; then
 	a_base=0x72000000
 elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
 	a_base=0x82000000
+elif itest.s x8MQ == "x${imx_cpu}"; then
+	a_base=0x42000000
+	offset=0x8400
 fi
 
 qspi_match=1
@@ -25,6 +29,54 @@ setexpr a_script ${a_base}
 
 setenv stdout serial,vga
 
+if itest.s "x${sfname}" == "x" ; then
+# U-Boot resides in (e)MMC
+if itest.s "x${env_dev}" == "x" || itest.s "x${env_part}" == "x"; then
+        echo "Please set env_dev/part to the appropriate values"
+        exit
+fi
+
+# Load bootloader binary for this board
+if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_uImage1} u-boot.$uboot_defconfig ; then
+else
+	echo "File u-boot.$uboot_defconfig not found on SD card" ;
+	exit
+fi
+
+# Compute block count for filesize and offset
+setexpr cntoffset ${offset} / ${block_size}
+setexpr cntfile ${filesize} / ${block_size}
+# Add 1 in case the $filesize is not a multiple of $block_size
+setexpr cntfile ${cntfile} + 1
+
+# Select media partition (if different from main partition)
+mmc dev ${env_dev} ${env_part}
+
+# Read and compare current U-Boot
+mmc read ${a_uImage2} ${cntoffset} ${cntfile}
+if cmp.b ${a_uImage1} ${a_uImage2} ${filesize} ; then
+	echo "------- U-Boot versions match" ;
+	exit ;
+fi
+
+echo "Need U-Boot upgrade" ;
+echo "Program in 5 seconds" ;
+for n in 5 4 3 2 1 ; do
+	echo $n ;
+	sleep 1 ;
+done
+mmc write ${a_uImage1} ${cntoffset} ${cntfile}
+
+# Make sure to boot from the proper partition
+if itest ${env_part} != 0 ; then
+	mmc partconf ${env_dev} 1 ${env_part} 0
+fi
+
+# Switch back to main eMMC partition (to avoid confusion)
+mmc dev ${env_dev}
+
+else
+# U-Boot resides in NOR flash
 if sf probe || sf probe || sf probe 1 27000000 || sf probe 1 27000000 ; then
 	echo "probed SPI ROM" ;
 else
@@ -32,9 +84,13 @@ else
 	exit
 fi
 
+if itest.s "x${sfname}" == "xat45db041d" ; then
+	erase_size=0x7e000
+fi
+
 if itest.s x7D == "x${imx_cpu}"; then
 	echo "check qspi parameter block" ;
-	if ${fs}load ${devtype} ${devnum}:1 ${a_qspi1} qspi-${sfname}.${uboot_defconfig} ; then
+	if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_qspi1} qspi-${sfname}.${uboot_defconfig} ; then
 	else
 		echo "parameter file qspi-${sfname}.${uboot_defconfig} not found on SD card"
 		exit
@@ -63,7 +119,7 @@ fi
 
 echo "check U-Boot" ;
 
-if ${fs}load ${devtype} ${devnum}:1 ${a_uImage1} u-boot.$uboot_defconfig ; then
+if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_uImage1} u-boot.$uboot_defconfig ; then
 else
 	echo "File u-boot.$uboot_defconfig not found on SD card" ;
 	exit
@@ -80,7 +136,7 @@ if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then
 	if itest.s "${qspi_match}" == "1" ; then
 		echo "------- upgrade not needed" ;
 		if itest.s "x" != "x${next}" ; then
-			if ${fs}load ${devtype} ${devnum}:1 ${a_script} ${next} ; then
+			if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_script} ${next} ; then
 				source ${a_script}
 			else
 				echo "${next} not found on SD card"
@@ -142,13 +198,14 @@ if itest.s x7D == "x${imx_cpu}"; then
 fi
 
 if itest.s "x" != "x${next}" ; then
-	if ${fs}load ${devtype} ${devnum}:1 ${a_script} ${next} ; then
+	if ${fs}load ${devtype} ${devnum}:${distro_bootpart} ${a_script} ${next} ; then
 		source ${a_script}
 	else
-		echo "${next} not found on ${devtype} ${devnum}"
+		echo "${next} not found on ${devtype} ${devnum}:${distro_bootpart}"
 	fi
 fi
+fi
 
-while echo "---- U-Boot upgraded. reset" ; do
+while echo "---- U-Boot upgraded. Please reset the board" ; do
 	sleep 120
 done
-- 
2.18.0

  parent reply	other threads:[~2018-07-19  7:32 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-19  7:32 [Buildroot] [PATCH 0/5] Add Boundary Devices Nitrogen8M support Gary Bisson
2018-07-19  7:32 ` [Buildroot] [PATCH 1/5] board/freescale/common/imx: make imx8-bootloader-prepare more generic Gary Bisson
2018-07-19  7:45   ` Thomas Petazzoni
2018-07-19  8:00     ` Gary Bisson
2018-07-19  8:07       ` Thomas Petazzoni
2018-07-19  7:32 ` [Buildroot] [PATCH 2/5] board/boundarydevices: update post-build.sh for i.MX8MQ platforms Gary Bisson
2018-07-19  7:58   ` Thomas Petazzoni
2018-07-19  8:03     ` Gary Bisson
2018-07-19  8:08       ` Thomas Petazzoni
2018-07-19  8:15         ` Gary Bisson
2018-07-19  7:32 ` [Buildroot] [PATCH 3/5] board/boundarydevices: remove obsolete u-boot scripts Gary Bisson
2018-07-19  7:59   ` Thomas Petazzoni
2018-07-19  7:32 ` Gary Bisson [this message]
2018-07-19  7:32 ` [Buildroot] [PATCH 5/5] configs/nitrogen8m: Add new defconfig Gary Bisson
2018-07-19  8:10   ` Thomas Petazzoni
2018-07-19  8:23     ` Gary Bisson
2018-07-19  8:32       ` Thomas Petazzoni
2018-07-26  8:20       ` Arnout Vandecappelle
2018-07-26  8:51         ` Gary Bisson
2018-07-26  8:54           ` Arnout Vandecappelle

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=20180719073253.22433-5-gary.bisson@boundarydevices.com \
    --to=gary.bisson@boundarydevices.com \
    --cc=buildroot@busybox.net \
    /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.