Skip to contentSkip to conversation

bug report: fail to boot barebox in marvell 6281 board

PATCH you xiaojie 1 participant 1 message Mar 31, 2020

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

I ported barebox to a new board similar to guruplug, but it could not boot, only show a line of barebox 2020.03.0-....., and I try official guruplug also stopped. the devicetree is ok under linux 5.4 and the kwbimage.cfg is ok I think, according to the 6281's datasheet and compared with the original register value of machine.

so any can try guruplug's barebox? this is my porting patch, is there something wrong?

From f2381a9855ae9db312aed52b1ab4d7343181e3b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=A4=E6=99=93=E6=9D=B0?= <[email protected]>
Date: Mon, 30 Mar 2020 01:32:31 +0800
Subject: [PATCH] Add support for Huanshuo HS-50A

---
 arch/arm/boards/Makefile                    |   1 +
 arch/arm/boards/huanshuo-hs50a/Makefile     |   2 +
 arch/arm/boards/huanshuo-hs50a/board.c      |  17 +
 arch/arm/boards/huanshuo-hs50a/kwbimage.cfg |  27 ++
 arch/arm/boards/huanshuo-hs50a/lowlevel.c   |  35 ++
 arch/arm/configs/mvebu_defconfig            |   1 +
 arch/arm/dts/Makefile                       |   1 +
 arch/arm/dts/kirkwood-huanshuo-hs50a-bb.dts |  16 +
 arch/arm/mach-mvebu/Kconfig                 |   4 +
 dts/src/arm/kirkwood-huanshuo-hs50a.dts     | 348 ++++++++++++++++++++
 images/Makefile.mvebu                       |   8 +
 11 files changed, 460 insertions(+)
 create mode 100644 arch/arm/boards/huanshuo-hs50a/Makefile
 create mode 100644 arch/arm/boards/huanshuo-hs50a/board.c
 create mode 100644 arch/arm/boards/huanshuo-hs50a/kwbimage.cfg
 create mode 100644 arch/arm/boards/huanshuo-hs50a/lowlevel.c
 create mode 100644 arch/arm/dts/kirkwood-huanshuo-hs50a-bb.dts
 create mode 100644 dts/src/arm/kirkwood-huanshuo-hs50a.dts
arch/arm/boards/Makefile +2 -0
index 9fe458e0a..009dbd801 100644
@@ -61,6 +61,7 @@ obj-$(CONFIG_MACH_GUF_VINCELL)			
+= guf-vincell/
 obj-$(CONFIG_MACH_GW_VENTANA)			+= gateworks-ventana/
 obj-$(CONFIG_MACH_HABA_KNX_LITE)		+= haba-knx/
 obj-$(CONFIG_MACH_HIGHBANK)			+= highbank/
+obj-$(CONFIG_MACH_HUANSHUO_HS50A)		+= huanshuo-hs50a/
 obj-$(CONFIG_MACH_IMX21ADS)			+= freescale-mx21-ads/
 obj-$(CONFIG_MACH_IMX233_OLINUXINO)		+= imx233-olinuxino/

obj-$(CONFIG_MACH_IMX27ADS) += freescale-mx27-ads/

arch/arm/boards/huanshuo- renamed from arch/arm/boards/huanshuo-hs50a/Makefile +0 -0

hs50a/Makefile
new file mode 100644
index 000000000..01c7a259e

arch/arm/boards/huanshuo-hs50a/Makefile new file +2 -0
@@ -0,0 +1,2 @@
+obj-y += board.o
+lwl-y += lowlevel.o
arch/arm/boards/huanshuo- renamed from arch/arm/boards/huanshuo-hs50a/board.c +0 -0

hs50a/board.c
new file mode 100644
index 000000000..9c800c541

arch/arm/boards/huanshuo-hs50a/board.c new file +17 -0
@@ -0,0 +1,17 @@
+/*
+ * Copyright
+ * (C) 2013 Thomas Petazzoni <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+/* empty */
arch/arm/boards/ renamed from arch/arm/boards/huanshuo-hs50a/kwbimage.cfg +0 -0

