diff options
Diffstat (limited to 'roms/opensbi/include/sbi_utils/fdt/fdt_fixup.h')
-rw-r--r-- | roms/opensbi/include/sbi_utils/fdt/fdt_fixup.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/roms/opensbi/include/sbi_utils/fdt/fdt_fixup.h b/roms/opensbi/include/sbi_utils/fdt/fdt_fixup.h new file mode 100644 index 000000000..0697a18ee --- /dev/null +++ b/roms/opensbi/include/sbi_utils/fdt/fdt_fixup.h @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: BSD-2-Clause +/* + * fdt_fixup.h - Flat Device Tree manipulation helper routines + * Implement platform specific DT fixups on top of libfdt. + * + * Copyright (C) 2020 Bin Meng <bmeng.cn@gmail.com> + */ + +#ifndef __FDT_FIXUP_H__ +#define __FDT_FIXUP_H__ + +/** + * Fix up the CPU node in the device tree + * + * This routine updates the "status" property of a CPU node in the device tree + * to "disabled" if that hart is in disabled state in OpenSBI. + * + * It is recommended that platform codes call this helper in their final_init() + * + * @param fdt: device tree blob + */ +void fdt_cpu_fixup(void *fdt); + +/** + * Fix up the PLIC node in the device tree + * + * This routine updates the "interrupt-extended" property of the PLIC node in + * the device tree to hide the M-mode external interrupt from CPUs. + * + * It is recommended that platform codes call this helper in their final_init() + * + * @param fdt: device tree blob + * @param compat: PLIC node compatible string + */ +void fdt_plic_fixup(void *fdt, const char *compat); + +/** + * Fix up the reserved memory node in the device tree + * + * This routine inserts a child node of the reserved memory node in the device + * tree that describes the protected memory region done by OpenSBI via PMP. + * + * It is recommended that platform codes call this helper in their final_init() + * + * @param fdt: device tree blob + * @return zero on success and -ve on failure + */ +int fdt_reserved_memory_fixup(void *fdt); + +/** + * Fix up the reserved memory subnodes in the device tree + * + * This routine adds the no-map property to the reserved memory subnodes so + * that the OS does not map those PMP protected memory regions. + * + * Platform codes must call this helper in their final_init() after fdt_fixups() + * if the OS should not map the PMP protected reserved regions. + * + * @param fdt: device tree blob + * @return zero on success and -ve on failure + */ +int fdt_reserved_memory_nomap_fixup(void *fdt); + +/** + * General device tree fix-up + * + * This routine do all required device tree fix-ups for a typical platform. + * It fixes up the PLIC node and the reserved memory node in the device tree + * by calling the corresponding helper routines to accomplish the task. + * + * It is recommended that platform codes call this helper in their final_init() + * + * @param fdt: device tree blob + */ +void fdt_fixups(void *fdt); + +#endif /* __FDT_FIXUP_H__ */ + |