Skip to contentSkip to conversation

Add support for BeagleBoard.org PocketBeagle

PATCH New Jason Kridner 4 participants 15 messages Mar 7, 2018 – Apr 7, 2018

lore
Share & tools
lore
#0 lore raw

cover Add support for BeagleBoard.org PocketBeagle

This series sets up the am335x_evm_usbspl_defconfig to boot the TI AM335x based BeagleBoard.org PocketBeagle using the BeagleBoard.org provided Debian images and enables NETCONSOLE over USB when the environment is updated as needed.

Jason Kridner (4):
Add support for BeagleBoard.org PocketBeagle
am335x_evm: scan more partitions and use uname_r Handle NETCONSOLE and SPL enabled
am335x: am335x_evm_usbspl_defconfig: NETCONSOLE

 board/ti/am335x/board.c             | 10 ++++++----
 board/ti/am335x/board.h             |  7 ++++++-
 board/ti/am335x/mux.c               |  3 +++
 configs/am335x_evm_usbspl_defconfig |  7 +++++++
 include/configs/am335x_evm.h        |  7 ++++++-
 include/environment/ti/mmc.h        | 13 +++++++++----
 include/net.h                       |  6 +++---
 7 files changed, 40 insertions(+), 13 deletions(-)
Signature · 1 line
2.15.1
#1 lore raw

PATCH 1/4 Add support for BeagleBoard.org PocketBeagle

Texas Instruments AM3358 based low-cost board using Octavo Systems OSD3358 SIP with built-in TPS65217 PMIC and 512MB DDR3. Board features small 35mm x 55mm size, high-speed USB OTG, microSD and 72 0.1" expansion header pins with 2xSPI, 2xI2C, 2xUART, USB, 8xADC, up-to-44 GPIO, PRU pins and much more.

https://beagleboard.org/pocket

This was tested using the am335x_evm_usbspl_defconfig.

Note that MII pins are enabled despite not having Ethernet on this board. This avoids an issue where otherwise many timeout errors would be generated. See https://e2e.ti.com/support/arm/sitara_arm/f/791/t/298976
for some related discussion.

---
 board/ti/am335x/board.c      | 10 ++++++----
 board/ti/am335x/board.h      |  7 ++++++-
 board/ti/am335x/mux.c        |  3 +++
 include/configs/am335x_evm.h |  2 ++
 4 files changed, 17 insertions(+), 5 deletions(-)
board/ti/am335x/board.c +6 -4
index b144fd1821..87bdd2d63d 100644
@@ -264,7 +264,7 @@ const struct dpll_params *get_dpll_ddr_params(void)
 
 	if (board_is_evm_sk())
 		return &dpll_ddr3_303MHz[ind];
-	else if (board_is_bone_lt() || board_is_icev2())
+	else if (board_is_pb() || board_is_bone_lt() || board_is_icev2())
 		return &dpll_ddr3_400MHz[ind];
 	else if (board_is_evm_15_or_later())
 		return &dpll_ddr3_303MHz[ind];
@@ -295,7 +295,7 @@ const struct dpll_params *get_dpll_mpu_params(void)
 	if (bone_not_connected_to_ac_power())
 		freq = MPUPLL_M_600;
 
