From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BF886C433FE for ; Fri, 25 Mar 2022 01:33:06 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 9DD8183ADB; Fri, 25 Mar 2022 02:33:03 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id CC37C8394D; Fri, 25 Mar 2022 02:33:00 +0100 (CET) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by phobos.denx.de (Postfix) with ESMTP id 857E583ADB for ; Fri, 25 Mar 2022 02:32:55 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=andre.przywara@arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A7C7B12FC; Thu, 24 Mar 2022 18:32:54 -0700 (PDT) Received: from slackpad.lan (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 61DE53F73B; Thu, 24 Mar 2022 18:32:52 -0700 (PDT) Date: Fri, 25 Mar 2022 01:13:38 +0000 From: Andre Przywara To: William Zhang Cc: U-Boot Mailing List , Kursad Oney , Anand Gore , Bharat Gooty , Christian Hewitt , Fabio Estevam , Jagan Teki , Joel Peshkin , Kever Yang , Peter Robinson , Rayagonda Kokatanur , Simon Glass , Tim Harvey , Tom Rini , "Ying-Chun Liu (PaulLiu)" Subject: Re: [PATCH 1/1] arm: bcmbca: introduce the bcmbca architecture and 47622 SOC Message-ID: <20220325011338.789c2bce@slackpad.lan> In-Reply-To: <20220323190202.1.I299769afcaf6c3274569466c1bcce0d13f4fdbb8@changeid> References: <20220324020348.25026-1-william.zhang@broadcom.com> <20220323190202.1.I299769afcaf6c3274569466c1bcce0d13f4fdbb8@changeid> Organization: Arm Ltd. X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.31; x86_64-slackware-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean On Wed, 23 Mar 2022 19:03:48 -0700 William Zhang wrote: Hi, > This is the initial support for Broadcom's ARM-based 47622 SOC. > > In this change, our first SOC is an armv7 platform called 47622. The > initial support includes a bare-bone implementation and dts with ARM > PL011 uart. As Tom said, you need to run the DT through the kernel review first. To maybe save you one round there, see below my comments. > The SOC-specific code resides in arch/arm/mach-bcmbca/ and board > related code is in board/broadcom/bcmba. > > The u-boot image can be loaded from flash or network to the entry point > address in the memory and boot from there. > > Signed-off-by: William Zhang > Signed-off-by: Kursad Oney > Signed-off-by: Anand Gore > --- > > MAINTAINERS | 11 ++++++++ > arch/arm/Kconfig | 7 ++++++ > arch/arm/Makefile | 1 + > arch/arm/dts/Makefile | 3 +++ > arch/arm/dts/bcm47622.dtsi | 25 ++++++++++++++++++ > arch/arm/dts/bcm947622.dts | 31 +++++++++++++++++++++++ > arch/arm/mach-bcmbca/Kconfig | 17 +++++++++++++ > arch/arm/mach-bcmbca/Makefile | 6 +++++ > arch/arm/mach-bcmbca/bcm47622/Kconfig | 17 +++++++++++++ > arch/arm/mach-bcmbca/bcm47622/Makefile | 5 ++++ > board/broadcom/bcmbca/Kconfig | 17 +++++++++++++ > board/broadcom/bcmbca/Makefile | 5 ++++ > board/broadcom/bcmbca/board.c | 35 ++++++++++++++++++++++++++ > configs/bcm947622_defconfig | 18 +++++++++++++ > include/configs/bcm947622.h | 21 ++++++++++++++++ > 15 files changed, 219 insertions(+) > create mode 100644 arch/arm/dts/bcm47622.dtsi > create mode 100644 arch/arm/dts/bcm947622.dts > create mode 100644 arch/arm/mach-bcmbca/Kconfig > create mode 100644 arch/arm/mach-bcmbca/Makefile > create mode 100644 arch/arm/mach-bcmbca/bcm47622/Kconfig > create mode 100644 arch/arm/mach-bcmbca/bcm47622/Makefile > create mode 100644 board/broadcom/bcmbca/Kconfig > create mode 100644 board/broadcom/bcmbca/Makefile > create mode 100644 board/broadcom/bcmbca/board.c > create mode 100644 configs/bcm947622_defconfig > create mode 100644 include/configs/bcm947622.h > > diff --git a/MAINTAINERS b/MAINTAINERS > index 96582fc677..ef4a9b04e8 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -195,6 +195,17 @@ F: drivers/pinctrl/broadcom/ > F: configs/rpi_* > T: git https://source.denx.de/u-boot/custodians/u-boot-arm.git > > +ARM BROADCOM BCMBCA > +M: Anand Gore > +M: William Zhang > +M: Kursad Oney > +M: Joel Peshkin > +S: Maintained > +F: arch/arm/mach-bcmbca/ > +F: board/broadcom/bcmbca/ > +F: configs/bcm947622_defconfig > +F: include/configs/bcm947622.h > + > ARM BROADCOM BCMSTB > M: Thomas Fitzsimmons > S: Maintained > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig > index 4567c183fb..9a75d2e6bb 100644 > --- a/arch/arm/Kconfig > +++ b/arch/arm/Kconfig > @@ -641,6 +641,11 @@ config ARCH_BCMSTB > This enables support for Broadcom ARM-based set-top box > chipsets, including the 7445 family of chips. > > +config ARCH_BCMBCA > + bool "Broadcom broadband chip family" > + select DM > + select OF_CONTROL > + > config TARGET_VEXPRESS_CA9X4 > bool "Support vexpress_ca9x4" > select CPU_V7A > @@ -2092,6 +2097,8 @@ source "arch/arm/mach-at91/Kconfig" > > source "arch/arm/mach-bcm283x/Kconfig" > > +source "arch/arm/mach-bcmbca/Kconfig" > + > source "arch/arm/mach-bcmstb/Kconfig" > > source "arch/arm/mach-davinci/Kconfig" > diff --git a/arch/arm/Makefile b/arch/arm/Makefile > index ad757e982e..0fd127e0e7 100644 > --- a/arch/arm/Makefile > +++ b/arch/arm/Makefile > @@ -59,6 +59,7 @@ machine-$(CONFIG_ARCH_APPLE) += apple > machine-$(CONFIG_ARCH_ASPEED) += aspeed > machine-$(CONFIG_ARCH_AT91) += at91 > machine-$(CONFIG_ARCH_BCM283X) += bcm283x > +machine-$(CONFIG_ARCH_BCMBCA) += bcmbca > machine-$(CONFIG_ARCH_BCMSTB) += bcmstb > machine-$(CONFIG_ARCH_DAVINCI) += davinci > machine-$(CONFIG_ARCH_EXYNOS) += exynos > diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile > index 644ba961a2..448347d278 100644 > --- a/arch/arm/dts/Makefile > +++ b/arch/arm/dts/Makefile > @@ -1112,6 +1112,9 @@ dtb-$(CONFIG_TARGET_BCMNS3) += ns3-board.dtb > > dtb-$(CONFIG_ARCH_BCMSTB) += bcm7xxx.dtb > > +dtb-$(CONFIG_BCM47622) += \ > + bcm947622.dtb > + > dtb-$(CONFIG_ASPEED_AST2500) += ast2500-evb.dtb > dtb-$(CONFIG_ASPEED_AST2600) += ast2600-evb.dtb > > diff --git a/arch/arm/dts/bcm47622.dtsi b/arch/arm/dts/bcm47622.dtsi > new file mode 100644 > index 0000000000..1fe05daa67 > --- /dev/null > +++ b/arch/arm/dts/bcm47622.dtsi > @@ -0,0 +1,25 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright 2019 Broadcom Ltd. > + */ > + > +#include "skeleton.dtsi" skeleton is not used anymore in the kernel. > + > +/ { > + compatible = "brcm,bcm47622"; > + #address-cells = <0x1>; > + #size-cells = <0x1>; Just use decimals: ... = <1>; > + > + ubus@ff800000 { just: bus@ff800000 { Actually not sure you need that at all. Are there going to be more devices later? > + compatible = "simple-bus"; > + #address-cells = <0x1>; > + #size-cells = <0x1>; > + > + uart0: serial@ff812000 { > + compatible = "arm,pl011", "arm,primecell"; > + reg = <0xff812000 0x1000>; > + clock = <50000000>; This is not an official property. Please use a fixed-clock and the clocks property. In general, once you have those files in the kernel tree, run your DT through "make dtbs_check". This will report a lot of unrelated failures initially, so ignore the first run, "touch" your .dts file, then re-run. If this SoC contains Cortex-A7 cores, then please also add the GIC, arch timer and CPU nodes, for basic functionality. Cheers, Andre > + status = "disabled"; > + }; > + }; > +}; > diff --git a/arch/arm/dts/bcm947622.dts b/arch/arm/dts/bcm947622.dts > new file mode 100644 > index 0000000000..e241c4ec56 > --- /dev/null > +++ b/arch/arm/dts/bcm947622.dts > @@ -0,0 +1,31 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright 2019 Broadcom Ltd. > + */ > + > +/dts-v1/; > + > +#include "bcm47622.dtsi" > + > +/ { > + model = "Broadcom bcm947622"; > + compatible = "broadcom,bcm947622", "brcm,bcm947622"; > + > + aliases { > + serial0 = &uart0; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + memory { > + device_type = "memory"; > + reg = <0x0 0x08000000>; > + }; > +}; > + > +&uart0 { > + status = "okay"; > +}; > + > diff --git a/arch/arm/mach-bcmbca/Kconfig b/arch/arm/mach-bcmbca/Kconfig > new file mode 100644 > index 0000000000..2d49380f87 > --- /dev/null > +++ b/arch/arm/mach-bcmbca/Kconfig > @@ -0,0 +1,17 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# (C) Copyright 2022 Broadcom Ltd > +# > + > +if ARCH_BCMBCA > + > +config BCM47622 > + bool "Support for Broadcom 47622 Family" > + select SYS_ARCH_TIMER > + select CPU_V7A > + select DM_SERIAL > + select PL01X_SERIAL > + > +endif > + > +source "arch/arm/mach-bcmbca/bcm47622/Kconfig" > diff --git a/arch/arm/mach-bcmbca/Makefile b/arch/arm/mach-bcmbca/Makefile > new file mode 100644 > index 0000000000..072d4ea7b5 > --- /dev/null > +++ b/arch/arm/mach-bcmbca/Makefile > @@ -0,0 +1,6 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# (C) Copyright 2022 Broadcom Ltd > +# > + > +obj-$(CONFIG_BCM47622) += bcm47622/ > diff --git a/arch/arm/mach-bcmbca/bcm47622/Kconfig b/arch/arm/mach-bcmbca/bcm47622/Kconfig > new file mode 100644 > index 0000000000..bce30892e3 > --- /dev/null > +++ b/arch/arm/mach-bcmbca/bcm47622/Kconfig > @@ -0,0 +1,17 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# (C) Copyright 2022 Broadcom Ltd > +# > + > +if BCM47622 > + > +config TARGET_BCM947622 > + bool "Broadcom 47622 Reference Board" > + depends on ARCH_BCMBCA > + > +config SYS_SOC > + default "bcm47622" > + > +source "board/broadcom/bcmbca/Kconfig" > + > +endif > diff --git a/arch/arm/mach-bcmbca/bcm47622/Makefile b/arch/arm/mach-bcmbca/bcm47622/Makefile > new file mode 100644 > index 0000000000..beb979af75 > --- /dev/null > +++ b/arch/arm/mach-bcmbca/bcm47622/Makefile > @@ -0,0 +1,5 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# (C) Copyright 2022 Broadcom Ltd > +# > +obj- += dummy.o > diff --git a/board/broadcom/bcmbca/Kconfig b/board/broadcom/bcmbca/Kconfig > new file mode 100644 > index 0000000000..63d4252da6 > --- /dev/null > +++ b/board/broadcom/bcmbca/Kconfig > @@ -0,0 +1,17 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# (C) Copyright 2022 Broadcom Ltd > +# > + > +config SYS_BOARD > + default "bcmbca" > + > +config SYS_VENDOR > + default "broadcom" > + > +if TARGET_BCM947622 > + > +config SYS_CONFIG_NAME > + default "bcm947622" > + > +endif > diff --git a/board/broadcom/bcmbca/Makefile b/board/broadcom/bcmbca/Makefile > new file mode 100644 > index 0000000000..8f06c3111b > --- /dev/null > +++ b/board/broadcom/bcmbca/Makefile > @@ -0,0 +1,5 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# (C) Copyright 2022 Broadcom Ltd > + > +obj-y += board.o > diff --git a/board/broadcom/bcmbca/board.c b/board/broadcom/bcmbca/board.c > new file mode 100644 > index 0000000000..4aa1d659d5 > --- /dev/null > +++ b/board/broadcom/bcmbca/board.c > @@ -0,0 +1,35 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * (C) Copyright 2022 Broadcom Ltd. > + */ > + > +#include > +#include > + > +int board_init(void) > +{ > + return 0; > +} > + > +int dram_init(void) > +{ > + if (fdtdec_setup_mem_size_base() != 0) > + puts("fdtdec_setup_mem_size_base() has failed\n"); > + > + return 0; > +} > + > +int dram_init_banksize(void) > +{ > + fdtdec_setup_memory_banksize(); > + return 0; > +} > + > +int print_cpuinfo(void) > +{ > + return 0; > +} > + > +void reset_cpu(ulong addr) > +{ > +} > diff --git a/configs/bcm947622_defconfig b/configs/bcm947622_defconfig > new file mode 100644 > index 0000000000..c8d14820af > --- /dev/null > +++ b/configs/bcm947622_defconfig > @@ -0,0 +1,18 @@ > +CONFIG_ARM=y > +CONFIG_ARCH_BCMBCA=y > +CONFIG_SYS_TEXT_BASE=0x10000000 > +CONFIG_SYS_MALLOC_LEN=0x2000000 > +CONFIG_SYS_MALLOC_F_LEN=0x8000 > +CONFIG_BCM47622=y > +CONFIG_TARGET_BCM947622=y > +CONFIG_NR_DRAM_BANKS=1 > +CONFIG_DEFAULT_DEVICE_TREE="bcm947622" > +CONFIG_IDENT_STRING=" Broadcom BCM47622" > +CONFIG_ENV_VARS_UBOOT_CONFIG=y > +CONFIG_SYS_LOAD_ADDR=0x10000000 > +CONFIG_OF_STDOUT_VIA_ALIAS=y > +CONFIG_DISPLAY_BOARDINFO_LATE=y > +CONFIG_HUSH_PARSER=y > +CONFIG_CMD_CACHE=y > +CONFIG_OF_EMBED=y > +CONFIG_CLK=y > diff --git a/include/configs/bcm947622.h b/include/configs/bcm947622.h > new file mode 100644 > index 0000000000..7c80e88be0 > --- /dev/null > +++ b/include/configs/bcm947622.h > @@ -0,0 +1,21 @@ > +/* SPDX-License-Identifier: GPL-2.0+ */ > +/* > + * (C) Copyright 2022 Broadcom Ltd. > + */ > + > +#ifndef __BCM947622_H > +#define __BCM947622_H > +#include > + > +#define CONFIG_SYS_MAXARGS 64 > +#define CONFIG_SYS_BOOTM_LEN (32 * 1024 * 1024) > + > +/* UART */ > +#define CONFIG_SYS_BAUDRATE_TABLE { 115200 } > + > +#define CONFIG_SYS_SDRAM_BASE 0x00000000 > + > +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_TEXT_BASE + SZ_16M) > + > +#define COUNTER_FREQUENCY 50000000 > +#endif