huanshuo-hs50a/kwbimage.cfg
new file mode 100644
index 000000000..d0f3bdb01

arch/arm/boards/huanshuo-hs50a/kwbimage.cfg new file +27 -0
@@ -0,0 +1,27 @@
+VERSION 0
+BOOT_FROM nand
+NAND_ECCMODE default
+NAND_PAGESZ 00000800
+DATA ffd100e0 1b1b9b9b
+DATA ffd01400 43000c30
+DATA ffd01404 37543000
+DATA ffd01408 22125451
+DATA ffd0140c 00000a33
+DATA ffd01410 000000cc
+DATA ffd01414 00000000
+DATA ffd01418 00000000
+DATA ffd0141c 00000c52
+DATA ffd01420 00000040
+DATA ffd01424 0000f17f
+DATA ffd01428 00085520
+DATA ffd0147c 00008552
+DATA ffd01500 00000000
+DATA ffd01504 0ffffff1
+DATA ffd01508 10000000
+DATA ffd0150c 0ffffff5
+DATA ffd01514 00000000
+DATA ffd0151c 00000000
+DATA ffd01494 00030000
+DATA ffd01498 00000000
+DATA ffd0149c 0000e803
+DATA ffd01480 00000001
arch/arm/boards/ renamed from arch/arm/boards/huanshuo-hs50a/lowlevel.c +0 -0

huanshuo-hs50a/lowlevel.c
new file mode 100644

arch/arm/boards/huanshuo-hs50a/lowlevel.c new file +22 -0
@@ -0,0 +1,35 @@
+ *  Sebastian Hesselbarth <[email protected]>
+ *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+#include <linux/sizes.h>
+#include <asm/barebox-arm.h>
+#include <asm/barebox-arm-head.h>
+#include <mach/lowlevel.h>
+
+extern char __dtb_kirkwood_huanshuo_hs50a_bb_start[];
+
+ENTRY_FUNCTION(start_huanshuo_hs50a, r0, r1, r2)
+{
+	void *fdt;
+
+	arm_cpu_lowlevel_init();
+
+	fdt = __dtb_kirkwood_huanshuo_hs50a_bb_start +
+		get_runtime_offset();
+
+	kirkwood_barebox_entry(fdt);
+}
arch/arm/configs/mvebu_defconfig +1 -0
index c830cf2f0..2aff89a02 100644
@@ -9,6 +9,7 @@ CONFIG_MACH_PLATHOME_OPENBLOCKS_AX3=y
 CONFIG_MACH_TURRIS_OMNIA=y
 CONFIG_MACH_SOLIDRUN_CUBOX=y
 CONFIG_MACH_GLOBALSCALE_GURUPLUG=y
+CONFIG_MACH_HUANSHUO_HS50A=y
 CONFIG_MACH_PLATHOME_OPENBLOCKS_A6=y
 CONFIG_MACH_USI_TOPKICK=y
 CONFIG_AEABI=y
arch/arm/dts/Makefile +0 -0
index ddfe64e83..b3bd5cdc4 100644
@@ -30,6 +30,7 @@ lwl-dtb-$(CONFIG_MACH_GRINN_LITEBOARD) += imx6ul-

liteboard.dtb.o
lwl-dtb-$(CONFIG_MACH_GUF_SANTARO) += imx6q-guf-santaro.dtb.o lwl-dtb-$(CONFIG_MACH_GUF_VINCELL) += imx53-guf-vincell.dtb.o imx53-guf-
vincell-lt.dtb.o
lwl-dtb-$(CONFIG_MACH_GW_VENTANA) += imx6q-gw54xx.dtb.o
+lwl-dtb-$(CONFIG_MACH_HUANSHUO_HS50A) += kirkwood-huanshuo-hs50a-bb.dtb.o
lwl-dtb-$(CONFIG_MACH_KONTRON_SAMX6I) += imx6q-samx6i.dtb.o \
imx6dl-samx6i.dtb.o
lwl-dtb-$(CONFIG_MACH_LENOVO_IX4_300D) += armada-xp-lenovo-ix4-300d-bb.dtb.o