-	if (board_is_bone_lt())
+	if (board_is_pb() || board_is_bone_lt())
 		freq = MPUPLL_M_1000;
 
 	switch (freq) {
@@ -341,7 +341,7 @@ static void scale_vcores_bone(int freq)
 	 * Override what we have detected since we know if we have
 	 * a Beaglebone Black it supports 1GHz.
 	 */
-	if (board_is_bone_lt())
+	if (board_is_pb() || board_is_bone_lt())
 		freq = MPUPLL_M_1000;
 
 	switch (freq) {
@@ -542,7 +542,7 @@ void sdram_init(void)
 	if (board_is_evm_sk())
 		config_ddr(303, &ioregs_evmsk, &ddr3_data,
 			   &ddr3_cmd_ctrl_data, &ddr3_emif_reg_data, 0);
-	else if (board_is_bone_lt())
+	else if (board_is_pb() || board_is_bone_lt())
 		config_ddr(400, &ioregs_bonelt,
 			   &ddr3_beagleblack_data,
 			   &ddr3_beagleblack_cmd_ctrl_data,
@@ -931,6 +931,8 @@ int board_fit_config_name_match(const char *name)
 		return 0;
 	else if (board_is_bone_lt() && !strcmp(name, "am335x-boneblack"))
 		return 0;
+	else if (board_is_pb() && !strcmp(name, "am335x-pocketbeagle"))
+		return 0;
 	else if (board_is_evm_sk() && !strcmp(name, "am335x-evmsk"))
 		return 0;
 	else if (board_is_bbg1() && !strcmp(name, "am335x-bonegreen"))
board/ti/am335x/board.h +6 -1
index e13fcff02a..bab5b77f34 100644
@@ -34,6 +34,11 @@ static inline int board_is_bone_lt(void)
 	return board_ti_is("A335BNLT");
 }
 
+static inline int board_is_pb(void)
+{
+	return board_ti_is("A335PBGL");
+}
+
 static inline int board_is_bbg1(void)
 {
 	return board_is_bone_lt() && !strncmp(board_ti_get_rev(), "BBG1", 4);
@@ -41,7 +46,7 @@ static inline int board_is_bbg1(void)
 
 static inline int board_is_beaglebonex(void)
 {
-	return board_is_bone() || board_is_bone_lt() || board_is_bbg1();
+	return board_is_pb() || board_is_bone() || board_is_bone_lt() || board_is_bbg1();
 }
 
 static inline int board_is_evm_sk(void)
board/ti/am335x/mux.c +3 -0
index ad85b3a19a..aa187605d0 100644
@@ -390,6 +390,9 @@ void enable_board_pin_mux(void)
 #else
 		configure_module_pin_mux(mmc1_pin_mux);
 #endif
+	} else if (board_is_pb()) {
+		configure_module_pin_mux(mii1_pin_mux);
+		configure_module_pin_mux(mmc0_pin_mux);
 	} else if (board_is_icev2()) {
 		configure_module_pin_mux(mmc0_pin_mux);
 		configure_module_pin_mux(gpio0_18_pin_mux);
include/configs/am335x_evm.h +2 -0
index 158b7d4e8e..8d45b6fade 100644
@@ -133,6 +133,8 @@
 			"setenv fdtfile am335x-bone.dtb; fi; " \
 		"if test $board_name = A335BNLT; then " \
 			"setenv fdtfile am335x-boneblack.dtb; fi; " \
+		"if test $board_name = A335PBGL; then " \
+			"setenv fdtfile am335x-pocketbeagle.dtb; fi; " \
 		"if test $board_name = BBBW; then " \
 			"setenv fdtfile am335x-boneblack-wireless.dtb; fi; " \
 		"if test $board_name = BBG1; then " \
Signature · 1 line
2.15.1
#2 lore raw

PATCH 1/4 Add support for BeagleBoard.org PocketBeagle

Quoted 9 lines · Jason Kridner

Texas Instruments AM3358 based low-cost board using Octavo Systems OSD3358 SIP with built-in TPS65217 PMIC and 512MB DDR3. Board features small 35mm x 55mm size, high-speed USB OTG, microSD and 72 0.1" expansion header pins with 2xSPI, 2xI2C, 2xUART, USB, 8xADC, up-to-44 GPIO, PRU pins and much more.

https://beagleboard.org/pocket

This was tested using the am335x_evm_usbspl_defconfig.

Quoted 7 lines

Note that MII pins are enabled despite not having Ethernet on this board. This avoids an issue where otherwise many timeout errors would be generated. See https://e2e.ti.com/support/arm/sitara_arm/f/791/t/298976
for some related discussion.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180307/7e909b3b/attachment.sig>
#3 lore raw

PATCH 1/4 Add support for BeagleBoard.org PocketBeagle

In reply to Jason Kridner
Quoted 9 lines · Jason Kridner

Texas Instruments AM3358 based low-cost board using Octavo Systems OSD3358 SIP with built-in TPS65217 PMIC and 512MB DDR3. Board features small 35mm x 55mm size, high-speed USB OTG, microSD and 72 0.1" expansion header pins with 2xSPI, 2xI2C, 2xUART, USB, 8xADC, up-to-44 GPIO, PRU pins and much more.

https://beagleboard.org/pocket

This was tested using the am335x_evm_usbspl_defconfig.

Quoted 8 lines

Note that MII pins are enabled despite not having Ethernet on this board. This avoids an issue where otherwise many timeout errors would be generated. See https://e2e.ti.com/support/arm/sitara_arm/f/791/t/298976
for some related discussion.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180406/a3a9c9c3/attachment.sig>
#4 lore raw

PATCH 2/4 am335x_evm: scan more partitions and use uname_r

In reply to Jason Kridner

This enables mainline u-boot to boot the BeagleBoard.org Debian distribution builds without extensive environment modifications.

Some boot layouts only have a single partition on the MMC/eMMC. This will scan those partitions after the second partition that was already being scanned.

Some layouts use uname_r to define the kernel being used for the boot to support multiple kernels stored within the boot file system without using symlinks.

See http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0 for more details on the BeagleBoard.org Debian image layout.

Cc Robert Nelson <[email protected]>
Cc Tom Rini <[email protected]>
---
 include/configs/am335x_evm.h |  5 ++++-
 include/environment/ti/mmc.h | 13 +++++++++----
 2 files changed, 13 insertions(+), 5 deletions(-)
include/configs/am335x_evm.h +4 -1
index 8d45b6fade..32fe0e0cd5 100644
@@ -61,7 +61,10 @@
 #define BOOTENV_DEV_LEGACY_MMC(devtypeu, devtypel, instance) \
 	"bootcmd_" #devtypel #instance "=" \
 	"setenv mmcdev " #instance"; "\
-	"setenv bootpart " #instance":2 ; "\
+	"setenv bootpart " #instance":2; "\
+	"run mmcboot;"\
+	"setenv mmcdev " #instance"; "\
+	"setenv bootpart " #instance":1; "\
 	"run mmcboot\0"
 
 #define BOOTENV_DEV_NAME_LEGACY_MMC(devtypeu, devtypel, instance) \
include/environment/ti/mmc.h +9 -4
index 4305ebdaaf..b803ecccb7 100644
@@ -23,9 +23,10 @@
 	"bootenvfile=uEnv.txt\0" \
 	"importbootenv=echo Importing environment from mmc${mmcdev} ...; " \
 		"env import -t ${loadaddr} ${filesize}\0" \
-	"loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \
-	"loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
-	"loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
+	"loadbootenv=if fatload mmc ${mmcdev} ${loadaddr} ${bootdir}/${bootenvfile}; then echo Found ${bootdir}/${bootenvfile} in FAT partition; else load mmc ${mmcdev} ${loadaddr} ${bootdir}/${bootenvfile}; fi\0" \
+	"loadimage=if test -n ${uname_r}; then load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/vmlinuz-${uname_r}; run loadrd; else load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}; fi\0" \
+	"loadrd=load ${devtype} ${bootpart} ${rdaddr} ${bootdir}/initrd.img-${uname_r}; setenv rdsize ${filesize}\0" \
+	"loadfdt=if test -n ${uname_r}; then load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/dtbs/${uname_r}/${fdtfile}; else load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}; fi;\0" \
 	"envboot=mmc dev ${mmcdev}; " \
 		"if mmc rescan; then " \
 			"echo SD/MMC found on device ${mmcdev};" \
@@ -45,7 +46,11 @@
 	"mmcloados=run args_mmc; " \
 		"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
 			"if run loadfdt; then " \
-				"bootz ${loadaddr} - ${fdtaddr}; " \
+				"if test -n ${uname_r}; then " \
+					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
+				"else " \
+					"bootz ${loadaddr} - ${fdtaddr}; " \
+				"fi; " \
 			"else " \
 				"if test ${boot_fdt} = try; then " \
 					"bootz; " \
Signature · 1 line
2.15.1
#5 lore raw

PATCH 2/4 am335x_evm: scan more partitions and use uname_r

Quoted 59 lines · Jason Kridner

This enables mainline u-boot to boot the BeagleBoard.org Debian distribution builds without extensive environment modifications.

Some boot layouts only have a single partition on the MMC/eMMC. This will scan those partitions after the second partition that was already being scanned.

Some layouts use uname_r to define the kernel being used for the boot to support multiple kernels stored within the boot file system without using symlinks.

See http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0 for more details on the BeagleBoard.org Debian image layout.

Cc Robert Nelson <[email protected]>
Cc Tom Rini <[email protected]>
---
 include/configs/am335x_evm.h |  5 ++++-
 include/environment/ti/mmc.h | 13 +++++++++----
 2 files changed, 13 insertions(+), 5 deletions(-)
include/configs/am335x_evm.h +4 -1
index 8d45b6fade..32fe0e0cd5 100644
@@ -61,7 +61,10 @@
 #define BOOTENV_DEV_LEGACY_MMC(devtypeu, devtypel, instance) \
 	"bootcmd_" #devtypel #instance "=" \
 	"setenv mmcdev " #instance"; "\
-	"setenv bootpart " #instance":2 ; "\
+	"setenv bootpart " #instance":2; "\
+	"run mmcboot;"\
+	"setenv mmcdev " #instance"; "\
+	"setenv bootpart " #instance":1; "\
 	"run mmcboot\0"
 
 #define BOOTENV_DEV_NAME_LEGACY_MMC(devtypeu, devtypel, instance) \
include/environment/ti/mmc.h +4 -3
index 4305ebdaaf..b803ecccb7 100644
@@ -23,9 +23,10 @@
 	"bootenvfile=uEnv.txt\0" \
 	"importbootenv=echo Importing environment from mmc${mmcdev} ...; " \
 		"env import -t ${loadaddr} ${filesize}\0" \
-	"loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \
-	"loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
-	"loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
+	"loadbootenv=if fatload mmc ${mmcdev} ${loadaddr} ${bootdir}/${bootenvfile}; then echo Found ${bootdir}/${bootenvfile} in FAT partition; else load mmc ${mmcdev} ${loadaddr} ${bootdir}/${bootenvfile}; fi\0" \
+	"loadimage=if test -n ${uname_r}; then load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/vmlinuz-${uname_r}; run loadrd; else load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}; fi\0" \
+	"loadrd=load ${devtype} ${bootpart} ${rdaddr} ${bootdir}/initrd.img-${uname_r}; setenv rdsize ${filesize}\0" \
+	"loadfdt=if test -n ${uname_r}; then load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/dtbs/${uname_r}/${fdtfile}; else load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}; fi;\0" \
 	"envboot=mmc dev ${mmcdev}; " \
 		"if mmc rescan; then " \
 			"echo SD/MMC found on device ${mmcdev};" \
@@ -45,7 +46,11 @@
 	"mmcloados=run args_mmc; " \
 		"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \

include/environment/ti/mmc.h line 56

Quoted 10 lines
include/environment/ti/mmc.h +5 -1
 			"if run loadfdt; then " \
-				"bootz ${loadaddr} - ${fdtaddr}; " \
+				"if test -n ${uname_r}; then " \
+					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
+				"else " \
+					"bootz ${loadaddr} - ${fdtaddr}; " \
+				"fi; " \
 			"else " \
 				"if test ${boot_fdt} = try; then " \
 					"bootz; " \

Why does this all differ from the usual Debian case? Thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180307/2d2b47ed/attachment.sig>
#6 lore raw

PATCH 2/4 am335x_evm: scan more partitions and use uname_r

Quoted 80 lines · Tom Rini
Quoted 43 lines · Jason Kridner

This enables mainline u-boot to boot the BeagleBoard.org Debian distribution builds without extensive environment modifications.

Some boot layouts only have a single partition on the MMC/eMMC. This will scan those partitions after the second partition that was already being scanned.

Some layouts use uname_r to define the kernel being used for the boot to support multiple kernels stored within the boot file system without using symlinks.

See http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0 for more details on the BeagleBoard.org Debian image layout.

Cc Robert Nelson <[email protected]>
Cc Tom Rini <[email protected]>
---
 include/configs/am335x_evm.h |  5 ++++-
 include/environment/ti/mmc.h | 13 +++++++++----
 2 files changed, 13 insertions(+), 5 deletions(-)
include/configs/am335x_evm.h +4 -1
index 8d45b6fade..32fe0e0cd5 100644
@@ -61,7 +61,10 @@
 #define BOOTENV_DEV_LEGACY_MMC(devtypeu, devtypel, instance) \
      "bootcmd_" #devtypel #instance "=" \
      "setenv mmcdev " #instance"; "\
-     "setenv bootpart " #instance":2 ; "\
+     "setenv bootpart " #instance":2; "\
+     "run mmcboot;"\
+     "setenv mmcdev " #instance"; "\
+     "setenv bootpart " #instance":1; "\
      "run mmcboot\0"
 
 #define BOOTENV_DEV_NAME_LEGACY_MMC(devtypeu, devtypel, instance) \
include/environment/ti/mmc.h +0 -0
index 4305ebdaaf..b803ecccb7 100644

include/environment/ti/mmc.h line 24

Quoted 2 lines
include/environment/ti/mmc.h +0 -0
@@ -23,9 +23,10 @@
      "bootenvfile=uEnv.txt\0" \
      "importbootenv=echo Importing environment from mmc${mmcdev} ...; "

\

include/environment/ti/mmc.h

Quoted 3 lines
include/environment/ti/mmc.h +0 -2
              "env import -t ${loadaddr} ${filesize}\0" \
-     "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \
-     "loadimage=load ${devtype} ${bootpart} ${loadaddr}

${bootdir}/${bootfile}\0" \

include/environment/ti/mmc.h line 28

Quoted 1 line
include/environment/ti/mmc.h +0 -1
-     "loadfdt=load ${devtype} ${bootpart} ${fdtaddr}

${bootdir}/${fdtfile}\0" \

include/environment/ti/mmc.h line 26

Quoted 1 line
include/environment/ti/mmc.h +1 -0
+     "loadbootenv=if fatload mmc ${mmcdev} ${loadaddr}

${bootdir}/${bootenvfile}; then echo Found ${bootdir}/${bootenvfile} in FAT partition; else load mmc ${mmcdev} ${loadaddr} ${bootdir}/${bootenvfile}; fi\0" \

include/environment/ti/mmc.h line 27

Quoted 1 line
include/environment/ti/mmc.h +1 -0
+     "loadimage=if test -n ${uname_r}; then load ${devtype} ${bootpart}

${loadaddr} ${bootdir}/vmlinuz-${uname_r}; run loadrd; else load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}; fi\0" \

include/environment/ti/mmc.h line 28

Quoted 1 line
include/environment/ti/mmc.h +1 -0
+     "loadrd=load ${devtype} ${bootpart} ${rdaddr}

${bootdir}/initrd.img-${uname_r}; setenv rdsize ${filesize}\0" \

include/environment/ti/mmc.h line 29

Quoted 1 line
include/environment/ti/mmc.h +1 -0
+     "loadfdt=if test -n ${uname_r}; then load ${devtype} ${bootpart}

${fdtaddr} ${bootdir}/dtbs/${uname_r}/${fdtfile}; else load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}; fi;\0" \

include/environment/ti/mmc.h line 47

Quoted 6 lines
include/environment/ti/mmc.h +0 -0
      "envboot=mmc dev ${mmcdev}; " \
              "if mmc rescan; then " \
                      "echo SD/MMC found on device ${mmcdev};" \
@@ -45,7 +46,11 @@
      "mmcloados=run args_mmc; " \
              "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then

" \

include/environment/ti/mmc.h

Quoted 4 lines
include/environment/ti/mmc.h +2 -1
                      "if run loadfdt; then " \
-                             "bootz ${loadaddr} - ${fdtaddr}; " \
+                             "if test -n ${uname_r}; then " \
+                                     "bootz ${loadaddr}

${rdaddr}:${rdsize} ${fdtaddr}; " \

include/environment/ti/mmc.h line 52

Quoted 2 lines
include/environment/ti/mmc.h +2 -0
+                             "else " \
+                                     "bootz ${loadaddr} - ${fdtaddr}; "
Quoted 8 lines

\

include/environment/ti/mmc.h line 56

Quoted 4 lines
include/environment/ti/mmc.h +1 -0
+                             "fi; " \
                      "else " \
                              "if test ${boot_fdt} = try; then " \
                                      "bootz; " \

Why does this all differ from the usual Debian case? Thanks!

I believe the distros typically use /boot/extlinux/extlinux.conf. We need some way to specify a number of other environment variables we use elsewhere in our u-boot scripts for applying device-tree overlays and such. This patch doesn't comprehend that. It does at least get our images to boot without applying any overlays in u-boot.

I believe Robert is preparing a subsequent series to add the application of overlays.

Do you have something else in mind with regards to envboot's future?

Quoted 4 lines

--
Tom

Signature · 1 line
https://beagleboard.org/about
#7 lore raw

PATCH 2/4 am335x_evm: scan more partitions and use uname_r

Quoted 15 lines · Jason Kridner
Quoted 14 lines · Tom Rini
Quoted 13 lines · Jason Kridner

This enables mainline u-boot to boot the BeagleBoard.org Debian distribution builds without extensive environment modifications.

Some boot layouts only have a single partition on the MMC/eMMC. This will scan those partitions after the second partition that was already being scanned.

Some layouts use uname_r to define the kernel being used for the boot to support multiple kernels stored within the boot file system without using symlinks.

See http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0 for more details on the BeagleBoard.org Debian image layout.

...

Quoted 4 lines
Quoted 2 lines

Why does this all differ from the usual Debian case? Thanks!

I believe the distros typically use /boot/extlinux/extlinux.conf.

Debian typically uses a boot script, at least when installing from debian-installer. There's a package called u-boot-menu which generates the extlinux.conf file. There are some ideas floating around to try to use u-boot's EFI emulation to boot grub-efi for platforms that don't support EFI natively, as well.

But the majority of officially supported platforms in Debian still just use boot scripts, for better or worse.

Quoted 3 lines

We need some way to specify a number of other environment variables we use elsewhere in our u-boot scripts for applying device-tree overlays and such.

Could this functionality can't be implemented as a boot script, rather than hard-coding it into the u-boot binary?

I know the official BeagleBoard.org images have been using a patched u-boot for quite some time, and so there is something to be said for pushing that upstream. Though there is a lot of duplication of functionality supporting distro_bootcmd, legacy boot, and the patchsets that BeagleBoard.org images use.

live well,
vagrant
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180310/64616eae/attachment.sig>

#8 lore raw

PATCH 3/4 Handle NETCONSOLE and SPL enabled

In reply to Jason Kridner

From: Jason Kridner <[email protected]>

NETCONSOLE isn't compiled in with SPL, so the include file needs to recognize that.

Cc Joe Hershberger <[email protected]>
---
 include/net.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
include/net.h +3 -3
index 455b48f6c7..3101096e9a 100644
@@ -676,7 +676,7 @@ int net_send_udp_packet(uchar *ether, struct in_addr dest, int dport,
 /* Processes a received packet */
 void net_process_received_packet(uchar *in_packet, int len);
 
-#ifdef CONFIG_NETCONSOLE
+#if defined(CONFIG_NETCONSOLE) && !defined(CONFIG_SPL_BUILD)
 void nc_start(void);
 int nc_input_packet(uchar *pkt, struct in_addr src_ip, unsigned dest_port,
 	unsigned src_port, unsigned len);
@@ -684,7 +684,7 @@ int nc_input_packet(uchar *pkt, struct in_addr src_ip, unsigned dest_port,
 
 static __always_inline int eth_is_on_demand_init(void)
 {
-#ifdef CONFIG_NETCONSOLE
+#if defined(CONFIG_NETCONSOLE) && !defined(CONFIG_SPL_BUILD)
 	extern enum proto_t net_loop_last_protocol;
 
 	return net_loop_last_protocol != NETCONS;
@@ -695,7 +695,7 @@ static __always_inline int eth_is_on_demand_init(void)
 
 static inline void eth_set_last_protocol(int protocol)
 {
-#ifdef CONFIG_NETCONSOLE
+#if defined(CONFIG_NETCONSOLE) && !defined(CONFIG_SPL_BUILD)
 	extern enum proto_t net_loop_last_protocol;
 
 	net_loop_last_protocol = protocol;
Signature · 1 line
2.15.1
#9 lore raw

PATCH 3/4 Handle NETCONSOLE and SPL enabled

Quoted 6 lines · Jason Kridner

From: Jason Kridner <[email protected]>

NETCONSOLE isn't compiled in with SPL, so the include file needs to recognize that.

Cc Joe Hershberger <[email protected]>
Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180307/9d359771/attachment.sig>
#11 lore raw

PATCH 3/4 Handle NETCONSOLE and SPL enabled

In reply to Jason Kridner
Quoted 8 lines · Jason Kridner

From: Jason Kridner <[email protected]>

NETCONSOLE isn't compiled in with SPL, so the include file needs to recognize that.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180406/c71a3e8b/attachment.sig>
#12 lore raw

PATCH 4/4 am335x: am335x_evm_usbspl_defconfig: NETCONSOLE

In reply to Jason Kridner

Enable NETCONSOLE by default. Still requires changes to the boot environment to enable on the platform.

---
 configs/am335x_evm_usbspl_defconfig | 7 +++++++
 1 file changed, 7 insertions(+)
configs/am335x_evm_usbspl_defconfig +7 -0
index e4bf757923..19f7c49951 100644
@@ -6,7 +6,13 @@ CONFIG_AM33XX=y
 CONFIG_DISTRO_DEFAULTS=y
 # CONFIG_ANDROID_BOOT_IMAGE is not set
 CONFIG_BOOTCOMMAND="if test ${boot_fit} -eq 1; then run update_to_fit; fi; run findfdt; run init_console; run envboot; run distro_bootcmd"
+CONFIG_CONSOLE_MUX=y
+CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+# CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE is not set
+CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
+# CONFIG_SYS_STDIO_DEREGISTER is not set
+# CONFIG_FIT_EMBED is not set
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
 CONFIG_SPL=y
@@ -50,3 +56,4 @@ CONFIG_USB_ETHER=y
 CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
 CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_NETCONSOLE=y
Signature · 1 line
2.15.1
#13 lore raw

PATCH 4/4 am335x: am335x_evm_usbspl_defconfig: NETCONSOLE

Quoted 5 lines · Jason Kridner

Enable NETCONSOLE by default. Still requires changes to the boot environment to enable on the platform.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180307/0cf9b0f8/attachment.sig>
#14 lore raw

PATCH 4/4 am335x: am335x_evm_usbspl_defconfig: NETCONSOLE

In reply to Jason Kridner
Quoted 6 lines · Jason Kridner

Enable NETCONSOLE by default. Still requires changes to the boot environment to enable on the platform.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180406/c77aab0f/attachment.sig>