From: Michal Simek <michal.simek@amd.com>
To: Bernhard Messerklinger <bernhard.messerklinger@br-automation.com>,
u-boot@lists.denx.de
Cc: Adam Ford <aford173@gmail.com>,
Andre Przywara <andre.przywara@arm.com>,
Jonas Karlman <jonas@kwiboo.se>,
Kever Yang <kever.yang@rock-chips.com>,
Marek Vasut <marek.vasut+renesas@mailbox.org>,
Neil Armstrong <neil.armstrong@linaro.org>,
Oliver Gaskell <Oliver.Gaskell@analog.com>,
Prasad Kummari <prasad.kummari@amd.com>,
Sumit Garg <sumit.garg@kernel.org>, Tom Rini <trini@konsulko.com>,
Tony Dinh <mibodhi@gmail.com>,
Wolfgang Wallner <wolfgang.wallner@br-automation.com>
Subject: Re: [PATCH v4 4/4] board/BuR/zynq: initial commit
Date: Mon, 14 Apr 2025 08:48:40 +0200 [thread overview]
Message-ID: <91fba3f7-6e61-4b8e-a1c5-7e0eb2af2ebb@amd.com> (raw)
In-Reply-To: <20250404072819.69642-5-bernhard.messerklinger@br-automation.com>
On 4/4/25 09:28, Bernhard Messerklinger wrote:
> This commit adds support for the brcp1, brsmarc2, brcp150 and brcp170
> boards. This boards are based on the Xilinx Zynq SoC.
>
> Signed-off-by: Bernhard Messerklinger <bernhard.messerklinger@br-automation.com>
> ---
>
> Changes in v4:
> - Fix device tree Makefile to only build B&R Zynq device trees
> if the target is from B&R.
>
> Changes in v3:
> - Split spi_flash and qspi controller node in device tree for the usage
> of bootph-all
> - Merge binman descriptions into one zynq-binman-brcp1
> - Add links instead of manually including u-boot.dtsi files
> - Remove empty MAC addresses nodes from the device tree
> - Seperate B&R Zynq device trees in the devicetree Makefile
>
> Changes in v2:
> - Remove all unnecessary device-tree entries
> - Reviewed led names (no pattern restriction found)
> - Fix maintainers file
> - Cleanup of code
> - Move preboot variable to env file
>
> arch/arm/dts/Makefile | 7 +
> arch/arm/dts/zynq-binman-brcp1.dtsi | 102 +++++++
> arch/arm/dts/zynq-brcp1.dtsi | 131 +++++++++
> arch/arm/dts/zynq-brcp150-u-boot.dtsi | 34 +++
> arch/arm/dts/zynq-brcp150.dts | 173 +++++++++++
> arch/arm/dts/zynq-brcp170-u-boot.dtsi | 26 ++
> arch/arm/dts/zynq-brcp170.dts | 139 +++++++++
> arch/arm/dts/zynq-brcp1_1r-u-boot.dtsi | 30 ++
> arch/arm/dts/zynq-brcp1_1r.dts | 28 ++
> arch/arm/dts/zynq-brcp1_1r_switch-u-boot.dtsi | 1 +
> arch/arm/dts/zynq-brcp1_1r_switch.dts | 30 ++
> arch/arm/dts/zynq-brcp1_2r-u-boot.dtsi | 1 +
> arch/arm/dts/zynq-brcp1_2r.dts | 21 ++
> arch/arm/dts/zynq-brsmarc2-u-boot.dtsi | 30 ++
> arch/arm/dts/zynq-brsmarc2.dts | 157 ++++++++++
> arch/arm/mach-zynq/Kconfig | 1 +
> board/BuR/zynq/Kconfig | 14 +
> board/BuR/zynq/MAINTAINERS | 11 +
> board/BuR/zynq/Makefile | 15 +
> board/BuR/zynq/brcp150/board.c | 4 +
> board/BuR/zynq/brcp150/ps7_init_gpl.c | 278 ++++++++++++++++++
> board/BuR/zynq/brcp170/board.c | 4 +
> board/BuR/zynq/brcp170/ps7_init_gpl.c | 274 +++++++++++++++++
> board/BuR/zynq/brcp1_1r/board.c | 4 +
> board/BuR/zynq/brcp1_1r/ps7_init_gpl.c | 274 +++++++++++++++++
> board/BuR/zynq/brcp1_1r_switch/board.c | 4 +
> board/BuR/zynq/brcp1_1r_switch/ps7_init_gpl.c | 270 +++++++++++++++++
> board/BuR/zynq/brcp1_2r/board.c | 4 +
> board/BuR/zynq/brcp1_2r/ps7_init_gpl.c | 277 +++++++++++++++++
> board/BuR/zynq/brsmarc2/board.c | 30 ++
> board/BuR/zynq/brsmarc2/ps7_init_gpl.c | 276 +++++++++++++++++
> board/BuR/zynq/common/board.c | 231 +++++++++++++++
> board/BuR/zynq/env/brcp1.env | 109 +++++++
> board/BuR/zynq/env/brcp150.env | 119 ++++++++
> configs/brcp150_defconfig | 121 ++++++++
> configs/brcp170_defconfig | 120 ++++++++
> configs/brcp1_1r_defconfig | 120 ++++++++
> configs/brcp1_1r_switch_defconfig | 121 ++++++++
> configs/brcp1_2r_defconfig | 120 ++++++++
> configs/brsmarc2_defconfig | 120 ++++++++
> include/configs/brzynq.h | 21 ++
> 41 files changed, 3852 insertions(+)
> create mode 100644 arch/arm/dts/zynq-binman-brcp1.dtsi
> create mode 100644 arch/arm/dts/zynq-brcp1.dtsi
> create mode 100644 arch/arm/dts/zynq-brcp150-u-boot.dtsi
> create mode 100644 arch/arm/dts/zynq-brcp150.dts
> create mode 100644 arch/arm/dts/zynq-brcp170-u-boot.dtsi
> create mode 100644 arch/arm/dts/zynq-brcp170.dts
> create mode 100644 arch/arm/dts/zynq-brcp1_1r-u-boot.dtsi
> create mode 100644 arch/arm/dts/zynq-brcp1_1r.dts
> create mode 120000 arch/arm/dts/zynq-brcp1_1r_switch-u-boot.dtsi
> create mode 100644 arch/arm/dts/zynq-brcp1_1r_switch.dts
> create mode 120000 arch/arm/dts/zynq-brcp1_2r-u-boot.dtsi
> create mode 100644 arch/arm/dts/zynq-brcp1_2r.dts
> create mode 100644 arch/arm/dts/zynq-brsmarc2-u-boot.dtsi
> create mode 100644 arch/arm/dts/zynq-brsmarc2.dts
> create mode 100644 board/BuR/zynq/Kconfig
> create mode 100644 board/BuR/zynq/MAINTAINERS
> create mode 100644 board/BuR/zynq/Makefile
> create mode 100644 board/BuR/zynq/brcp150/board.c
> create mode 100644 board/BuR/zynq/brcp150/ps7_init_gpl.c
> create mode 100644 board/BuR/zynq/brcp170/board.c
> create mode 100644 board/BuR/zynq/brcp170/ps7_init_gpl.c
> create mode 100644 board/BuR/zynq/brcp1_1r/board.c
> create mode 100644 board/BuR/zynq/brcp1_1r/ps7_init_gpl.c
> create mode 100644 board/BuR/zynq/brcp1_1r_switch/board.c
> create mode 100644 board/BuR/zynq/brcp1_1r_switch/ps7_init_gpl.c
> create mode 100644 board/BuR/zynq/brcp1_2r/board.c
> create mode 100644 board/BuR/zynq/brcp1_2r/ps7_init_gpl.c
> create mode 100644 board/BuR/zynq/brsmarc2/board.c
> create mode 100644 board/BuR/zynq/brsmarc2/ps7_init_gpl.c
> create mode 100644 board/BuR/zynq/common/board.c
> create mode 100644 board/BuR/zynq/env/brcp1.env
> create mode 100644 board/BuR/zynq/env/brcp150.env
> create mode 100644 configs/brcp150_defconfig
> create mode 100644 configs/brcp170_defconfig
> create mode 100644 configs/brcp1_1r_defconfig
> create mode 100644 configs/brcp1_1r_switch_defconfig
> create mode 100644 configs/brcp1_2r_defconfig
> create mode 100644 configs/brsmarc2_defconfig
> create mode 100644 include/configs/brzynq.h
>
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 267b0179a5f..10c1e34713a 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -297,6 +297,13 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += \
> zynqmp-zc1751-xm017-dc3.dtb \
> zynqmp-zc1751-xm018-dc4.dtb \
> zynqmp-zc1751-xm019-dc5.dtb
> +dtb-$(CONFIG_TARGET_ZYNQ_BR) += \
> + zynq-brcp1_2r.dtb \
> + zynq-brcp1_1r.dtb \
> + zynq-brcp1_1r_switch.dtb \
> + zynq-brsmarc2.dtb \
> + zynq-brcp150.dtb \
> + zynq-brcp170.dtb
>
> zynqmp-p-a2197-00-revA-x-prc-01-revA-dtbs := zynqmp-p-a2197-00-revA.dtb zynqmp-p-a2197-00-revA-x-prc-01-revA.dtbo
> zynqmp-p-a2197-00-revA-x-prc-02-revA-dtbs := zynqmp-p-a2197-00-revA.dtb zynqmp-p-a2197-00-revA-x-prc-02-revA.dtbo
> diff --git a/arch/arm/dts/zynq-binman-brcp1.dtsi b/arch/arm/dts/zynq-binman-brcp1.dtsi
> new file mode 100644
> index 00000000000..3cc8ee8b810
> --- /dev/null
> +++ b/arch/arm/dts/zynq-binman-brcp1.dtsi
> @@ -0,0 +1,102 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright 2025 B&R Industrial Automation GmbH
> + */
> +
> + #include <config.h>
> +
> +/ {
> + binman {
> + bootph-all;
> + filename = "flash.bin";
> + pad-byte = <0xff>;
> + align-size = <16>;
> + align = <16>;
> +
> + blob@0 {
> + filename = "spl/boot.bin";
> + offset = <0x0>;
> + };
> +
> + fit {
> + description = "U-Boot BR Zynq boards";
> + offset = <CONFIG_SYS_SPI_U_BOOT_OFFS>;
> +
> + images {
> + uboot {
> + description = "U-Boot BR Zynq";
> + type = "firmware";
> + os = "u-boot";
> + arch = "arm";
> + compression = "none";
> + load = <CONFIG_TEXT_BASE>;
> + u-boot-nodtb {
> + };
> + };
> +
> + fdt-0 {
> + description = "DTB BR Zynq";
> + type = "flat_dt";
> + arch = "arm";
> + compression = "none";
> + u-boot-dtb {
> + };
> + };
> + };
> +
> + configurations {
> + default = "conf-0";
> +
> + conf-0 {
> + description = "BR Zynq";
> + firmware = "uboot";
> + fdt = "fdt-0";
> + };
> + };
> + };
> +
> + blob-ext@0 {
> + filename = "blobs/cfg.img";
> + offset = <0xC0000>;
> + size = <0x10000>;
> + optional;
> + };
> +
> + blob-ext@5 {
> + filename = "blobs/cfg_opt.img";
> + offset = <0xD0000>;
> + size = <0x10000>;
> + optional;
> + };
> +
> + blob-ext@1 {
> + bootph-all;
> + filename = "blobs/bitstream.bit";
> + offset = <0x100000>;
> + size = <0x200000>;
> + optional;
> + };
> +
> + blob-ext@4 {
> + bootph-all;
> + filename = "blobs/bitstream_update.bit";
> + offset = <0x400000>;
> + size = <0x200000>;
> + optional;
> + };
> +
> + blob-ext@2 {
> + filename = "blobs/bootar.itb";
> + offset = <0x900000>;
> + size = <0x600000>;
> + optional;
> + };
> +
> + blob-ext@3 {
> + filename = "blobs/dtb.bin";
> + offset = <0xF00000>;
> + size = <0x100000>;
> + optional;
> + };
> + };
> +};
> diff --git a/arch/arm/dts/zynq-brcp1.dtsi b/arch/arm/dts/zynq-brcp1.dtsi
> new file mode 100644
> index 00000000000..ebaf42d9419
> --- /dev/null
> +++ b/arch/arm/dts/zynq-brcp1.dtsi
> @@ -0,0 +1,131 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright 2024 B&R Industrial Automation GmbH
> + */
> +
> +/include/ "zynq-7000.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> + model = "BRCP1 CPU";
> + compatible = "br,cp1",
> + "xlnx,zynq-7000";
> +
> + aliases {
> + i2c0 = &i2c0;
> + serial0 = &uart0;
> + spi0 = &qspi;
> + mmc0 = &sdhci0;
> + };
> +
> + memory {
> + device_type = "memory";
> + reg = <0x0 0x40000000>;
> + };
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + usb_phy0: phy0 {
> + compatible = "usb-nop-xceiv";
> + #phy-cells = <0>;
> + };
> +
> + brd_rst: board_reset {
> + compatible = "br,board-reset";
> + pin = <&gpio0 9 GPIO_ACTIVE_HIGH>;
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> + se_green {
> + label = "S_E_GREEN";
> + gpios = <&ledgpio 0 GPIO_ACTIVE_LOW>;
> + default-state = "off";
> + };
> + se_red {
> + label = "S_E_RED";
> + gpios = <&ledgpio 1 GPIO_ACTIVE_LOW>;
> + default-state = "off";
> + };
> + rdy_f_yellow {
> + label = "RDY_F_YELLOW";
> + gpios = <&ledgpio 2 GPIO_ACTIVE_LOW>;
> + default-state = "off";
> + };
> + re_green {
> + label = "R_E_GREEN";
> + gpios = <&ledgpio 3 GPIO_ACTIVE_LOW>;
> + default-state = "off";
> + };
> + re_red {
> + label = "R_E_RED";
> + gpios = <&ledgpio 4 GPIO_ACTIVE_HIGH>;
> + default-state = "off";
> + };
> + plk_se_green {
> + label = "PLK_S_E_GREEN";
> + gpios = <&ledgpio 5 GPIO_ACTIVE_LOW>;
> + default-state = "off";
> + };
> + eth_se_green {
> + label = "ETH_S_E_GREEN";
> + gpios = <&ledgpio 6 GPIO_ACTIVE_LOW>;
> + default-state = "off";
> + };
> + };
> +};
> +
> +&i2c0 {
> + status = "okay";
> + clock-frequency = <100000>;
> +
> + ledgpio: max7320@5d { /* board LED */
> + status = "okay";
> + compatible = "maxim,max7320";
> + reg = <0x5d>;
> + #gpio-cells = <2>;
> + gpio-controller;
> + ngpios = <8>;
> + };
> +
> + pmic0: da9062@58 {
> + compatible = "dlg,da9062";
> + reg = <0x58>;
> + };
> +};
> +
> +&sdhci0 {
> + status = "okay";
> + max-frequency = <25000000>;
> +};
> +
> +&uart0 {
> + status = "okay";
> +};
> +
> +&qspi {
> + status = "okay";
> + spi-max-frequency = <100000000>;
> +
> + spi_flash: spiflash@0 {
> + #address-cells = <1>;
> + #size-cells = <1>;
> + compatible = "jedec,spi-nor", "spi-flash", "s25fl256s1";
> + spi-max-frequency = <100000000>;
> + spi-cpol;
> + spi-cpha;
> + reg = <0>;
> + };
> +};
> +
> +&usb0 {
> + status = "okay";
> + dr_mode = "host";
> + usb-phy = <&usb_phy0>;
> +};
> +
> +&gpio0 {
> + status = "okay";
> +};
> diff --git a/arch/arm/dts/zynq-brcp150-u-boot.dtsi b/arch/arm/dts/zynq-brcp150-u-boot.dtsi
> new file mode 100644
> index 00000000000..1bfd5f27a7e
> --- /dev/null
> +++ b/arch/arm/dts/zynq-brcp150-u-boot.dtsi
> @@ -0,0 +1,34 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright 2024 B&R Industrial Automation GmbH
> + */
> +
> +#include "zynq-binman-brcp1.dtsi"
> +
> +&i2c0 {
> + bootph-all;
> +};
> +
> +&uart0 {
> + bootph-all;
> +};
> +
> +&qspi {
> + bootph-all;
> +};
> +
> +&spi_flash {
> + bootph-all;
> +};
> +
> +&gpio0 {
> + bootph-all;
> +};
> +
> +&brd_rst {
> + bootph-all;
> +};
> +
> +&rs232_en {
> + bootph-all;
> +};
nit:
All these nodes with bootph-all don't need to be here.
The reason was that flags (especially previous one) were not the part of
dt-schema. But now it is that's why there is no reason to separate them in
special file. You can simply add them to zynq-brcp150.dtsi
Visible also with some other files below.
Anyway I don't have issue with this patch that's why feel free to add
Acked-by: Michal Simek <michal.simek@amd.com>
Thanks,
Michal
next prev parent reply other threads:[~2025-04-14 6:48 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-04 7:27 [PATCH v4 0/4] Add support for BR Xilinx Zynq boards in mainline U-Boot Bernhard Messerklinger
2025-04-04 7:27 ` [PATCH v4 1/4] board/BuR/common: use strlcpy instead of strncpy Bernhard Messerklinger
2025-04-04 7:27 ` [PATCH v4 2/4] board/BuR/common: add parameter for reset controller I2C bus selection Bernhard Messerklinger
2025-04-04 7:27 ` [PATCH v4 3/4] board/BuR/common: split br_resetc_bmode function Bernhard Messerklinger
2025-04-04 7:28 ` [PATCH v4 4/4] board/BuR/zynq: initial commit Bernhard Messerklinger
2025-04-14 6:48 ` Michal Simek [this message]
2025-04-17 10:11 ` [PATCH v4 0/4] Add support for BR Xilinx Zynq boards in mainline U-Boot Michal Simek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=91fba3f7-6e61-4b8e-a1c5-7e0eb2af2ebb@amd.com \
--to=michal.simek@amd.com \
--cc=Oliver.Gaskell@analog.com \
--cc=aford173@gmail.com \
--cc=andre.przywara@arm.com \
--cc=bernhard.messerklinger@br-automation.com \
--cc=jonas@kwiboo.se \
--cc=kever.yang@rock-chips.com \
--cc=marek.vasut+renesas@mailbox.org \
--cc=mibodhi@gmail.com \
--cc=neil.armstrong@linaro.org \
--cc=prasad.kummari@amd.com \
--cc=sumit.garg@kernel.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=wolfgang.wallner@br-automation.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox