All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafał Miłecki" <zajec5@gmail.com>
To: buildroot@buildroot.org
Cc: "Rafał Miłecki" <rafal@milecki.pl>
Subject: [Buildroot] [PATCH] board/broadcom: add support for BCM4908 platform devices
Date: Thu, 12 Aug 2021 12:52:58 +0200	[thread overview]
Message-ID: <20210812105258.21582-1-zajec5@gmail.com> (raw)

From: Rafał Miłecki <rafal@milecki.pl>

BCM4908 is Broadcom's 64-bit platform with Broadcom's own Brahma-B53
CPU(s). It's mostly used for home routers.

Kernel config is a minimal setup required to support on-SoC blocks like
NAND controller, Ethernet, switch, USB.

To make kernels 5.12+ boot those boards require a hacky patch modifying
hyp-stub.S. That booting problem will hopefully get fixes on day in
upstream kernel code.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 board/broadcom/bcm4908/linux.config           | 42 +++++++++++++++++++
 .../0001-arm64-don-t-issue-HVC-on-boot.patch  | 32 ++++++++++++++
 configs/broadcom_bcm4908_defconfig            | 12 ++++++
 3 files changed, 86 insertions(+)
 create mode 100644 board/broadcom/bcm4908/linux.config
 create mode 100644 board/broadcom/bcm4908/patches/linux/0001-arm64-don-t-issue-HVC-on-boot.patch
 create mode 100644 configs/broadcom_bcm4908_defconfig

diff --git a/board/broadcom/bcm4908/linux.config b/board/broadcom/bcm4908/linux.config
new file mode 100644
index 0000000..28d7c39
--- /dev/null
+++ b/board/broadcom/bcm4908/linux.config
@@ -0,0 +1,42 @@
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio"
+CONFIG_ARCH_BCM4908=y
+CONFIG_NR_CPUS=4
+CONFIG_CMDLINE="earlycon=bcm63xx_uart,0xff800640 console=ttyS0,115200"
+CONFIG_CMDLINE_FORCE=y
+# CONFIG_GCC_PLUGINS is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_BRIDGE=y
+CONFIG_BRIDGE_VLAN_FILTERING=y
+CONFIG_NET_DSA=y
+CONFIG_VLAN_8021Q=y
+CONFIG_PCI=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIE_BRCMSTB=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_MTD=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_MTD_NAND_BRCMNAND=y
+CONFIG_NETDEVICES=y
+CONFIG_NET_DSA_BCM_SF2=y
+CONFIG_SERIAL_BCM63XX=y
+CONFIG_SERIAL_BCM63XX_CONSOLE=y
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_SLAVE=y
+CONFIG_SPI=y
+CONFIG_PINCTRL=y
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_THERMAL=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PLATFORM=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_HCD_PLATFORM=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PLATFORM=y
+CONFIG_RESET_CONTROLLER=y
diff --git a/board/broadcom/bcm4908/patches/linux/0001-arm64-don-t-issue-HVC-on-boot.patch b/board/broadcom/bcm4908/patches/linux/0001-arm64-don-t-issue-HVC-on-boot.patch
new file mode 100644
index 0000000..32e2b63
--- /dev/null
+++ b/board/broadcom/bcm4908/patches/linux/0001-arm64-don-t-issue-HVC-on-boot.patch
@@ -0,0 +1,32 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Thu, 12 Aug 2021 11:52:42 +0200
+Subject: [PATCH] arm64: don't issue HVC on boot
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Broadcom's CFE loader seems to miss setting SCR_EL3.HCE which results in
+generating an UNDEF and kernel panic on the first HVC.
+
+HVC gets issued by kernels 5.12+ while booting, by kexec and KVM. Until
+someone finds a workaround we have to avoid all above.
+
+Workarounds: 0c93df9622d4 ("arm64: Initialise as nVHE before switching to VHE")
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+---
+ arch/arm64/kernel/hyp-stub.S | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S
+index 43d212618..fc95b103e 100644
+--- a/arch/arm64/kernel/hyp-stub.S
++++ b/arch/arm64/kernel/hyp-stub.S
+@@ -238,7 +238,7 @@ SYM_FUNC_START(switch_to_vhe)
+ 
+ 	// Turn the world upside down
+ 	mov	x0, #HVC_VHE_RESTART
+-	hvc	#0
++//	hvc	#0
+ 1:
+ 	ret
+ SYM_FUNC_END(switch_to_vhe)
diff --git a/configs/broadcom_bcm4908_defconfig b/configs/broadcom_bcm4908_defconfig
new file mode 100644
index 0000000..c6310de
--- /dev/null
+++ b/configs/broadcom_bcm4908_defconfig
@@ -0,0 +1,12 @@
+BR2_aarch64=y
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.13.9"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/broadcom/bcm4908/linux.config"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm4908/bcm4906-netgear-r8000p broadcom/bcm4908/bcm4906-tplink-archer-c2300-v1 broadcom/bcm4908/bcm4908-asus-gt-ac5300"
+BR2_PACKAGE_LINUX_FIRMWARE=y
+BR2_PACKAGE_BRIDGE_UTILS=y
+BR2_TARGET_ROOTFS_INITRAMFS=y
+# BR2_TARGET_ROOTFS_TAR is not set
-- 
2.26.2

_______________________________________________
buildroot mailing list
buildroot@busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

             reply	other threads:[~2021-08-12 10:53 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-12 10:52 Rafał Miłecki [this message]
2021-08-19 21:41 ` [Buildroot] [PATCH] board/broadcom: add support for BCM4908 platform devices Thomas Petazzoni

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=20210812105258.21582-1-zajec5@gmail.com \
    --to=zajec5@gmail.com \
    --cc=buildroot@buildroot.org \
    --cc=rafal@milecki.pl \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.