1 /*
2 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3 * Copyright 2021, HENSOLDT Cyber
4 *
5 * SPDX-License-Identifier: GPL-2.0-only
6 *
7 * A dummy PLIC driver for platforms like spike that do not implement a PLIC.
8 * This can be taken as a template for platform specific PLIC drivers.
9 */
10
11 #pragma once
12
13 /* Since this is a template, it has a dummy implementation for the trigger API
14 * function plic_irq_set_trigger().
15 */
16 #define HAVE_SET_TRIGGER 1
17
18 #include <arch/machine/plic.h>
19
plic_get_claim(void)20 static inline irq_t plic_get_claim(void)
21 {
22 printf("no PLIC present, can't claim any interrupt\n");
23 return irqInvalid;
24 }
25
plic_complete_claim(irq_t irq)26 static inline void plic_complete_claim(irq_t irq)
27 {
28 printf("no PLIC present, can't complete claim for interrupt %d\n",
29 (int)irq);
30 }
31
plic_mask_irq(bool_t disable,irq_t irq)32 static inline void plic_mask_irq(bool_t disable, irq_t irq)
33 {
34 printf("no PLIC present, can't %s interrupt %d\n",
35 disable ? "mask" : "unmask", (int)irq);
36 }
37
plic_irq_set_trigger(irq_t irq,bool_t edge_triggered)38 static inline void plic_irq_set_trigger(irq_t irq, bool_t edge_triggered)
39 {
40 printf("no PLIC present, can't set interrupt %d to %s triggered\n",
41 (int)irq, edge_triggered ? "edge" : "level");
42 }
43
plic_init_hart(void)44 static inline void plic_init_hart(void)
45 {
46 printf("no PLIC present, skip hart specific initialisation\n");
47 }
48
plic_init_controller(void)49 static inline void plic_init_controller(void)
50 {
51 printf("no PLIC present, skip platform specific initialisation\n");
52 }
53