diff options
| author | Atish Patra <atish.patra@wdc.com> | 2019-01-09 01:17:41 -0800 |
|---|---|---|
| committer | Anup Patel <anup@brainfault.org> | 2019-01-18 10:05:12 +0530 |
| commit | e0686ca844f6c7372edd353cffe08ddee5dcf5c9 (patch) | |
| tree | 80e429366d1e0d604ae18676a20bb165236bbf55 /platform/common | |
| parent | 3075da07b69562889e27d6f702704803db1f6f72 (diff) | |
| download | opensbi-e0686ca844f6c7372edd353cffe08ddee5dcf5c9.tar.gz opensbi-e0686ca844f6c7372edd353cffe08ddee5dcf5c9.tar.bz2 opensbi-e0686ca844f6c7372edd353cffe08ddee5dcf5c9.zip | |
platform: No need to pass context id for plic fixup.
PLIC DT entry fixup can be done by comparing external
interrupt number instead of context id. No need to invoke
fixup for each plic context.
Signed-off-by: Atish Patra <atish.patra@wdc.com>
Diffstat (limited to 'platform/common')
| -rw-r--r-- | platform/common/include/plat/irqchip/plic.h | 2 | ||||
| -rw-r--r-- | platform/common/irqchip/plic.c | 13 |
2 files changed, 8 insertions, 7 deletions
diff --git a/platform/common/include/plat/irqchip/plic.h b/platform/common/include/plat/irqchip/plic.h index d3094acc..79a8e544 100644 --- a/platform/common/include/plat/irqchip/plic.h +++ b/platform/common/include/plat/irqchip/plic.h @@ -12,7 +12,7 @@ #include <sbi/sbi_types.h> -void plic_fdt_fixup(void *fdt, const char *compat, u32 cntx_id); +void plic_fdt_fixup(void *fdt, const char *compat); int plic_warm_irqchip_init(u32 target_hart, int m_cntx_id, int s_cntx_id); diff --git a/platform/common/irqchip/plic.c b/platform/common/irqchip/plic.c index 0a2a0367..59265cfc 100644 --- a/platform/common/irqchip/plic.c +++ b/platform/common/irqchip/plic.c @@ -8,6 +8,8 @@ */ #include <sbi/riscv_io.h> +#include <sbi/riscv_encoding.h> +#include <sbi/sbi_console.h> #include <plat/tinyfdt.h> #include <plat/irqchip/plic.h> #include <string.h> @@ -50,7 +52,6 @@ static void plic_fdt_fixup_prop(const struct fdt_node *node, { u32 *cells; u32 i, cells_count; - u32 *cntx_id = priv; if (!prop) return; @@ -63,15 +64,15 @@ static void plic_fdt_fixup_prop(const struct fdt_node *node, if (!cells_count) return; - for (i = 0; i < cells_count; i++) { - if (((i % 2) == 1) && ((i / 2) == *cntx_id)) - cells[i] = fdt_rev32(0xffffffff); + for (i = 0; i < (cells_count/2); i++) { + if (fdt_rev32(cells[2*i+1]) == IRQ_M_EXT) + cells[2*i+1] = fdt_rev32(0xffffffff); } } -void plic_fdt_fixup(void *fdt, const char *compat, u32 cntx_id) +void plic_fdt_fixup(void *fdt, const char *compat) { - fdt_compat_node_prop(fdt, compat, plic_fdt_fixup_prop, &cntx_id); + fdt_compat_node_prop(fdt, compat, plic_fdt_fixup_prop, NULL); } int plic_warm_irqchip_init(u32 target_hart, |
