On 3/24/22 18:13, Andre Przywara wrote:
On Wed, 23 Mar 2022 19:03:48 -0700
William Zhang <[email protected]> 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.

Yes we are working on that.

The SOC-specific code resides in arch/arm/mach-bcmbca/<soc> 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 <[email protected]>
Signed-off-by: Kursad Oney <[email protected]>
Signed-off-by: Anand Gore <[email protected]>
---

  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 <[email protected]>
+M:     William Zhang <[email protected]>
+M:     Kursad Oney <[email protected]>
+M:     Joel Peshkin <[email protected]>
+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 <[email protected]>
  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?

There will be more devices under this peripheral bus.  I will rename it
as periph.

+               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.

Thanks for the feedbacks Andre! Will address all your comments in the dts we submit to kernel upstream.


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 <common.h>
+#include <fdtdec.h>
+
+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 <linux/sizes.h>
+
+#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

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to