arch/arm/dts/ renamed from arch/arm/dts/kirkwood-huanshuo-hs50a-bb.dts +0 -0

kirkwood-huanshuo-hs50a-bb.dts
new file mode 100644

arch/arm/dts/kirkwood-huanshuo-hs50a-bb.dts new file +7 -0
@@ -0,0 +1,16 @@
+ * Barebox specific DT overlay for HuanShuo HS-50A
+ *   You Xiaojie <[email protected]>
+ */
+	gpio-leds {
+		health-r {
+			barebox,default-trigger = "heartbeat";
+		};
arch/arm/mach-mvebu/Kconfig +4 -0
index bab22f07f..9bd72dddb 100644
@@ -102,6 +102,10 @@ config MACH_GLOBALSCALE_GURUPLUG
 	bool "Guruplug"
 	select ARCH_KIRKWOOD
 
+config MACH_HUANSHUO_HS50A
+	bool "Huanshuo HS-50A"
+	select ARCH_KIRKWOOD
+
 config MACH_PLATHOME_OPENBLOCKS_A6
 	bool "PlatHome OpenBlocks A6"
 	select ARCH_KIRKWOOD
dts/src/arm/kirkwood- renamed from dts/src/arm/kirkwood-huanshuo-hs50a.dts +0 -0

huanshuo-hs50a.dts
new file mode 100644

dts/src/arm/kirkwood-huanshuo-hs50a.dts new file +8 -0
@@ -0,0 +1,348 @@
+/* Device tree file for the HuanShuo HS-50A box.
+ *
+ * Copyright (c) 2019-2020 you_xiaojie <[email protected]>
+ * Based on Marvell RD88F6181 A Board descrition
+ * Andrew Lunn <[email protected]>
+*/
+	model = "Huanshuo hs-50a";
+	compatible = "huanshuo,hs50a","marvell,rd88f6281-a", 

"marvell,rd88f6281","marvell,kirkwood-88f6281", "marvell,kirkwood"; +
+ bootargs = "console=ttyS0,115200n8 earlyprintk";
+ stdout-path = &uart0;
+ stdin-path = &uart0;
+ };
+ device_type = "memory";
+ reg = <0x00000000 0x20000000>; /* 512 MB */
+ pinctrl-0 = <&pmx_usben>;
+ pinctrl-names = "default";
+
+ usb_power: regulator@0 {
+ compatible = "regulator-fixed";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ enable-active-high;
+ gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
+ };
+ compatible = "marvell,dsa";
+ #address-cells = <2>;
+ dsa,ethernet = <&eth0port>;
+ dsa,mii-bus = <&mdio>;
+
+ reg = <10 0>; /* MDIO address 0x0a, switch 0
in tree */
+ label = "lan1";
+ };
+ label = "lan2";
+ };
+ label = "lan3";
+ };
+ label = "lan4";
+ };
+ label = "cpu";
+ fixed-link {
+ &nand {
+ status = "okay";
+ label = "ubi";
+ reg = <0x0400000 0x3c00000>;
+ &mdio {
+ status = "okay";
+ switch0: switch@11 {
+ status = "okay";
+ compatible = "marvell,mv88e6085";
+ pinctrl-0 = <&pmx_sw_irq_n>;
+ pinctrl-names = "default";
+ #address-cells = <1>;
IRQ_TYPE_LEVEL_LOW>;
+ interrupt-parent = <&gpio1>;
+ interrupt-controller;
"lan1";
+ phy-handle =
<&sw0phy0>;
+ phy-mode =
"rgmii-id"; //optional rgmii is ok
+ };
"lan2";
+ phy-handle =
<&sw0phy1>;
+ phy-mode =
"rgmii-id"; //optional rgmii is ok
+ };
"lan3";
+ phy-handle =
<&sw0phy2>;
+ phy-mode =
"rgmii-id"; //optional rgmii is ok
+ };
"lan4";
+ phy-handle =
<&sw0phy3>;
+ phy-mode =
"rgmii-id"; //optional rgmii is ok
+ };
+ phy-handle =
<&sw0phy4>;
+ phy-mode =
"rgmii-id"; //optional rgmii is ok
+ };
"cpu";
+ ethernet =
<&eth1port>;
+ phy-mode =
"rgmii-id"; //must set, otherwise no rx package
+ fixed-link {
+ ethernet =
<&eth0port>;
+ phy-mode =
"rgmii-id"; //optional, set to rgmii no rx package
+ fixed-link {
+ mdio {
+ #address-cells = <1>;
+ sw0phy0: switch0phy0@0
{
<0 IRQ_TYPE_LEVEL_HIGH>;
+ };
+ sw0phy1: switch0phy1@1
{
<1 IRQ_TYPE_LEVEL_HIGH>;
+ };
+ sw0phy2: switch0phy2@2
{
<2 IRQ_TYPE_LEVEL_HIGH>;
+ };
+ sw0phy3: switch0phy3@3
{
<3 IRQ_TYPE_LEVEL_HIGH>;
+ };
+ sw0phy4: switch0phy4@4
{
"ethernet-phy-id0141.0e70"; //, ethernet-phy-ieee802.3-c22";
+ reg = <4>;
parent = <&switch0>;
+ interrupts =
<4 IRQ_TYPE_LEVEL_HIGH>;
+ };
+ &pinctrl {
+ pinctrl-names = "default";
+
+ pmx_mpps:pmx-mpps {
+ marvell,pins = "mpp28", "mpp29",
"mpp36", "mpp39", "mpp45", "mpp47", "mpp48", "mpp49";
+ marvell,function = "gpio";
+ };
+ pmx_sysrsto_n:pmx-sysrstout-n {
+ marvell,pins = "mpp6";
+ marvell,function = "sysrst";
+ };
+ pmx_sata1_n:pmx-sata1-act-n {
+ marvell,pins = "mpp34";
+ marvell,function = "sata1";
+ };
+ pmx_sata0_n:pmx-sata0-act-n {
+ marvell,pins = "mpp35";
+ marvell,function = "sata0";
+ };
+ pmx_usben:pmx-usb-pwrenable {
+ marvell,pins = "mpp37";
+ marvell,function = "gpio";
+ };
+ pmx_sw_irq_n:pmx-switcher-irq-n {
+ marvell,pins = "mpp38";
+ marvell,function = "gpio";
+ };
+ pmx_fs_n:pmx-fanspeed-n {
+ marvell,pins = "mpp40";
+ marvell,function = "gpio";
+ };
+ pmx_usboc:pmx-usb-pwroc {
+ marvell,pins = "mpp41";
+ marvell,function = "gpio";
+ };
+ pmx_sdwp:pmx-sdio-wp {
+ marvell,pins = "mpp42";
+ marvell,function = "gpio";
+ };
+ pmx_sdcd_n:pmx-sdio-cd-n {
+ marvell,pins = "mpp43";
+ marvell,function = "gpio";
+ };
+ pmx_nfbusy_n:pmx-nfrb {
+ marvell,pins = "mpp44";
+ marvell,function = "gpio";
+ };
+ pmx_mpps:pmx-mpps {
+ marvell,pins = "mpp46";
+ marvell,function = "gpio";
+ };
+ &gpio0 {
+ gpio-line-names = "NF_IO2", "NF_IO3",
"NF_IO4", "NF_IO5", "NF_IO6", "NF_IO7", "SYSRST_On", "", "TW_SDA", "TW_SCK", "UA0_TXD", "UA0_RXD", "SD_CLK", "SD_CMD", "SD_D0", "SD_D1", "SD_D2", "SD_D3", "NF_IO0", "NF_IO1", "RGMII1_TXD0", "RGMII1_TXD1", "RGMII1_TXD2", "RGMII1_TXD3", "RGMII1_RXD0", "RGMII1_RXD1", "RGMII1_RXD2", "RGMII1_RXD3", "", "", "RGMII1_RXCTL", "RGMII1_RXCLK";
+ };
+ &gpio1 {
+ gpio-line-names = "RGMII1_TXCLKOUT",
"RGMII1_TXCTL", "SATA1_ACTn", "SATA0_ACTn", "", "USB_EN", "SWITCH_IRQn", "", "FAN_SPEEDn", "USB_OC", "SDWP", "SDCDn", "NFRB", "", "", "", "", "";
+ };
+ &i2c0 {
+ status = "okay";
+ compatible = "atmel,24c64";
+ reg = <0x50>;
+ pagesize = <32>;
+ };
+ &sdio {
+ status = "okay";
+ pinctrl-0 = <&pmx_sdio &pmx_sdcd_n
&pmx_sdwp>;
+ pinctrl-names = "default";
+ cd-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+ wp-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
+ };
+ &sata {
+ status = "okay";
+ pinctrl-0 = <&pmx_sata0_n &pmx_sata1_n>;
+ nr-ports = <2>;
+ };
+ &uart0 {
+ status = "okay";
+ &pciec {
+ status = "okay";
+ &pcie0 {
+ status = "okay";
+ compatible = "pci168c,abcd";
+ reg = <0x7000 0 0 0 0x1000>;
+ qca,no-eeprom;
+ };
+ /* eth0 is connected to a Marvell 88E6171 switch,
without a PHY. So set
+ * fixed speed and duplex.
+ &eth0 {
+ status = "okay";
+ &eth0port {
+ speed = <1000>;
+ &eth1 {
+ status = "okay";
+ &eth1port {
+ speed = <1000>;

images/Makefile.mvebu +0 -0
index 112227424..2d8f66407 100644
@@ -110,6 +110,14 @@ pblb-$(CONFIG_MACH_GLOBALSCALE_GURUPLUG) += 

start_globalscale_guruplug
image-$(CONFIG_MACH_GLOBALSCALE_GURUPLUG) += barebox-globalscale-guruplug.img image-$(CONFIG_MACH_GLOBALSCALE_GURUPLUG) += barebox-globalscale-
guruplug-2nd.img

+HUANSHUO_HS50A_KWBOPTS = ${KWBOPTS} -i $(board)/huanshuo-hs50a/kwbimage.cfg +OPTS_start_huanshuo_hs50a.pblb.kwbimg = $(HUANSHUO_HS50A_KWBOPTS) +FILE_barebox-huanshuo-hs50a.img = start_huanshuo_hs50a.pblb.kwbimg +FILE_barebox-huanshuo-hs50a-2nd.img = start_huanshuo_hs50a.pblb +pblb-$(CONFIG_MACH_HUANSHUO_HS50A) += start_huanshuo_hs50a +image-$(CONFIG_MACH_HUANSHUO_HS50A) += barebox-huanshuo-hs50a.img +image-$(CONFIG_MACH_HUANSHUO_HS50A) += barebox-huanshuo-hs50a-2nd.img +
PLATHOME_OPENBLOCKS_A6_KWBOPTS = ${KWBOPTS} -i $(board)/plathome-openblocks-
a6/kwbimage.cfg
OPTS_start_plathome_openblocks_a6.pblb.kwbimg = $
(PLATHOME_OPENBLOCKS_A6_KWBOPTS)
FILE_barebox-plathome-openblocks-a6.img =
start_plathome_openblocks_a6.pblb.kwbimg

Signature · 9 lines
2.26.0.rc2




_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox