bug report: fail to boot barebox in marvell 6281 board
Subsystems (4)
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
@@ -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
@@ -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
@@ -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
@@ -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 = <ð0port>;
+ 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 =
<ð1port>;
+ phy-mode =
"rgmii-id"; //must set, otherwise no rx package
+ fixed-link {
+ ethernet =
<ð0port>;
+ 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.
+ ð0 {
+ status = "okay";
+ ð0port {
+ speed = <1000>;
+ ð1 {
+ status = "okay";
+ ð1port {
+ speed = <1000>;
images/Makefile.mvebu +0 -0
@@ -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