diff options
| author | Samuel Holland <[email protected]> | 2022-06-12 20:03:54 -0500 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2022-06-13 11:54:06 +0530 |
| commit | 5e5675874ca042fe977ffb27afcfa06cadc84b8b (patch) | |
| tree | e8aedc2bb0687b1ea890d1fb261f697d241d874a /lib/utils | |
| parent | 69be3dff9df767c19a461fadf73ad7331b4bdb4c (diff) | |
lib: utils/irqchip: Add wrapper for T-HEAD PLIC delegation
The delegation bit is lost along with the rest of the PLIC state when
the CPU power domain in the Allwinner D1 is powered down, so the PLIC
needs to be re-delegated to S-mode during the hart resume path.
Reviewed-by: Anup Patel <[email protected]>
Signed-off-by: Samuel Holland <[email protected]>
Diffstat (limited to 'lib/utils')
| -rw-r--r-- | lib/utils/irqchip/fdt_irqchip_plic.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/utils/irqchip/fdt_irqchip_plic.c b/lib/utils/irqchip/fdt_irqchip_plic.c index 89b12d40..a6e185cf 100644 --- a/lib/utils/irqchip/fdt_irqchip_plic.c +++ b/lib/utils/irqchip/fdt_irqchip_plic.c @@ -151,6 +151,13 @@ static void thead_plic_plat_init(struct plic_data *pd) writel_relaxed(BIT(0), (char *)pd->addr + THEAD_PLIC_CTRL_REG); } +void thead_plic_restore(void) +{ + struct plic_data *plic = plic_hartid2data[current_hartid()]; + + thead_plic_plat_init(plic); +} + static const struct fdt_match irqchip_plic_match[] = { { .compatible = "riscv,plic0" }, { .compatible = "sifive,plic-1.0.0" }, |
