diff options
Diffstat (limited to 'arch/arm/mach-layerscape/ppa.c')
-rw-r--r-- | arch/arm/mach-layerscape/ppa.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-layerscape/ppa.c b/arch/arm/mach-layerscape/ppa.c index 987cb65876..477e894781 100644 --- a/arch/arm/mach-layerscape/ppa.c +++ b/arch/arm/mach-layerscape/ppa.c @@ -18,14 +18,33 @@ 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); + } + return of_psci_fixup(root, psci_version); } |