From patchwork Fri May 22 09:37:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Michael Walle X-Patchwork-Id: 1296085 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.133; helo=hemlock.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=walle.cc Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=walle.cc header.i=@walle.cc header.a=rsa-sha256 header.s=mail2016061301 header.b=mgjaRaFW; dkim-atps=neutral Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 49T1cM3s14z9sSx for ; Fri, 22 May 2020 19:37:39 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 97CBE894C7; Fri, 22 May 2020 09:37:37 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZGy1Nm3qQNoQ; Fri, 22 May 2020 09:37:36 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id EE139894B3; Fri, 22 May 2020 09:37:35 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id ABD051BF370 for ; Fri, 22 May 2020 09:37:34 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id A81C187880 for ; Fri, 22 May 2020 09:37:34 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id u8gPnZSp459G for ; Fri, 22 May 2020 09:37:32 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from ssl.serverraum.org (ssl.serverraum.org [176.9.125.105]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 154E88698F for ; Fri, 22 May 2020 09:37:32 +0000 (UTC) Received: from apollo.fritz.box (unknown [IPv6:2a02:810c:c200:2e91:6257:18ff:fec4:ca34]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ssl.serverraum.org (Postfix) with ESMTPSA id 0244622FE5; Fri, 22 May 2020 11:37:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=walle.cc; s=mail2016061301; t=1590140250; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Rn7fX39UvXXGV2jWMbFbCTemjLoUmcYzlkNh2eUFodo=; b=mgjaRaFWyHmwJ0Qi/Aa3jIJRO6TLeRybnwighHwSeK4RieXmABU5SxMyRGd+OS6Y11v7qk Gzea5jiq4eRJYpPJOUOHqStB6zIQLrTnHwwytcPaeGAALBZkDBGdNP9gfpWK4Iqp+v6PK2 WvgV70Nqu6XgyG9KiNutyBoehKxM2a4= From: Michael Walle To: buildroot@buildroot.org Date: Fri, 22 May 2020 11:37:06 +0200 Message-Id: <20200522093707.15193-1-michael@walle.cc> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [Buildroot] [PATCH for-next v3] board: Add Kontron SMARC-sAL28 support X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michael Walle , "Yann E . MORIN" , Heiko Thiery Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Now that upstream supports this board add buildroot support for it, too. This supports: - upstream linux kernel, 5.7-rc6 for now. Once 5.7 is released and buildroot will switch to this kernel BR2_LINUX_KERNEL_CUSTOM_VERSION=y can be removed. Since the support for this board and its SoC is still in active development, we want to follow the upstream kernel releases for now. - building an image which can be installed to eMMC, SD card or USB thumb drive. - upstream u-boot patches are pending, therefore no support for building a bootloader for now. Signed-off-by: Michael Walle Reviewed-by: Heiko Thiery Tested-by: Heiko Thiery --- Please note that this board already uses the new config option introduced in the following pending patch: https://patchwork.ozlabs.org/project/buildroot/patch/20200519202235.13764-1-michael@walle.cc/ (which btw misses the "for-next" tag) Changes since v2: - added udev rules 71-smarc-networking.rules, to rename the network interfaces according to the SMARC specification. - removed arm-smmu.disable_bypass=n kernel paramter, since the real fix is now upstream and will be included in 5.7 - use full path in PARTUUID="$($HOST_DIR/bin/uuidgen)" to be sure we are using our own uuidgen - mention fdtfile in readme.txt - fixed typo in readme.txt - mention non-working network with vendor's bootloader in readme.txt - set BR2_KERNEL_DTB_KEEP_DIRNAME=y Changes since v1: - added readme.txt - changed from u-boot boot script to extlinux.conf booting - enable eudev and added udev rules to properly name network interfaces - removed CONFIG_FSL_ENETC_HW_TIMESTAMPING=y - added CONFIG_NET_SCH_CBS, CONFIG_NET_SCH_ETF, CONFIG_NET_SCH_TAPRIO, CONFIG_FSL_ENETC_QOS and iproute2, as this it the main feature of this board - added var2 device tree - generate PARTUUID in post-build.sh to be able to use the resulting image on any block device which the board supports for booting - (keep post-build.sh for consistency reasons) DEVELOPERS | 2 + board/kontron/smarc-sal28/extlinux.conf | 4 + board/kontron/smarc-sal28/genimage.cfg | 11 +++ board/kontron/smarc-sal28/linux.fragment | 18 +++++ board/kontron/smarc-sal28/post-build.sh | 7 ++ board/kontron/smarc-sal28/readme.txt | 80 +++++++++++++++++++ .../udev/rules.d/70-enetc-networking.rules | 8 ++ .../udev/rules.d/70-felix-networking.rules | 6 ++ .../udev/rules.d/71-smarc-networking.rules | 19 +++++ configs/kontron_smarc_sal28_defconfig | 24 ++++++ 10 files changed, 179 insertions(+) create mode 100644 board/kontron/smarc-sal28/extlinux.conf create mode 100644 board/kontron/smarc-sal28/genimage.cfg create mode 100644 board/kontron/smarc-sal28/linux.fragment create mode 100755 board/kontron/smarc-sal28/post-build.sh create mode 100644 board/kontron/smarc-sal28/readme.txt create mode 100644 board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-enetc-networking.rules create mode 100644 board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-felix-networking.rules create mode 100644 board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/71-smarc-networking.rules create mode 100644 configs/kontron_smarc_sal28_defconfig diff --git a/DEVELOPERS b/DEVELOPERS index e427ab15d4..c3f4ce8133 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -1837,6 +1837,8 @@ F: package/jasper/ F: package/libstrophe/ N: Michael Walle +F: board/kontron/smarc-sal28/ +F: configs/kontron_smarc_sal28_defconfig F: package/libavl/ N: Michał Łyszczek diff --git a/board/kontron/smarc-sal28/extlinux.conf b/board/kontron/smarc-sal28/extlinux.conf new file mode 100644 index 0000000000..bf60bc3798 --- /dev/null +++ b/board/kontron/smarc-sal28/extlinux.conf @@ -0,0 +1,4 @@ +label buildroot + kernel /boot/Image + devicetreedir /boot + append root=PARTUUID=%PARTUUID% rootwait diff --git a/board/kontron/smarc-sal28/genimage.cfg b/board/kontron/smarc-sal28/genimage.cfg new file mode 100644 index 0000000000..9ef37de757 --- /dev/null +++ b/board/kontron/smarc-sal28/genimage.cfg @@ -0,0 +1,11 @@ +image sdcard-emmc.img { + hdimage { + gpt = true + } + + partition rootfs { + offset = 2M + image = rootfs.ext4 + partition-uuid = %PARTUUID% + } +} diff --git a/board/kontron/smarc-sal28/linux.fragment b/board/kontron/smarc-sal28/linux.fragment new file mode 100644 index 0000000000..00bbcc0923 --- /dev/null +++ b/board/kontron/smarc-sal28/linux.fragment @@ -0,0 +1,18 @@ +CONFIG_NET_DSA=m +CONFIG_NET_DSA_TAG_OCELOT=m +CONFIG_NET_DSA_MSCC_FELIX=m +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBS=m +CONFIG_NET_SCH_ETF=m +CONFIG_NET_SCH_TAPRIO=m +CONFIG_CAN_FLEXCAN=m +CONFIG_FSL_ENETC=y +CONFIG_FSL_ENETC_VF=m +CONFIG_FSL_ENETC_QOS=y +CONFIG_MSCC_OCELOT_SWITCH=m +CONFIG_PCIE_DW_PLAT_HOST=y +CONFIG_GPIO_MPC8XXX=y +CONFIG_SND_SOC_FSL_SAI=m +CONFIG_SND_SOC_WM8904=m +CONFIG_RTC_DRV_RV8803=y +CONFIG_COMMON_CLK_FSL_SAI=y diff --git a/board/kontron/smarc-sal28/post-build.sh b/board/kontron/smarc-sal28/post-build.sh new file mode 100755 index 0000000000..bf8861f6a9 --- /dev/null +++ b/board/kontron/smarc-sal28/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh +BOARD_DIR="$(dirname $0)" +PARTUUID="$($HOST_DIR/bin/uuidgen)" + +install -d "$TARGET_DIR/boot/extlinux/" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf" +sed "s/%PARTUUID%/$PARTUUID/g" "$BOARD_DIR/genimage.cfg" > "$BINARIES_DIR/genimage.cfg" diff --git a/board/kontron/smarc-sal28/readme.txt b/board/kontron/smarc-sal28/readme.txt new file mode 100644 index 0000000000..231c751b66 --- /dev/null +++ b/board/kontron/smarc-sal28/readme.txt @@ -0,0 +1,80 @@ +Kontron SMARC-sAL28 +=================== + +How to build it +=============== + +Configure Buildroot: + + $ make kontron_smarc_sal28_defconfig + +Change settings to fit your needs (optional): + + $ make menuconfig + +Compile everything and build the rootfs image: + + $ make + +Copying the image to a storage device +===================================== + +Buildroot builds an image which can be written to the internal eMMC +storage, a SD card or an USB thumb drive. You can use the following +command on your host: + + $ sudo dd if=output/images/sdcard-emmc.img of=/dev/sdx bs=1M + +Where /dev/sdx is the corresponding block device of your SD card or USB +thumb drive. To flash it on your internal eMMC use the following command on +the board: + + # dd if=sdcard-emmc.img of=/dev/mmcblk1 bs=1M + +Be sure you have not booted from the internal eMMC in this case! + +Booting the board +================= + +By default the bootloader will search for the first valid image, starting +with the internal eMMC. Consult the vendor documentation on how to use the +DIP switches to select specific boot devices. To use the bootloader +environment set the boot_targets correspondingly. E.g.: + + # setenv boot_targets usb0 + +To boot from an USB thumb drive. + +The device tree is loaded according to the filename in fdtfile. The +following command will set the default device tree, which works on almost +all variants (with less features of course): + + # setenv fdtfile freescale/fsl-ls1028a-kontron-sl28.dtb + +Set this to a device tree which fits your board variant. + +Connect your serial cable to SER1 and open your favorite terminal emulation +program (baudrate 115200, 8n1). E.g.: + + $ picocom -b 115200 /dev/ttyUSB0 + +You will get a warning reported by fdisk when you examine the SD card. +This is because the genimage.cfg file doesn't specify the SD card size +(as people will naturally have different sized cards), so the +secondary GPT header is placed after the rootfs rather than at the end +of the disk where it is expected to be. + +You will see something like this at boot time: + +[ 4.552797] GPT:Primary header thinks Alt. header is not at the end of the disk. +[ 4.560237] GPT:266272 != 7864319 +[ 4.563565] GPT:Alternate GPT header not at the end of the disk. +[ 4.569596] GPT:266272 != 7864319 +[ 4.572925] GPT: Use GNU Parted to correct GPT errors. + +What does not work +================== + +For reasons unknown, the network card doesn't work if you use the original +vendor bootloader. Board support patches for upstream u-boot are currently +pending. Stay tuned. diff --git a/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-enetc-networking.rules b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-enetc-networking.rules new file mode 100644 index 0000000000..8774bc5581 --- /dev/null +++ b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-enetc-networking.rules @@ -0,0 +1,8 @@ +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.0", DRIVERS=="fsl_enetc", NAME="eno0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.1", DRIVERS=="fsl_enetc", NAME="eno1" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.2", DRIVERS=="fsl_enetc", NAME="eno2" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.6", DRIVERS=="fsl_enetc", NAME="eno3" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.0", DRIVERS=="fsl_enetc_vf", NAME="eno0vf0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.1", DRIVERS=="fsl_enetc_vf", NAME="eno0vf1" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.2", DRIVERS=="fsl_enetc_vf", NAME="eno1vf0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:01.3", DRIVERS=="fsl_enetc_vf", NAME="eno1vf1" diff --git a/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-felix-networking.rules b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-felix-networking.rules new file mode 100644 index 0000000000..917c0244ab --- /dev/null +++ b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/70-felix-networking.rules @@ -0,0 +1,6 @@ +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p0", NAME="swp0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p1", NAME="swp1" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p2", NAME="swp2" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p3", NAME="swp3" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p4", NAME="swp4" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p5", NAME="swp5" diff --git a/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/71-smarc-networking.rules b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/71-smarc-networking.rules new file mode 100644 index 0000000000..8c946b05fe --- /dev/null +++ b/board/kontron/smarc-sal28/rootfs_overlay/etc/udev/rules.d/71-smarc-networking.rules @@ -0,0 +1,19 @@ +# Map the GBE0 and GBE1 names from the SMARC standard to the network +# interfaces. This depends on the variant of the board. + +# get the variant compatible string +PROGRAM=="/bin/grep '^kontron,sl28-var[1-4]$' /sys/firmware/devicetree/base/compatible", ENV{sl28_compatible}="%c" + +# variant 1 +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.1", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var1", NAME="gbe0" + +# variant 2 +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p0", ENV{sl28_compatible}=="kontron,sl28-var2", NAME="gbe0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.5", DRIVERS=="mscc_felix", ATTR{phys_port_name}=="p1", ENV{sl28_compatible}=="kontron,sl28-var2", NAME="gbe1" + +# variant 3 +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.0", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var3", NAME="gbe0" + +# variant 4 +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.0", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var4", NAME="gbe0" +ACTION=="add", SUBSYSTEM=="net", KERNELS=="0000:00:00.1", DRIVERS=="fsl_enetc", ENV{sl28_compatible}=="kontron,sl28-var4", NAME="gbe1" diff --git a/configs/kontron_smarc_sal28_defconfig b/configs/kontron_smarc_sal28_defconfig new file mode 100644 index 0000000000..a6f3c6f5fb --- /dev/null +++ b/configs/kontron_smarc_sal28_defconfig @@ -0,0 +1,24 @@ +BR2_aarch64=y +BR2_cortex_a72=y +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_OVERLAY="board/kontron/smarc-sal28/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/kontron/smarc-sal28/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="v5.7-rc6" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/kontron/smarc-sal28/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/fsl-ls1028a-kontron-sl28 freescale/fsl-ls1028a-kontron-sl28-var2 freescale/fsl-ls1028a-kontron-sl28-var3-ads2 freescale/fsl-ls1028a-kontron-sl28-var4 freescale/fsl-ls1028a-kontron-kbox-a-230-ls" +BR2_KERNEL_DTB_KEEP_DIRNAME=y +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_IPROUTE2=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="128M" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y