[PATCH 8/9] ARM: Layerscape: LS1046a: remove PPA support
Sascha Hauer
s.hauer at pengutronix.de
Mon Oct 21 00:21:22 PDT 2024
Both LS1046a boards supported by barebox have been switched to TF-A, so
drop no longer used PPA support.
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
arch/arm/mach-layerscape/Kconfig | 12 ---
arch/arm/mach-layerscape/Makefile | 1 -
arch/arm/mach-layerscape/ppa-entry.S | 32 --------
arch/arm/mach-layerscape/ppa.c | 147 -----------------------------------
firmware/Makefile | 1 -
include/mach/layerscape/layerscape.h | 10 ---
6 files changed, 203 deletions(-)
diff --git a/arch/arm/mach-layerscape/Kconfig b/arch/arm/mach-layerscape/Kconfig
index 9d15ba0173..415ee93b99 100644
--- a/arch/arm/mach-layerscape/Kconfig
+++ b/arch/arm/mach-layerscape/Kconfig
@@ -2,18 +2,6 @@
if ARCH_LAYERSCAPE
-config ARCH_LAYERSCAPE_PPA
- bool "Include PPA firmware"
- select ARM_PSCI_OF
- select ARM_SMCCC
- select FITIMAGE
- help
- The "Primary Protected Application" (PPA) is a PSCI compliant firmware
- distributed by NXP. It is needed to start the secondary cores on
- Layerscape SoCs. Without it Linux will be started in EL3 and doesn't
- work properly. The precompiled firmware images can be found here:
- https://github.com/NXP/qoriq-ppa-binary
-
config ARCH_LS1028
bool
select CPU_V8
diff --git a/arch/arm/mach-layerscape/Makefile b/arch/arm/mach-layerscape/Makefile
index ee7df5ea19..10e1c031b9 100644
--- a/arch/arm/mach-layerscape/Makefile
+++ b/arch/arm/mach-layerscape/Makefile
@@ -7,7 +7,6 @@ obj-$(CONFIG_ARCH_LS1046) += icid.o
obj-pbl-y += boot.o soc.o
pbl-y += xload-qspi.o xload.o
pbl-$(CONFIG_ARCH_LS1028) += tzc400.o
-obj-$(CONFIG_ARCH_LAYERSCAPE_PPA) += ppa.o ppa-entry.o
obj-$(CONFIG_BOOTM) += pblimage.o
lwl-$(CONFIG_ARCH_LS1021) += lowlevel-ls102xa.o
diff --git a/arch/arm/mach-layerscape/ppa-entry.S b/arch/arm/mach-layerscape/ppa-entry.S
deleted file mode 100644
index f5f30b6719..0000000000
--- a/arch/arm/mach-layerscape/ppa-entry.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-#include <linux/linkage.h>
-
-.section .text.ppa_entry
-ENTRY(ppa_entry)
- /*
- * x0: Secure Firmware entry point
- * x1: Exception return address Low
- * x2: Exception return address High
- */
-
- /* Save stack pointer for EL2 */
- mov x3, sp
- msr sp_el2, x3
-
- /* Set exception return address hold pointer */
- adr x4, 1f
- mov x3, x4
- rev w3, w3
- str w3, [x1]
- lsr x3, x4, #32
- rev w3, w3
- str w3, [x2]
-
- /* Call SEC monitor */
- br x0
-
-1:
- mov x0, #0
- ret
-ENDPROC(ppa_entry)
diff --git a/arch/arm/mach-layerscape/ppa.c b/arch/arm/mach-layerscape/ppa.c
deleted file mode 100644
index 99b76b4c30..0000000000
--- a/arch/arm/mach-layerscape/ppa.c
+++ /dev/null
@@ -1,147 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-
-#define pr_fmt(fmt) "ppa: " fmt
-
-#include <common.h>
-#include <init.h>
-#include <mmu.h>
-#include <firmware.h>
-#include <memory.h>
-#include <linux/sizes.h>
-#include <linux/arm-smccc.h>
-#include <asm/mmu.h>
-#include <soc/fsl/immap_lsch2.h>
-#include <asm/system.h>
-#include <image-fit.h>
-#include <asm/psci.h>
-#include <mach/layerscape/layerscape.h>
-#include <asm/cache.h>
-
-int ppa_entry(const void *, u32 *, u32 *);
-
-#define SEC_JR3_OFFSET 0x40000
-
-static int of_psci_do_fixup(struct device_node *root, void *unused)
-{
- unsigned long psci_version;
- struct device_node *np;
- struct arm_smccc_res res = {};
-
- arm_smccc_smc(ARM_PSCI_0_2_FN_PSCI_VERSION, 0, 0, 0, 0, 0, 0, 0, &res);
- psci_version = res.a0;
-
- for_each_compatible_node_from(np, root, NULL, "fsl,sec-v4.0-job-ring") {
- const void *reg;
- int na = of_n_addr_cells(np);
- u64 offset;
-
- reg = of_get_property(np, "reg", NULL);
- if (!reg)
- continue;
-
- offset = of_read_number(reg, na);
- if (offset != SEC_JR3_OFFSET)
- continue;
-
- of_delete_node(np);
- break;
- }
-
- return of_psci_fixup(root, psci_version, "smc");
-}
-
-static int ppa_init(void *ppa, size_t ppa_size, void *sec_firmware_addr)
-{
- int ret;
- u32 *boot_loc_ptr_l, *boot_loc_ptr_h;
- struct ccsr_scfg __iomem *scfg = (void *)(LSCH2_SCFG_ADDR);
- struct fit_handle *fit;
- void *conf;
- const void *buf;
- unsigned long firmware_size;
-
- boot_loc_ptr_l = &scfg->scratchrw[1];
- boot_loc_ptr_h = &scfg->scratchrw[0];
-
- fit = fit_open_buf(ppa, ppa_size, false, BOOTM_VERIFY_AVAILABLE);
- if (IS_ERR(fit)) {
- pr_err("Cannot open ppa FIT image: %pe\n", fit);
- return PTR_ERR(fit);
- }
-
- conf = fit_open_configuration(fit, NULL);
- if (IS_ERR(conf)) {
- pr_err("Cannot open default config in ppa FIT image: %pe\n", conf);
- ret = PTR_ERR(conf);
- goto err;
- }
-
-
- ret = fit_open_image(fit, conf, "firmware", &buf, &firmware_size);
- if (ret) {
- pr_err("Cannot open firmware image in ppa FIT image: %s\n",
- strerror(-ret));
- goto err;
- }
-
- /* Copy the secure firmware to secure memory */
- memcpy(sec_firmware_addr, buf, firmware_size);
- sync_caches_for_execution();
-
- ret = ppa_entry(sec_firmware_addr, boot_loc_ptr_l, boot_loc_ptr_h);
- if (ret) {
- pr_err("Couldn't install PPA firmware: %s\n", strerror(-ret));
- goto err;
- }
-
- pr_info("PPA firmware installed at 0x%p, now in EL%d\n",
- sec_firmware_addr, current_el());
-
- of_register_fixup(of_psci_do_fixup, NULL);
-err:
- fit_close(fit);
-
- return ret;
-}
-
-int ls1046a_ppa_init(resource_size_t ppa_start, resource_size_t ppa_size)
-{
- resource_size_t ppa_end = ppa_start + ppa_size - 1;
- struct resource *res;
- void *ppa_fw;
- size_t ppa_fw_size;
- int el = current_el();
- int ret;
-
- res = reserve_sdram_region("ppa", ppa_start, ppa_size);
- if (!res) {
- pr_err("Cannot request SDRAM region %pa - %pa\n",
- &ppa_start, &ppa_end);
- return -EINVAL;
- }
-
- get_builtin_firmware(ppa_ls1046a_bin, &ppa_fw, &ppa_fw_size);
- if (!ppa_fw_size) {
- pr_err("PPA Firmware was not included in build\n");
- return -ENOSYS;
- }
-
- if (el == 3) {
- unsigned long cr;
-
- asm volatile("mrs %0, sctlr_el3" : "=r" (cr) : : "cc");
- remap_range((void *)ppa_start, ppa_size, MAP_CACHED);
-
- ret = ppa_init(ppa_fw, ppa_fw_size, (void *)ppa_start);
-
- asm volatile("msr sctlr_el2, %0" : : "r" (cr) : "cc");
- remap_range((void *)ppa_start, ppa_size, MAP_UNCACHED);
-
- if (ret)
- return ret;
- }
-
- of_register_fixup(of_fixup_reserved_memory, res);
-
- return 0;
-}
diff --git a/firmware/Makefile b/firmware/Makefile
index 9351e24e86..fd63de1c55 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -31,7 +31,6 @@ pbl-firmware-$(CONFIG_ARCH_RK3399) += rk3399-bl31.bin
pbl-firmware-$(CONFIG_ARCH_RK3399_OPTEE) += rk3399-op-tee.bin
firmware-$(CONFIG_DRIVER_NET_FSL_FMAN) += fsl_fman_ucode_ls1046_r1.0_106_4_18.bin
-firmware-$(CONFIG_ARCH_LAYERSCAPE_PPA) += ppa-ls1046a.bin
fw-external-$(CONFIG_FIRMWARE_LS1028A_ATF) += ls1028a-bl31.bin
fw-external-$(CONFIG_FIRMWARE_LS1046A_ATF) += ls1046a-bl31.bin
diff --git a/include/mach/layerscape/layerscape.h b/include/mach/layerscape/layerscape.h
index 7f9dc7d8a1..ab8304ede0 100644
--- a/include/mach/layerscape/layerscape.h
+++ b/include/mach/layerscape/layerscape.h
@@ -32,16 +32,6 @@ enum bootsource ls1021a_bootsource_get(void);
#define LAYERSCAPE_SOC_LS1028A 1028
#define LAYERSCAPE_SOC_LS1046A 1046
-#ifdef CONFIG_ARCH_LAYERSCAPE_PPA
-int ls1046a_ppa_init(resource_size_t ppa_start, resource_size_t ppa_size);
-#else
-static inline int ls1046a_ppa_init(resource_size_t ppa_start,
- resource_size_t ppa_size)
-{
- return -ENOSYS;
-}
-#endif
-
struct dram_region_info {
uint64_t addr;
uint64_t size;
--
2.39.5
More information about the barebox
mailing list