From 858c73002079bf7a53af043587a665ab8318c722 Mon Sep 17 00:00:00 2001 From: Bobby The Builder Date: Tue, 28 Jun 2022 11:58:20 -0400 Subject: [PATCH] temp/arm-trusted-firmware: upgrade to 2.7.0 (MR 3263) --- ...ose-PSCI-states-to-avoid-translation.patch | 72 ---------------- ...ify-CPU_SUSPEND-power-state-encoding.patch | 85 ------------------- temp/arm-trusted-firmware/APKBUILD | 38 ++++++--- 3 files changed, 24 insertions(+), 171 deletions(-) delete mode 100644 temp/arm-trusted-firmware/2001-allwinner-Choose-PSCI-states-to-avoid-translation.patch delete mode 100644 temp/arm-trusted-firmware/2002-allwinner-Simplify-CPU_SUSPEND-power-state-encoding.patch diff --git a/temp/arm-trusted-firmware/2001-allwinner-Choose-PSCI-states-to-avoid-translation.patch b/temp/arm-trusted-firmware/2001-allwinner-Choose-PSCI-states-to-avoid-translation.patch deleted file mode 100644 index 44ea2ec5d..000000000 --- a/temp/arm-trusted-firmware/2001-allwinner-Choose-PSCI-states-to-avoid-translation.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 981a0f37f9c2d8e9cdff5bf34c80c3dd7e1128ae Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Thu, 18 Mar 2021 22:55:15 -0500 -Subject: [PATCH] allwinner: Choose PSCI states to avoid translation - -By aligning the PSCI and SCPI power states, we can avoid some code to -translate between the two. This also makes room for a second retention -state, for future growth. - -Signed-off-by: Samuel Holland -Change-Id: I26691085f277a96bd405e3305ab0fe390a92b418 ---- - plat/allwinner/common/include/platform_def.h | 7 ++++--- - plat/allwinner/common/sunxi_scpi_pm.c | 17 +++-------------- - 2 files changed, 7 insertions(+), 17 deletions(-) - -diff --git a/plat/allwinner/common/include/platform_def.h b/plat/allwinner/common/include/platform_def.h -index 4893368c2..fc9c966ba 100644 ---- a/plat/allwinner/common/include/platform_def.h -+++ b/plat/allwinner/common/include/platform_def.h -@@ -57,9 +57,10 @@ - #define PLAT_CSS_SCP_COM_SHARED_MEM_BASE \ - (SUNXI_SRAM_A2_BASE + SUNXI_SRAM_A2_SIZE - 0x200) - --#define PLAT_MAX_PWR_LVL_STATES U(2) --#define PLAT_MAX_RET_STATE U(1) --#define PLAT_MAX_OFF_STATE U(2) -+/* These states are used directly for SCPI communication. */ -+#define PLAT_MAX_PWR_LVL_STATES U(3) -+#define PLAT_MAX_RET_STATE U(2) -+#define PLAT_MAX_OFF_STATE U(3) - - #define PLAT_MAX_PWR_LVL U(2) - #define PLAT_NUM_PWR_DOMAINS (U(1) + \ -diff --git a/plat/allwinner/common/sunxi_scpi_pm.c b/plat/allwinner/common/sunxi_scpi_pm.c -index 74763ef7e..89c834aa9 100644 ---- a/plat/allwinner/common/sunxi_scpi_pm.c -+++ b/plat/allwinner/common/sunxi_scpi_pm.c -@@ -44,17 +44,6 @@ - #define SYSTEM_PWR_STATE(state) \ - ((state)->pwr_domain_state[SYSTEM_PWR_LVL]) - --static inline scpi_power_state_t scpi_map_state(plat_local_state_t psci_state) --{ -- if (is_local_state_run(psci_state)) { -- return scpi_power_on; -- } -- if (is_local_state_retn(psci_state)) { -- return scpi_power_retention; -- } -- return scpi_power_off; --} -- - static void sunxi_cpu_standby(plat_local_state_t cpu_state) - { - u_register_t scr = read_scr_el3(); -@@ -87,9 +76,9 @@ static void sunxi_pwr_domain_off(const psci_power_state_t *target_state) - } - - scpi_set_css_power_state(read_mpidr(), -- scpi_map_state(cpu_pwr_state), -- scpi_map_state(cluster_pwr_state), -- scpi_map_state(system_pwr_state)); -+ cpu_pwr_state, -+ cluster_pwr_state, -+ system_pwr_state); - } - - static void sunxi_pwr_domain_on_finish(const psci_power_state_t *target_state) --- -2.33.1 - diff --git a/temp/arm-trusted-firmware/2002-allwinner-Simplify-CPU_SUSPEND-power-state-encoding.patch b/temp/arm-trusted-firmware/2002-allwinner-Simplify-CPU_SUSPEND-power-state-encoding.patch deleted file mode 100644 index e0239137a..000000000 --- a/temp/arm-trusted-firmware/2002-allwinner-Simplify-CPU_SUSPEND-power-state-encoding.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 75ddf133e308f7ce15af9ecd899079a22c59dcfc Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Thu, 18 Mar 2021 23:15:28 -0500 -Subject: [PATCH] allwinner: Simplify CPU_SUSPEND power state encoding - -Use the encoding recommended by the PSCI specification: four bits for -the power state at each power level. - -Since SCPI provides no way to handshake an exit from a standby state, -the only possible standby state is the architectural WFI state. Since -WFI can be used without PSCI, we do not allow passing in standby states. - -Signed-off-by: Samuel Holland -Change-Id: I4b3b84e5c255ee58a25255a0cab5d7623425086e ---- - plat/allwinner/common/sunxi_scpi_pm.c | 36 ++++++++++++--------------- - 1 file changed, 16 insertions(+), 20 deletions(-) - -diff --git a/plat/allwinner/common/sunxi_scpi_pm.c b/plat/allwinner/common/sunxi_scpi_pm.c -index 89c834aa9..8dcc54b16 100644 ---- a/plat/allwinner/common/sunxi_scpi_pm.c -+++ b/plat/allwinner/common/sunxi_scpi_pm.c -@@ -33,6 +33,9 @@ - */ - #define SCP_FIRMWARE_MAGIC 0xb4400012 - -+#define PLAT_LOCAL_PSTATE_WIDTH U(4) -+#define PLAT_LOCAL_PSTATE_MASK ((U(1) << PLAT_LOCAL_PSTATE_WIDTH) - 1) -+ - #define CPU_PWR_LVL MPIDR_AFFLVL0 - #define CLUSTER_PWR_LVL MPIDR_AFFLVL1 - #define SYSTEM_PWR_LVL MPIDR_AFFLVL2 -@@ -126,7 +129,9 @@ static int sunxi_validate_power_state(unsigned int power_state, - psci_power_state_t *req_state) - { - unsigned int power_level = psci_get_pstate_pwrlvl(power_state); -+ unsigned int state_id = psci_get_pstate_id(power_state); - unsigned int type = psci_get_pstate_type(power_state); -+ unsigned int i; - - assert(req_state != NULL); - -@@ -135,28 +140,19 @@ static int sunxi_validate_power_state(unsigned int power_state, - } - - if (type == PSTATE_TYPE_STANDBY) { -- /* Only one retention power state is supported. */ -- if (psci_get_pstate_id(power_state) > 0) { -- return PSCI_E_INVALID_PARAMS; -- } -- /* The SoC cannot be suspended without losing state */ -- if (power_level == SYSTEM_PWR_LVL) { -- return PSCI_E_INVALID_PARAMS; -- } -- for (unsigned int i = 0; i <= power_level; ++i) { -- req_state->pwr_domain_state[i] = PLAT_MAX_RET_STATE; -- } -- } else { -- /* Only one off power state is supported. */ -- if (psci_get_pstate_id(power_state) > 0) { -- return PSCI_E_INVALID_PARAMS; -- } -- for (unsigned int i = 0; i <= power_level; ++i) { -- req_state->pwr_domain_state[i] = PLAT_MAX_OFF_STATE; -- } -+ return PSCI_E_INVALID_PARAMS; -+ } -+ -+ /* Pass through the requested PSCI state as-is. */ -+ for (i = 0; i <= power_level; ++i) { -+ unsigned int local_pstate = state_id & PLAT_LOCAL_PSTATE_MASK; -+ -+ req_state->pwr_domain_state[i] = local_pstate; -+ state_id >>= PLAT_LOCAL_PSTATE_WIDTH; - } -+ - /* Higher power domain levels should all remain running */ -- for (unsigned int i = power_level + 1; i <= PLAT_MAX_PWR_LVL; ++i) { -+ for (; i <= PLAT_MAX_PWR_LVL; ++i) { - req_state->pwr_domain_state[i] = PSCI_LOCAL_STATE_RUN; - } - --- -2.33.1 - diff --git a/temp/arm-trusted-firmware/APKBUILD b/temp/arm-trusted-firmware/APKBUILD index e8e235380..550f51211 100644 --- a/temp/arm-trusted-firmware/APKBUILD +++ b/temp/arm-trusted-firmware/APKBUILD @@ -1,26 +1,39 @@ -# Forked for adding rk3399, rk3328 support and crust compatibility +# Contributor: Milan P. Stanić +# Contributor: Maxim Karasev +# Maintainer: Bart Ribbers pkgname=arm-trusted-firmware pkgver=9999 -_pkgver=2.6 -pkgrel=6 +_pkgver=2.7.0 +pkgrel=7 pkgdesc="ARM Trusted Firmware-A (TF-A)" url="https://github.com/ARM-software/arm-trusted-firmware" arch="aarch64" license="BSD-3-Clause" makedepends="dtc openssl-dev gcc-arm-none-eabi" -source=" - https://github.com/ARM-software/$pkgname/archive/v$_pkgver/arm-trusted-firmware-$_pkgver.tar.gz - 2001-allwinner-Choose-PSCI-states-to-avoid-translation.patch - 2002-allwinner-Simplify-CPU_SUSPEND-power-state-encoding.patch +source="https://github.com/ARM-software/arm-trusted-firmware/archive/v$_pkgver/arm-trusted-firmware-v$_pkgver.tar.gz" +options="!check" # No tests + +_plats=" + sun50i_a64 + sun50i_h6 + rk3399 + rk3328 " -options="!check" # no tests builddir="$srcdir/$pkgname-$_pkgver" -_plats="sun50i_a64 sun50i_h6 rk3399 rk3328" build() { unset LDFLAGS for plat in $_plats; do - make PLAT=$plat DEBUG=0 bl31 + local opts="" + + case "$plat" in + sun50i_a64) + opts="SUNXI_SETUP_REGULATORS=0 SUNXI_AMEND_DTB=1" + ;; + esac + + msg "Building ATF for $plat (opts='$opts')" + make PLAT=$plat bl31 $opts done } @@ -39,9 +52,6 @@ package() { done } - sha512sums=" -8b20964b1b672898268e27424984af0ef9e95b38f426370ed4b802f67fc204db5f467886707dce77e4560548e01777a6c36d4eb801842c7d1f2ff6ca5d9b7dd1 arm-trusted-firmware-2.6.tar.gz -3f8c63941418e44b849f8770704b1570926cbe20522d6957b965afe62c02a55d092b21397603994f3444908376531f13eb28b9716ed10e0d57bae0d9f5713c1a 2001-allwinner-Choose-PSCI-states-to-avoid-translation.patch -15daabe8a55847d23fb5e498353d368773a50ec339786b422a9b21bbc21a7b1185851a0d9dca6832952bcbc71a1c9d08a508323625bcd2b5781955248a43f13d 2002-allwinner-Simplify-CPU_SUSPEND-power-state-encoding.patch +3e1e09bcc69a0f080f91b94d9c8da6dd0b27b86292599c280438d7b6f594017a896af7cfc58d9d22053f77b5daa2faecd51a59505c755eac8493e4e0fd1e9203 arm-trusted-firmware-v2.7.0.tar.gz "