From cfd63890a7d2051031a8c1aab465122e1be8ec58 Mon Sep 17 00:00:00 2001 From: Sam Dolt Date: Wed, 25 Oct 2023 14:34:35 +0200 Subject: [PATCH 1/8] feat(meta-netmodule-coreos-bsp): create layer and add gemini support --- .gitmodules | 6 +- external-layers/meta-ti | 1 + .../wic/generic-uefi.wks.in | 9 +- .../meta-belden-marvell-bsp/conf/layer.conf | 2 +- layers/meta-netmodule-coreos-bsp/README.md | 26 +++++ .../coreos-image-swupdate-am64xx.bbclass | 46 ++++++++ .../meta-netmodule-coreos-bsp/conf/layer.conf | 13 +++ .../include/netmodule-am64xx-common.inc | 5 + .../machine/include/netmodule-am64xx-k3.inc | 51 +++++++++ .../machine/include/netmodule-am64xx-k3r5.inc | 9 ++ .../conf/machine/netmodule-hw34-k3r5.conf | 7 ++ .../conf/machine/netmodule-hw34.conf | 15 +++ .../0001-rename-genimi-to-hw34.patch | 102 ++++++++++++++++++ .../u-boot/u-boot-ti-staging_git.bb | 26 +++++ .../udev/udev-gemini/gemini-can.rules | 5 + .../recipes-core/udev/udev-gemini_1.0.bb | 18 ++++ .../netmodule-hw34_1.0.sfdisk | 12 +++ .../coreos-installer-config_%.bbappend | 7 ++ ...gemini-v1.dts-to-k3-am642-netmodule-.patch | 26 +++++ .../linux/linux-netmodule_git-5.10-ti.bb | 27 +++++ templates/bblayers.conf.sample | 2 + 21 files changed, 412 insertions(+), 3 deletions(-) create mode 160000 external-layers/meta-ti create mode 100644 layers/meta-netmodule-coreos-bsp/README.md create mode 100644 layers/meta-netmodule-coreos-bsp/classes/coreos-image-swupdate-am64xx.bbclass create mode 100644 layers/meta-netmodule-coreos-bsp/conf/layer.conf create mode 100644 layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc create mode 100644 layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc create mode 100644 layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc create mode 100644 layers/meta-netmodule-coreos-bsp/conf/machine/netmodule-hw34-k3r5.conf create mode 100644 layers/meta-netmodule-coreos-bsp/conf/machine/netmodule-hw34.conf create mode 100644 layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging/0001-rename-genimi-to-hw34.patch create mode 100644 layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging_git.bb create mode 100644 layers/meta-netmodule-coreos-bsp/recipes-core/udev/udev-gemini/gemini-can.rules create mode 100644 layers/meta-netmodule-coreos-bsp/recipes-core/udev/udev-gemini_1.0.bb create mode 100644 layers/meta-netmodule-coreos-bsp/recipes-coreos/coreos-installer/coreos-installer-config/netmodule-hw34_1.0.sfdisk create mode 100644 layers/meta-netmodule-coreos-bsp/recipes-coreos/coreos-installer/coreos-installer-config_%.bbappend create mode 100644 layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule/0001-rename-k3-am642-gemini-v1.dts-to-k3-am642-netmodule-.patch create mode 100644 layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule_git-5.10-ti.bb diff --git a/.gitmodules b/.gitmodules index 93c6b86..dcf68ce 100644 --- a/.gitmodules +++ b/.gitmodules @@ -24,5 +24,9 @@ branch = kirkstone [submodule "meta-arm"] path = external-layers/meta-arm - url = git://git.yoctoproject.org/meta-arm + url = ssh://git@bitbucket.gad.local:7999/ico/meta-arm.git + branch = kirkstone +[submodule "meta-ti"] + path = external-layers/meta-ti + url = ssh://git@bitbucket.gad.local:7999/ico/meta-ti.git branch = kirkstone diff --git a/external-layers/meta-ti b/external-layers/meta-ti new file mode 160000 index 0000000..0f9035a --- /dev/null +++ b/external-layers/meta-ti @@ -0,0 +1 @@ +Subproject commit 0f9035a628c10ec0e0656387989e99b1365f184f diff --git a/layers/meta-belden-coreos-bsp/wic/generic-uefi.wks.in b/layers/meta-belden-coreos-bsp/wic/generic-uefi.wks.in index 1716221..1ce0b7b 100644 --- a/layers/meta-belden-coreos-bsp/wic/generic-uefi.wks.in +++ b/layers/meta-belden-coreos-bsp/wic/generic-uefi.wks.in @@ -1,11 +1,18 @@ # short-description: Create an EFI disk image for genericx86* # long-description: Creates a partitioned EFI disk image for genericx86* machines +<<<<<<< HEAD ${WKS_PART_EFI} --ondisk sda --align 1024 --size 64M --extra-space 0 --overhead-factor 1 ${WKS_PART_ROOT_A} --ondisk sda --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 ${WKS_PART_ROOT_B} --ondisk sda --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 ${WKS_PART_EFIBOOTGUARD_A} --ondisk sda --align 1024 --size 128M --extra-space 0 --overhead-factor 1 ${WKS_PART_EFIBOOTGUARD_B} --ondisk sda --align 1024 --size 128M --extra-space 0 --overhead-factor 1 ${WKS_PART_USERDATA} --ondisk sda --size ${WKS_PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1 +======= +${WKS_PART_EFI} --align 1024 --size 64M --extra-space 0 --overhead-factor 1 +${WKS_PART_ROOT_A} --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 +${WKS_PART_ROOT_B} --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 +${WKS_PART_EFIBOOTGUARD_A} --align 1024 --size 128M --extra-space 0 --overhead-factor 1 +${WKS_PART_EFIBOOTGUARD_B} --align 1024 --size 128M --extra-space 0 --overhead-factor 1 +>>>>>>> 907e72e (feat(meta-netmodule-coreos-bsp): create layer and add gemini support) -part swap --ondisk sda --size 44 --label swap1 --fstype=swap bootloader --ptable gpt diff --git a/layers/meta-belden-marvell-bsp/conf/layer.conf b/layers/meta-belden-marvell-bsp/conf/layer.conf index fe15c64..22c11f1 100644 --- a/layers/meta-belden-marvell-bsp/conf/layer.conf +++ b/layers/meta-belden-marvell-bsp/conf/layer.conf @@ -9,5 +9,5 @@ BBFILE_COLLECTIONS += "meta-belden-marvell-bsp" BBFILE_PATTERN_meta-belden-marvell-bsp = "^${LAYERDIR}/" BBFILE_PRIORITY_meta-belden-marvell-bsp = "6" -LAYERDEPENDS_meta-belden-marvell-bsp = "core meta-belden-coreos" +LAYERDEPENDS_meta-belden-marvell-bsp = "core meta-belden-coreos meta-arm" LAYERSERIES_COMPAT_meta-belden-marvell-bsp = "kirkstone" diff --git a/layers/meta-netmodule-coreos-bsp/README.md b/layers/meta-netmodule-coreos-bsp/README.md new file mode 100644 index 0000000..2d7aadf --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/README.md @@ -0,0 +1,26 @@ +# meta-netmodule-coreos-bsp + +BSP layer for NetModule board + +This layer depends on: + +- meta-ti-bsp +- meta-arm + +## SoC Family + +This layer contains all CoreOS supported board manufactured by NetModule + +## Availables Machines + +This layer contains the following machine configuration: + +### Based on the Gemini platform + +- netmodule-hw34 (Codename for XG900) + +**remarks**: Gemini based board use a TI am64xx (k3) family has a separate +R5 core that use another architecture as the main core, so for each machine you +will find a companion machine name `${MACHINE}-k3r5`. This config should not be +used as is, but will be automatically used for some recipes under the hood when +using `${MACHINE}` using Bitbake multiconfig feature. diff --git a/layers/meta-netmodule-coreos-bsp/classes/coreos-image-swupdate-am64xx.bbclass b/layers/meta-netmodule-coreos-bsp/classes/coreos-image-swupdate-am64xx.bbclass new file mode 100644 index 0000000..cb7ae92 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/classes/coreos-image-swupdate-am64xx.bbclass @@ -0,0 +1,46 @@ + +SWUPDATE_IMAGES += "tiboot3" +SWUPDATE_IMAGES += "tispl" +SWUPDATE_IMAGES += "u-boot-${MACHINE}" +SWUPDATE_IMAGES_FSTYPES[tiboot3] = ".bin" +SWUPDATE_IMAGES_FSTYPES[tispl] = ".bin" + +python () { + machine = d.getVar('MACHINE') + d.setVarFlag("SWUPDATE_IMAGES_FSTYPES", "u-boot-" + machine, ".img") +} +COREOS_SWUPDATE_EXTENDS_FOR:append = "am64xx" + +def coreos_swupdate_extends_images_for_am64xx(d,s): + machine = d.getVar('MACHINE') + uboot_filename = "u-boot-" + machine + ".img" + + SECTOR_SIZE = 512 + OFFSET = [0x0*SECTOR_SIZE, 0x600*SECTOR_SIZE, 0x1600*SECTOR_SIZE] + + return [ + { + "filename" : "tiboot3.bin", + "installed-directly" : "true", + "device" : "/dev/mmcblk0boot0", + "offset": str(OFFSET[0]), + "type" : "raw", + "sha256" : swupdate_get_sha256(d, s, "tiboot3.bin"), + }, + { + "filename" : "tispl.bin", + "installed-directly" : "true", + "device" : "/dev/mmcblk0boot0", + "offset": str(OFFSET[1]), + "type" : "raw", + "sha256" : swupdate_get_sha256(d, s, "tispl.bin"), + }, + { + "filename" : uboot_filename, + "installed-directly" : "true", + "device" : "/dev/mmcblk0boot0", + "offset": str(OFFSET[2]), + "type" : "raw", + "sha256" : swupdate_get_sha256(d, s, uboot_filename), + } + ] diff --git a/layers/meta-netmodule-coreos-bsp/conf/layer.conf b/layers/meta-netmodule-coreos-bsp/conf/layer.conf new file mode 100644 index 0000000..ba8fc78 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/conf/layer.conf @@ -0,0 +1,13 @@ +# Add layer directory to bbpath +BBPATH .= ":${LAYERDIR}" + +# Add recipe directories +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "netmodule-coreos-bsp-layer" +BBFILE_PATTERN_netmodule-coreos-bsp-layer = "^${LAYERDIR}/" +BBFILE_PRIORITY_netmodule-coreos-bsp-layer = "8" + +LAYERSERIES_COMPAT_netmodule-coreos-bsp-layer = "kirkstone" +LAYERDEPENDS_netmodule-coreos-bsp-layer = "meta-arm meta-ti-bsp" diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc new file mode 100644 index 0000000..7336de7 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc @@ -0,0 +1,5 @@ +# This file contains the part of the configuration that is common to all +# board based on the Gemini platform and that are the same for both +# the Cortex-A53 and Cortex-R5 core (Gemini use a multi-arch SOC) +TI_LINUX_FW_SRCREV = "0f4905088d24e474063f33777559149e11538be5" +K3_IMAGE_GEN_SRCREV ?= "2308bfb01e7bd3e03514cb33f06180dd9bb79121" diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc new file mode 100644 index 0000000..ea9f265 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc @@ -0,0 +1,51 @@ +# This file contains the part of the configuration that is common to all +# board based on the Gemini platform and that are the Cortex-A53 core. + +# k3.inc from meta-ti set a default WKS_FILE and add wic to IMAGE_FSTYPE. +# But we don't need a wic image +WKS_FILE ?= "" + +require conf/machine/include/k3.inc +require conf/machine/include/netmodule-am64xx-common.inc + +# Workarround to remove wic related settings added to IMAGE_FSTYPE in k3.inc +# without too much risk of breaking a distro or local config (as remove) +# are final +IMAGE_FSTYPES:remove = "${@'wic.xz wic.bmap' if not d.getVar('WKS_FILE') else ''}" + +# meta-ti-bsp use the machine override in a lot of recipes, so by adding the +# name of the machine in meta-ti-bsp to SOC_FAMILY, we ensure that we the +# device override apply. +# +# We don't modify MACHINEOVERRIDES directly as this will not place the string +# in the same place +SOC_FAMILY:append = ":am64xx" + +# Install u-boot script +MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel-devicetree" + +PREFERRED_PROVIDER_virtual/kernel = "linux-netmodule" +PREFERRED_VERSION_linux-netmodule = "git-5.10-ti" +PREFERRED_VERSION_trusted-firmware-a = "2.7+gitAUTOINC+0c9c984a0d" + +KERNEL_DEFCONFIG ?= "gemini_defconfig" +KERNEL_IMAGETYPE = "Image" + +UBOOT_ENTRYPOINT = "0x82000000" +UBOOT_LOADADDRESS = "0x82000000" +UBOOT_DTB_LOADADDRESS = "0x88000000" +UBOOT_RD_LOADADDRESS = "0x88080000" +UBOOT_RD_ENTRYPOINT = "0x88080000" + + +TFA_BOARD = "lite" +OPTEEMACHINE = "k3" + + + +# No watchdog available yet +EFIBOOTGUARD_TIMEOUT ?= "0" + +COREOS_IMAGE_SWUPDATE_EXTRACLASSES += "coreos-image-swupdate-am64xx" + +require conf/machine/include/coreos-generic-features/efi.inc diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc new file mode 100644 index 0000000..5b4d69c --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc @@ -0,0 +1,9 @@ +# This file contains the part of the configuration that is common to all +# board based on the Gemini platform and that are the Cortex-A53 core. + +require conf/machine/include/k3r5.inc +require conf/machine/include/netmodule-am64xx-common.inc + +SYSFW_SOC = "am64x" +SYSFW_CONFIG = "evm" +SYSFW_SUFFIX = "gp" diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/netmodule-hw34-k3r5.conf b/layers/meta-netmodule-coreos-bsp/conf/machine/netmodule-hw34-k3r5.conf new file mode 100644 index 0000000..ca5678d --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/netmodule-hw34-k3r5.conf @@ -0,0 +1,7 @@ +#@TYPE: Machine +#@NAME: AM64xx EVM (R5F) +#@DESCRIPTION: Machine configuration for the TI AM64xx EVM (R5F core) + + +require conf/machine/include/netmodule-am64xx-k3r5.inc +UBOOT_MACHINE = "am64x_netmodule_hw34_r5_defconfig" diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/netmodule-hw34.conf b/layers/meta-netmodule-coreos-bsp/conf/machine/netmodule-hw34.conf new file mode 100644 index 0000000..e44ddd8 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/netmodule-hw34.conf @@ -0,0 +1,15 @@ +require conf/machine/include/netmodule-am64xx-k3.inc + +KERNEL_DEVICETREE = " \ + ti/k3-am642-netmodule-hw34.dtb \ +" + +UBOOT_MACHINE = "am64x_netmodule_hw34_a53_defconfig" + +LINUX_CONSOLE ?= "ttyS2,115200n8" + +APPEND += "console=ttyS2,115200" + +MACHINE_ESSENTIAL_EXTRA_RDEPENDS:append = " udev-gemini" +MACHINE_EXTRA_RDEPENDS:append = " prueth-fw-am65x-sr2 linux-firmware-ath10k linux-firmware-ath11k linux-firmware-qca kernel-modules" + diff --git a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging/0001-rename-genimi-to-hw34.patch b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging/0001-rename-genimi-to-hw34.patch new file mode 100644 index 0000000..7a9fa37 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging/0001-rename-genimi-to-hw34.patch @@ -0,0 +1,102 @@ +From 8bd97ab74792c211ea6550c1696bf5f902016c1e Mon Sep 17 00:00:00 2001 +From: Samuel Dolt +Date: Wed, 31 May 2023 10:45:10 +0200 +Subject: [PATCH] rename genimi to hw34 + +--- + arch/arm/dts/Makefile | 4 ++-- + arch/arm/dts/k3-am642-gemini-binman.dtsi | 4 ++-- + .../{k3-am642-gemini-v1.dts => k3-am642-netmodule-hw34.dts} | 2 +- + ...-am642-r5-gemini-v1.dts => k3-am642-r5-netmodule-hw34.dts} | 0 + ...emini_a53_defconfig => am64x_netmodule_hw34_a53_defconfig} | 2 +- + ..._gemini_r5_defconfig => am64x_netmodule_hw34_r5_defconfig} | 2 +- + 6 files changed, 7 insertions(+), 7 deletions(-) + rename arch/arm/dts/{k3-am642-gemini-v1.dts => k3-am642-netmodule-hw34.dts} (99%) + rename arch/arm/dts/{k3-am642-r5-gemini-v1.dts => k3-am642-r5-netmodule-hw34.dts} (100%) + rename configs/{am64x_gemini_a53_defconfig => am64x_netmodule_hw34_a53_defconfig} (98%) + rename configs/{am64x_gemini_r5_defconfig => am64x_netmodule_hw34_r5_defconfig} (98%) + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index b4a4b0982d..2f6f09a4f4 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -1255,8 +1255,8 @@ dtb-$(CONFIG_SOC_K3_AM642) += k3-am642-evm.dtb \ + k3-am642-r5-evm.dtb \ + k3-am642-sk.dtb \ + k3-am642-r5-sk.dtb \ +- k3-am642-gemini-v1.dtb \ +- k3-am642-r5-gemini-v1.dtb ++ k3-am642-netmodule-hw34.dtb \ ++ k3-am642-r5-netmodule-hw34.dtb + + dtb-$(CONFIG_SOC_K3_AM625) += k3-am625-sk.dtb \ + k3-am625-r5-sk.dtb +diff --git a/arch/arm/dts/k3-am642-gemini-binman.dtsi b/arch/arm/dts/k3-am642-gemini-binman.dtsi +index 38627882ea..a06dc706b3 100644 +--- a/arch/arm/dts/k3-am642-gemini-binman.dtsi ++++ b/arch/arm/dts/k3-am642-gemini-binman.dtsi +@@ -13,10 +13,10 @@ + #define UBOOT_IMG "u-boot.img" + + #define SPL_NODTB "spl/u-boot-spl-nodtb.bin" +-#define SPL_AM642_GEMINI_DTB "spl/dts/k3-am642-gemini-v1.dtb" ++#define SPL_AM642_GEMINI_DTB "spl/dts/k3-am642-netmodule-hw34.dtb" + + #define UBOOT_NODTB "u-boot-nodtb.bin" +-#define AM642_GEMINI_DTB "arch/arm/dts/k3-am642-gemini-v1.dtb" ++#define AM642_GEMINI_DTB "arch/arm/dts/k3-am642-netmodule-hw34.dtb" + + &binman { + ti-spl { +diff --git a/arch/arm/dts/k3-am642-gemini-v1.dts b/arch/arm/dts/k3-am642-netmodule-hw34.dts +similarity index 99% +rename from arch/arm/dts/k3-am642-gemini-v1.dts +rename to arch/arm/dts/k3-am642-netmodule-hw34.dts +index d134e3a712..1608c3bf9d 100644 +--- a/arch/arm/dts/k3-am642-gemini-v1.dts ++++ b/arch/arm/dts/k3-am642-netmodule-hw34.dts +@@ -12,7 +12,7 @@ + #include "k3-am642.dtsi" + + / { +- compatible = "ti,am642-gemini", "ti,am642"; ++ compatible = "netmodule,hw34", "ti,am642"; + model = "NetModule AM642 based Gemini"; + + aliases { +diff --git a/arch/arm/dts/k3-am642-r5-gemini-v1.dts b/arch/arm/dts/k3-am642-r5-netmodule-hw34.dts +similarity index 100% +rename from arch/arm/dts/k3-am642-r5-gemini-v1.dts +rename to arch/arm/dts/k3-am642-r5-netmodule-hw34.dts +diff --git a/configs/am64x_gemini_a53_defconfig b/configs/am64x_netmodule_hw34_a53_defconfig +similarity index 98% +rename from configs/am64x_gemini_a53_defconfig +rename to configs/am64x_netmodule_hw34_a53_defconfig +index 900f29d7c1..acf5a340dc 100644 +--- a/configs/am64x_gemini_a53_defconfig ++++ b/configs/am64x_netmodule_hw34_a53_defconfig +@@ -14,7 +14,7 @@ CONFIG_ENV_SIZE=0x20000 + CONFIG_ENV_OFFSET=0x3e0000 + CONFIG_DM_GPIO=y + CONFIG_SPL_DM_SPI=y +-CONFIG_DEFAULT_DEVICE_TREE="k3-am642-gemini-v1" ++CONFIG_DEFAULT_DEVICE_TREE="k3-am642-netmodule-hw34" + CONFIG_SPL_TEXT_BASE=0x80080000 + CONFIG_SPL_MMC=y + CONFIG_SPL_SERIAL=y +diff --git a/configs/am64x_gemini_r5_defconfig b/configs/am64x_netmodule_hw34_r5_defconfig +similarity index 98% +rename from configs/am64x_gemini_r5_defconfig +rename to configs/am64x_netmodule_hw34_r5_defconfig +index 44c0364eef..c7e66a18e8 100644 +--- a/configs/am64x_gemini_r5_defconfig ++++ b/configs/am64x_netmodule_hw34_r5_defconfig +@@ -11,7 +11,7 @@ CONFIG_TARGET_AM642_R5_GEMINI=y + CONFIG_DM_GPIO=y + CONFIG_SPL_DM_SPI=y + CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000 +-CONFIG_DEFAULT_DEVICE_TREE="k3-am642-r5-gemini-v1" ++CONFIG_DEFAULT_DEVICE_TREE="k3-am642-r5-netmodule-hw34" + CONFIG_SPL_TEXT_BASE=0x70000000 + CONFIG_SPL_MMC=y + CONFIG_SPL_SERIAL=y diff --git a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging_git.bb b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging_git.bb new file mode 100644 index 0000000..678d5a7 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging_git.bb @@ -0,0 +1,26 @@ +require recipes-bsp/u-boot/u-boot-ti.inc + +SPL_UART_BINARY = "u-boot-spl.bin" +SPL_UART_BINARY:netmodule-hw34-k3r5 = "u-boot-spl.bin" + +LIC_FILES_CHKSUM = "file://Licenses/README;md5=2ca5f2c35c8cc335f0a19756634782f1" + +PV = "2023.01" + +SRC_URI = "git://git.netmodule.intranet/nmrouter/u-boot.git;protocol=ssh;user=gitea;branch=2023.01/ti/base \ + file://0001-rename-genimi-to-hw34.patch \ + " +SRCREV = "72a21cd71968af4e043510b9ae1ce331a6cca289" + +PACKAGECONFIG[atf] = "BL31=${STAGING_DIR_HOST}/firmware/bl31.bin,,trusted-firmware-a" + +do_deploy:append:netmodule-hw34-k3r5 () { + mv ${DEPLOYDIR}/tiboot3.bin ${DEPLOYDIR}/tiboot3-r5spl.bin || true + mv ${DEPLOYDIR}/u-boot-spl.bin ${DEPLOYDIR}/u-boot-spl-r5spl.bin || true +} + +# Only require coreos include file for the aarch64 build of u-boot +UBOOT_REQUIRE ?= "" +UBOOT_REQUIRE:netmodule-hw34 = "recipes-bsp/u-boot/u-boot-coreos.inc" +require ${UBOOT_REQUIRE} + diff --git a/layers/meta-netmodule-coreos-bsp/recipes-core/udev/udev-gemini/gemini-can.rules b/layers/meta-netmodule-coreos-bsp/recipes-core/udev/udev-gemini/gemini-can.rules new file mode 100644 index 0000000..ec5b491 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/recipes-core/udev/udev-gemini/gemini-can.rules @@ -0,0 +1,5 @@ +# CAN renaming +SUBSYSTEM=="net", ACTION=="add", KERNEL=="can*", ENV{ID_PATH}=="platform-20701000.can", NAME="canfd0" +SUBSYSTEM=="net", ACTION=="add", KERNEL=="can*", ENV{ID_PATH}=="platform-20711000.can", NAME="canfd1" +SUBSYSTEM=="net", ACTION=="add", KERNEL=="can*", ENV{ID_PATH}=="platform-20110000.spi-cs-0", NAME="canstd0" +SUBSYSTEM=="net", ACTION=="add", KERNEL=="can*", ENV{ID_PATH}=="platform-20110000.spi-cs-1", NAME="canstd1" diff --git a/layers/meta-netmodule-coreos-bsp/recipes-core/udev/udev-gemini_1.0.bb b/layers/meta-netmodule-coreos-bsp/recipes-core/udev/udev-gemini_1.0.bb new file mode 100644 index 0000000..2d3509d --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/recipes-core/udev/udev-gemini_1.0.bb @@ -0,0 +1,18 @@ +SUMMARY = "Extra Gemini specific configuration files" +DESCRIPTION = "Extra machine specific configuration files for udev that are Gemini related." +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = " \ + file://gemini-can.rules \ +" + +S = "${WORKDIR}" + +do_install() { + install -d ${D}${sysconfdir}/udev/rules.d + + install -m 0644 ${WORKDIR}/gemini-can.rules ${D}${sysconfdir}/udev/rules.d/gemini-can.rules +} + +RDEPENDS:${PN} = "udev" diff --git a/layers/meta-netmodule-coreos-bsp/recipes-coreos/coreos-installer/coreos-installer-config/netmodule-hw34_1.0.sfdisk b/layers/meta-netmodule-coreos-bsp/recipes-coreos/coreos-installer/coreos-installer-config/netmodule-hw34_1.0.sfdisk new file mode 100644 index 0000000..241c48f --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/recipes-coreos/coreos-installer/coreos-installer-config/netmodule-hw34_1.0.sfdisk @@ -0,0 +1,12 @@ +label: gpt +device: /dev/mmcblk0 +unit: sectors +first-lba: 34 +last-lba: 15273566 +sector-size: 512 + +/dev/mmcblk0p1 : start= 34, size= 131072, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, name="efi" +/dev/mmcblk0p2 : start= 131106, size= 262144, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, name="ebg0" +/dev/mmcblk0p3 : start= 393250, size= 262144, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, name="ebg1" +/dev/mmcblk0p4 : start= 655394, size= 7309086, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, name="rootfs0" +/dev/mmcblk0p5 : start= 7964480, size= 7309086, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, name="rootfs1" diff --git a/layers/meta-netmodule-coreos-bsp/recipes-coreos/coreos-installer/coreos-installer-config_%.bbappend b/layers/meta-netmodule-coreos-bsp/recipes-coreos/coreos-installer/coreos-installer-config_%.bbappend new file mode 100644 index 0000000..d612470 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/recipes-coreos/coreos-installer/coreos-installer-config_%.bbappend @@ -0,0 +1,7 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/coreos-installer-config:" + +SRC_URI:append:netmodule-hw34 = " file://netmodule-hw34_1.0.sfdisk" + +do_install:append:netmodule-hw34() { + install -m 755 ${WORKDIR}/netmodule-hw34_1.0.sfdisk ${D}${sysconfdir}/ +} diff --git a/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule/0001-rename-k3-am642-gemini-v1.dts-to-k3-am642-netmodule-.patch b/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule/0001-rename-k3-am642-gemini-v1.dts-to-k3-am642-netmodule-.patch new file mode 100644 index 0000000..9112386 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule/0001-rename-k3-am642-gemini-v1.dts-to-k3-am642-netmodule-.patch @@ -0,0 +1,26 @@ +From 04d19014f019b6e5b3236b0f0d31d1df18ffeeca Mon Sep 17 00:00:00 2001 +From: Samuel Dolt +Date: Wed, 24 May 2023 15:59:34 +0200 +Subject: [PATCH] rename k3-am642-gemini-v1.dts to k3-am642-netmodule-hw34.dts + +--- + .../ti/{k3-am642-gemini-v1.dts => k3-am642-netmodule-hw34.dts} | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + rename arch/arm64/boot/dts/ti/{k3-am642-gemini-v1.dts => k3-am642-netmodule-hw34.dts} (99%) + +diff --git a/arch/arm64/boot/dts/ti/k3-am642-gemini-v1.dts b/arch/arm64/boot/dts/ti/k3-am642-netmodule-hw34.dts +similarity index 99% +rename from arch/arm64/boot/dts/ti/k3-am642-gemini-v1.dts +rename to arch/arm64/boot/dts/ti/k3-am642-netmodule-hw34.dts +index bc34523f7006..bca213661615 100644 +--- a/arch/arm64/boot/dts/ti/k3-am642-gemini-v1.dts ++++ b/arch/arm64/boot/dts/ti/k3-am642-netmodule-hw34.dts +@@ -13,7 +13,7 @@ + #include "k3-am642.dtsi" + + / { +- compatible = "ti,am642-gemini-v1", "ti,am642"; ++ compatible = "netmodule,hw34", "ti,am642"; + model = "NetModule AM642 based GEMINI V1"; + + chosen { diff --git a/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule_git-5.10-ti.bb b/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule_git-5.10-ti.bb new file mode 100644 index 0000000..c74bfae --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule_git-5.10-ti.bb @@ -0,0 +1,27 @@ +DESCRIPTION = "Linux kernel for various NetModule hardware" +COMPATIBLE_MACHINE = "k3" + +inherit kernel + +SRC_URI = "git://gitlab.netmodule.intranet/oem-linux/linux-netmodule.git;protocol=ssh;user=git;branch=5.10/ti/base \ + file://0001-rename-k3-am642-gemini-v1.dts-to-k3-am642-netmodule-.patch \ + " +SRCREV = "0417c6736055dcd90c7fc33b7bec5b77b647ab05" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" + +S = "${WORKDIR}/git" + +#If a KERNEL_DEFCONFIG is specified, the defconfig specified in SRC_URI will be overwritten! +do_configure:append(){ + if [ "${KERNEL_DEFCONFIG}" != "" ]; then + oe_runmake ${KERNEL_DEFCONFIG} + fi + configs="${@" ".join(find_cfgs(d))}" + if [ ! -z "${configs}" ]; then + ${S}/scripts/kconfig/merge_config.sh -m -O ${WORKDIR}/build ${WORKDIR}/build/.config ${WORKDIR}/*.cfg + fi +} + +require recipes-kernel/linux/linux-yocto-coreos-efi.inc diff --git a/templates/bblayers.conf.sample b/templates/bblayers.conf.sample index bd4dd2d..3b07568 100644 --- a/templates/bblayers.conf.sample +++ b/templates/bblayers.conf.sample @@ -11,6 +11,7 @@ BBLAYERS ?= " \ ##COREOS_LAYERSDIR##/meta-belden-coreos-bsp \ ##COREOS_LAYERSDIR##/meta-belden-coreos-demo \ ##COREOS_LAYERSDIR##/meta-belden-marvell-bsp \ + ##COREOS_LAYERSDIR##/meta-netmodule-coreos-bsp \ ##COREOS_EXTLAYERSDIR##/meta-openembedded/meta-oe \ ##COREOS_EXTLAYERSDIR##/meta-openembedded/meta-networking \ ##COREOS_EXTLAYERSDIR##/meta-openembedded/meta-filesystems \ @@ -21,4 +22,5 @@ BBLAYERS ?= " \ ##COREOS_EXTLAYERSDIR##/meta-swupdate \ ##COREOS_EXTLAYERSDIR##/meta-arm/meta-arm \ ##COREOS_EXTLAYERSDIR##/meta-arm/meta-arm-toolchain \ + ##COREOS_EXTLAYERSDIR##/meta-ti/meta-ti-bsp \ " From 8ab4fd47df1d7444b065964068354ad8b0811807 Mon Sep 17 00:00:00 2001 From: Alexandre Bard Date: Mon, 4 Dec 2023 14:55:48 +0100 Subject: [PATCH 2/8] fix(netmodule-am64xx-k3r5.inc): remove sanity checks for am64xx rtcore The sanity checks only applies for linux cores. id:397918 --- .../conf/machine/include/netmodule-am64xx-k3r5.inc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc index 5b4d69c..53cb775 100644 --- a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc @@ -1,5 +1,5 @@ # This file contains the part of the configuration that is common to all -# board based on the Gemini platform and that are the Cortex-A53 core. +# board based on the Gemini platform and that are the Cortex-R5 core. require conf/machine/include/k3r5.inc require conf/machine/include/netmodule-am64xx-common.inc @@ -7,3 +7,6 @@ require conf/machine/include/netmodule-am64xx-common.inc SYSFW_SOC = "am64x" SYSFW_CONFIG = "evm" SYSFW_SUFFIX = "gp" + +# Sanity checks don't apply for real time cores +INHERIT:remove = "coreos-sanity" From fab454f42247db2ae0c1df27e7f132c02c0c97d6 Mon Sep 17 00:00:00 2001 From: Alexandre Bard Date: Thu, 7 Dec 2023 15:16:05 +0100 Subject: [PATCH 3/8] fix(coreos-image-ci.bbclass): fix undefined variables At least KERNEL_IMAGE_BIN_EXT was not defined in somes cases. id:397918 --- layers/meta-belden-coreos/classes/coreos-image-ci.bbclass | 1 + 1 file changed, 1 insertion(+) diff --git a/layers/meta-belden-coreos/classes/coreos-image-ci.bbclass b/layers/meta-belden-coreos/classes/coreos-image-ci.bbclass index 890cbd9..7ba5c2b 100644 --- a/layers/meta-belden-coreos/classes/coreos-image-ci.bbclass +++ b/layers/meta-belden-coreos/classes/coreos-image-ci.bbclass @@ -3,6 +3,7 @@ # > COREOS_IMAGE_EXTRACLASSES += "coreos-image-ci" # in auto.conf (or local.conf) +inherit kernel-artifact-names def get_coreos_ci_artifacts(d): artifacts = [] From 90fb120676a57768e05e899862ef66305e747bed Mon Sep 17 00:00:00 2001 From: Alexandre Bard Date: Thu, 7 Dec 2023 15:24:43 +0100 Subject: [PATCH 4/8] fix(coreos-installer): add missing public key in swupdate config id:397918 --- .../coreos-installer/coreos-installer/25-installer-config.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/layers/meta-belden-coreos/recipes-coreos/coreos-installer/coreos-installer/25-installer-config.sh b/layers/meta-belden-coreos/recipes-coreos/coreos-installer/coreos-installer/25-installer-config.sh index 9a919f3..2d4f613 100644 --- a/layers/meta-belden-coreos/recipes-coreos/coreos-installer/coreos-installer/25-installer-config.sh +++ b/layers/meta-belden-coreos/recipes-coreos/coreos-installer/coreos-installer/25-installer-config.sh @@ -48,3 +48,4 @@ umount /mnt/ebg1 umount /mnt/efi SWUPDATE_ARGS="${SWUPDATE_ARGS} -e stable,copy0" +SWUPDATE_ARGS="${SWUPDATE_ARGS} -k /usr/lib/swupdate/swupdate.crt" From 13a6f17abda06a01abb8d38354ef245966f70ebb Mon Sep 17 00:00:00 2001 From: Sam Dolt Date: Thu, 18 Jan 2024 15:57:23 +0100 Subject: [PATCH 5/8] fix: move sources from NetModule to CoreOS --- .../wic/generic-uefi.wks.in | 10 +- .../include/netmodule-am64xx-common.inc | 3 + .../machine/include/netmodule-am64xx-k3.inc | 4 +- ...k3-ddrss-Fix-a-ddr4-controller-stall.patch | 43 + ...mini-board-add-board-and-device-tree.patch | 1845 +++++++++++++++++ ...ing_git.bb => u-boot-ti-coreos_2023.01.bb} | 8 +- .../0001-rename-genimi-to-hw34.patch | 102 - ...gemini-v1.dts-to-k3-am642-netmodule-.patch | 26 - ...5.10-ti.bb => linux-ti-coreos_git-5.10.bb} | 5 +- 9 files changed, 1900 insertions(+), 146 deletions(-) create mode 100644 layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0001-ram-k3-ddrss-Fix-a-ddr4-controller-stall.patch create mode 100644 layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0002-gemini-board-add-board-and-device-tree.patch rename layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/{u-boot-ti-staging_git.bb => u-boot-ti-coreos_2023.01.bb} (71%) delete mode 100644 layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging/0001-rename-genimi-to-hw34.patch delete mode 100644 layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule/0001-rename-k3-am642-gemini-v1.dts-to-k3-am642-netmodule-.patch rename layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/{linux-netmodule_git-5.10-ti.bb => linux-ti-coreos_git-5.10.bb} (73%) diff --git a/layers/meta-belden-coreos-bsp/wic/generic-uefi.wks.in b/layers/meta-belden-coreos-bsp/wic/generic-uefi.wks.in index 1ce0b7b..471e0c2 100644 --- a/layers/meta-belden-coreos-bsp/wic/generic-uefi.wks.in +++ b/layers/meta-belden-coreos-bsp/wic/generic-uefi.wks.in @@ -1,18 +1,10 @@ # short-description: Create an EFI disk image for genericx86* # long-description: Creates a partitioned EFI disk image for genericx86* machines -<<<<<<< HEAD -${WKS_PART_EFI} --ondisk sda --align 1024 --size 64M --extra-space 0 --overhead-factor 1 -${WKS_PART_ROOT_A} --ondisk sda --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 -${WKS_PART_ROOT_B} --ondisk sda --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 -${WKS_PART_EFIBOOTGUARD_A} --ondisk sda --align 1024 --size 128M --extra-space 0 --overhead-factor 1 -${WKS_PART_EFIBOOTGUARD_B} --ondisk sda --align 1024 --size 128M --extra-space 0 --overhead-factor 1 -${WKS_PART_USERDATA} --ondisk sda --size ${WKS_PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1 -======= ${WKS_PART_EFI} --align 1024 --size 64M --extra-space 0 --overhead-factor 1 ${WKS_PART_ROOT_A} --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 ${WKS_PART_ROOT_B} --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 ${WKS_PART_EFIBOOTGUARD_A} --align 1024 --size 128M --extra-space 0 --overhead-factor 1 ${WKS_PART_EFIBOOTGUARD_B} --align 1024 --size 128M --extra-space 0 --overhead-factor 1 ->>>>>>> 907e72e (feat(meta-netmodule-coreos-bsp): create layer and add gemini support) +${WKS_PART_USERDATA} --size ${WKS_PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1 bootloader --ptable gpt diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc index 7336de7..4f9aebe 100644 --- a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc @@ -3,3 +3,6 @@ # the Cortex-A53 and Cortex-R5 core (Gemini use a multi-arch SOC) TI_LINUX_FW_SRCREV = "0f4905088d24e474063f33777559149e11538be5" K3_IMAGE_GEN_SRCREV ?= "2308bfb01e7bd3e03514cb33f06180dd9bb79121" + +PREFERRED_PROVIDER_virtual/bootloader = "u-boot-ti-coreos" +PREFERRED_PROVIDER_u-boot = "u-boot-ti-coreos" diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc index ea9f265..91c527b 100644 --- a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc @@ -24,9 +24,7 @@ SOC_FAMILY:append = ":am64xx" # Install u-boot script MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel-devicetree" -PREFERRED_PROVIDER_virtual/kernel = "linux-netmodule" -PREFERRED_VERSION_linux-netmodule = "git-5.10-ti" -PREFERRED_VERSION_trusted-firmware-a = "2.7+gitAUTOINC+0c9c984a0d" +PREFERRED_PROVIDER_virtual/kernel = "linux-ti-coreos" KERNEL_DEFCONFIG ?= "gemini_defconfig" KERNEL_IMAGETYPE = "Image" diff --git a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0001-ram-k3-ddrss-Fix-a-ddr4-controller-stall.patch b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0001-ram-k3-ddrss-Fix-a-ddr4-controller-stall.patch new file mode 100644 index 0000000..1b13919 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0001-ram-k3-ddrss-Fix-a-ddr4-controller-stall.patch @@ -0,0 +1,43 @@ +From cf50887c0d4053d5a454971633b1f71d477ebc6b Mon Sep 17 00:00:00 2001 +From: Stefan Eichenberger +Date: Tue, 7 Feb 2023 09:20:15 +0100 +Subject: [PATCH] ram: k3-ddrss: Fix a ddr4 controller stall + +The DDR4 controller might stall indefinitely if we access the same +register twice withing a short time interval. This commit makes sure we +reuse the previously read value so that we don't have to access twice. +See this article for more information: +https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1057242/am6442-access-to-ddr4-controller-register-stalls-indefinitely-while-in-lpddr4-frequency-update +--- + drivers/ram/k3-ddrss/k3-ddrss.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/drivers/ram/k3-ddrss/k3-ddrss.c b/drivers/ram/k3-ddrss/k3-ddrss.c +index e8b7aec9e0..b4acb3aea6 100644 +--- a/drivers/ram/k3-ddrss/k3-ddrss.c ++++ b/drivers/ram/k3-ddrss/k3-ddrss.c +@@ -241,15 +241,13 @@ static void k3_lpddr4_freq_update(struct k3_ddrss_desc *ddrss) + } + } + ++static u32 dram_class = DENALI_CTL_0_DRAM_CLASS_LPDDR4; + static void k3_lpddr4_ack_freq_upd_req(const lpddr4_privatedata *pd) + { +- u32 dram_class; + struct k3_ddrss_desc *ddrss = (struct k3_ddrss_desc *)pd->ddr_instance; + + debug("--->>> LPDDR4 Initialization is in progress ... <<<---\n"); + +- dram_class = k3_lpddr4_read_ddr_type(pd); +- + switch (dram_class) { + case DENALI_CTL_0_DRAM_CLASS_DDR4: + break; +@@ -263,7 +261,6 @@ static void k3_lpddr4_ack_freq_upd_req(const lpddr4_privatedata *pd) + + static int k3_ddrss_init_freq(struct k3_ddrss_desc *ddrss) + { +- u32 dram_class; + int ret; + lpddr4_privatedata *pd = &ddrss->pd; + diff --git a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0002-gemini-board-add-board-and-device-tree.patch b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0002-gemini-board-add-board-and-device-tree.patch new file mode 100644 index 0000000..02b88c2 --- /dev/null +++ b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0002-gemini-board-add-board-and-device-tree.patch @@ -0,0 +1,1845 @@ +From 985be59763483746f159e17dd62a6a90083edebf Mon Sep 17 00:00:00 2001 +From: Stefan Eichenberger +Date: Tue, 7 Feb 2023 09:24:16 +0100 +Subject: [PATCH] gemini: board: add board and device tree + +Add gemini as new am64x board including, board configuration, devicetree +and configuration. + +--- + arch/arm/dts/Makefile | 4 +- + arch/arm/dts/k3-am642-gemini-binman.dtsi | 159 +++++++ + arch/arm/dts/k3-am642-gemini-u-boot.dtsi | 135 ++++++ + arch/arm/dts/k3-am642-netmodule-hw34.dts | 476 ++++++++++++++++++++ + arch/arm/dts/k3-am642-r5-netmodule-hw34.dts | 226 ++++++++++ + arch/arm/mach-k3/Kconfig | 2 + + arch/arm/mach-k3/common.c | 5 + + board/nm/am64x/Kconfig | 60 +++ + board/nm/am64x/Makefile | 9 + + board/nm/am64x/gemini.c | 166 +++++++ + board/nm/am64x/sysreset.c | 60 +++ + configs/am64x_netmodule_hw34_a53_defconfig | 179 ++++++++ + configs/am64x_netmodule_hw34_r5_defconfig | 170 +++++++ + include/configs/am64x_gemini.h | 61 +++ + 14 files changed, 1711 insertions(+), 1 deletion(-) + create mode 100644 arch/arm/dts/k3-am642-gemini-binman.dtsi + create mode 100644 arch/arm/dts/k3-am642-gemini-u-boot.dtsi + create mode 100644 arch/arm/dts/k3-am642-netmodule-hw34.dts + create mode 100644 arch/arm/dts/k3-am642-r5-netmodule-hw34.dts + create mode 100644 board/nm/am64x/Kconfig + create mode 100644 board/nm/am64x/Makefile + create mode 100644 board/nm/am64x/gemini.c + create mode 100644 board/nm/am64x/sysreset.c + create mode 100644 configs/am64x_netmodule_hw34_a53_defconfig + create mode 100644 configs/am64x_netmodule_hw34_r5_defconfig + create mode 100644 include/configs/am64x_gemini.h + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 43951a7731..2f6f09a4f4 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -1254,7 +1254,9 @@ dtb-$(CONFIG_SOC_K3_J721S2) += k3-j721s2-common-proc-board.dtb\ + dtb-$(CONFIG_SOC_K3_AM642) += k3-am642-evm.dtb \ + k3-am642-r5-evm.dtb \ + k3-am642-sk.dtb \ +- k3-am642-r5-sk.dtb ++ k3-am642-r5-sk.dtb \ ++ k3-am642-netmodule-hw34.dtb \ ++ k3-am642-r5-netmodule-hw34.dtb + + dtb-$(CONFIG_SOC_K3_AM625) += k3-am625-sk.dtb \ + k3-am625-r5-sk.dtb +diff --git a/arch/arm/dts/k3-am642-gemini-binman.dtsi b/arch/arm/dts/k3-am642-gemini-binman.dtsi +new file mode 100644 +index 0000000000..a06dc706b3 +--- /dev/null ++++ b/arch/arm/dts/k3-am642-gemini-binman.dtsi +@@ -0,0 +1,159 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/ ++ */ ++ ++/ { ++ binman: binman { ++ multiple-images; ++ }; ++}; ++ ++#define TISPL "tispl.bin" ++#define UBOOT_IMG "u-boot.img" ++ ++#define SPL_NODTB "spl/u-boot-spl-nodtb.bin" ++#define SPL_AM642_GEMINI_DTB "spl/dts/k3-am642-netmodule-hw34.dtb" ++ ++#define UBOOT_NODTB "u-boot-nodtb.bin" ++#define AM642_GEMINI_DTB "arch/arm/dts/k3-am642-netmodule-hw34.dtb" ++ ++&binman { ++ ti-spl { ++ filename = TISPL; ++ pad-byte = <0xff>; ++ ++ fit { ++ description = "Configuration to load ATF and SPL"; ++ #address-cells = <1>; ++ ++ images { ++ ++ atf { ++ description = "ARM Trusted Firmware"; ++ type = "firmware"; ++ arch = "arm64"; ++ compression = "none"; ++ os = "arm-trusted-firmware"; ++ load = ; ++ entry = ; ++ atf-bl31 { ++ filename = "bl31.bin"; ++ }; ++ }; ++ ++ tee { ++ description = "OPTEE"; ++ type = "tee"; ++ arch = "arm64"; ++ compression = "none"; ++ os = "tee"; ++ load = <0x9e800000>; ++ entry = <0x9e800000>; ++ tee-os { ++ filename = "tee-pager_v2.bin"; ++ }; ++ }; ++ ++ dm { ++ description = "DM binary"; ++ type = "firmware"; ++ arch = "arm32"; ++ compression = "none"; ++ os = "DM"; ++ load = <0x89000000>; ++ entry = <0x89000000>; ++ blob-ext { ++ filename = "/dev/null"; ++ }; ++ }; ++ ++ spl { ++ description = "SPL (64-bit)"; ++ type = "standalone"; ++ os = "U-Boot"; ++ arch = "arm64"; ++ compression = "none"; ++ load = <0x80080000>; ++ entry = <0x80080000>; ++ blob { ++ filename = SPL_NODTB; ++ }; ++ }; ++ ++ fdt-1 { ++ description = "k3-am642-gemini"; ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ blob { ++ filename = SPL_AM642_GEMINI_DTB; ++ }; ++ }; ++ }; ++ ++ configurations { ++ default = "conf-1"; ++ ++ conf-1 { ++ description = "k3-am642-gemini"; ++ firmware = "atf"; ++ loadables = "tee", "dm", "spl"; ++ fdt = "fdt-1"; ++ }; ++ }; ++ }; ++ }; ++}; ++ ++&binman { ++ u-boot { ++ filename = UBOOT_IMG; ++ pad-byte = <0xff>; ++ ++ fit { ++ description = "FIT image with multiple configurations"; ++ ++ images { ++ uboot { ++ description = "U-Boot for am64x board"; ++ type = "firmware"; ++ os = "u-boot"; ++ arch = "arm"; ++ compression = "none"; ++ load = ; ++ blob { ++ filename = UBOOT_NODTB; ++ }; ++ hash { ++ algo = "crc32"; ++ }; ++ }; ++ ++ fdt-1 { ++ description = "k3-am642-gemini"; ++ type = "flat_dt"; ++ arch = "arm"; ++ compression = "none"; ++ blob { ++ filename = AM642_GEMINI_DTB; ++ }; ++ hash { ++ algo = "crc32"; ++ }; ++ }; ++ }; ++ ++ configurations { ++ default = "conf-1"; ++ ++ conf-1 { ++ description = "k3-am642-gemini"; ++ firmware = "uboot"; ++ loadables = "uboot"; ++ fdt = "fdt-1"; ++ }; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm/dts/k3-am642-gemini-u-boot.dtsi b/arch/arm/dts/k3-am642-gemini-u-boot.dtsi +new file mode 100644 +index 0000000000..e061ebb06d +--- /dev/null ++++ b/arch/arm/dts/k3-am642-gemini-u-boot.dtsi +@@ -0,0 +1,135 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/ ++ */ ++#include ++ ++#include "k3-am642-gemini-binman.dtsi" ++ ++/ { ++ chosen { ++ stdout-path = "serial2:115200n8"; ++ tick-timer = &timer1; ++ }; ++ ++ memory@80000000 { ++ u-boot,dm-spl; ++ }; ++}; ++ ++&cbass_main{ ++ u-boot,dm-spl; ++ timer1: timer@2400000 { ++ compatible = "ti,omap5430-timer"; ++ reg = <0x0 0x2400000 0x0 0x80>; ++ ti,timer-alwon; ++ clock-frequency = <200000000>; ++ u-boot,dm-spl; ++ }; ++}; ++ ++&main_conf { ++ u-boot,dm-spl; ++ chipid@14 { ++ u-boot,dm-spl; ++ }; ++}; ++ ++&main_pmx0 { ++ u-boot,dm-spl; ++}; ++ ++&main_uart0 { ++ u-boot,dm-spl; ++}; ++ ++&usb0 { ++ dr_mode="peripheral"; ++ u-boot,dm-spl; ++}; ++ ++&usbss0 { ++ u-boot,dm-spl; ++}; ++ ++&main_mmc1_pins_default { ++ u-boot,dm-spl; ++}; ++ ++&main_usb0_pins_default { ++ u-boot,dm-spl; ++}; ++ ++&dmss { ++ u-boot,dm-spl; ++}; ++ ++&secure_proxy_main { ++ u-boot,dm-spl; ++}; ++ ++&dmsc { ++ u-boot,dm-spl; ++ k3_sysreset: sysreset-controller { ++ compatible = "ti,sci-sysreset"; ++ u-boot,dm-spl; ++ status = "disabled"; ++ }; ++}; ++ ++&k3_pds { ++ u-boot,dm-spl; ++}; ++ ++&k3_clks { ++ u-boot,dm-spl; ++}; ++ ++&k3_reset { ++ u-boot,dm-spl; ++}; ++ ++&sdhci0 { ++ u-boot,dm-spl; ++}; ++ ++&sdhci1 { ++ no-1-8-v; ++ u-boot,dm-spl; ++}; ++ ++&cpsw3g { ++ reg = <0x0 0x8000000 0x0 0x200000>, ++ <0x0 0x43000200 0x0 0x8>; ++ reg-names = "cpsw_nuss", "mac_efuse"; ++ /delete-property/ ranges; ++ ++ cpsw-phy-sel@04044 { ++ compatible = "ti,am64-phy-gmii-sel"; ++ reg = <0x0 0x43004044 0x0 0x8>; ++ }; ++}; ++ ++&cpsw_port2 { ++ status = "disabled"; ++}; ++ ++&main_bcdma { ++ u-boot,dm-spl; ++}; ++ ++&main_pktdma { ++ u-boot,dm-spl; ++}; ++ ++&fss { ++ u-boot,dm-spl; ++}; ++ ++&main_gpio0 { ++ u-boot,dm-spl; ++}; ++ ++&main_gpio1 { ++ u-boot,dm-spl; ++}; +diff --git a/arch/arm/dts/k3-am642-netmodule-hw34.dts b/arch/arm/dts/k3-am642-netmodule-hw34.dts +new file mode 100644 +index 0000000000..be33f6ab87 +--- /dev/null ++++ b/arch/arm/dts/k3-am642-netmodule-hw34.dts +@@ -0,0 +1,476 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/ ++ */ ++ ++/dts-v1/; ++ ++#include ++#include ++#include ++#include ++#include "k3-am642.dtsi" ++ ++/ { ++ compatible = "netmodule,hw34", "ti,am642"; ++ model = "NetModule AM642 based Gemini"; ++ ++ aliases { ++ i2c0 = &main_i2c0; ++ i2c1 = &main_i2c1; ++ i2c2 = &main_i2c2; ++ }; ++ ++ chosen { ++ stdout-path = "serial2:115200n8"; ++ bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000"; ++ }; ++ ++ memory@80000000 { ++ device_type = "memory"; ++ /* 1G RAM */ ++ reg = <0x00000000 0x80000000 0x00000000 0x40000000>; ++ ++ }; ++ ++ reserved-memory { ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ranges; ++ ++ secure_ddr: optee@9e800000 { ++ reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */ ++ alignment = <0x1000>; ++ no-map; ++ }; ++ }; ++ ++ config { ++ u-boot,mmc-env-offset = <0x3e0000>; /* 4MB partition, we put it into the last 128 kB */ ++ }; ++ ++ gemini-sysreset { ++ compatible = "gemini-sysreset"; ++ }; ++}; ++ ++&main_pmx0 { ++ main_mmc1_pins_default: main-mmc1-pins-default { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x0294, PIN_INPUT, 0) /* (J19) MMC1_CMD */ ++ AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* (#N/A) MMC1_CLKLB */ ++ AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */ ++ AM64X_IOPAD(0x0288, PIN_INPUT, 0) /* (K21) MMC1_DAT0 */ ++ AM64X_IOPAD(0x0284, PIN_INPUT, 0) /* (L21) MMC1_DAT1 */ ++ AM64X_IOPAD(0x0280, PIN_INPUT, 0) /* (K19) MMC1_DAT2 */ ++ AM64X_IOPAD(0x027c, PIN_INPUT, 0) /* (K18) MMC1_DAT3 */ ++ AM64X_IOPAD(0x0298, PIN_INPUT, 0) /* (D19) MMC1_SDCD */ ++ >; ++ }; ++ ++ main_uart0_pins_default: main-uart0-pins-default { ++ u-boot,dm-spl; ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */ ++ AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */ ++ >; ++ }; ++ ++ gpio0_pins: gpio0-pins { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x0090, PIN_OUTPUT, 7) /* (P17) GPIO0_35 */ ++ AM64X_IOPAD(0x008C, PIN_INPUT, 7) /* (T21) GPIO0_34 */ ++ AM64X_IOPAD(0x00A0, PIN_OUTPUT, 7) /* (N16) GPIO0_39 */ ++ AM64X_IOPAD(0x0098, PIN_INPUT, 7) /* (W19) GPIO0_37 */ ++ AM64X_IOPAD(0x009C, PIN_INPUT, 7) /* (Y18) GPIO0_38 */ ++ AM64X_IOPAD(0x0094, PIN_INPUT, 7) /* (Y19) GPIO0_36 */ ++ AM64X_IOPAD(0x00A8, PIN_INPUT, 7) /* (R19) GPIO0_41 */ ++ AM64X_IOPAD(0x00AC, PIN_INPUT, 7) /* (R20) GPIO0_42 */ ++ AM64X_IOPAD(0x00A4, PIN_INPUT, 7) /* (N17) GPIO0_40 */ ++ ++ AM64X_IOPAD(0x011c, PIN_INPUT, 7) /* (AA13) GPIO0_70 */ ++ AM64X_IOPAD(0x0128, PIN_OUTPUT, 7) /* (U12) GPIO0_73 */ ++ AM64X_IOPAD(0x0150, PIN_INPUT, 7) /* (Y13) GPIO0_20 */ ++ AM64X_IOPAD(0x0154, PIN_INPUT, 7) /* (V12) GPIO0_84 */ ++ AM64X_IOPAD(0x00d8, PIN_INPUT, 7) /* (W13) GPIO0_53 */ ++ AM64X_IOPAD(0x00cc, PIN_INPUT, 7) /* (V13) GPIO0_50 */ ++ ++ AM64X_IOPAD(0x0124, PIN_OUTPUT, 7) /* (V15) GPIO0_72 */ ++ AM64X_IOPAD(0x012c, PIN_OUTPUT, 7) /* (V14) GPIO0_74 */ ++ AM64X_IOPAD(0x0130, PIN_INPUT, 7) /* (W14) GPIO0_75 */ ++ AM64X_IOPAD(0x014c, PIN_OUTPUT, 7) /* (AA14) GPIO0_19 */ ++ AM64X_IOPAD(0x00e0, PIN_OUTPUT, 7) /* (U14) GPIO0_55 */ ++ AM64X_IOPAD(0x00dc, PIN_OUTPUT, 7) /* (U15) GPIO0_54 */ ++ ++ AM64X_IOPAD(0x0114, PIN_INPUT, 7) /* (Y12) GPIO0_68 */ ++ AM64X_IOPAD(0x0118, PIN_OUTPUT, 7) /* (W12) GPIO0_69 */ ++ ++ ++ AM64X_IOPAD(0x00bc, PIN_INPUT, 7) /* (U8) GPIO0_46 */ ++ AM64X_IOPAD(0x00c0, PIN_OUTPUT, 7) /* (W8) GPIO0_47 */ ++ AM64X_IOPAD(0x00c4, PIN_OUTPUT, 7) /* (W8) GPIO0_48 */ ++ AM64X_IOPAD(0x00c8, PIN_OUTPUT, 7) /* (W8) GPIO0_49 */ ++ AM64X_IOPAD(0x00fc, PIN_INPUT, 7) /* (U7) GPIO0_62 */ ++ ++ AM64X_IOPAD(0x002c, PIN_OUTPUT, 7) /* (L19) GPIO0_11 */ ++ AM64X_IOPAD(0x0030, PIN_OUTPUT, 7) /* (L18) GPIO0_12 */ ++ AM64X_IOPAD(0x0034, PIN_OUTPUT, 7) /* (K17) GPIO0_13 */ ++ AM64X_IOPAD(0x0038, PIN_OUTPUT, 7) /* (L17) GPIO0_14 */ ++ ++ AM64X_IOPAD(0x0014, PIN_OUTPUT, 7) /* (M20) GPIO0_5 */ ++ AM64X_IOPAD(0x0018, PIN_OUTPUT, 7) /* (M21) GPIO0_6 */ ++ AM64X_IOPAD(0x001c, PIN_OUTPUT, 7) /* (P21) GPIO0_7 */ ++ AM64X_IOPAD(0x0020, PIN_OUTPUT, 7) /* (P20) GPIO0_8 */ ++ AM64X_IOPAD(0x0024, PIN_OUTPUT, 7) /* (N18) GPIO0_9 */ ++ AM64X_IOPAD(0x0028, PIN_OUTPUT, 7) /* (M17) GPIO0_10 */ ++ ++ >; ++ }; ++ ++ gpio1_pins: gpio1-pins { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x01a8, PIN_OUTPUT, 7) /* (V1) PRG0_PRU0_GPO18.GPIO1_18 */ ++ AM64X_IOPAD(0x01ac, PIN_OUTPUT, 7) /* (W1) PRG0_PRU0_GPO19.GPIO1_19 */ ++ >; ++ }; ++ ++ main_i2c2_pins_default: main-i2c2-pins-default { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x00B0, PIN_INPUT, 1) /* (P19) I2C2_SCL */ ++ AM64X_IOPAD(0x00B4, PIN_INPUT, 1) /* (R21) I2C2_SDA */ ++ >; ++ }; ++ ++ rmii1_pins_default: rmii1-pins-default { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x01cc, PIN_INPUT, 5) /* (W5) PRG0_PRU1_GPO7.RMII1_RD0 */ ++ AM64X_IOPAD(0x01d4, PIN_INPUT, 5) /* (Y5) PRG0_PRU1_GPO9.RMII1_RD1 */ ++ AM64X_IOPAD(0x01d8, PIN_OUTPUT, 5) /* (V6) PRG0_PRU1_GPO10.RMII1_TD0 */ ++ AM64X_IOPAD(0x01f4, PIN_OUTPUT, 5) /* (V5) PRG0_PRU1_GPO17.RMII1_TD1 */ ++ AM64X_IOPAD(0x01fc, PIN_INPUT, 5) /* (R2) PRG0_PRU1_GPO17.RMII1_CRS_DV*/ ++ AM64X_IOPAD(0x01f8, PIN_INPUT, 5) /* (P5) PRG0_PRU1_GPO17.RMII1_TX_EN */ ++ AM64X_IOPAD(0x0188, PIN_INPUT, 5) /* (AA5) PRG0_PRU0_GPO10.RMII1_REF_CLK*/ ++ AM64X_IOPAD(0x00d4, PIN_OUTPUT, 5) /* (U13) CLKOUT0 */ ++ >; ++ }; ++ ++ mdio0_pins_default: mdio0-pins-default { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x015c, PIN_OUTPUT_PULLUP, 4) /* (Y6) PRG1_MDIO0_MDC.MDIO0_MDC */ ++ AM64X_IOPAD(0x0158, PIN_INPUT, 4) /* (AA6) PRG1_MDIO0_MDIO.MDIO0_MDIO */ ++ ++ AM64X_IOPAD(0x01ac, PIN_OUTPUT_PULLUP, 7) /* (W1) GPIO1_19 */ ++ >; ++ }; ++ ++ main_usb0_pins_default: main-usb0-pins-default { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */ ++ >; ++ }; ++ ++ main_i2c1_pins_default: main-i2c1-pins-default { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */ ++ AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */ ++ >; ++ }; ++ ++ ++ main_i2c0_pins_default: main-i2c0-pins-default { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x0260, PIN_INPUT_PULLUP, 0) /* (P19) I2C2_SCL */ ++ AM64X_IOPAD(0x0264, PIN_INPUT_PULLUP, 0) /* (R21) I2C2_SDA */ ++ >; ++ }; ++}; ++ ++&usbss0 { ++ ti,vbus-divider; ++ ti,usb2-only; ++}; ++ ++&usb0 { ++ dr_mode = "otg"; ++ maximum-speed = "high-speed"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&main_usb0_pins_default>; ++}; ++ ++&main_i2c0 { ++ status = "okay"; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&main_i2c0_pins_default>; ++ clock-frequency = <100000>; ++ ++ da9063: pmic@58 { ++ compatible = "dlg,da9063"; ++ reg = <0x58>; ++ ++ regulators { ++ vddcore_reg: bcore1 { ++ regulator-min-microvolt = <850000>; ++ regulator-max-microvolt = <850000>; ++ regulator-ramp-delay = <2>; ++ regulator-name = "DA9063_CORE"; ++ regulator-always-on; ++ }; ++ ++ vddar_reg: bcore2 { ++ regulator-min-microvolt = <850000>; ++ regulator-max-microvolt = <850000>; ++ regulator-ramp-delay = <2>; ++ regulator-name = "DA9063_AR"; ++ regulator-always-on; ++ }; ++ ++ vdd_1v8_reg: bperi { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-ramp-delay = <2>; ++ regulator-always-on; ++ }; ++ ++ vdd_3v3_1_reg: bio { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ vdd_3v3_2_reg: bmem { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ vdd_1v1_reg: bpro { ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-always-on; ++ }; ++ ++ vdd_gnss_reg: ldo3 { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ vdd_sensors_reg: ldo5 { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ vdd_stby_reg: ldo6 { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ vdd_vdda: ldo10 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ vdd_5v_can_reg: ldo11 { ++ /* It is actually 5V but the driver does not support it */ ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ }; ++ }; ++}; ++ ++/* SYS_I2C */ ++&main_i2c1 { ++ status = "okay"; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&main_i2c1_pins_default>; ++ clock-frequency = <400000>; ++ ++ /* There is no driver available */ ++ onewire: ds2484@18 { ++ status = "disabled"; ++ reg = <0x18>; ++ }; ++ ++ eeprom: eeprom@50 { ++ reg = <0x50>; ++ compatible = "onsemi,24c64"; ++ }; ++ ++ temp: temp@48 { ++ reg = <0x48>; ++ compatible = "national,lm75"; ++ /* vs-supply = <&vs>; */ /* Not available, maybe required then use fixed-regulator */ ++ }; ++}; ++ ++/* USER_I2C */ ++&main_i2c2 { ++ status = "okay"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&main_i2c2_pins_default>; ++ clock-frequency = <400000>; ++ ++ exp1: gpio@71 { ++ status = "okay"; ++ compatible = "nxp,pca9538"; ++ reg = <0x71>; ++ gpio-controller; ++ #gpio-cells = <2>; ++ gpio-line-names = "GPI_CTRL_PU_EN0", "GPI_CTRL_PU_EN1", ++ "GPI_CTRL_PU_EN2", "GPI_CTRL_PU_EN3", ++ "GPI_CTRL_PU_EN4", "GPI_CTRL_PU_EN5", ++ "", ""; ++ }; ++ ++ exp2: gpio@72 { ++ status = "okay"; ++ compatible = "nxp,pca9538"; ++ reg = <0x73>; ++ gpio-controller; ++ #gpio-cells = <2>; ++ gpio-line-names = "GPIO0", "GPIO1", ++ "GPIO2", "GPIO3", ++ "GPO0", "GPO1", ++ "GPO2", "GPO3"; ++ }; ++}; ++ ++&sdhci0 { ++ /* emmc */ ++ bus-width = <8>; ++ non-removable; ++ ti,driver-strength-ohm = <50>; ++ disable-wp; ++ /delete-property/ ti,otap-del-sel-hs200; ++ /delete-property/ ti,otap-del-sel-hs400; ++}; ++ ++&sdhci1 { ++ status = "disabled"; ++ pinctrl-names = "default"; ++ bus-width = <4>; ++ pinctrl-0 = <&main_mmc1_pins_default>; ++ ti,driver-strength-ohm = <50>; ++ disable-wp; ++ broken-cd; ++ /delete-property/ ti,otap-del-sel-hs200; ++ /delete-property/ ti,otap-del-sel-hs400; ++}; ++ ++&cpsw3g { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mdio0_pins_default ++ &rmii1_pins_default>; ++}; ++ ++&cpsw_port1 { ++ phy-mode = "rmii"; ++ phy-handle = <&cpsw3g_phy0>; ++}; ++ ++&cpsw3g_mdio { ++ bus_freq = <100000>; ++ cpsw3g_phy0: ethernet-phy@b1 { ++ reg = <0x01>; ++ ti,rx-internal-delay = ; ++ ti,fifo-depth = ; ++ }; ++}; ++ ++&main_gpio0 { ++ status = "okay"; ++ ti,ngpio = <87>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&gpio0_pins>; ++ ++ wlan_en { ++ gpio-hog; ++ gpios = <5 GPIO_ACTIVE_HIGH>; ++ output-high; ++ line-name = "WLAN_EN"; ++ }; ++ ++ canfd0_en { ++ gpio-hog; ++ gpios = <74 GPIO_ACTIVE_HIGH>; ++ output-high; ++ line-name = "CANFD0_CTRL_EN"; ++ }; ++ ++ canfd1_en { ++ gpio-hog; ++ gpios = <72 GPIO_ACTIVE_HIGH>; ++ output-high; ++ line-name = "CANFD1_CTRL_EN"; ++ }; ++ ++ canfd0_stb { ++ gpio-hog; ++ gpios = <55 GPIO_ACTIVE_HIGH>; ++ output-low; ++ /* In V1 this is high active even though it is STB~ */ ++ line-name = "CANFD0_CTRL_STB"; ++ }; ++ ++ canfd1_stb { ++ gpio-hog; ++ gpios = <54 GPIO_ACTIVE_HIGH>; ++ output-low; ++ /* In V1 this is high active even though it is STB~ */ ++ line-name = "CANFD1_CTRL_STB"; ++ }; ++ ++ xpdr_rst { ++ gpio-hog; ++ gpios = <34 GPIO_ACTIVE_LOW>; ++ output-low; ++ line-name = "XPDR_RST"; ++ }; ++ ++ hub_rst { ++ gpio-hog; ++ gpios = <19 GPIO_ACTIVE_HIGH>; ++ output-high; ++ line-name = "HUB_RST"; ++ }; ++ ++ gnss_rst { ++ gpio-hog; ++ gpios = <39 GPIO_ACTIVE_HIGH>; ++ output-low; ++ line-name = "GNSS_RST"; ++ }; ++}; ++ ++&main_gpio1 { ++ status = "okay"; ++ ti,ngpio = <88>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&gpio1_pins>; ++ ++ brdr_rst { ++ gpio-hog; ++ gpios = <18 GPIO_ACTIVE_HIGH>; ++ output-high; ++ line-name = "BRDR_RST"; ++ }; ++ ++ eth_rst { ++ gpio-hog; ++ gpios = <19 GPIO_ACTIVE_HIGH>; ++ output-high; ++ line-name = "ETH_RST"; ++ }; ++}; ++ ++#include "k3-am642-gemini-u-boot.dtsi" +diff --git a/arch/arm/dts/k3-am642-r5-netmodule-hw34.dts b/arch/arm/dts/k3-am642-r5-netmodule-hw34.dts +new file mode 100644 +index 0000000000..a199dd8069 +--- /dev/null ++++ b/arch/arm/dts/k3-am642-r5-netmodule-hw34.dts +@@ -0,0 +1,226 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/* ++ * Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/ ++ */ ++ ++/dts-v1/; ++ ++#include "k3-am642.dtsi" ++#include "k3-am64-sk-lp4-1600MTs.dtsi" ++#include "k3-am64-ddr.dtsi" ++ ++/ { ++ chosen { ++ stdout-path = "serial2:115200n8"; ++ tick-timer = &timer1; ++ }; ++ ++ aliases { ++ remoteproc0 = &sysctrler; ++ remoteproc1 = &a53_0; ++ }; ++ ++ memory@80000000 { ++ device_type = "memory"; ++ /* 1G RAM */ ++ reg = <0x00000000 0x80000000 0x00000000 0x40000000>; ++ ++ u-boot,dm-spl; ++ }; ++ ++ a53_0: a53@0 { ++ compatible = "ti,am654-rproc"; ++ reg = <0x00 0x00a90000 0x00 0x10>; ++ power-domains = <&k3_pds 61 TI_SCI_PD_EXCLUSIVE>, ++ <&k3_pds 135 TI_SCI_PD_EXCLUSIVE>; ++ resets = <&k3_reset 135 0>; ++ clocks = <&k3_clks 61 0>; ++ assigned-clocks = <&k3_clks 61 0>, <&k3_clks 135 0>; ++ assigned-clock-parents = <&k3_clks 61 2>; ++ assigned-clock-rates = <200000000>, <1000000000>; ++ ti,sci = <&dmsc>; ++ ti,sci-proc-id = <32>; ++ ti,sci-host-id = <10>; ++ u-boot,dm-spl; ++ }; ++ ++ reserved-memory { ++ #address-cells = <2>; ++ #size-cells = <2>; ++ ranges; ++ ++ secure_ddr: optee@9e800000 { ++ reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */ ++ alignment = <0x1000>; ++ no-map; ++ }; ++ }; ++ ++ clk_200mhz: dummy-clock-200mhz { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <200000000>; ++ u-boot,dm-spl; ++ }; ++}; ++ ++&cbass_main { ++ sysctrler: sysctrler { ++ compatible = "ti,am654-system-controller"; ++ mboxes= <&secure_proxy_main 1>, <&secure_proxy_main 0>; ++ mbox-names = "tx", "rx"; ++ u-boot,dm-spl; ++ }; ++}; ++ ++&cbass_main { ++ main_esm: esm@420000 { ++ compatible = "ti,j721e-esm"; ++ reg = <0x0 0x420000 0x0 0x1000>; ++ ti,esm-pins = <160>, <161>; ++ u-boot,dm-spl; ++ }; ++}; ++ ++&cbass_mcu { ++ u-boot,dm-spl; ++ mcu_esm: esm@4100000 { ++ compatible = "ti,j721e-esm"; ++ reg = <0x0 0x4100000 0x0 0x1000>; ++ ti,esm-pins = <0>, <1>; ++ u-boot,dm-spl; ++ }; ++}; ++ ++&main_pmx0 { ++ u-boot,dm-spl; ++ main_uart0_pins_default: main-uart0-pins-default { ++ u-boot,dm-spl; ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */ ++ AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */ ++ AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */ ++ AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */ ++ >; ++ }; ++ ++ main_mmc0_pins_default: main-mmc0-pins-default { ++ u-boot,dm-spl; ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x01a8, PIN_INPUT_PULLDOWN, 0) /* (B25) MMC0_CLK */ ++ AM64X_IOPAD(0x01aC, PIN_INPUT_PULLUP, 0) /* (B27) MMC0_CMD */ ++ AM64X_IOPAD(0x01a4, PIN_INPUT_PULLUP, 0) /* (A26) MMC0_DAT0 */ ++ AM64X_IOPAD(0x01a0, PIN_INPUT_PULLUP, 0) /* (E25) MMC0_DAT1 */ ++ AM64X_IOPAD(0x019c, PIN_INPUT_PULLUP, 0) /* (C26) MMC0_DAT2 */ ++ AM64X_IOPAD(0x0198, PIN_INPUT_PULLUP, 0) /* (A25) MMC0_DAT3 */ ++ AM64X_IOPAD(0x0194, PIN_INPUT_PULLUP, 0) /* (E24) MMC0_DAT4 */ ++ AM64X_IOPAD(0x0190, PIN_INPUT_PULLUP, 0) /* (A24) MMC0_DAT5 */ ++ AM64X_IOPAD(0x018c, PIN_INPUT_PULLUP, 0) /* (B26) MMC0_DAT6 */ ++ AM64X_IOPAD(0x0188, PIN_INPUT_PULLUP, 0) /* (D25) MMC0_DAT7 */ ++ AM64X_IOPAD(0x01b0, PIN_INPUT, 0) /* (C25) MMC0_DS */ ++ >; ++ }; ++ ++ main_mmc1_pins_default: main-mmc1-pins-default { ++ u-boot,dm-spl; ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x0294, PIN_INPUT_PULLUP, 0) /* (J19) MMC1_CMD */ ++ AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */ ++ AM64X_IOPAD(0x0288, PIN_INPUT_PULLUP, 0) /* (K21) MMC1_DAT0 */ ++ AM64X_IOPAD(0x0284, PIN_INPUT_PULLUP, 0) /* (L21) MMC1_DAT1 */ ++ AM64X_IOPAD(0x0280, PIN_INPUT_PULLUP, 0) /* (K19) MMC1_DAT2 */ ++ AM64X_IOPAD(0x027c, PIN_INPUT_PULLUP, 0) /* (K18) MMC1_DAT3 */ ++ AM64X_IOPAD(0x0298, PIN_INPUT_PULLUP, 0) /* (D19) MMC1_SDCD */ ++ AM64X_IOPAD(0x029c, PIN_INPUT_PULLUP, 0) /* (C20) MMC1_SDWP */ ++ >; ++ }; ++ ++ ++ main_usb0_pins_default: main-usb0-pins-default { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */ ++ >; ++ }; ++ ++ ospi0_pins_default: ospi0-pins-default { ++ pinctrl-single,pins = < ++ AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */ ++ AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */ ++ AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */ ++ AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */ ++ AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */ ++ AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */ ++ AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */ ++ AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */ ++ AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */ ++ AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */ ++ AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */ ++ >; ++ }; ++}; ++ ++&dmsc { ++ mboxes= <&secure_proxy_main 0>, ++ <&secure_proxy_main 1>, ++ <&secure_proxy_main 0>; ++ mbox-names = "rx", "tx", "notify"; ++ ti,host-id = <35>; ++ ti,secure-host; ++}; ++ ++&main_uart0 { ++ /delete-property/ power-domains; ++ /delete-property/ clocks; ++ /delete-property/ clock-names; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&main_uart0_pins_default>; ++ status = "okay"; ++}; ++ ++&sdhci0 { ++ /delete-property/ power-domains; ++ clocks = <&clk_200mhz>; ++ clock-names = "clk_xin"; ++ ti,driver-strength-ohm = <50>; ++ disable-wp; ++ pinctrl-0 = <&main_mmc0_pins_default>; ++ /delete-property/ ti,otap-del-sel-hs200; ++ /delete-property/ ti,otap-del-sel-hs400; ++}; ++ ++&sdhci1 { ++ /delete-property/ power-domains; ++ clocks = <&clk_200mhz>; ++ clock-names = "clk_xin"; ++ ti,driver-strength-ohm = <50>; ++ disable-wp; ++ pinctrl-0 = <&main_mmc1_pins_default>; ++}; ++ ++&main_gpio0 { ++ u-boot,dm-spl; ++ /delete-property/ power-domains; ++}; ++ ++&usbss0 { ++ ti,vbus-divider; ++ ti,usb2-only; ++}; ++ ++&usb0 { ++ dr_mode = "otg"; ++ maximum-speed = "high-speed"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&main_usb0_pins_default>; ++}; ++ ++/* EEPROM might be read before SYSFW is available */ ++&main_i2c0 { ++ /delete-property/ power-domains; ++}; ++ ++&memorycontroller { ++// ti,ddr-freq0 = <200000000>; ++}; ++ ++#include "k3-am642-gemini-u-boot.dtsi" +diff --git a/arch/arm/mach-k3/Kconfig b/arch/arm/mach-k3/Kconfig +index 171a7f2f25..694cf5da41 100644 +--- a/arch/arm/mach-k3/Kconfig ++++ b/arch/arm/mach-k3/Kconfig +@@ -188,4 +188,6 @@ source "board/ti/am62x/Kconfig" + source "board/ti/j721e/Kconfig" + source "board/siemens/iot2050/Kconfig" + source "board/ti/j721s2/Kconfig" ++ ++source "board/nm/am64x/Kconfig" + endif +diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c +index 227706e8dc..8530416cec 100644 +--- a/arch/arm/mach-k3/common.c ++++ b/arch/arm/mach-k3/common.c +@@ -138,6 +138,11 @@ void init_env(void) + env_init(); + env_relocate(); + switch (spl_boot_device()) { ++ case BOOT_DEVICE_MMC1: ++ part = env_get("bootpart"); ++ env_set("storage_interface", "mmc"); ++ env_set("fw_dev_part", part); ++ break; + case BOOT_DEVICE_MMC2: + part = env_get("bootpart"); + env_set("storage_interface", "mmc"); +diff --git a/board/nm/am64x/Kconfig b/board/nm/am64x/Kconfig +new file mode 100644 +index 0000000000..bee565988a +--- /dev/null ++++ b/board/nm/am64x/Kconfig +@@ -0,0 +1,60 @@ ++# SPDX-License-Identifier: GPL-2.0+ ++# ++# Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/ ++ ++choice ++ prompt "NetModule boards" ++ optional ++ ++config TARGET_AM642_A53_GEMINI ++ bool "TI K3 based AM642 Gemini Board from NetModule for A53" ++ select ARM64 ++ select SOC_K3_AM642 ++ select BINMAN ++ imply BOARD ++ imply SPL_BOARD ++ ++config TARGET_AM642_R5_GEMINI ++ bool "TI K3 based AM642 Gemini Board from NetModule for R5" ++ select CPU_V7R ++ select SYS_THUMB_BUILD ++ select K3_LOAD_SYSFW ++ select SOC_K3_AM642 ++ select RAM ++ select SPL_RAM ++ select K3_DDRSS ++ imply SYS_K3_SPL_ATF ++endchoice ++ ++if TARGET_AM642_A53_GEMINI ++ ++config SYS_BOARD ++ default "am64x" ++ ++config SYS_VENDOR ++ default "nm" ++ ++config SYS_CONFIG_NAME ++ default "am64x_gemini" ++ ++source "board/ti/common/Kconfig" ++ ++endif ++ ++if TARGET_AM642_R5_GEMINI ++ ++config SYS_BOARD ++ default "am64x" ++ ++config SYS_VENDOR ++ default "nm" ++ ++config SYS_CONFIG_NAME ++ default "am64x_gemini" ++ ++config SPL_LDSCRIPT ++ default "arch/arm/mach-omap2/u-boot-spl.lds" ++ ++source "board/ti/common/Kconfig" ++ ++endif +diff --git a/board/nm/am64x/Makefile b/board/nm/am64x/Makefile +new file mode 100644 +index 0000000000..8a8a4158a2 +--- /dev/null ++++ b/board/nm/am64x/Makefile +@@ -0,0 +1,9 @@ ++# ++# Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/ ++# Keerthy ++# ++# SPDX-License-Identifier: GPL-2.0+ ++# ++ ++obj-y += gemini.o ++obj-$(CONFIG_TARGET_AM642_A53_GEMINI) += sysreset.o +diff --git a/board/nm/am64x/gemini.c b/board/nm/am64x/gemini.c +new file mode 100644 +index 0000000000..f076b9fb0e +--- /dev/null ++++ b/board/nm/am64x/gemini.c +@@ -0,0 +1,166 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++/* ++ * Board specific initialization for AM642 EVM ++ * ++ * Copyright (C) 2020-2022 Texas Instruments Incorporated - https://www.ti.com/ ++ * Keerthy ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++DECLARE_GLOBAL_DATA_PTR; ++ ++int board_init(void) ++{ ++ return 0; ++} ++ ++int dram_init(void) ++{ ++ s32 ret; ++ ++ ret = fdtdec_setup_mem_size_base(); ++ if (ret) ++ printf("Error setting up mem size and base. %d\n", ret); ++ ++ return ret; ++} ++ ++int dram_init_banksize(void) ++{ ++ s32 ret; ++ ++ ret = fdtdec_setup_memory_banksize(); ++ if (ret) ++ printf("Error setting up memory banksize. %d\n", ret); ++ ++ return ret; ++} ++#ifdef CONFIG_SPL_LOAD_FIT ++int board_fit_config_name_match(const char *name) ++{ ++ return 0; ++} ++#endif ++ ++#if defined(CONFIG_SPL_BUILD) ++#if CONFIG_IS_ENABLED(USB_STORAGE) ++static int fixup_usb_boot(const void *fdt_blob) ++{ ++ int ret = 0; ++ ++ switch (spl_boot_device()) { ++ case BOOT_DEVICE_USB: ++ /* ++ * If the boot mode is host, fixup the dr_mode to host ++ * before cdns3 bind takes place ++ */ ++ ret = fdt_find_and_setprop((void *)fdt_blob, ++ "/bus@f4000/cdns-usb@f900000/usb@f400000", ++ "dr_mode", "host", 5, 0); ++ if (ret) ++ printf("%s: fdt_find_and_setprop() failed:%d\n", ++ __func__, ret); ++ fallthrough; ++ default: ++ break; ++ } ++ ++ return ret; ++} ++#endif ++ ++#if defined(CONFIG_K3_AM64_DDRSS) ++static void fixup_ddr_driver_for_ecc(struct spl_image_info *spl_image) ++{ ++ struct udevice *dev; ++ int ret; ++ ++ dram_init_banksize(); ++ ++ ret = uclass_get_device(UCLASS_RAM, 0, &dev); ++ if (ret) ++ panic("Cannot get RAM device for ddr size fixup: %d\n", ret); ++ ++ ret = k3_ddrss_ddr_fdt_fixup(dev, spl_image->fdt_addr, gd->bd); ++ if (ret) ++ printf("Error fixing up ddr node for ECC use! %d\n", ret); ++} ++#else ++static void fixup_memory_node(struct spl_image_info *spl_image) ++{ ++ u64 start[CONFIG_NR_DRAM_BANKS]; ++ u64 size[CONFIG_NR_DRAM_BANKS]; ++ int bank; ++ int ret; ++ ++ dram_init(); ++ dram_init_banksize(); ++ ++ for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) { ++ start[bank] = gd->bd->bi_dram[bank].start; ++ size[bank] = gd->bd->bi_dram[bank].size; ++ } ++ ++ /* dram_init functions use SPL fdt, and we must fixup u-boot fdt */ ++ ret = fdt_fixup_memory_banks(spl_image->fdt_addr, start, size, CONFIG_NR_DRAM_BANKS); ++ if (ret) ++ printf("Error fixing up memory node! %d\n", ret); ++} ++#endif ++ ++void spl_perform_fixups(struct spl_image_info *spl_image) ++{ ++#if defined(CONFIG_K3_AM64_DDRSS) ++ fixup_ddr_driver_for_ecc(spl_image); ++#else ++ fixup_memory_node(spl_image); ++#endif ++ ++#if CONFIG_IS_ENABLED(USB_STORAGE) ++ fixup_usb_boot(spl_image->fdt_addr); ++#endif ++} ++#endif ++ ++int checkboard(void) ++{ ++ printf("Board: GEMINI rev 1\n"); ++ ++ return 0; ++} ++ ++#ifdef CONFIG_BOARD_LATE_INIT ++int board_late_init(void) ++{ ++ return 0; ++} ++#endif ++ ++#define CTRLMMR_USB0_PHY_CTRL 0x43004008 ++#define CORE_VOLTAGE 0x80000000 ++ ++#ifdef CONFIG_SPL_BOARD_INIT ++void spl_board_init(void) ++{ ++ u32 val; ++ /* Set USB PHY core voltage to 0.85V */ ++ val = readl(CTRLMMR_USB0_PHY_CTRL); ++ val &= ~(CORE_VOLTAGE); ++ writel(val, CTRLMMR_USB0_PHY_CTRL); ++ ++ /* Init DRAM size for R5/A53 SPL */ ++ dram_init_banksize(); ++} ++#endif +diff --git a/board/nm/am64x/sysreset.c b/board/nm/am64x/sysreset.c +new file mode 100644 +index 0000000000..7e0b859ab3 +--- /dev/null ++++ b/board/nm/am64x/sysreset.c +@@ -0,0 +1,60 @@ ++// SPDX-License-Identifier: GPL-2.0+ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++struct gemini_sysreset_data { ++ struct udevice *pmic; ++}; ++ ++static int gemini_sysreset_probe(struct udevice *dev) ++{ ++ struct gemini_sysreset_data *data = dev_get_priv(dev); ++ int ret; ++ ++ debug("%s(dev=%p)\n", __func__, dev); ++ ++ if (!data) ++ return -ENOMEM; ++ ++ ret = pmic_get("pmic@58", &data->pmic); ++ if (ret) ++ return ret; ++ ++ return 0; ++} ++ ++static int gemini_sysreset_request(struct udevice *dev, enum sysreset_t type) ++{ ++ struct gemini_sysreset_data *data = dev_get_priv(dev); ++ ++ debug("Reset PMIC DA9063 %p\n", data->pmic); ++ ++ pmic_reg_write(data->pmic, 0x13, 0x7); ++ ++ return 0; ++} ++ ++static struct sysreset_ops gemini_sysreset_ops = { ++ .request = gemini_sysreset_request, ++}; ++ ++static const struct udevice_id gemini_sysreset_of_match[] = { ++ { .compatible = "gemini-sysreset", }, ++ { /* sentinel */ }, ++}; ++ ++ ++U_BOOT_DRIVER(gemini_sysreset) = { ++ .name = "gemini-sysreset", ++ .id = UCLASS_SYSRESET, ++ .of_match = gemini_sysreset_of_match, ++ .probe = gemini_sysreset_probe, ++ .priv_auto = sizeof(struct gemini_sysreset_data), ++ .ops = &gemini_sysreset_ops, ++}; +diff --git a/configs/am64x_netmodule_hw34_a53_defconfig b/configs/am64x_netmodule_hw34_a53_defconfig +new file mode 100644 +index 0000000000..acf5a340dc +--- /dev/null ++++ b/configs/am64x_netmodule_hw34_a53_defconfig +@@ -0,0 +1,179 @@ ++CONFIG_ARM=y ++CONFIG_SKIP_LOWLEVEL_INIT=y ++CONFIG_ARCH_K3=y ++CONFIG_SYS_MALLOC_LEN=0x2000000 ++CONFIG_SYS_MALLOC_F_LEN=0x8000 ++CONFIG_SPL_GPIO=y ++CONFIG_SPL_LIBCOMMON_SUPPORT=y ++CONFIG_SPL_LIBGENERIC_SUPPORT=y ++CONFIG_NR_DRAM_BANKS=2 ++CONFIG_SOC_K3_AM642=y ++CONFIG_K3_ATF_LOAD_ADDR=0x701c0000 ++CONFIG_TARGET_AM642_A53_GEMINI=y ++CONFIG_ENV_SIZE=0x20000 ++CONFIG_ENV_OFFSET=0x3e0000 ++CONFIG_DM_GPIO=y ++CONFIG_SPL_DM_SPI=y ++CONFIG_DEFAULT_DEVICE_TREE="k3-am642-netmodule-hw34" ++CONFIG_SPL_TEXT_BASE=0x80080000 ++CONFIG_SPL_MMC=y ++CONFIG_SPL_SERIAL=y ++CONFIG_SPL_DRIVERS_MISC=y ++CONFIG_SPL_STACK_R_ADDR=0x82000000 ++CONFIG_SPL_FS_FAT=y ++CONFIG_SPL_LIBDISK_SUPPORT=y ++CONFIG_SPL_SPI_FLASH_SUPPORT=y ++CONFIG_SPL_SPI=y ++CONFIG_DISTRO_DEFAULTS=y ++CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y ++CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80480000 ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL_LOAD_FIT=y ++CONFIG_SPL_LOAD_FIT_ADDRESS=0x81000000 ++CONFIG_SPL_LOAD_FIT_APPLY_OVERLAY=y ++CONFIG_BOOTCOMMAND="run distro_bootcmd" ++CONFIG_BOARD_LATE_INIT=y ++CONFIG_SPL_MAX_SIZE=0x180000 ++CONFIG_SPL_HAS_BSS_LINKER_SECTION=y ++CONFIG_SPL_BSS_START_ADDR=0x80a00000 ++CONFIG_SPL_BSS_MAX_SIZE=0x80000 ++CONFIG_SPL_BOARD_INIT=y ++CONFIG_SPL_SYS_MALLOC_SIMPLE=y ++CONFIG_SPL_STACK_R=y ++CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x180000 ++CONFIG_SYS_SPL_MALLOC=y ++CONFIG_SYS_SPL_MALLOC_SIZE=0x800000 ++CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y ++CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x1600 ++CONFIG_SPL_DMA=y ++CONFIG_SPL_ENV_SUPPORT=y ++CONFIG_SPL_ETH=y ++CONFIG_SPL_FS_LOAD_PAYLOAD_NAME="u-boot.img" ++CONFIG_SPL_I2C=y ++CONFIG_SPL_DM_MAILBOX=y ++CONFIG_SPL_DM_SPI_FLASH=y ++CONFIG_SPL_NET=y ++CONFIG_SPL_NET_VCI_STRING="AM64X U-Boot A53 SPL" ++CONFIG_SPL_POWER_DOMAIN=y ++CONFIG_SPL_RAM_SUPPORT=y ++CONFIG_SPL_RAM_DEVICE=y ++CONFIG_SPL_SPI_LOAD=y ++CONFIG_SYS_SPI_U_BOOT_OFFS=0x280000 ++CONFIG_SPL_USB_HOST=y ++CONFIG_SPL_USB_STORAGE=y ++CONFIG_SPL_USB_GADGET=y ++CONFIG_SPL_DFU=y ++CONFIG_SPL_YMODEM_SUPPORT=y ++CONFIG_SYS_MAXARGS=64 ++CONFIG_SYS_BOOTM_LEN=0x800000 ++CONFIG_CMD_ASKENV=y ++CONFIG_CMD_CLK=y ++CONFIG_CMD_DFU=y ++CONFIG_CMD_DM=y ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_I2C=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_TIME=y ++CONFIG_CMD_PMIC=y ++CONFIG_CMD_REGULATOR=y ++CONFIG_OF_CONTROL=y ++CONFIG_SPL_OF_CONTROL=y ++CONFIG_MULTI_DTB_FIT=y ++CONFIG_SPL_MULTI_DTB_FIT=y ++CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y ++CONFIG_ENV_IS_IN_MMC=y ++CONFIG_SYS_MMC_ENV_PART=1 ++CONFIG_SPL_ENV_IS_NOWHERE=y ++CONFIG_NET_RANDOM_ETHADDR=y ++CONFIG_SPL_DM=y ++CONFIG_SPL_DM_SEQ_ALIAS=y ++CONFIG_REGMAP=y ++CONFIG_SPL_REGMAP=y ++CONFIG_SYSCON=y ++CONFIG_SPL_SYSCON=y ++CONFIG_SPL_OF_TRANSLATE=y ++CONFIG_CLK=y ++CONFIG_SPL_CLK=y ++CONFIG_SPL_CLK_CCF=y ++CONFIG_CLK_CCF=y ++CONFIG_CLK_TI_SCI=y ++CONFIG_DFU_MMC=y ++CONFIG_DFU_RAM=y ++CONFIG_DFU_SF=y ++CONFIG_SYS_DFU_DATA_BUF_SIZE=0x40000 ++CONFIG_SYS_DFU_MAX_FILE_SIZE=0x800000 ++CONFIG_DMA_CHANNELS=y ++CONFIG_TI_K3_NAVSS_UDMA=y ++CONFIG_TI_SCI_PROTOCOL=y ++CONFIG_GPIO_HOG=y ++CONFIG_DA8XX_GPIO=y ++CONFIG_DM_PCA953X=y ++CONFIG_DM_I2C=y ++CONFIG_I2C_SET_DEFAULT_BUS_NUM=y ++CONFIG_DM_I2C_GPIO=y ++CONFIG_SYS_I2C_OMAP24XX=y ++CONFIG_DM_MAILBOX=y ++CONFIG_K3_SEC_PROXY=y ++CONFIG_SUPPORT_EMMC_BOOT=y ++CONFIG_MMC_HS400_SUPPORT=y ++CONFIG_SPL_MMC_HS400_SUPPORT=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_ADMA=y ++CONFIG_SPL_MMC_SDHCI_ADMA=y ++CONFIG_MMC_SDHCI_AM654=y ++CONFIG_DM_SPI_FLASH=y ++CONFIG_SPI_FLASH_SPANSION=y ++CONFIG_SPI_FLASH_STMICRO=y ++CONFIG_MULTIPLEXER=y ++CONFIG_MUX_MMIO=y ++CONFIG_PHY_TI_DP83867=y ++CONFIG_PHY_FIXED=y ++CONFIG_TI_AM65_CPSW_NUSS=y ++CONFIG_PHY=y ++CONFIG_SPL_PHY=y ++CONFIG_PHY_CADENCE_SIERRA=y ++CONFIG_PHY_CADENCE_TORRENT=y ++CONFIG_PHY_J721E_WIZ=y ++CONFIG_PINCTRL=y ++CONFIG_SPL_PINCTRL=y ++CONFIG_PINCTRL_SINGLE=y ++CONFIG_POWER_DOMAIN=y ++CONFIG_TI_SCI_POWER_DOMAIN=y ++CONFIG_DM_PMIC=y ++CONFIG_DM_PMIC_DA9063=y ++CONFIG_DM_REGULATOR=y ++CONFIG_K3_SYSTEM_CONTROLLER=y ++CONFIG_REMOTEPROC_TI_K3_ARM64=y ++CONFIG_DM_RESET=y ++CONFIG_RESET_TI_SCI=y ++CONFIG_DM_SERIAL=y ++CONFIG_SOC_DEVICE=y ++CONFIG_SOC_DEVICE_TI_K3=y ++CONFIG_SOC_TI=y ++CONFIG_SPI=y ++CONFIG_DM_SPI=y ++CONFIG_CADENCE_QSPI=y ++CONFIG_SYSRESET=y ++CONFIG_SPL_SYSRESET=y ++CONFIG_SYSRESET_TI_SCI=y ++CONFIG_DM_THERMAL=y ++CONFIG_USB=y ++CONFIG_DM_USB_GADGET=y ++CONFIG_SPL_DM_USB_GADGET=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_CDNS3=y ++CONFIG_USB_CDNS3_GADGET=y ++CONFIG_USB_CDNS3_HOST=y ++CONFIG_SPL_USB_CDNS3_GADGET=y ++CONFIG_SPL_USB_CDNS3_HOST=y ++CONFIG_USB_GADGET=y ++CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments" ++CONFIG_USB_GADGET_VENDOR_NUM=0x0451 ++CONFIG_USB_GADGET_PRODUCT_NUM=0x6165 ++CONFIG_USB_GADGET_DOWNLOAD=y ++CONFIG_USB_FUNCTION_MASS_STORAGE=y ++CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 ++CONFIG_LZO=y ++CONFIG_HEXDUMP=y +diff --git a/configs/am64x_netmodule_hw34_r5_defconfig b/configs/am64x_netmodule_hw34_r5_defconfig +new file mode 100644 +index 0000000000..c7e66a18e8 +--- /dev/null ++++ b/configs/am64x_netmodule_hw34_r5_defconfig +@@ -0,0 +1,170 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_K3=y ++CONFIG_SYS_MALLOC_LEN=0x2000000 ++CONFIG_SYS_MALLOC_F_LEN=0x80000 ++CONFIG_SPL_GPIO=y ++CONFIG_SPL_LIBCOMMON_SUPPORT=y ++CONFIG_SPL_LIBGENERIC_SUPPORT=y ++CONFIG_NR_DRAM_BANKS=2 ++CONFIG_SOC_K3_AM642=y ++CONFIG_TARGET_AM642_R5_GEMINI=y ++CONFIG_DM_GPIO=y ++CONFIG_SPL_DM_SPI=y ++CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000 ++CONFIG_DEFAULT_DEVICE_TREE="k3-am642-r5-netmodule-hw34" ++CONFIG_SPL_TEXT_BASE=0x70000000 ++CONFIG_SPL_MMC=y ++CONFIG_SPL_SERIAL=y ++CONFIG_SPL_DRIVERS_MISC=y ++CONFIG_SPL_STACK_R_ADDR=0x82000000 ++CONFIG_SPL_SIZE_LIMIT=0x190000 ++CONFIG_SPL_SIZE_LIMIT_PROVIDE_STACK=0x4000 ++CONFIG_SPL_FS_FAT=y ++CONFIG_SPL_LIBDISK_SUPPORT=y ++CONFIG_SPL_SPI_FLASH_SUPPORT=y ++CONFIG_SPL_SPI=y ++CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y ++CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x7019b800 ++CONFIG_SPL_LOAD_FIT=y ++CONFIG_SPL_LOAD_FIT_ADDRESS=0x80080000 ++CONFIG_SPL_LOAD_FIT_APPLY_OVERLAY=y ++# CONFIG_DISPLAY_CPUINFO is not set ++CONFIG_SPL_SIZE_LIMIT_SUBTRACT_GD=y ++CONFIG_SPL_SIZE_LIMIT_SUBTRACT_MALLOC=y ++CONFIG_SPL_MAX_SIZE=0x180000 ++CONFIG_SPL_HAS_BSS_LINKER_SECTION=y ++CONFIG_SPL_BSS_START_ADDR=0x7019b800 ++CONFIG_SPL_BSS_MAX_SIZE=0x4000 ++CONFIG_SPL_SYS_REPORT_STACK_F_USAGE=y ++CONFIG_SPL_BOARD_INIT=y ++CONFIG_SPL_SYS_MALLOC_SIMPLE=y ++CONFIG_SPL_STACK_R=y ++CONFIG_SPL_SEPARATE_BSS=y ++CONFIG_SYS_SPL_MALLOC=y ++CONFIG_HAS_CUSTOM_SPL_MALLOC_START=y ++CONFIG_CUSTOM_SYS_SPL_MALLOC_ADDR=0x84000000 ++CONFIG_SYS_SPL_MALLOC_SIZE=0x1000000 ++CONFIG_SPL_EARLY_BSS=y ++CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y ++CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x600 ++CONFIG_SPL_DMA=y ++CONFIG_SPL_I2C=y ++CONFIG_SPL_DM_MAILBOX=y ++CONFIG_SPL_DM_SPI_FLASH=y ++CONFIG_SPL_NET=y ++CONFIG_SPL_NET_VCI_STRING="AM64X U-Boot R5 SPL" ++CONFIG_SPL_DM_RESET=y ++CONFIG_SPL_POWER_SUPPORT=y ++CONFIG_SPL_POWER_DOMAIN=y ++CONFIG_SPL_RAM_SUPPORT=y ++CONFIG_SPL_RAM_DEVICE=y ++CONFIG_SPL_REMOTEPROC=y ++CONFIG_SPL_SPI_LOAD=y ++CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000 ++CONFIG_SPL_USB_HOST=y ++CONFIG_SPL_USB_STORAGE=y ++CONFIG_SPL_THERMAL=y ++CONFIG_SPL_USB_GADGET=y ++CONFIG_SPL_DFU=y ++CONFIG_SPL_YMODEM_SUPPORT=y ++CONFIG_HUSH_PARSER=y ++CONFIG_SYS_MAXARGS=64 ++CONFIG_CMD_DFU=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_REMOTEPROC=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_USB_MASS_STORAGE=y ++# CONFIG_CMD_SETEXPR is not set ++CONFIG_CMD_DHCP=y ++CONFIG_CMD_TIME=y ++CONFIG_CMD_FAT=y ++CONFIG_OF_CONTROL=y ++CONFIG_SPL_OF_CONTROL=y ++CONFIG_SPL_MULTI_DTB_FIT=y ++CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y ++CONFIG_SPL_ENV_SUPPORT=y ++CONFIG_ENV_IS_NOWHERE=y ++CONFIG_SPL_DM=y ++CONFIG_SPL_DM_SEQ_ALIAS=y ++CONFIG_REGMAP=y ++CONFIG_SPL_REGMAP=y ++CONFIG_SYSCON=y ++CONFIG_SPL_SYSCON=y ++CONFIG_SPL_OF_TRANSLATE=y ++CONFIG_CLK=y ++CONFIG_SPL_CLK=y ++CONFIG_SPL_CLK_CCF=y ++CONFIG_CLK_CCF=y ++CONFIG_CLK_TI_SCI=y ++CONFIG_DFU_MMC=y ++CONFIG_DFU_RAM=y ++CONFIG_DFU_SF=y ++CONFIG_SYS_DFU_DATA_BUF_SIZE=0x5000 ++CONFIG_DMA_CHANNELS=y ++CONFIG_TI_K3_NAVSS_UDMA=y ++CONFIG_TI_SCI_PROTOCOL=y ++CONFIG_DA8XX_GPIO=y ++CONFIG_DM_I2C=y ++CONFIG_SYS_I2C_OMAP24XX=y ++CONFIG_DM_MAILBOX=y ++CONFIG_K3_SEC_PROXY=y ++CONFIG_ESM_K3=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_ADMA=y ++CONFIG_SPL_MMC_SDHCI_ADMA=y ++CONFIG_MMC_SDHCI_AM654=y ++CONFIG_DM_SPI_FLASH=y ++CONFIG_SPI_FLASH_SPANSION=y ++CONFIG_SPI_FLASH_STMICRO=y ++CONFIG_PHY_TI_DP83867=y ++CONFIG_TI_AM65_CPSW_NUSS=y ++CONFIG_PHY=y ++CONFIG_SPL_PHY=y ++CONFIG_PHY_CADENCE_SIERRA=y ++CONFIG_PHY_CADENCE_TORRENT=y ++CONFIG_PHY_J721E_WIZ=y ++CONFIG_PINCTRL=y ++# CONFIG_PINCTRL_GENERIC is not set ++CONFIG_SPL_PINCTRL=y ++# CONFIG_SPL_PINCTRL_GENERIC is not set ++CONFIG_PINCTRL_SINGLE=y ++CONFIG_POWER_DOMAIN=y ++CONFIG_TI_SCI_POWER_DOMAIN=y ++CONFIG_DM_REGULATOR=y ++CONFIG_SPL_DM_REGULATOR=y ++CONFIG_DM_REGULATOR_GPIO=y ++CONFIG_SPL_DM_REGULATOR_GPIO=y ++CONFIG_K3_SYSTEM_CONTROLLER=y ++CONFIG_REMOTEPROC_TI_K3_ARM64=y ++CONFIG_DM_RESET=y ++CONFIG_RESET_TI_SCI=y ++CONFIG_SPECIFY_CONSOLE_INDEX=y ++CONFIG_DM_SERIAL=y ++CONFIG_SOC_DEVICE=y ++CONFIG_SOC_DEVICE_TI_K3=y ++CONFIG_SOC_TI=y ++CONFIG_SPI=y ++CONFIG_DM_SPI=y ++CONFIG_CADENCE_QSPI=y ++CONFIG_DM_THERMAL=y ++CONFIG_TIMER=y ++CONFIG_SPL_TIMER=y ++CONFIG_OMAP_TIMER=y ++CONFIG_USB=y ++CONFIG_DM_USB=y ++CONFIG_DM_USB_GADGET=y ++CONFIG_SPL_DM_USB_GADGET=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_CDNS3=y ++CONFIG_USB_CDNS3_GADGET=y ++CONFIG_USB_CDNS3_HOST=y ++CONFIG_SPL_USB_CDNS3_GADGET=y ++CONFIG_SPL_USB_CDNS3_HOST=y ++CONFIG_USB_STORAGE=y ++CONFIG_USB_GADGET=y ++CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments" ++CONFIG_USB_GADGET_VENDOR_NUM=0x0451 ++CONFIG_USB_GADGET_PRODUCT_NUM=0x6165 ++CONFIG_USB_GADGET_DOWNLOAD=y ++CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 +diff --git a/include/configs/am64x_gemini.h b/include/configs/am64x_gemini.h +new file mode 100644 +index 0000000000..09723e6a29 +--- /dev/null ++++ b/include/configs/am64x_gemini.h +@@ -0,0 +1,61 @@ ++/* SPDX-License-Identifier: GPL-2.0+ */ ++/* ++ * Configuration header file for K3 AM642 SoC family ++ * ++ * Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/ ++ * Keerthy ++ */ ++ ++#ifndef __CONFIG_AM642_EVM_H ++#define __CONFIG_AM642_EVM_H ++ ++#include ++#include ++#include ++#include ++ ++/* Add support for distro boot */ ++#if defined(CONFIG_DISTRO_DEFAULTS) ++#define BOOT_TARGET_DEVICES(func) \ ++ func(MMC, mmc, CONFIG_SYS_MMC_ENV_DEV) ++ ++#include ++#else ++#define BOOTENV "" ++#endif ++ ++/* DDR Configuration */ ++#define CONFIG_SYS_SDRAM_BASE1 0x880000000 ++ ++#ifdef CONFIG_SYS_K3_SPL_ATF ++#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "tispl.bin" ++#endif ++ ++/* Configure R5 SPL post-relocation malloc pool in DDR */ ++#define CONFIG_SYS_SPL_MALLOC_START 0x84000000 ++#endif ++ ++/* Allow a simple U-Boot update */ ++#define UPDATE_UBOOT_CMD \ ++ "update_uboot=setenv ipaddr 192.168.1.1 && setenv serverip 192.168.1.254 && mmc dev 0 1 && " \ ++ "tftp $loadaddr gemini/tiboot3.bin && mmc write $loadaddr 0 0x600 && " \ ++ "tftp $loadaddr gemini/tispl.bin && mmc write ${loadaddr} 0x600 0x800 && " \ ++ "tftp $loadaddr gemini/u-boot.img && mmc write ${loadaddr} 0x1600 0x800;\0" ++ ++#define EXTRA_ENV_DFUARGS \ ++ DFU_ALT_INFO_MMC \ ++ DFU_ALT_INFO_EMMC \ ++ DFU_ALT_INFO_RAM ++ ++/* Incorporate settings into the U-Boot environment */ ++#define CONFIG_EXTRA_ENV_SETTINGS \ ++ BOOTENV \ ++ UPDATE_UBOOT_CMD \ ++ DEFAULT_LINUX_BOOT_ENV \ ++ DEFAULT_FIT_TI_ARGS \ ++ DEFAULT_MMC_TI_ARGS \ ++ EXTRA_ENV_DFUARGS ++ ++/* Now for the remaining common defines */ ++#include ++ diff --git a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging_git.bb b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos_2023.01.bb similarity index 71% rename from layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging_git.bb rename to layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos_2023.01.bb index 678d5a7..a3df4e9 100644 --- a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging_git.bb +++ b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos_2023.01.bb @@ -7,10 +7,12 @@ LIC_FILES_CHKSUM = "file://Licenses/README;md5=2ca5f2c35c8cc335f0a19756634782f1" PV = "2023.01" -SRC_URI = "git://git.netmodule.intranet/nmrouter/u-boot.git;protocol=ssh;user=gitea;branch=2023.01/ti/base \ - file://0001-rename-genimi-to-hw34.patch \ +SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master \ + file://0001-ram-k3-ddrss-Fix-a-ddr4-controller-stall.patch \ + file://0002-gemini-board-add-board-and-device-tree.patch \ " -SRCREV = "72a21cd71968af4e043510b9ae1ce331a6cca289" + +SRCREV = "62e2ad1ceafbfdf2c44d3dc1b6efc81e768a96b9" PACKAGECONFIG[atf] = "BL31=${STAGING_DIR_HOST}/firmware/bl31.bin,,trusted-firmware-a" diff --git a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging/0001-rename-genimi-to-hw34.patch b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging/0001-rename-genimi-to-hw34.patch deleted file mode 100644 index 7a9fa37..0000000 --- a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-staging/0001-rename-genimi-to-hw34.patch +++ /dev/null @@ -1,102 +0,0 @@ -From 8bd97ab74792c211ea6550c1696bf5f902016c1e Mon Sep 17 00:00:00 2001 -From: Samuel Dolt -Date: Wed, 31 May 2023 10:45:10 +0200 -Subject: [PATCH] rename genimi to hw34 - ---- - arch/arm/dts/Makefile | 4 ++-- - arch/arm/dts/k3-am642-gemini-binman.dtsi | 4 ++-- - .../{k3-am642-gemini-v1.dts => k3-am642-netmodule-hw34.dts} | 2 +- - ...-am642-r5-gemini-v1.dts => k3-am642-r5-netmodule-hw34.dts} | 0 - ...emini_a53_defconfig => am64x_netmodule_hw34_a53_defconfig} | 2 +- - ..._gemini_r5_defconfig => am64x_netmodule_hw34_r5_defconfig} | 2 +- - 6 files changed, 7 insertions(+), 7 deletions(-) - rename arch/arm/dts/{k3-am642-gemini-v1.dts => k3-am642-netmodule-hw34.dts} (99%) - rename arch/arm/dts/{k3-am642-r5-gemini-v1.dts => k3-am642-r5-netmodule-hw34.dts} (100%) - rename configs/{am64x_gemini_a53_defconfig => am64x_netmodule_hw34_a53_defconfig} (98%) - rename configs/{am64x_gemini_r5_defconfig => am64x_netmodule_hw34_r5_defconfig} (98%) - -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index b4a4b0982d..2f6f09a4f4 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -1255,8 +1255,8 @@ dtb-$(CONFIG_SOC_K3_AM642) += k3-am642-evm.dtb \ - k3-am642-r5-evm.dtb \ - k3-am642-sk.dtb \ - k3-am642-r5-sk.dtb \ -- k3-am642-gemini-v1.dtb \ -- k3-am642-r5-gemini-v1.dtb -+ k3-am642-netmodule-hw34.dtb \ -+ k3-am642-r5-netmodule-hw34.dtb - - dtb-$(CONFIG_SOC_K3_AM625) += k3-am625-sk.dtb \ - k3-am625-r5-sk.dtb -diff --git a/arch/arm/dts/k3-am642-gemini-binman.dtsi b/arch/arm/dts/k3-am642-gemini-binman.dtsi -index 38627882ea..a06dc706b3 100644 ---- a/arch/arm/dts/k3-am642-gemini-binman.dtsi -+++ b/arch/arm/dts/k3-am642-gemini-binman.dtsi -@@ -13,10 +13,10 @@ - #define UBOOT_IMG "u-boot.img" - - #define SPL_NODTB "spl/u-boot-spl-nodtb.bin" --#define SPL_AM642_GEMINI_DTB "spl/dts/k3-am642-gemini-v1.dtb" -+#define SPL_AM642_GEMINI_DTB "spl/dts/k3-am642-netmodule-hw34.dtb" - - #define UBOOT_NODTB "u-boot-nodtb.bin" --#define AM642_GEMINI_DTB "arch/arm/dts/k3-am642-gemini-v1.dtb" -+#define AM642_GEMINI_DTB "arch/arm/dts/k3-am642-netmodule-hw34.dtb" - - &binman { - ti-spl { -diff --git a/arch/arm/dts/k3-am642-gemini-v1.dts b/arch/arm/dts/k3-am642-netmodule-hw34.dts -similarity index 99% -rename from arch/arm/dts/k3-am642-gemini-v1.dts -rename to arch/arm/dts/k3-am642-netmodule-hw34.dts -index d134e3a712..1608c3bf9d 100644 ---- a/arch/arm/dts/k3-am642-gemini-v1.dts -+++ b/arch/arm/dts/k3-am642-netmodule-hw34.dts -@@ -12,7 +12,7 @@ - #include "k3-am642.dtsi" - - / { -- compatible = "ti,am642-gemini", "ti,am642"; -+ compatible = "netmodule,hw34", "ti,am642"; - model = "NetModule AM642 based Gemini"; - - aliases { -diff --git a/arch/arm/dts/k3-am642-r5-gemini-v1.dts b/arch/arm/dts/k3-am642-r5-netmodule-hw34.dts -similarity index 100% -rename from arch/arm/dts/k3-am642-r5-gemini-v1.dts -rename to arch/arm/dts/k3-am642-r5-netmodule-hw34.dts -diff --git a/configs/am64x_gemini_a53_defconfig b/configs/am64x_netmodule_hw34_a53_defconfig -similarity index 98% -rename from configs/am64x_gemini_a53_defconfig -rename to configs/am64x_netmodule_hw34_a53_defconfig -index 900f29d7c1..acf5a340dc 100644 ---- a/configs/am64x_gemini_a53_defconfig -+++ b/configs/am64x_netmodule_hw34_a53_defconfig -@@ -14,7 +14,7 @@ CONFIG_ENV_SIZE=0x20000 - CONFIG_ENV_OFFSET=0x3e0000 - CONFIG_DM_GPIO=y - CONFIG_SPL_DM_SPI=y --CONFIG_DEFAULT_DEVICE_TREE="k3-am642-gemini-v1" -+CONFIG_DEFAULT_DEVICE_TREE="k3-am642-netmodule-hw34" - CONFIG_SPL_TEXT_BASE=0x80080000 - CONFIG_SPL_MMC=y - CONFIG_SPL_SERIAL=y -diff --git a/configs/am64x_gemini_r5_defconfig b/configs/am64x_netmodule_hw34_r5_defconfig -similarity index 98% -rename from configs/am64x_gemini_r5_defconfig -rename to configs/am64x_netmodule_hw34_r5_defconfig -index 44c0364eef..c7e66a18e8 100644 ---- a/configs/am64x_gemini_r5_defconfig -+++ b/configs/am64x_netmodule_hw34_r5_defconfig -@@ -11,7 +11,7 @@ CONFIG_TARGET_AM642_R5_GEMINI=y - CONFIG_DM_GPIO=y - CONFIG_SPL_DM_SPI=y - CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000 --CONFIG_DEFAULT_DEVICE_TREE="k3-am642-r5-gemini-v1" -+CONFIG_DEFAULT_DEVICE_TREE="k3-am642-r5-netmodule-hw34" - CONFIG_SPL_TEXT_BASE=0x70000000 - CONFIG_SPL_MMC=y - CONFIG_SPL_SERIAL=y diff --git a/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule/0001-rename-k3-am642-gemini-v1.dts-to-k3-am642-netmodule-.patch b/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule/0001-rename-k3-am642-gemini-v1.dts-to-k3-am642-netmodule-.patch deleted file mode 100644 index 9112386..0000000 --- a/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule/0001-rename-k3-am642-gemini-v1.dts-to-k3-am642-netmodule-.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 04d19014f019b6e5b3236b0f0d31d1df18ffeeca Mon Sep 17 00:00:00 2001 -From: Samuel Dolt -Date: Wed, 24 May 2023 15:59:34 +0200 -Subject: [PATCH] rename k3-am642-gemini-v1.dts to k3-am642-netmodule-hw34.dts - ---- - .../ti/{k3-am642-gemini-v1.dts => k3-am642-netmodule-hw34.dts} | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - rename arch/arm64/boot/dts/ti/{k3-am642-gemini-v1.dts => k3-am642-netmodule-hw34.dts} (99%) - -diff --git a/arch/arm64/boot/dts/ti/k3-am642-gemini-v1.dts b/arch/arm64/boot/dts/ti/k3-am642-netmodule-hw34.dts -similarity index 99% -rename from arch/arm64/boot/dts/ti/k3-am642-gemini-v1.dts -rename to arch/arm64/boot/dts/ti/k3-am642-netmodule-hw34.dts -index bc34523f7006..bca213661615 100644 ---- a/arch/arm64/boot/dts/ti/k3-am642-gemini-v1.dts -+++ b/arch/arm64/boot/dts/ti/k3-am642-netmodule-hw34.dts -@@ -13,7 +13,7 @@ - #include "k3-am642.dtsi" - - / { -- compatible = "ti,am642-gemini-v1", "ti,am642"; -+ compatible = "netmodule,hw34", "ti,am642"; - model = "NetModule AM642 based GEMINI V1"; - - chosen { diff --git a/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule_git-5.10-ti.bb b/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-ti-coreos_git-5.10.bb similarity index 73% rename from layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule_git-5.10-ti.bb rename to layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-ti-coreos_git-5.10.bb index c74bfae..fd1867e 100644 --- a/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-netmodule_git-5.10-ti.bb +++ b/layers/meta-netmodule-coreos-bsp/recipes-kernel/linux/linux-ti-coreos_git-5.10.bb @@ -3,10 +3,9 @@ COMPATIBLE_MACHINE = "k3" inherit kernel -SRC_URI = "git://gitlab.netmodule.intranet/oem-linux/linux-netmodule.git;protocol=ssh;user=git;branch=5.10/ti/base \ - file://0001-rename-k3-am642-gemini-v1.dts-to-k3-am642-netmodule-.patch \ +SRC_URI = "git://bitbucket.gad.local:7999/ico/ti-linux-kernel.git;protocol=ssh;user=git;branch=coreos/5.10 \ " -SRCREV = "0417c6736055dcd90c7fc33b7bec5b77b647ab05" +SRCREV = "1debdf5926e98255e7c97e3c160a91f3aa094ffc" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" From e29f9f33d9245a8c1f5f63d1c9018630ad014750 Mon Sep 17 00:00:00 2001 From: Alexandre Bard Date: Mon, 12 Feb 2024 17:38:49 +0100 Subject: [PATCH 6/8] feat: update meta-ti and support board rev B Update to release 09_00_00_03. Including u-boot 2023.04 Excluding the kernel (6.1 in the SDK, we are staying on 5.10) https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/09_00_00_03/exports/docs/devices/AM64X/Release_Specific_Release_Notes.html Update u-boot --- external-layers/meta-ti | 2 +- .../coreos-image-swupdate-am64xx.bbclass | 8 +- .../include/netmodule-am64xx-common.inc | 2 - .../machine/include/netmodule-am64xx-k3.inc | 2 +- .../machine/include/netmodule-am64xx-k3r5.inc | 9 +- ...k3-ddrss-Fix-a-ddr4-controller-stall.patch | 43 - ...mini-board-add-board-and-device-tree.patch | 1845 ----------------- ...2023.01.bb => u-boot-ti-coreos_2023.04.bb} | 14 +- 8 files changed, 14 insertions(+), 1911 deletions(-) delete mode 100644 layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0001-ram-k3-ddrss-Fix-a-ddr4-controller-stall.patch delete mode 100644 layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0002-gemini-board-add-board-and-device-tree.patch rename layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/{u-boot-ti-coreos_2023.01.bb => u-boot-ti-coreos_2023.04.bb} (51%) diff --git a/external-layers/meta-ti b/external-layers/meta-ti index 0f9035a..2e3ffb7 160000 --- a/external-layers/meta-ti +++ b/external-layers/meta-ti @@ -1 +1 @@ -Subproject commit 0f9035a628c10ec0e0656387989e99b1365f184f +Subproject commit 2e3ffb73630f4ff78227822bdb4c23e75a720223 diff --git a/layers/meta-netmodule-coreos-bsp/classes/coreos-image-swupdate-am64xx.bbclass b/layers/meta-netmodule-coreos-bsp/classes/coreos-image-swupdate-am64xx.bbclass index cb7ae92..3d881b3 100644 --- a/layers/meta-netmodule-coreos-bsp/classes/coreos-image-swupdate-am64xx.bbclass +++ b/layers/meta-netmodule-coreos-bsp/classes/coreos-image-swupdate-am64xx.bbclass @@ -1,8 +1,8 @@ -SWUPDATE_IMAGES += "tiboot3" +SWUPDATE_IMAGES += "tiboot3-am64x-gemini-b" SWUPDATE_IMAGES += "tispl" SWUPDATE_IMAGES += "u-boot-${MACHINE}" -SWUPDATE_IMAGES_FSTYPES[tiboot3] = ".bin" +SWUPDATE_IMAGES_FSTYPES[tiboot3-am64x-gemini-b] = ".bin" SWUPDATE_IMAGES_FSTYPES[tispl] = ".bin" python () { @@ -20,12 +20,12 @@ def coreos_swupdate_extends_images_for_am64xx(d,s): return [ { - "filename" : "tiboot3.bin", + "filename" : "tiboot3-am64x-gemini-b.bin", "installed-directly" : "true", "device" : "/dev/mmcblk0boot0", "offset": str(OFFSET[0]), "type" : "raw", - "sha256" : swupdate_get_sha256(d, s, "tiboot3.bin"), + "sha256" : swupdate_get_sha256(d, s, "tiboot3-am64x-gemini-b.bin"), }, { "filename" : "tispl.bin", diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc index 4f9aebe..bd89ec5 100644 --- a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-common.inc @@ -1,8 +1,6 @@ # This file contains the part of the configuration that is common to all # board based on the Gemini platform and that are the same for both # the Cortex-A53 and Cortex-R5 core (Gemini use a multi-arch SOC) -TI_LINUX_FW_SRCREV = "0f4905088d24e474063f33777559149e11538be5" -K3_IMAGE_GEN_SRCREV ?= "2308bfb01e7bd3e03514cb33f06180dd9bb79121" PREFERRED_PROVIDER_virtual/bootloader = "u-boot-ti-coreos" PREFERRED_PROVIDER_u-boot = "u-boot-ti-coreos" diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc index 91c527b..70b9a40 100644 --- a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3.inc @@ -6,7 +6,7 @@ WKS_FILE ?= "" require conf/machine/include/k3.inc -require conf/machine/include/netmodule-am64xx-common.inc +require netmodule-am64xx-common.inc # Workarround to remove wic related settings added to IMAGE_FSTYPE in k3.inc # without too much risk of breaking a distro or local config (as remove) diff --git a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc index 53cb775..d8da30d 100644 --- a/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc +++ b/layers/meta-netmodule-coreos-bsp/conf/machine/include/netmodule-am64xx-k3r5.inc @@ -2,11 +2,12 @@ # board based on the Gemini platform and that are the Cortex-R5 core. require conf/machine/include/k3r5.inc -require conf/machine/include/netmodule-am64xx-common.inc +require netmodule-am64xx-common.inc -SYSFW_SOC = "am64x" -SYSFW_CONFIG = "evm" -SYSFW_SUFFIX = "gp" +# A variant +#SPL_BINARY = "tiboot3-am64x-gemini.${SPL_SUFFIX}" +# B variant +SPL_BINARY = "tiboot3-am64x-gemini-b.${SPL_SUFFIX}" # Sanity checks don't apply for real time cores INHERIT:remove = "coreos-sanity" diff --git a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0001-ram-k3-ddrss-Fix-a-ddr4-controller-stall.patch b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0001-ram-k3-ddrss-Fix-a-ddr4-controller-stall.patch deleted file mode 100644 index 1b13919..0000000 --- a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0001-ram-k3-ddrss-Fix-a-ddr4-controller-stall.patch +++ /dev/null @@ -1,43 +0,0 @@ -From cf50887c0d4053d5a454971633b1f71d477ebc6b Mon Sep 17 00:00:00 2001 -From: Stefan Eichenberger -Date: Tue, 7 Feb 2023 09:20:15 +0100 -Subject: [PATCH] ram: k3-ddrss: Fix a ddr4 controller stall - -The DDR4 controller might stall indefinitely if we access the same -register twice withing a short time interval. This commit makes sure we -reuse the previously read value so that we don't have to access twice. -See this article for more information: -https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1057242/am6442-access-to-ddr4-controller-register-stalls-indefinitely-while-in-lpddr4-frequency-update ---- - drivers/ram/k3-ddrss/k3-ddrss.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/drivers/ram/k3-ddrss/k3-ddrss.c b/drivers/ram/k3-ddrss/k3-ddrss.c -index e8b7aec9e0..b4acb3aea6 100644 ---- a/drivers/ram/k3-ddrss/k3-ddrss.c -+++ b/drivers/ram/k3-ddrss/k3-ddrss.c -@@ -241,15 +241,13 @@ static void k3_lpddr4_freq_update(struct k3_ddrss_desc *ddrss) - } - } - -+static u32 dram_class = DENALI_CTL_0_DRAM_CLASS_LPDDR4; - static void k3_lpddr4_ack_freq_upd_req(const lpddr4_privatedata *pd) - { -- u32 dram_class; - struct k3_ddrss_desc *ddrss = (struct k3_ddrss_desc *)pd->ddr_instance; - - debug("--->>> LPDDR4 Initialization is in progress ... <<<---\n"); - -- dram_class = k3_lpddr4_read_ddr_type(pd); -- - switch (dram_class) { - case DENALI_CTL_0_DRAM_CLASS_DDR4: - break; -@@ -263,7 +261,6 @@ static void k3_lpddr4_ack_freq_upd_req(const lpddr4_privatedata *pd) - - static int k3_ddrss_init_freq(struct k3_ddrss_desc *ddrss) - { -- u32 dram_class; - int ret; - lpddr4_privatedata *pd = &ddrss->pd; - diff --git a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0002-gemini-board-add-board-and-device-tree.patch b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0002-gemini-board-add-board-and-device-tree.patch deleted file mode 100644 index 02b88c2..0000000 --- a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos/0002-gemini-board-add-board-and-device-tree.patch +++ /dev/null @@ -1,1845 +0,0 @@ -From 985be59763483746f159e17dd62a6a90083edebf Mon Sep 17 00:00:00 2001 -From: Stefan Eichenberger -Date: Tue, 7 Feb 2023 09:24:16 +0100 -Subject: [PATCH] gemini: board: add board and device tree - -Add gemini as new am64x board including, board configuration, devicetree -and configuration. - ---- - arch/arm/dts/Makefile | 4 +- - arch/arm/dts/k3-am642-gemini-binman.dtsi | 159 +++++++ - arch/arm/dts/k3-am642-gemini-u-boot.dtsi | 135 ++++++ - arch/arm/dts/k3-am642-netmodule-hw34.dts | 476 ++++++++++++++++++++ - arch/arm/dts/k3-am642-r5-netmodule-hw34.dts | 226 ++++++++++ - arch/arm/mach-k3/Kconfig | 2 + - arch/arm/mach-k3/common.c | 5 + - board/nm/am64x/Kconfig | 60 +++ - board/nm/am64x/Makefile | 9 + - board/nm/am64x/gemini.c | 166 +++++++ - board/nm/am64x/sysreset.c | 60 +++ - configs/am64x_netmodule_hw34_a53_defconfig | 179 ++++++++ - configs/am64x_netmodule_hw34_r5_defconfig | 170 +++++++ - include/configs/am64x_gemini.h | 61 +++ - 14 files changed, 1711 insertions(+), 1 deletion(-) - create mode 100644 arch/arm/dts/k3-am642-gemini-binman.dtsi - create mode 100644 arch/arm/dts/k3-am642-gemini-u-boot.dtsi - create mode 100644 arch/arm/dts/k3-am642-netmodule-hw34.dts - create mode 100644 arch/arm/dts/k3-am642-r5-netmodule-hw34.dts - create mode 100644 board/nm/am64x/Kconfig - create mode 100644 board/nm/am64x/Makefile - create mode 100644 board/nm/am64x/gemini.c - create mode 100644 board/nm/am64x/sysreset.c - create mode 100644 configs/am64x_netmodule_hw34_a53_defconfig - create mode 100644 configs/am64x_netmodule_hw34_r5_defconfig - create mode 100644 include/configs/am64x_gemini.h - -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 43951a7731..2f6f09a4f4 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -1254,7 +1254,9 @@ dtb-$(CONFIG_SOC_K3_J721S2) += k3-j721s2-common-proc-board.dtb\ - dtb-$(CONFIG_SOC_K3_AM642) += k3-am642-evm.dtb \ - k3-am642-r5-evm.dtb \ - k3-am642-sk.dtb \ -- k3-am642-r5-sk.dtb -+ k3-am642-r5-sk.dtb \ -+ k3-am642-netmodule-hw34.dtb \ -+ k3-am642-r5-netmodule-hw34.dtb - - dtb-$(CONFIG_SOC_K3_AM625) += k3-am625-sk.dtb \ - k3-am625-r5-sk.dtb -diff --git a/arch/arm/dts/k3-am642-gemini-binman.dtsi b/arch/arm/dts/k3-am642-gemini-binman.dtsi -new file mode 100644 -index 0000000000..a06dc706b3 ---- /dev/null -+++ b/arch/arm/dts/k3-am642-gemini-binman.dtsi -@@ -0,0 +1,159 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/ -+ */ -+ -+/ { -+ binman: binman { -+ multiple-images; -+ }; -+}; -+ -+#define TISPL "tispl.bin" -+#define UBOOT_IMG "u-boot.img" -+ -+#define SPL_NODTB "spl/u-boot-spl-nodtb.bin" -+#define SPL_AM642_GEMINI_DTB "spl/dts/k3-am642-netmodule-hw34.dtb" -+ -+#define UBOOT_NODTB "u-boot-nodtb.bin" -+#define AM642_GEMINI_DTB "arch/arm/dts/k3-am642-netmodule-hw34.dtb" -+ -+&binman { -+ ti-spl { -+ filename = TISPL; -+ pad-byte = <0xff>; -+ -+ fit { -+ description = "Configuration to load ATF and SPL"; -+ #address-cells = <1>; -+ -+ images { -+ -+ atf { -+ description = "ARM Trusted Firmware"; -+ type = "firmware"; -+ arch = "arm64"; -+ compression = "none"; -+ os = "arm-trusted-firmware"; -+ load = ; -+ entry = ; -+ atf-bl31 { -+ filename = "bl31.bin"; -+ }; -+ }; -+ -+ tee { -+ description = "OPTEE"; -+ type = "tee"; -+ arch = "arm64"; -+ compression = "none"; -+ os = "tee"; -+ load = <0x9e800000>; -+ entry = <0x9e800000>; -+ tee-os { -+ filename = "tee-pager_v2.bin"; -+ }; -+ }; -+ -+ dm { -+ description = "DM binary"; -+ type = "firmware"; -+ arch = "arm32"; -+ compression = "none"; -+ os = "DM"; -+ load = <0x89000000>; -+ entry = <0x89000000>; -+ blob-ext { -+ filename = "/dev/null"; -+ }; -+ }; -+ -+ spl { -+ description = "SPL (64-bit)"; -+ type = "standalone"; -+ os = "U-Boot"; -+ arch = "arm64"; -+ compression = "none"; -+ load = <0x80080000>; -+ entry = <0x80080000>; -+ blob { -+ filename = SPL_NODTB; -+ }; -+ }; -+ -+ fdt-1 { -+ description = "k3-am642-gemini"; -+ type = "flat_dt"; -+ arch = "arm"; -+ compression = "none"; -+ blob { -+ filename = SPL_AM642_GEMINI_DTB; -+ }; -+ }; -+ }; -+ -+ configurations { -+ default = "conf-1"; -+ -+ conf-1 { -+ description = "k3-am642-gemini"; -+ firmware = "atf"; -+ loadables = "tee", "dm", "spl"; -+ fdt = "fdt-1"; -+ }; -+ }; -+ }; -+ }; -+}; -+ -+&binman { -+ u-boot { -+ filename = UBOOT_IMG; -+ pad-byte = <0xff>; -+ -+ fit { -+ description = "FIT image with multiple configurations"; -+ -+ images { -+ uboot { -+ description = "U-Boot for am64x board"; -+ type = "firmware"; -+ os = "u-boot"; -+ arch = "arm"; -+ compression = "none"; -+ load = ; -+ blob { -+ filename = UBOOT_NODTB; -+ }; -+ hash { -+ algo = "crc32"; -+ }; -+ }; -+ -+ fdt-1 { -+ description = "k3-am642-gemini"; -+ type = "flat_dt"; -+ arch = "arm"; -+ compression = "none"; -+ blob { -+ filename = AM642_GEMINI_DTB; -+ }; -+ hash { -+ algo = "crc32"; -+ }; -+ }; -+ }; -+ -+ configurations { -+ default = "conf-1"; -+ -+ conf-1 { -+ description = "k3-am642-gemini"; -+ firmware = "uboot"; -+ loadables = "uboot"; -+ fdt = "fdt-1"; -+ }; -+ }; -+ }; -+ }; -+}; -diff --git a/arch/arm/dts/k3-am642-gemini-u-boot.dtsi b/arch/arm/dts/k3-am642-gemini-u-boot.dtsi -new file mode 100644 -index 0000000000..e061ebb06d ---- /dev/null -+++ b/arch/arm/dts/k3-am642-gemini-u-boot.dtsi -@@ -0,0 +1,135 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/ -+ */ -+#include -+ -+#include "k3-am642-gemini-binman.dtsi" -+ -+/ { -+ chosen { -+ stdout-path = "serial2:115200n8"; -+ tick-timer = &timer1; -+ }; -+ -+ memory@80000000 { -+ u-boot,dm-spl; -+ }; -+}; -+ -+&cbass_main{ -+ u-boot,dm-spl; -+ timer1: timer@2400000 { -+ compatible = "ti,omap5430-timer"; -+ reg = <0x0 0x2400000 0x0 0x80>; -+ ti,timer-alwon; -+ clock-frequency = <200000000>; -+ u-boot,dm-spl; -+ }; -+}; -+ -+&main_conf { -+ u-boot,dm-spl; -+ chipid@14 { -+ u-boot,dm-spl; -+ }; -+}; -+ -+&main_pmx0 { -+ u-boot,dm-spl; -+}; -+ -+&main_uart0 { -+ u-boot,dm-spl; -+}; -+ -+&usb0 { -+ dr_mode="peripheral"; -+ u-boot,dm-spl; -+}; -+ -+&usbss0 { -+ u-boot,dm-spl; -+}; -+ -+&main_mmc1_pins_default { -+ u-boot,dm-spl; -+}; -+ -+&main_usb0_pins_default { -+ u-boot,dm-spl; -+}; -+ -+&dmss { -+ u-boot,dm-spl; -+}; -+ -+&secure_proxy_main { -+ u-boot,dm-spl; -+}; -+ -+&dmsc { -+ u-boot,dm-spl; -+ k3_sysreset: sysreset-controller { -+ compatible = "ti,sci-sysreset"; -+ u-boot,dm-spl; -+ status = "disabled"; -+ }; -+}; -+ -+&k3_pds { -+ u-boot,dm-spl; -+}; -+ -+&k3_clks { -+ u-boot,dm-spl; -+}; -+ -+&k3_reset { -+ u-boot,dm-spl; -+}; -+ -+&sdhci0 { -+ u-boot,dm-spl; -+}; -+ -+&sdhci1 { -+ no-1-8-v; -+ u-boot,dm-spl; -+}; -+ -+&cpsw3g { -+ reg = <0x0 0x8000000 0x0 0x200000>, -+ <0x0 0x43000200 0x0 0x8>; -+ reg-names = "cpsw_nuss", "mac_efuse"; -+ /delete-property/ ranges; -+ -+ cpsw-phy-sel@04044 { -+ compatible = "ti,am64-phy-gmii-sel"; -+ reg = <0x0 0x43004044 0x0 0x8>; -+ }; -+}; -+ -+&cpsw_port2 { -+ status = "disabled"; -+}; -+ -+&main_bcdma { -+ u-boot,dm-spl; -+}; -+ -+&main_pktdma { -+ u-boot,dm-spl; -+}; -+ -+&fss { -+ u-boot,dm-spl; -+}; -+ -+&main_gpio0 { -+ u-boot,dm-spl; -+}; -+ -+&main_gpio1 { -+ u-boot,dm-spl; -+}; -diff --git a/arch/arm/dts/k3-am642-netmodule-hw34.dts b/arch/arm/dts/k3-am642-netmodule-hw34.dts -new file mode 100644 -index 0000000000..be33f6ab87 ---- /dev/null -+++ b/arch/arm/dts/k3-am642-netmodule-hw34.dts -@@ -0,0 +1,476 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Copyright (C) 2021 Texas Instruments Incorporated - https://www.ti.com/ -+ */ -+ -+/dts-v1/; -+ -+#include -+#include -+#include -+#include -+#include "k3-am642.dtsi" -+ -+/ { -+ compatible = "netmodule,hw34", "ti,am642"; -+ model = "NetModule AM642 based Gemini"; -+ -+ aliases { -+ i2c0 = &main_i2c0; -+ i2c1 = &main_i2c1; -+ i2c2 = &main_i2c2; -+ }; -+ -+ chosen { -+ stdout-path = "serial2:115200n8"; -+ bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000"; -+ }; -+ -+ memory@80000000 { -+ device_type = "memory"; -+ /* 1G RAM */ -+ reg = <0x00000000 0x80000000 0x00000000 0x40000000>; -+ -+ }; -+ -+ reserved-memory { -+ #address-cells = <2>; -+ #size-cells = <2>; -+ ranges; -+ -+ secure_ddr: optee@9e800000 { -+ reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */ -+ alignment = <0x1000>; -+ no-map; -+ }; -+ }; -+ -+ config { -+ u-boot,mmc-env-offset = <0x3e0000>; /* 4MB partition, we put it into the last 128 kB */ -+ }; -+ -+ gemini-sysreset { -+ compatible = "gemini-sysreset"; -+ }; -+}; -+ -+&main_pmx0 { -+ main_mmc1_pins_default: main-mmc1-pins-default { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x0294, PIN_INPUT, 0) /* (J19) MMC1_CMD */ -+ AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* (#N/A) MMC1_CLKLB */ -+ AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */ -+ AM64X_IOPAD(0x0288, PIN_INPUT, 0) /* (K21) MMC1_DAT0 */ -+ AM64X_IOPAD(0x0284, PIN_INPUT, 0) /* (L21) MMC1_DAT1 */ -+ AM64X_IOPAD(0x0280, PIN_INPUT, 0) /* (K19) MMC1_DAT2 */ -+ AM64X_IOPAD(0x027c, PIN_INPUT, 0) /* (K18) MMC1_DAT3 */ -+ AM64X_IOPAD(0x0298, PIN_INPUT, 0) /* (D19) MMC1_SDCD */ -+ >; -+ }; -+ -+ main_uart0_pins_default: main-uart0-pins-default { -+ u-boot,dm-spl; -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */ -+ AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */ -+ >; -+ }; -+ -+ gpio0_pins: gpio0-pins { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x0090, PIN_OUTPUT, 7) /* (P17) GPIO0_35 */ -+ AM64X_IOPAD(0x008C, PIN_INPUT, 7) /* (T21) GPIO0_34 */ -+ AM64X_IOPAD(0x00A0, PIN_OUTPUT, 7) /* (N16) GPIO0_39 */ -+ AM64X_IOPAD(0x0098, PIN_INPUT, 7) /* (W19) GPIO0_37 */ -+ AM64X_IOPAD(0x009C, PIN_INPUT, 7) /* (Y18) GPIO0_38 */ -+ AM64X_IOPAD(0x0094, PIN_INPUT, 7) /* (Y19) GPIO0_36 */ -+ AM64X_IOPAD(0x00A8, PIN_INPUT, 7) /* (R19) GPIO0_41 */ -+ AM64X_IOPAD(0x00AC, PIN_INPUT, 7) /* (R20) GPIO0_42 */ -+ AM64X_IOPAD(0x00A4, PIN_INPUT, 7) /* (N17) GPIO0_40 */ -+ -+ AM64X_IOPAD(0x011c, PIN_INPUT, 7) /* (AA13) GPIO0_70 */ -+ AM64X_IOPAD(0x0128, PIN_OUTPUT, 7) /* (U12) GPIO0_73 */ -+ AM64X_IOPAD(0x0150, PIN_INPUT, 7) /* (Y13) GPIO0_20 */ -+ AM64X_IOPAD(0x0154, PIN_INPUT, 7) /* (V12) GPIO0_84 */ -+ AM64X_IOPAD(0x00d8, PIN_INPUT, 7) /* (W13) GPIO0_53 */ -+ AM64X_IOPAD(0x00cc, PIN_INPUT, 7) /* (V13) GPIO0_50 */ -+ -+ AM64X_IOPAD(0x0124, PIN_OUTPUT, 7) /* (V15) GPIO0_72 */ -+ AM64X_IOPAD(0x012c, PIN_OUTPUT, 7) /* (V14) GPIO0_74 */ -+ AM64X_IOPAD(0x0130, PIN_INPUT, 7) /* (W14) GPIO0_75 */ -+ AM64X_IOPAD(0x014c, PIN_OUTPUT, 7) /* (AA14) GPIO0_19 */ -+ AM64X_IOPAD(0x00e0, PIN_OUTPUT, 7) /* (U14) GPIO0_55 */ -+ AM64X_IOPAD(0x00dc, PIN_OUTPUT, 7) /* (U15) GPIO0_54 */ -+ -+ AM64X_IOPAD(0x0114, PIN_INPUT, 7) /* (Y12) GPIO0_68 */ -+ AM64X_IOPAD(0x0118, PIN_OUTPUT, 7) /* (W12) GPIO0_69 */ -+ -+ -+ AM64X_IOPAD(0x00bc, PIN_INPUT, 7) /* (U8) GPIO0_46 */ -+ AM64X_IOPAD(0x00c0, PIN_OUTPUT, 7) /* (W8) GPIO0_47 */ -+ AM64X_IOPAD(0x00c4, PIN_OUTPUT, 7) /* (W8) GPIO0_48 */ -+ AM64X_IOPAD(0x00c8, PIN_OUTPUT, 7) /* (W8) GPIO0_49 */ -+ AM64X_IOPAD(0x00fc, PIN_INPUT, 7) /* (U7) GPIO0_62 */ -+ -+ AM64X_IOPAD(0x002c, PIN_OUTPUT, 7) /* (L19) GPIO0_11 */ -+ AM64X_IOPAD(0x0030, PIN_OUTPUT, 7) /* (L18) GPIO0_12 */ -+ AM64X_IOPAD(0x0034, PIN_OUTPUT, 7) /* (K17) GPIO0_13 */ -+ AM64X_IOPAD(0x0038, PIN_OUTPUT, 7) /* (L17) GPIO0_14 */ -+ -+ AM64X_IOPAD(0x0014, PIN_OUTPUT, 7) /* (M20) GPIO0_5 */ -+ AM64X_IOPAD(0x0018, PIN_OUTPUT, 7) /* (M21) GPIO0_6 */ -+ AM64X_IOPAD(0x001c, PIN_OUTPUT, 7) /* (P21) GPIO0_7 */ -+ AM64X_IOPAD(0x0020, PIN_OUTPUT, 7) /* (P20) GPIO0_8 */ -+ AM64X_IOPAD(0x0024, PIN_OUTPUT, 7) /* (N18) GPIO0_9 */ -+ AM64X_IOPAD(0x0028, PIN_OUTPUT, 7) /* (M17) GPIO0_10 */ -+ -+ >; -+ }; -+ -+ gpio1_pins: gpio1-pins { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x01a8, PIN_OUTPUT, 7) /* (V1) PRG0_PRU0_GPO18.GPIO1_18 */ -+ AM64X_IOPAD(0x01ac, PIN_OUTPUT, 7) /* (W1) PRG0_PRU0_GPO19.GPIO1_19 */ -+ >; -+ }; -+ -+ main_i2c2_pins_default: main-i2c2-pins-default { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x00B0, PIN_INPUT, 1) /* (P19) I2C2_SCL */ -+ AM64X_IOPAD(0x00B4, PIN_INPUT, 1) /* (R21) I2C2_SDA */ -+ >; -+ }; -+ -+ rmii1_pins_default: rmii1-pins-default { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x01cc, PIN_INPUT, 5) /* (W5) PRG0_PRU1_GPO7.RMII1_RD0 */ -+ AM64X_IOPAD(0x01d4, PIN_INPUT, 5) /* (Y5) PRG0_PRU1_GPO9.RMII1_RD1 */ -+ AM64X_IOPAD(0x01d8, PIN_OUTPUT, 5) /* (V6) PRG0_PRU1_GPO10.RMII1_TD0 */ -+ AM64X_IOPAD(0x01f4, PIN_OUTPUT, 5) /* (V5) PRG0_PRU1_GPO17.RMII1_TD1 */ -+ AM64X_IOPAD(0x01fc, PIN_INPUT, 5) /* (R2) PRG0_PRU1_GPO17.RMII1_CRS_DV*/ -+ AM64X_IOPAD(0x01f8, PIN_INPUT, 5) /* (P5) PRG0_PRU1_GPO17.RMII1_TX_EN */ -+ AM64X_IOPAD(0x0188, PIN_INPUT, 5) /* (AA5) PRG0_PRU0_GPO10.RMII1_REF_CLK*/ -+ AM64X_IOPAD(0x00d4, PIN_OUTPUT, 5) /* (U13) CLKOUT0 */ -+ >; -+ }; -+ -+ mdio0_pins_default: mdio0-pins-default { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x015c, PIN_OUTPUT_PULLUP, 4) /* (Y6) PRG1_MDIO0_MDC.MDIO0_MDC */ -+ AM64X_IOPAD(0x0158, PIN_INPUT, 4) /* (AA6) PRG1_MDIO0_MDIO.MDIO0_MDIO */ -+ -+ AM64X_IOPAD(0x01ac, PIN_OUTPUT_PULLUP, 7) /* (W1) GPIO1_19 */ -+ >; -+ }; -+ -+ main_usb0_pins_default: main-usb0-pins-default { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */ -+ >; -+ }; -+ -+ main_i2c1_pins_default: main-i2c1-pins-default { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */ -+ AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */ -+ >; -+ }; -+ -+ -+ main_i2c0_pins_default: main-i2c0-pins-default { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x0260, PIN_INPUT_PULLUP, 0) /* (P19) I2C2_SCL */ -+ AM64X_IOPAD(0x0264, PIN_INPUT_PULLUP, 0) /* (R21) I2C2_SDA */ -+ >; -+ }; -+}; -+ -+&usbss0 { -+ ti,vbus-divider; -+ ti,usb2-only; -+}; -+ -+&usb0 { -+ dr_mode = "otg"; -+ maximum-speed = "high-speed"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&main_usb0_pins_default>; -+}; -+ -+&main_i2c0 { -+ status = "okay"; -+ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&main_i2c0_pins_default>; -+ clock-frequency = <100000>; -+ -+ da9063: pmic@58 { -+ compatible = "dlg,da9063"; -+ reg = <0x58>; -+ -+ regulators { -+ vddcore_reg: bcore1 { -+ regulator-min-microvolt = <850000>; -+ regulator-max-microvolt = <850000>; -+ regulator-ramp-delay = <2>; -+ regulator-name = "DA9063_CORE"; -+ regulator-always-on; -+ }; -+ -+ vddar_reg: bcore2 { -+ regulator-min-microvolt = <850000>; -+ regulator-max-microvolt = <850000>; -+ regulator-ramp-delay = <2>; -+ regulator-name = "DA9063_AR"; -+ regulator-always-on; -+ }; -+ -+ vdd_1v8_reg: bperi { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-ramp-delay = <2>; -+ regulator-always-on; -+ }; -+ -+ vdd_3v3_1_reg: bio { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-always-on; -+ }; -+ -+ vdd_3v3_2_reg: bmem { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-always-on; -+ }; -+ -+ vdd_1v1_reg: bpro { -+ regulator-min-microvolt = <1100000>; -+ regulator-max-microvolt = <1100000>; -+ regulator-always-on; -+ }; -+ -+ vdd_gnss_reg: ldo3 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-always-on; -+ }; -+ -+ vdd_sensors_reg: ldo5 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-always-on; -+ }; -+ -+ vdd_stby_reg: ldo6 { -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-always-on; -+ regulator-boot-on; -+ }; -+ -+ vdd_vdda: ldo10 { -+ regulator-min-microvolt = <1800000>; -+ regulator-max-microvolt = <1800000>; -+ regulator-always-on; -+ regulator-boot-on; -+ }; -+ -+ vdd_5v_can_reg: ldo11 { -+ /* It is actually 5V but the driver does not support it */ -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-always-on; -+ regulator-boot-on; -+ }; -+ }; -+ }; -+}; -+ -+/* SYS_I2C */ -+&main_i2c1 { -+ status = "okay"; -+ -+ pinctrl-names = "default"; -+ pinctrl-0 = <&main_i2c1_pins_default>; -+ clock-frequency = <400000>; -+ -+ /* There is no driver available */ -+ onewire: ds2484@18 { -+ status = "disabled"; -+ reg = <0x18>; -+ }; -+ -+ eeprom: eeprom@50 { -+ reg = <0x50>; -+ compatible = "onsemi,24c64"; -+ }; -+ -+ temp: temp@48 { -+ reg = <0x48>; -+ compatible = "national,lm75"; -+ /* vs-supply = <&vs>; */ /* Not available, maybe required then use fixed-regulator */ -+ }; -+}; -+ -+/* USER_I2C */ -+&main_i2c2 { -+ status = "okay"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&main_i2c2_pins_default>; -+ clock-frequency = <400000>; -+ -+ exp1: gpio@71 { -+ status = "okay"; -+ compatible = "nxp,pca9538"; -+ reg = <0x71>; -+ gpio-controller; -+ #gpio-cells = <2>; -+ gpio-line-names = "GPI_CTRL_PU_EN0", "GPI_CTRL_PU_EN1", -+ "GPI_CTRL_PU_EN2", "GPI_CTRL_PU_EN3", -+ "GPI_CTRL_PU_EN4", "GPI_CTRL_PU_EN5", -+ "", ""; -+ }; -+ -+ exp2: gpio@72 { -+ status = "okay"; -+ compatible = "nxp,pca9538"; -+ reg = <0x73>; -+ gpio-controller; -+ #gpio-cells = <2>; -+ gpio-line-names = "GPIO0", "GPIO1", -+ "GPIO2", "GPIO3", -+ "GPO0", "GPO1", -+ "GPO2", "GPO3"; -+ }; -+}; -+ -+&sdhci0 { -+ /* emmc */ -+ bus-width = <8>; -+ non-removable; -+ ti,driver-strength-ohm = <50>; -+ disable-wp; -+ /delete-property/ ti,otap-del-sel-hs200; -+ /delete-property/ ti,otap-del-sel-hs400; -+}; -+ -+&sdhci1 { -+ status = "disabled"; -+ pinctrl-names = "default"; -+ bus-width = <4>; -+ pinctrl-0 = <&main_mmc1_pins_default>; -+ ti,driver-strength-ohm = <50>; -+ disable-wp; -+ broken-cd; -+ /delete-property/ ti,otap-del-sel-hs200; -+ /delete-property/ ti,otap-del-sel-hs400; -+}; -+ -+&cpsw3g { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mdio0_pins_default -+ &rmii1_pins_default>; -+}; -+ -+&cpsw_port1 { -+ phy-mode = "rmii"; -+ phy-handle = <&cpsw3g_phy0>; -+}; -+ -+&cpsw3g_mdio { -+ bus_freq = <100000>; -+ cpsw3g_phy0: ethernet-phy@b1 { -+ reg = <0x01>; -+ ti,rx-internal-delay = ; -+ ti,fifo-depth = ; -+ }; -+}; -+ -+&main_gpio0 { -+ status = "okay"; -+ ti,ngpio = <87>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gpio0_pins>; -+ -+ wlan_en { -+ gpio-hog; -+ gpios = <5 GPIO_ACTIVE_HIGH>; -+ output-high; -+ line-name = "WLAN_EN"; -+ }; -+ -+ canfd0_en { -+ gpio-hog; -+ gpios = <74 GPIO_ACTIVE_HIGH>; -+ output-high; -+ line-name = "CANFD0_CTRL_EN"; -+ }; -+ -+ canfd1_en { -+ gpio-hog; -+ gpios = <72 GPIO_ACTIVE_HIGH>; -+ output-high; -+ line-name = "CANFD1_CTRL_EN"; -+ }; -+ -+ canfd0_stb { -+ gpio-hog; -+ gpios = <55 GPIO_ACTIVE_HIGH>; -+ output-low; -+ /* In V1 this is high active even though it is STB~ */ -+ line-name = "CANFD0_CTRL_STB"; -+ }; -+ -+ canfd1_stb { -+ gpio-hog; -+ gpios = <54 GPIO_ACTIVE_HIGH>; -+ output-low; -+ /* In V1 this is high active even though it is STB~ */ -+ line-name = "CANFD1_CTRL_STB"; -+ }; -+ -+ xpdr_rst { -+ gpio-hog; -+ gpios = <34 GPIO_ACTIVE_LOW>; -+ output-low; -+ line-name = "XPDR_RST"; -+ }; -+ -+ hub_rst { -+ gpio-hog; -+ gpios = <19 GPIO_ACTIVE_HIGH>; -+ output-high; -+ line-name = "HUB_RST"; -+ }; -+ -+ gnss_rst { -+ gpio-hog; -+ gpios = <39 GPIO_ACTIVE_HIGH>; -+ output-low; -+ line-name = "GNSS_RST"; -+ }; -+}; -+ -+&main_gpio1 { -+ status = "okay"; -+ ti,ngpio = <88>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gpio1_pins>; -+ -+ brdr_rst { -+ gpio-hog; -+ gpios = <18 GPIO_ACTIVE_HIGH>; -+ output-high; -+ line-name = "BRDR_RST"; -+ }; -+ -+ eth_rst { -+ gpio-hog; -+ gpios = <19 GPIO_ACTIVE_HIGH>; -+ output-high; -+ line-name = "ETH_RST"; -+ }; -+}; -+ -+#include "k3-am642-gemini-u-boot.dtsi" -diff --git a/arch/arm/dts/k3-am642-r5-netmodule-hw34.dts b/arch/arm/dts/k3-am642-r5-netmodule-hw34.dts -new file mode 100644 -index 0000000000..a199dd8069 ---- /dev/null -+++ b/arch/arm/dts/k3-am642-r5-netmodule-hw34.dts -@@ -0,0 +1,226 @@ -+// SPDX-License-Identifier: GPL-2.0 -+/* -+ * Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/ -+ */ -+ -+/dts-v1/; -+ -+#include "k3-am642.dtsi" -+#include "k3-am64-sk-lp4-1600MTs.dtsi" -+#include "k3-am64-ddr.dtsi" -+ -+/ { -+ chosen { -+ stdout-path = "serial2:115200n8"; -+ tick-timer = &timer1; -+ }; -+ -+ aliases { -+ remoteproc0 = &sysctrler; -+ remoteproc1 = &a53_0; -+ }; -+ -+ memory@80000000 { -+ device_type = "memory"; -+ /* 1G RAM */ -+ reg = <0x00000000 0x80000000 0x00000000 0x40000000>; -+ -+ u-boot,dm-spl; -+ }; -+ -+ a53_0: a53@0 { -+ compatible = "ti,am654-rproc"; -+ reg = <0x00 0x00a90000 0x00 0x10>; -+ power-domains = <&k3_pds 61 TI_SCI_PD_EXCLUSIVE>, -+ <&k3_pds 135 TI_SCI_PD_EXCLUSIVE>; -+ resets = <&k3_reset 135 0>; -+ clocks = <&k3_clks 61 0>; -+ assigned-clocks = <&k3_clks 61 0>, <&k3_clks 135 0>; -+ assigned-clock-parents = <&k3_clks 61 2>; -+ assigned-clock-rates = <200000000>, <1000000000>; -+ ti,sci = <&dmsc>; -+ ti,sci-proc-id = <32>; -+ ti,sci-host-id = <10>; -+ u-boot,dm-spl; -+ }; -+ -+ reserved-memory { -+ #address-cells = <2>; -+ #size-cells = <2>; -+ ranges; -+ -+ secure_ddr: optee@9e800000 { -+ reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */ -+ alignment = <0x1000>; -+ no-map; -+ }; -+ }; -+ -+ clk_200mhz: dummy-clock-200mhz { -+ compatible = "fixed-clock"; -+ #clock-cells = <0>; -+ clock-frequency = <200000000>; -+ u-boot,dm-spl; -+ }; -+}; -+ -+&cbass_main { -+ sysctrler: sysctrler { -+ compatible = "ti,am654-system-controller"; -+ mboxes= <&secure_proxy_main 1>, <&secure_proxy_main 0>; -+ mbox-names = "tx", "rx"; -+ u-boot,dm-spl; -+ }; -+}; -+ -+&cbass_main { -+ main_esm: esm@420000 { -+ compatible = "ti,j721e-esm"; -+ reg = <0x0 0x420000 0x0 0x1000>; -+ ti,esm-pins = <160>, <161>; -+ u-boot,dm-spl; -+ }; -+}; -+ -+&cbass_mcu { -+ u-boot,dm-spl; -+ mcu_esm: esm@4100000 { -+ compatible = "ti,j721e-esm"; -+ reg = <0x0 0x4100000 0x0 0x1000>; -+ ti,esm-pins = <0>, <1>; -+ u-boot,dm-spl; -+ }; -+}; -+ -+&main_pmx0 { -+ u-boot,dm-spl; -+ main_uart0_pins_default: main-uart0-pins-default { -+ u-boot,dm-spl; -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */ -+ AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */ -+ AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */ -+ AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */ -+ >; -+ }; -+ -+ main_mmc0_pins_default: main-mmc0-pins-default { -+ u-boot,dm-spl; -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x01a8, PIN_INPUT_PULLDOWN, 0) /* (B25) MMC0_CLK */ -+ AM64X_IOPAD(0x01aC, PIN_INPUT_PULLUP, 0) /* (B27) MMC0_CMD */ -+ AM64X_IOPAD(0x01a4, PIN_INPUT_PULLUP, 0) /* (A26) MMC0_DAT0 */ -+ AM64X_IOPAD(0x01a0, PIN_INPUT_PULLUP, 0) /* (E25) MMC0_DAT1 */ -+ AM64X_IOPAD(0x019c, PIN_INPUT_PULLUP, 0) /* (C26) MMC0_DAT2 */ -+ AM64X_IOPAD(0x0198, PIN_INPUT_PULLUP, 0) /* (A25) MMC0_DAT3 */ -+ AM64X_IOPAD(0x0194, PIN_INPUT_PULLUP, 0) /* (E24) MMC0_DAT4 */ -+ AM64X_IOPAD(0x0190, PIN_INPUT_PULLUP, 0) /* (A24) MMC0_DAT5 */ -+ AM64X_IOPAD(0x018c, PIN_INPUT_PULLUP, 0) /* (B26) MMC0_DAT6 */ -+ AM64X_IOPAD(0x0188, PIN_INPUT_PULLUP, 0) /* (D25) MMC0_DAT7 */ -+ AM64X_IOPAD(0x01b0, PIN_INPUT, 0) /* (C25) MMC0_DS */ -+ >; -+ }; -+ -+ main_mmc1_pins_default: main-mmc1-pins-default { -+ u-boot,dm-spl; -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x0294, PIN_INPUT_PULLUP, 0) /* (J19) MMC1_CMD */ -+ AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */ -+ AM64X_IOPAD(0x0288, PIN_INPUT_PULLUP, 0) /* (K21) MMC1_DAT0 */ -+ AM64X_IOPAD(0x0284, PIN_INPUT_PULLUP, 0) /* (L21) MMC1_DAT1 */ -+ AM64X_IOPAD(0x0280, PIN_INPUT_PULLUP, 0) /* (K19) MMC1_DAT2 */ -+ AM64X_IOPAD(0x027c, PIN_INPUT_PULLUP, 0) /* (K18) MMC1_DAT3 */ -+ AM64X_IOPAD(0x0298, PIN_INPUT_PULLUP, 0) /* (D19) MMC1_SDCD */ -+ AM64X_IOPAD(0x029c, PIN_INPUT_PULLUP, 0) /* (C20) MMC1_SDWP */ -+ >; -+ }; -+ -+ -+ main_usb0_pins_default: main-usb0-pins-default { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */ -+ >; -+ }; -+ -+ ospi0_pins_default: ospi0-pins-default { -+ pinctrl-single,pins = < -+ AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */ -+ AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */ -+ AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */ -+ AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */ -+ AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */ -+ AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */ -+ AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */ -+ AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */ -+ AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */ -+ AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */ -+ AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */ -+ >; -+ }; -+}; -+ -+&dmsc { -+ mboxes= <&secure_proxy_main 0>, -+ <&secure_proxy_main 1>, -+ <&secure_proxy_main 0>; -+ mbox-names = "rx", "tx", "notify"; -+ ti,host-id = <35>; -+ ti,secure-host; -+}; -+ -+&main_uart0 { -+ /delete-property/ power-domains; -+ /delete-property/ clocks; -+ /delete-property/ clock-names; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&main_uart0_pins_default>; -+ status = "okay"; -+}; -+ -+&sdhci0 { -+ /delete-property/ power-domains; -+ clocks = <&clk_200mhz>; -+ clock-names = "clk_xin"; -+ ti,driver-strength-ohm = <50>; -+ disable-wp; -+ pinctrl-0 = <&main_mmc0_pins_default>; -+ /delete-property/ ti,otap-del-sel-hs200; -+ /delete-property/ ti,otap-del-sel-hs400; -+}; -+ -+&sdhci1 { -+ /delete-property/ power-domains; -+ clocks = <&clk_200mhz>; -+ clock-names = "clk_xin"; -+ ti,driver-strength-ohm = <50>; -+ disable-wp; -+ pinctrl-0 = <&main_mmc1_pins_default>; -+}; -+ -+&main_gpio0 { -+ u-boot,dm-spl; -+ /delete-property/ power-domains; -+}; -+ -+&usbss0 { -+ ti,vbus-divider; -+ ti,usb2-only; -+}; -+ -+&usb0 { -+ dr_mode = "otg"; -+ maximum-speed = "high-speed"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&main_usb0_pins_default>; -+}; -+ -+/* EEPROM might be read before SYSFW is available */ -+&main_i2c0 { -+ /delete-property/ power-domains; -+}; -+ -+&memorycontroller { -+// ti,ddr-freq0 = <200000000>; -+}; -+ -+#include "k3-am642-gemini-u-boot.dtsi" -diff --git a/arch/arm/mach-k3/Kconfig b/arch/arm/mach-k3/Kconfig -index 171a7f2f25..694cf5da41 100644 ---- a/arch/arm/mach-k3/Kconfig -+++ b/arch/arm/mach-k3/Kconfig -@@ -188,4 +188,6 @@ source "board/ti/am62x/Kconfig" - source "board/ti/j721e/Kconfig" - source "board/siemens/iot2050/Kconfig" - source "board/ti/j721s2/Kconfig" -+ -+source "board/nm/am64x/Kconfig" - endif -diff --git a/arch/arm/mach-k3/common.c b/arch/arm/mach-k3/common.c -index 227706e8dc..8530416cec 100644 ---- a/arch/arm/mach-k3/common.c -+++ b/arch/arm/mach-k3/common.c -@@ -138,6 +138,11 @@ void init_env(void) - env_init(); - env_relocate(); - switch (spl_boot_device()) { -+ case BOOT_DEVICE_MMC1: -+ part = env_get("bootpart"); -+ env_set("storage_interface", "mmc"); -+ env_set("fw_dev_part", part); -+ break; - case BOOT_DEVICE_MMC2: - part = env_get("bootpart"); - env_set("storage_interface", "mmc"); -diff --git a/board/nm/am64x/Kconfig b/board/nm/am64x/Kconfig -new file mode 100644 -index 0000000000..bee565988a ---- /dev/null -+++ b/board/nm/am64x/Kconfig -@@ -0,0 +1,60 @@ -+# SPDX-License-Identifier: GPL-2.0+ -+# -+# Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/ -+ -+choice -+ prompt "NetModule boards" -+ optional -+ -+config TARGET_AM642_A53_GEMINI -+ bool "TI K3 based AM642 Gemini Board from NetModule for A53" -+ select ARM64 -+ select SOC_K3_AM642 -+ select BINMAN -+ imply BOARD -+ imply SPL_BOARD -+ -+config TARGET_AM642_R5_GEMINI -+ bool "TI K3 based AM642 Gemini Board from NetModule for R5" -+ select CPU_V7R -+ select SYS_THUMB_BUILD -+ select K3_LOAD_SYSFW -+ select SOC_K3_AM642 -+ select RAM -+ select SPL_RAM -+ select K3_DDRSS -+ imply SYS_K3_SPL_ATF -+endchoice -+ -+if TARGET_AM642_A53_GEMINI -+ -+config SYS_BOARD -+ default "am64x" -+ -+config SYS_VENDOR -+ default "nm" -+ -+config SYS_CONFIG_NAME -+ default "am64x_gemini" -+ -+source "board/ti/common/Kconfig" -+ -+endif -+ -+if TARGET_AM642_R5_GEMINI -+ -+config SYS_BOARD -+ default "am64x" -+ -+config SYS_VENDOR -+ default "nm" -+ -+config SYS_CONFIG_NAME -+ default "am64x_gemini" -+ -+config SPL_LDSCRIPT -+ default "arch/arm/mach-omap2/u-boot-spl.lds" -+ -+source "board/ti/common/Kconfig" -+ -+endif -diff --git a/board/nm/am64x/Makefile b/board/nm/am64x/Makefile -new file mode 100644 -index 0000000000..8a8a4158a2 ---- /dev/null -+++ b/board/nm/am64x/Makefile -@@ -0,0 +1,9 @@ -+# -+# Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/ -+# Keerthy -+# -+# SPDX-License-Identifier: GPL-2.0+ -+# -+ -+obj-y += gemini.o -+obj-$(CONFIG_TARGET_AM642_A53_GEMINI) += sysreset.o -diff --git a/board/nm/am64x/gemini.c b/board/nm/am64x/gemini.c -new file mode 100644 -index 0000000000..f076b9fb0e ---- /dev/null -+++ b/board/nm/am64x/gemini.c -@@ -0,0 +1,166 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+/* -+ * Board specific initialization for AM642 EVM -+ * -+ * Copyright (C) 2020-2022 Texas Instruments Incorporated - https://www.ti.com/ -+ * Keerthy -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+DECLARE_GLOBAL_DATA_PTR; -+ -+int board_init(void) -+{ -+ return 0; -+} -+ -+int dram_init(void) -+{ -+ s32 ret; -+ -+ ret = fdtdec_setup_mem_size_base(); -+ if (ret) -+ printf("Error setting up mem size and base. %d\n", ret); -+ -+ return ret; -+} -+ -+int dram_init_banksize(void) -+{ -+ s32 ret; -+ -+ ret = fdtdec_setup_memory_banksize(); -+ if (ret) -+ printf("Error setting up memory banksize. %d\n", ret); -+ -+ return ret; -+} -+#ifdef CONFIG_SPL_LOAD_FIT -+int board_fit_config_name_match(const char *name) -+{ -+ return 0; -+} -+#endif -+ -+#if defined(CONFIG_SPL_BUILD) -+#if CONFIG_IS_ENABLED(USB_STORAGE) -+static int fixup_usb_boot(const void *fdt_blob) -+{ -+ int ret = 0; -+ -+ switch (spl_boot_device()) { -+ case BOOT_DEVICE_USB: -+ /* -+ * If the boot mode is host, fixup the dr_mode to host -+ * before cdns3 bind takes place -+ */ -+ ret = fdt_find_and_setprop((void *)fdt_blob, -+ "/bus@f4000/cdns-usb@f900000/usb@f400000", -+ "dr_mode", "host", 5, 0); -+ if (ret) -+ printf("%s: fdt_find_and_setprop() failed:%d\n", -+ __func__, ret); -+ fallthrough; -+ default: -+ break; -+ } -+ -+ return ret; -+} -+#endif -+ -+#if defined(CONFIG_K3_AM64_DDRSS) -+static void fixup_ddr_driver_for_ecc(struct spl_image_info *spl_image) -+{ -+ struct udevice *dev; -+ int ret; -+ -+ dram_init_banksize(); -+ -+ ret = uclass_get_device(UCLASS_RAM, 0, &dev); -+ if (ret) -+ panic("Cannot get RAM device for ddr size fixup: %d\n", ret); -+ -+ ret = k3_ddrss_ddr_fdt_fixup(dev, spl_image->fdt_addr, gd->bd); -+ if (ret) -+ printf("Error fixing up ddr node for ECC use! %d\n", ret); -+} -+#else -+static void fixup_memory_node(struct spl_image_info *spl_image) -+{ -+ u64 start[CONFIG_NR_DRAM_BANKS]; -+ u64 size[CONFIG_NR_DRAM_BANKS]; -+ int bank; -+ int ret; -+ -+ dram_init(); -+ dram_init_banksize(); -+ -+ for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) { -+ start[bank] = gd->bd->bi_dram[bank].start; -+ size[bank] = gd->bd->bi_dram[bank].size; -+ } -+ -+ /* dram_init functions use SPL fdt, and we must fixup u-boot fdt */ -+ ret = fdt_fixup_memory_banks(spl_image->fdt_addr, start, size, CONFIG_NR_DRAM_BANKS); -+ if (ret) -+ printf("Error fixing up memory node! %d\n", ret); -+} -+#endif -+ -+void spl_perform_fixups(struct spl_image_info *spl_image) -+{ -+#if defined(CONFIG_K3_AM64_DDRSS) -+ fixup_ddr_driver_for_ecc(spl_image); -+#else -+ fixup_memory_node(spl_image); -+#endif -+ -+#if CONFIG_IS_ENABLED(USB_STORAGE) -+ fixup_usb_boot(spl_image->fdt_addr); -+#endif -+} -+#endif -+ -+int checkboard(void) -+{ -+ printf("Board: GEMINI rev 1\n"); -+ -+ return 0; -+} -+ -+#ifdef CONFIG_BOARD_LATE_INIT -+int board_late_init(void) -+{ -+ return 0; -+} -+#endif -+ -+#define CTRLMMR_USB0_PHY_CTRL 0x43004008 -+#define CORE_VOLTAGE 0x80000000 -+ -+#ifdef CONFIG_SPL_BOARD_INIT -+void spl_board_init(void) -+{ -+ u32 val; -+ /* Set USB PHY core voltage to 0.85V */ -+ val = readl(CTRLMMR_USB0_PHY_CTRL); -+ val &= ~(CORE_VOLTAGE); -+ writel(val, CTRLMMR_USB0_PHY_CTRL); -+ -+ /* Init DRAM size for R5/A53 SPL */ -+ dram_init_banksize(); -+} -+#endif -diff --git a/board/nm/am64x/sysreset.c b/board/nm/am64x/sysreset.c -new file mode 100644 -index 0000000000..7e0b859ab3 ---- /dev/null -+++ b/board/nm/am64x/sysreset.c -@@ -0,0 +1,60 @@ -+// SPDX-License-Identifier: GPL-2.0+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+struct gemini_sysreset_data { -+ struct udevice *pmic; -+}; -+ -+static int gemini_sysreset_probe(struct udevice *dev) -+{ -+ struct gemini_sysreset_data *data = dev_get_priv(dev); -+ int ret; -+ -+ debug("%s(dev=%p)\n", __func__, dev); -+ -+ if (!data) -+ return -ENOMEM; -+ -+ ret = pmic_get("pmic@58", &data->pmic); -+ if (ret) -+ return ret; -+ -+ return 0; -+} -+ -+static int gemini_sysreset_request(struct udevice *dev, enum sysreset_t type) -+{ -+ struct gemini_sysreset_data *data = dev_get_priv(dev); -+ -+ debug("Reset PMIC DA9063 %p\n", data->pmic); -+ -+ pmic_reg_write(data->pmic, 0x13, 0x7); -+ -+ return 0; -+} -+ -+static struct sysreset_ops gemini_sysreset_ops = { -+ .request = gemini_sysreset_request, -+}; -+ -+static const struct udevice_id gemini_sysreset_of_match[] = { -+ { .compatible = "gemini-sysreset", }, -+ { /* sentinel */ }, -+}; -+ -+ -+U_BOOT_DRIVER(gemini_sysreset) = { -+ .name = "gemini-sysreset", -+ .id = UCLASS_SYSRESET, -+ .of_match = gemini_sysreset_of_match, -+ .probe = gemini_sysreset_probe, -+ .priv_auto = sizeof(struct gemini_sysreset_data), -+ .ops = &gemini_sysreset_ops, -+}; -diff --git a/configs/am64x_netmodule_hw34_a53_defconfig b/configs/am64x_netmodule_hw34_a53_defconfig -new file mode 100644 -index 0000000000..acf5a340dc ---- /dev/null -+++ b/configs/am64x_netmodule_hw34_a53_defconfig -@@ -0,0 +1,179 @@ -+CONFIG_ARM=y -+CONFIG_SKIP_LOWLEVEL_INIT=y -+CONFIG_ARCH_K3=y -+CONFIG_SYS_MALLOC_LEN=0x2000000 -+CONFIG_SYS_MALLOC_F_LEN=0x8000 -+CONFIG_SPL_GPIO=y -+CONFIG_SPL_LIBCOMMON_SUPPORT=y -+CONFIG_SPL_LIBGENERIC_SUPPORT=y -+CONFIG_NR_DRAM_BANKS=2 -+CONFIG_SOC_K3_AM642=y -+CONFIG_K3_ATF_LOAD_ADDR=0x701c0000 -+CONFIG_TARGET_AM642_A53_GEMINI=y -+CONFIG_ENV_SIZE=0x20000 -+CONFIG_ENV_OFFSET=0x3e0000 -+CONFIG_DM_GPIO=y -+CONFIG_SPL_DM_SPI=y -+CONFIG_DEFAULT_DEVICE_TREE="k3-am642-netmodule-hw34" -+CONFIG_SPL_TEXT_BASE=0x80080000 -+CONFIG_SPL_MMC=y -+CONFIG_SPL_SERIAL=y -+CONFIG_SPL_DRIVERS_MISC=y -+CONFIG_SPL_STACK_R_ADDR=0x82000000 -+CONFIG_SPL_FS_FAT=y -+CONFIG_SPL_LIBDISK_SUPPORT=y -+CONFIG_SPL_SPI_FLASH_SUPPORT=y -+CONFIG_SPL_SPI=y -+CONFIG_DISTRO_DEFAULTS=y -+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y -+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80480000 -+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set -+CONFIG_SPL_LOAD_FIT=y -+CONFIG_SPL_LOAD_FIT_ADDRESS=0x81000000 -+CONFIG_SPL_LOAD_FIT_APPLY_OVERLAY=y -+CONFIG_BOOTCOMMAND="run distro_bootcmd" -+CONFIG_BOARD_LATE_INIT=y -+CONFIG_SPL_MAX_SIZE=0x180000 -+CONFIG_SPL_HAS_BSS_LINKER_SECTION=y -+CONFIG_SPL_BSS_START_ADDR=0x80a00000 -+CONFIG_SPL_BSS_MAX_SIZE=0x80000 -+CONFIG_SPL_BOARD_INIT=y -+CONFIG_SPL_SYS_MALLOC_SIMPLE=y -+CONFIG_SPL_STACK_R=y -+CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x180000 -+CONFIG_SYS_SPL_MALLOC=y -+CONFIG_SYS_SPL_MALLOC_SIZE=0x800000 -+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y -+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x1600 -+CONFIG_SPL_DMA=y -+CONFIG_SPL_ENV_SUPPORT=y -+CONFIG_SPL_ETH=y -+CONFIG_SPL_FS_LOAD_PAYLOAD_NAME="u-boot.img" -+CONFIG_SPL_I2C=y -+CONFIG_SPL_DM_MAILBOX=y -+CONFIG_SPL_DM_SPI_FLASH=y -+CONFIG_SPL_NET=y -+CONFIG_SPL_NET_VCI_STRING="AM64X U-Boot A53 SPL" -+CONFIG_SPL_POWER_DOMAIN=y -+CONFIG_SPL_RAM_SUPPORT=y -+CONFIG_SPL_RAM_DEVICE=y -+CONFIG_SPL_SPI_LOAD=y -+CONFIG_SYS_SPI_U_BOOT_OFFS=0x280000 -+CONFIG_SPL_USB_HOST=y -+CONFIG_SPL_USB_STORAGE=y -+CONFIG_SPL_USB_GADGET=y -+CONFIG_SPL_DFU=y -+CONFIG_SPL_YMODEM_SUPPORT=y -+CONFIG_SYS_MAXARGS=64 -+CONFIG_SYS_BOOTM_LEN=0x800000 -+CONFIG_CMD_ASKENV=y -+CONFIG_CMD_CLK=y -+CONFIG_CMD_DFU=y -+CONFIG_CMD_DM=y -+CONFIG_CMD_GPIO=y -+CONFIG_CMD_GPT=y -+CONFIG_CMD_I2C=y -+CONFIG_CMD_MMC=y -+CONFIG_CMD_USB=y -+CONFIG_CMD_TIME=y -+CONFIG_CMD_PMIC=y -+CONFIG_CMD_REGULATOR=y -+CONFIG_OF_CONTROL=y -+CONFIG_SPL_OF_CONTROL=y -+CONFIG_MULTI_DTB_FIT=y -+CONFIG_SPL_MULTI_DTB_FIT=y -+CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y -+CONFIG_ENV_IS_IN_MMC=y -+CONFIG_SYS_MMC_ENV_PART=1 -+CONFIG_SPL_ENV_IS_NOWHERE=y -+CONFIG_NET_RANDOM_ETHADDR=y -+CONFIG_SPL_DM=y -+CONFIG_SPL_DM_SEQ_ALIAS=y -+CONFIG_REGMAP=y -+CONFIG_SPL_REGMAP=y -+CONFIG_SYSCON=y -+CONFIG_SPL_SYSCON=y -+CONFIG_SPL_OF_TRANSLATE=y -+CONFIG_CLK=y -+CONFIG_SPL_CLK=y -+CONFIG_SPL_CLK_CCF=y -+CONFIG_CLK_CCF=y -+CONFIG_CLK_TI_SCI=y -+CONFIG_DFU_MMC=y -+CONFIG_DFU_RAM=y -+CONFIG_DFU_SF=y -+CONFIG_SYS_DFU_DATA_BUF_SIZE=0x40000 -+CONFIG_SYS_DFU_MAX_FILE_SIZE=0x800000 -+CONFIG_DMA_CHANNELS=y -+CONFIG_TI_K3_NAVSS_UDMA=y -+CONFIG_TI_SCI_PROTOCOL=y -+CONFIG_GPIO_HOG=y -+CONFIG_DA8XX_GPIO=y -+CONFIG_DM_PCA953X=y -+CONFIG_DM_I2C=y -+CONFIG_I2C_SET_DEFAULT_BUS_NUM=y -+CONFIG_DM_I2C_GPIO=y -+CONFIG_SYS_I2C_OMAP24XX=y -+CONFIG_DM_MAILBOX=y -+CONFIG_K3_SEC_PROXY=y -+CONFIG_SUPPORT_EMMC_BOOT=y -+CONFIG_MMC_HS400_SUPPORT=y -+CONFIG_SPL_MMC_HS400_SUPPORT=y -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_ADMA=y -+CONFIG_SPL_MMC_SDHCI_ADMA=y -+CONFIG_MMC_SDHCI_AM654=y -+CONFIG_DM_SPI_FLASH=y -+CONFIG_SPI_FLASH_SPANSION=y -+CONFIG_SPI_FLASH_STMICRO=y -+CONFIG_MULTIPLEXER=y -+CONFIG_MUX_MMIO=y -+CONFIG_PHY_TI_DP83867=y -+CONFIG_PHY_FIXED=y -+CONFIG_TI_AM65_CPSW_NUSS=y -+CONFIG_PHY=y -+CONFIG_SPL_PHY=y -+CONFIG_PHY_CADENCE_SIERRA=y -+CONFIG_PHY_CADENCE_TORRENT=y -+CONFIG_PHY_J721E_WIZ=y -+CONFIG_PINCTRL=y -+CONFIG_SPL_PINCTRL=y -+CONFIG_PINCTRL_SINGLE=y -+CONFIG_POWER_DOMAIN=y -+CONFIG_TI_SCI_POWER_DOMAIN=y -+CONFIG_DM_PMIC=y -+CONFIG_DM_PMIC_DA9063=y -+CONFIG_DM_REGULATOR=y -+CONFIG_K3_SYSTEM_CONTROLLER=y -+CONFIG_REMOTEPROC_TI_K3_ARM64=y -+CONFIG_DM_RESET=y -+CONFIG_RESET_TI_SCI=y -+CONFIG_DM_SERIAL=y -+CONFIG_SOC_DEVICE=y -+CONFIG_SOC_DEVICE_TI_K3=y -+CONFIG_SOC_TI=y -+CONFIG_SPI=y -+CONFIG_DM_SPI=y -+CONFIG_CADENCE_QSPI=y -+CONFIG_SYSRESET=y -+CONFIG_SPL_SYSRESET=y -+CONFIG_SYSRESET_TI_SCI=y -+CONFIG_DM_THERMAL=y -+CONFIG_USB=y -+CONFIG_DM_USB_GADGET=y -+CONFIG_SPL_DM_USB_GADGET=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_CDNS3=y -+CONFIG_USB_CDNS3_GADGET=y -+CONFIG_USB_CDNS3_HOST=y -+CONFIG_SPL_USB_CDNS3_GADGET=y -+CONFIG_SPL_USB_CDNS3_HOST=y -+CONFIG_USB_GADGET=y -+CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments" -+CONFIG_USB_GADGET_VENDOR_NUM=0x0451 -+CONFIG_USB_GADGET_PRODUCT_NUM=0x6165 -+CONFIG_USB_GADGET_DOWNLOAD=y -+CONFIG_USB_FUNCTION_MASS_STORAGE=y -+CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 -+CONFIG_LZO=y -+CONFIG_HEXDUMP=y -diff --git a/configs/am64x_netmodule_hw34_r5_defconfig b/configs/am64x_netmodule_hw34_r5_defconfig -new file mode 100644 -index 0000000000..c7e66a18e8 ---- /dev/null -+++ b/configs/am64x_netmodule_hw34_r5_defconfig -@@ -0,0 +1,170 @@ -+CONFIG_ARM=y -+CONFIG_ARCH_K3=y -+CONFIG_SYS_MALLOC_LEN=0x2000000 -+CONFIG_SYS_MALLOC_F_LEN=0x80000 -+CONFIG_SPL_GPIO=y -+CONFIG_SPL_LIBCOMMON_SUPPORT=y -+CONFIG_SPL_LIBGENERIC_SUPPORT=y -+CONFIG_NR_DRAM_BANKS=2 -+CONFIG_SOC_K3_AM642=y -+CONFIG_TARGET_AM642_R5_GEMINI=y -+CONFIG_DM_GPIO=y -+CONFIG_SPL_DM_SPI=y -+CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000 -+CONFIG_DEFAULT_DEVICE_TREE="k3-am642-r5-netmodule-hw34" -+CONFIG_SPL_TEXT_BASE=0x70000000 -+CONFIG_SPL_MMC=y -+CONFIG_SPL_SERIAL=y -+CONFIG_SPL_DRIVERS_MISC=y -+CONFIG_SPL_STACK_R_ADDR=0x82000000 -+CONFIG_SPL_SIZE_LIMIT=0x190000 -+CONFIG_SPL_SIZE_LIMIT_PROVIDE_STACK=0x4000 -+CONFIG_SPL_FS_FAT=y -+CONFIG_SPL_LIBDISK_SUPPORT=y -+CONFIG_SPL_SPI_FLASH_SUPPORT=y -+CONFIG_SPL_SPI=y -+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y -+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x7019b800 -+CONFIG_SPL_LOAD_FIT=y -+CONFIG_SPL_LOAD_FIT_ADDRESS=0x80080000 -+CONFIG_SPL_LOAD_FIT_APPLY_OVERLAY=y -+# CONFIG_DISPLAY_CPUINFO is not set -+CONFIG_SPL_SIZE_LIMIT_SUBTRACT_GD=y -+CONFIG_SPL_SIZE_LIMIT_SUBTRACT_MALLOC=y -+CONFIG_SPL_MAX_SIZE=0x180000 -+CONFIG_SPL_HAS_BSS_LINKER_SECTION=y -+CONFIG_SPL_BSS_START_ADDR=0x7019b800 -+CONFIG_SPL_BSS_MAX_SIZE=0x4000 -+CONFIG_SPL_SYS_REPORT_STACK_F_USAGE=y -+CONFIG_SPL_BOARD_INIT=y -+CONFIG_SPL_SYS_MALLOC_SIMPLE=y -+CONFIG_SPL_STACK_R=y -+CONFIG_SPL_SEPARATE_BSS=y -+CONFIG_SYS_SPL_MALLOC=y -+CONFIG_HAS_CUSTOM_SPL_MALLOC_START=y -+CONFIG_CUSTOM_SYS_SPL_MALLOC_ADDR=0x84000000 -+CONFIG_SYS_SPL_MALLOC_SIZE=0x1000000 -+CONFIG_SPL_EARLY_BSS=y -+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y -+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x600 -+CONFIG_SPL_DMA=y -+CONFIG_SPL_I2C=y -+CONFIG_SPL_DM_MAILBOX=y -+CONFIG_SPL_DM_SPI_FLASH=y -+CONFIG_SPL_NET=y -+CONFIG_SPL_NET_VCI_STRING="AM64X U-Boot R5 SPL" -+CONFIG_SPL_DM_RESET=y -+CONFIG_SPL_POWER_SUPPORT=y -+CONFIG_SPL_POWER_DOMAIN=y -+CONFIG_SPL_RAM_SUPPORT=y -+CONFIG_SPL_RAM_DEVICE=y -+CONFIG_SPL_REMOTEPROC=y -+CONFIG_SPL_SPI_LOAD=y -+CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000 -+CONFIG_SPL_USB_HOST=y -+CONFIG_SPL_USB_STORAGE=y -+CONFIG_SPL_THERMAL=y -+CONFIG_SPL_USB_GADGET=y -+CONFIG_SPL_DFU=y -+CONFIG_SPL_YMODEM_SUPPORT=y -+CONFIG_HUSH_PARSER=y -+CONFIG_SYS_MAXARGS=64 -+CONFIG_CMD_DFU=y -+CONFIG_CMD_GPT=y -+CONFIG_CMD_MMC=y -+CONFIG_CMD_REMOTEPROC=y -+CONFIG_CMD_USB=y -+CONFIG_CMD_USB_MASS_STORAGE=y -+# CONFIG_CMD_SETEXPR is not set -+CONFIG_CMD_DHCP=y -+CONFIG_CMD_TIME=y -+CONFIG_CMD_FAT=y -+CONFIG_OF_CONTROL=y -+CONFIG_SPL_OF_CONTROL=y -+CONFIG_SPL_MULTI_DTB_FIT=y -+CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y -+CONFIG_SPL_ENV_SUPPORT=y -+CONFIG_ENV_IS_NOWHERE=y -+CONFIG_SPL_DM=y -+CONFIG_SPL_DM_SEQ_ALIAS=y -+CONFIG_REGMAP=y -+CONFIG_SPL_REGMAP=y -+CONFIG_SYSCON=y -+CONFIG_SPL_SYSCON=y -+CONFIG_SPL_OF_TRANSLATE=y -+CONFIG_CLK=y -+CONFIG_SPL_CLK=y -+CONFIG_SPL_CLK_CCF=y -+CONFIG_CLK_CCF=y -+CONFIG_CLK_TI_SCI=y -+CONFIG_DFU_MMC=y -+CONFIG_DFU_RAM=y -+CONFIG_DFU_SF=y -+CONFIG_SYS_DFU_DATA_BUF_SIZE=0x5000 -+CONFIG_DMA_CHANNELS=y -+CONFIG_TI_K3_NAVSS_UDMA=y -+CONFIG_TI_SCI_PROTOCOL=y -+CONFIG_DA8XX_GPIO=y -+CONFIG_DM_I2C=y -+CONFIG_SYS_I2C_OMAP24XX=y -+CONFIG_DM_MAILBOX=y -+CONFIG_K3_SEC_PROXY=y -+CONFIG_ESM_K3=y -+CONFIG_MMC_SDHCI=y -+CONFIG_MMC_SDHCI_ADMA=y -+CONFIG_SPL_MMC_SDHCI_ADMA=y -+CONFIG_MMC_SDHCI_AM654=y -+CONFIG_DM_SPI_FLASH=y -+CONFIG_SPI_FLASH_SPANSION=y -+CONFIG_SPI_FLASH_STMICRO=y -+CONFIG_PHY_TI_DP83867=y -+CONFIG_TI_AM65_CPSW_NUSS=y -+CONFIG_PHY=y -+CONFIG_SPL_PHY=y -+CONFIG_PHY_CADENCE_SIERRA=y -+CONFIG_PHY_CADENCE_TORRENT=y -+CONFIG_PHY_J721E_WIZ=y -+CONFIG_PINCTRL=y -+# CONFIG_PINCTRL_GENERIC is not set -+CONFIG_SPL_PINCTRL=y -+# CONFIG_SPL_PINCTRL_GENERIC is not set -+CONFIG_PINCTRL_SINGLE=y -+CONFIG_POWER_DOMAIN=y -+CONFIG_TI_SCI_POWER_DOMAIN=y -+CONFIG_DM_REGULATOR=y -+CONFIG_SPL_DM_REGULATOR=y -+CONFIG_DM_REGULATOR_GPIO=y -+CONFIG_SPL_DM_REGULATOR_GPIO=y -+CONFIG_K3_SYSTEM_CONTROLLER=y -+CONFIG_REMOTEPROC_TI_K3_ARM64=y -+CONFIG_DM_RESET=y -+CONFIG_RESET_TI_SCI=y -+CONFIG_SPECIFY_CONSOLE_INDEX=y -+CONFIG_DM_SERIAL=y -+CONFIG_SOC_DEVICE=y -+CONFIG_SOC_DEVICE_TI_K3=y -+CONFIG_SOC_TI=y -+CONFIG_SPI=y -+CONFIG_DM_SPI=y -+CONFIG_CADENCE_QSPI=y -+CONFIG_DM_THERMAL=y -+CONFIG_TIMER=y -+CONFIG_SPL_TIMER=y -+CONFIG_OMAP_TIMER=y -+CONFIG_USB=y -+CONFIG_DM_USB=y -+CONFIG_DM_USB_GADGET=y -+CONFIG_SPL_DM_USB_GADGET=y -+CONFIG_USB_XHCI_HCD=y -+CONFIG_USB_CDNS3=y -+CONFIG_USB_CDNS3_GADGET=y -+CONFIG_USB_CDNS3_HOST=y -+CONFIG_SPL_USB_CDNS3_GADGET=y -+CONFIG_SPL_USB_CDNS3_HOST=y -+CONFIG_USB_STORAGE=y -+CONFIG_USB_GADGET=y -+CONFIG_USB_GADGET_MANUFACTURER="Texas Instruments" -+CONFIG_USB_GADGET_VENDOR_NUM=0x0451 -+CONFIG_USB_GADGET_PRODUCT_NUM=0x6165 -+CONFIG_USB_GADGET_DOWNLOAD=y -+CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 -diff --git a/include/configs/am64x_gemini.h b/include/configs/am64x_gemini.h -new file mode 100644 -index 0000000000..09723e6a29 ---- /dev/null -+++ b/include/configs/am64x_gemini.h -@@ -0,0 +1,61 @@ -+/* SPDX-License-Identifier: GPL-2.0+ */ -+/* -+ * Configuration header file for K3 AM642 SoC family -+ * -+ * Copyright (C) 2020 Texas Instruments Incorporated - https://www.ti.com/ -+ * Keerthy -+ */ -+ -+#ifndef __CONFIG_AM642_EVM_H -+#define __CONFIG_AM642_EVM_H -+ -+#include -+#include -+#include -+#include -+ -+/* Add support for distro boot */ -+#if defined(CONFIG_DISTRO_DEFAULTS) -+#define BOOT_TARGET_DEVICES(func) \ -+ func(MMC, mmc, CONFIG_SYS_MMC_ENV_DEV) -+ -+#include -+#else -+#define BOOTENV "" -+#endif -+ -+/* DDR Configuration */ -+#define CONFIG_SYS_SDRAM_BASE1 0x880000000 -+ -+#ifdef CONFIG_SYS_K3_SPL_ATF -+#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "tispl.bin" -+#endif -+ -+/* Configure R5 SPL post-relocation malloc pool in DDR */ -+#define CONFIG_SYS_SPL_MALLOC_START 0x84000000 -+#endif -+ -+/* Allow a simple U-Boot update */ -+#define UPDATE_UBOOT_CMD \ -+ "update_uboot=setenv ipaddr 192.168.1.1 && setenv serverip 192.168.1.254 && mmc dev 0 1 && " \ -+ "tftp $loadaddr gemini/tiboot3.bin && mmc write $loadaddr 0 0x600 && " \ -+ "tftp $loadaddr gemini/tispl.bin && mmc write ${loadaddr} 0x600 0x800 && " \ -+ "tftp $loadaddr gemini/u-boot.img && mmc write ${loadaddr} 0x1600 0x800;\0" -+ -+#define EXTRA_ENV_DFUARGS \ -+ DFU_ALT_INFO_MMC \ -+ DFU_ALT_INFO_EMMC \ -+ DFU_ALT_INFO_RAM -+ -+/* Incorporate settings into the U-Boot environment */ -+#define CONFIG_EXTRA_ENV_SETTINGS \ -+ BOOTENV \ -+ UPDATE_UBOOT_CMD \ -+ DEFAULT_LINUX_BOOT_ENV \ -+ DEFAULT_FIT_TI_ARGS \ -+ DEFAULT_MMC_TI_ARGS \ -+ EXTRA_ENV_DFUARGS -+ -+/* Now for the remaining common defines */ -+#include -+ diff --git a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos_2023.01.bb b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos_2023.04.bb similarity index 51% rename from layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos_2023.01.bb rename to layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos_2023.04.bb index a3df4e9..9180248 100644 --- a/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos_2023.01.bb +++ b/layers/meta-netmodule-coreos-bsp/recipes-bsp/u-boot/u-boot-ti-coreos_2023.04.bb @@ -5,22 +5,14 @@ SPL_UART_BINARY:netmodule-hw34-k3r5 = "u-boot-spl.bin" LIC_FILES_CHKSUM = "file://Licenses/README;md5=2ca5f2c35c8cc335f0a19756634782f1" -PV = "2023.01" +PV = "2023.04" -SRC_URI = "git://source.denx.de/u-boot/u-boot.git;protocol=https;branch=master \ - file://0001-ram-k3-ddrss-Fix-a-ddr4-controller-stall.patch \ - file://0002-gemini-board-add-board-and-device-tree.patch \ +SRC_URI = "git://bitbucket.gad.local:7999/nm-nsp/netmodule-u-boot.git;protocol=ssh;user=git;branch=gemini/ti/ti-u-boot-2023.04 \ " - -SRCREV = "62e2ad1ceafbfdf2c44d3dc1b6efc81e768a96b9" +SRCREV = "34cf1e583eb263dd6644d0ebf3468b3846fc0925" PACKAGECONFIG[atf] = "BL31=${STAGING_DIR_HOST}/firmware/bl31.bin,,trusted-firmware-a" -do_deploy:append:netmodule-hw34-k3r5 () { - mv ${DEPLOYDIR}/tiboot3.bin ${DEPLOYDIR}/tiboot3-r5spl.bin || true - mv ${DEPLOYDIR}/u-boot-spl.bin ${DEPLOYDIR}/u-boot-spl-r5spl.bin || true -} - # Only require coreos include file for the aarch64 build of u-boot UBOOT_REQUIRE ?= "" UBOOT_REQUIRE:netmodule-hw34 = "recipes-bsp/u-boot/u-boot-coreos.inc" From e18d9b87a820462b06337f4549da4e1b10366f93 Mon Sep 17 00:00:00 2001 From: Patrick Vogelaar Date: Sun, 25 Feb 2024 20:33:34 +0100 Subject: [PATCH 7/8] fix(qemu-coreos-arm64): fix several issues and refactoring * rework machine conf to only build necessary stuff * in *.wks file switch from ondisk to use-uuid the solves an issue that during boot the user data partition could not be mounted because user data was set to mmcblk1 in fstab but actually was sda * kenrel options were missing for dmcrypt to create secure storage. those are now added to all machines using linux-yocto source and use the meta-belden-coreos-bsp layer --- .../conf/machine/qemu-coreos-arm64.conf | 4 ++-- .../recipes-kernel/linux/files/secure-storage.cfg | 4 ++++ .../recipes-kernel/linux/linux-yocto_%.bbappend | 2 ++ .../wic/qemu-efi-coreos-generic.wks.in | 12 ++++++------ 4 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 layers/meta-belden-coreos-bsp/recipes-kernel/linux/files/secure-storage.cfg create mode 100644 layers/meta-belden-coreos-bsp/recipes-kernel/linux/linux-yocto_%.bbappend diff --git a/layers/meta-belden-coreos-bsp/conf/machine/qemu-coreos-arm64.conf b/layers/meta-belden-coreos-bsp/conf/machine/qemu-coreos-arm64.conf index 3507392..c40e3d4 100644 --- a/layers/meta-belden-coreos-bsp/conf/machine/qemu-coreos-arm64.conf +++ b/layers/meta-belden-coreos-bsp/conf/machine/qemu-coreos-arm64.conf @@ -6,9 +6,9 @@ require conf/machine/qemu-generic-arm64.conf MACHINEOVERRIDES =. "qemu-generic-arm64:" -IMAGE_FSTYPES += "wic.xz wic.bmap" +COREOS_IMAGE_GENERATE_INSTALLER = "0" + WKS_FILE = "qemu-efi-coreos-generic.wks.in" -QB_DRIVE_TYPE = "/dev/sd" EFIBOOTGUARD_TIMEOUT ?= "0" require conf/machine/include/coreos-generic-features/efi.inc diff --git a/layers/meta-belden-coreos-bsp/recipes-kernel/linux/files/secure-storage.cfg b/layers/meta-belden-coreos-bsp/recipes-kernel/linux/files/secure-storage.cfg new file mode 100644 index 0000000..07ef65b --- /dev/null +++ b/layers/meta-belden-coreos-bsp/recipes-kernel/linux/files/secure-storage.cfg @@ -0,0 +1,4 @@ +CONFIG_BLK_DEV_DM=y +CONFIG_KEYS=y +CONFIG_ENCRYPTED_KEYS=y +CONFIG_DM_CRYPT=y \ No newline at end of file diff --git a/layers/meta-belden-coreos-bsp/recipes-kernel/linux/linux-yocto_%.bbappend b/layers/meta-belden-coreos-bsp/recipes-kernel/linux/linux-yocto_%.bbappend new file mode 100644 index 0000000..e2c6aba --- /dev/null +++ b/layers/meta-belden-coreos-bsp/recipes-kernel/linux/linux-yocto_%.bbappend @@ -0,0 +1,2 @@ +# Set kernel config needed by secure-storage +SRC_URI += "file://secure-storage.cfg" diff --git a/layers/meta-belden-coreos-bsp/wic/qemu-efi-coreos-generic.wks.in b/layers/meta-belden-coreos-bsp/wic/qemu-efi-coreos-generic.wks.in index dfcd3d7..1db9345 100644 --- a/layers/meta-belden-coreos-bsp/wic/qemu-efi-coreos-generic.wks.in +++ b/layers/meta-belden-coreos-bsp/wic/qemu-efi-coreos-generic.wks.in @@ -2,11 +2,11 @@ # long-description: Creates a partitioned EFI disk image that the user # can directly dd to boot media. -part --source efibootguard-efi --label efi --part-type=EF00 --ondisk mmcblk1 --offset 20480S --size 64M --extra-space 0 --overhead-factor 1 -part / --source rootfs --fstype=ext4 --label rootfs0 --ondisk mmcblk1 --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 -part --fstype=ext4 --label rootfs1 --ondisk mmcblk1 --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 -part --source efibootguard-boot --label ebg0 --part-type=0700 --sourceparams "args=coreos.root=rootfs0,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=2,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI" --ondisk mmcblk1 --align 1024 --size 128M --extra-space 0 --overhead-factor 1 -part --source efibootguard-boot --label ebg1 --part-type=0700 --sourceparams "args=coreos.root=rootfs1,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=1,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI" --ondisk mmcblk1 --align 1024 --size 128M --extra-space 0 --overhead-factor 1 -${WKS_PART_USERDATA} --ondisk mmcblk1 --size ${WKS_PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1 +part --source efibootguard-efi --label efi --part-type=EF00 --use-uuid --offset 20480S --size 64M --extra-space 0 --overhead-factor 1 +part / --source rootfs --fstype=ext4 --label rootfs0 --use-uuid --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 +part --fstype=ext4 --label rootfs1 --use-uuid --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1 +part --source efibootguard-boot --label ebg0 --part-type=0700 --sourceparams "args=coreos.root=rootfs0,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=2,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI" --use-uuid --align 1024 --size 128M --extra-space 0 --overhead-factor 1 +part --source efibootguard-boot --label ebg1 --part-type=0700 --sourceparams "args=coreos.root=rootfs1,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=1,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI" --use-uuid --align 1024 --size 128M --extra-space 0 --overhead-factor 1 +${WKS_PART_USERDATA} --use-uuid --size ${WKS_PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1 bootloader --ptable gpt \ No newline at end of file From c2ebce47f1dee56f10bd196601896b27f797852d Mon Sep 17 00:00:00 2001 From: Patrick Vogelaar Date: Sun, 25 Feb 2024 23:23:23 +0100 Subject: [PATCH 8/8] fix(qemu-coreos-arm64): add image to k-stufen --- .../classes/coreos-image-ci.bbclass | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/layers/meta-belden-coreos/classes/coreos-image-ci.bbclass b/layers/meta-belden-coreos/classes/coreos-image-ci.bbclass index 890cbd9..95d4ec1 100644 --- a/layers/meta-belden-coreos/classes/coreos-image-ci.bbclass +++ b/layers/meta-belden-coreos/classes/coreos-image-ci.bbclass @@ -3,6 +3,7 @@ # > COREOS_IMAGE_EXTRACLASSES += "coreos-image-ci" # in auto.conf (or local.conf) +inherit kernel-artifact-names def get_coreos_ci_artifacts(d): artifacts = [] @@ -12,11 +13,11 @@ def get_coreos_ci_artifacts(d): # Container handling # ========================================================================== - + if bb.utils.contains('IMAGE_FSTYPES', 'oci', True, False, d): artifacts.append(d.getVar('IMAGE_LINK_NAME') + '.rootfs-oci.tar') - + # Special case for container, we just need the OCI tarball return " ".join(artifacts) @@ -25,10 +26,14 @@ def get_coreos_ci_artifacts(d): if bb.utils.contains('IMAGE_FSTYPES', 'wic.xz', True, False, d): artifacts.append(d.getVar('IMAGE_LINK_NAME') + '.wic.xz') - + if bb.utils.contains('IMAGE_FSTYPES', 'wic.bmap', True, False, d): artifacts.append(d.getVar('IMAGE_LINK_NAME') + '.wic.bmap') + # This is used for qemu-coreos-arm64 + if bb.utils.contains('IMAGE_FSTYPES', 'wic.qcow2', True, False, d): + artifacts.append(d.getVar('IMAGE_LINK_NAME') + '.wic.qcow2') + if d.getVar('COREOS_IMAGE_GENERATE_SWU') == '1': artifacts.append(d.getVar('IMAGE_LINK_NAME') + '.swu') @@ -90,5 +95,5 @@ do_deploy_ci() { for file in ${COREOS_CI_DEPLOY_ARTIFACTS}; do echo $file >> $output done -} +} addtask deploy_ci after do_image before do_build \ No newline at end of file