diff --git a/include/sbi_utils/irqchip/aplic.h b/include/sbi_utils/irqchip/aplic.h index ad613778..3461d1c7 100644 --- a/include/sbi_utils/irqchip/aplic.h +++ b/include/sbi_utils/irqchip/aplic.h @@ -35,6 +35,7 @@ struct aplic_data { struct sbi_irqchip_device irqchip; struct sbi_dlist node; /* Public members */ + u32 unique_id; unsigned long addr; unsigned long size; unsigned long num_idc; diff --git a/include/sbi_utils/irqchip/imsic.h b/include/sbi_utils/irqchip/imsic.h index 353cefec..88dd3cfb 100644 --- a/include/sbi_utils/irqchip/imsic.h +++ b/include/sbi_utils/irqchip/imsic.h @@ -24,6 +24,7 @@ struct imsic_regs { }; struct imsic_data { + u32 unique_id; bool targets_mmode; u32 guest_index_bits; u32 hart_index_bits; diff --git a/include/sbi_utils/irqchip/plic.h b/include/sbi_utils/irqchip/plic.h index 18aa7469..0dbf4ed3 100644 --- a/include/sbi_utils/irqchip/plic.h +++ b/include/sbi_utils/irqchip/plic.h @@ -17,6 +17,7 @@ struct plic_data { /* Private members */ struct sbi_irqchip_device irqchip; /* Public members */ + u32 unique_id; unsigned long addr; unsigned long size; unsigned long num_src; diff --git a/lib/utils/fdt/fdt_helper.c b/lib/utils/fdt/fdt_helper.c index a8c6e1aa..b57eae1a 100644 --- a/lib/utils/fdt/fdt_helper.c +++ b/lib/utils/fdt/fdt_helper.c @@ -673,6 +673,7 @@ int fdt_parse_aplic_node(const void *fdt, int nodeoff, struct aplic_data *aplic) rc = fdt_get_node_addr_size(fdt, nodeoff, 0, ®_addr, ®_size); if (rc < 0 || !reg_size) return SBI_ENODEV; + aplic->unique_id = nodeoff; aplic->addr = reg_addr; aplic->size = reg_size; @@ -805,6 +806,7 @@ int fdt_parse_imsic_node(const void *fdt, int nodeoff, struct imsic_data *imsic) if (nodeoff < 0 || !imsic || !fdt) return SBI_ENODEV; + imsic->unique_id = nodeoff; imsic->targets_mmode = false; val = fdt_getprop(fdt, nodeoff, "interrupts-extended", &len); if (val && len > sizeof(fdt32_t)) { @@ -887,6 +889,7 @@ int fdt_parse_plic_node(const void *fdt, int nodeoffset, struct plic_data *plic) ®_addr, ®_size); if (rc < 0 || !reg_size) return SBI_ENODEV; + plic->unique_id = nodeoffset; plic->addr = reg_addr; plic->size = reg_size; diff --git a/platform/generic/openhwgroup/ariane.c b/platform/generic/openhwgroup/ariane.c index 70a97f38..ce2f5512 100644 --- a/platform/generic/openhwgroup/ariane.c +++ b/platform/generic/openhwgroup/ariane.c @@ -24,6 +24,7 @@ CLINT_MTIMER_OFFSET) static struct plic_data plic = { + .unique_id = 0, .addr = ARIANE_PLIC_ADDR, .size = ARIANE_PLIC_SIZE, .num_src = ARIANE_PLIC_NUM_SOURCES, diff --git a/platform/generic/openhwgroup/openpiton.c b/platform/generic/openhwgroup/openpiton.c index 60d719e1..1d098da7 100644 --- a/platform/generic/openhwgroup/openpiton.c +++ b/platform/generic/openhwgroup/openpiton.c @@ -23,6 +23,7 @@ (OPENPITON_DEFAULT_CLINT_ADDR + CLINT_MTIMER_OFFSET) static struct plic_data plic = { + .unique_id = 0, .addr = (unsigned long)OPENPITON_DEFAULT_PLIC_ADDR, .size = OPENPITON_DEFAULT_PLIC_SIZE, .num_src = OPENPITON_DEFAULT_PLIC_NUM_SOURCES, diff --git a/platform/kendryte/k210/platform.c b/platform/kendryte/k210/platform.c index 65f5d497..0b76104c 100644 --- a/platform/kendryte/k210/platform.c +++ b/platform/kendryte/k210/platform.c @@ -30,6 +30,7 @@ unsigned long fw_platform_init(unsigned long arg0, unsigned long arg1, } static struct plic_data plic = { + .unique_id = 0, .addr = K210_PLIC_BASE_ADDR, .size = K210_PLIC_BASE_SIZE, .num_src = K210_PLIC_NUM_SOURCES, diff --git a/platform/nuclei/ux600/platform.c b/platform/nuclei/ux600/platform.c index 14fbaeb6..07b27977 100644 --- a/platform/nuclei/ux600/platform.c +++ b/platform/nuclei/ux600/platform.c @@ -63,6 +63,7 @@ static u32 ux600_clk_freq = 8000000; static struct plic_data plic = { + .unique_id = 0, .addr = UX600_PLIC_ADDR, .size = UX600_PLIC_SIZE, .num_src = UX600_PLIC_NUM_SOURCES, diff --git a/platform/template/platform.c b/platform/template/platform.c index 38be1b5c..1f2a1dce 100644 --- a/platform/template/platform.c +++ b/platform/template/platform.c @@ -34,6 +34,7 @@ #define PLATFORM_UART_BAUDRATE 115200 static struct plic_data plic = { + .unique_id = 0, .addr = PLATFORM_PLIC_ADDR, .size = PLATFORM_PLIC_SIZE, .num_src = PLATFORM_PLIC_NUM_SOURCES,