forked from Mirrors/opensbi
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>
This commit is contained in:
@@ -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,
|
||||
|
Reference in New Issue
Block a user