7 #include "sw/device/lib/dif/dif_soc_proxy.h"
8 #include "sw/device/lib/runtime/irq.h"
11 #include "sw/device/lib/testing/test_framework/status.h"
13 #include "hw/top_darjeeling/sw/autogen/top_darjeeling.h"
15 OTTF_DEFINE_TEST_CONFIG();
19 dif_rv_plic_t rv_plic;
20 dif_soc_proxy_t soc_proxy;
21 CHECK_DIF_OK(dif_pinmux_init(
23 CHECK_DIF_OK(dif_rv_plic_init(
25 CHECK_DIF_OK(dif_soc_proxy_init(
30 irq_external_ctrl(
true);
33 const dif_soc_proxy_irq_t soc_proxy_irq = 0;
35 kTopDarjeelingPlicIrqIdSocProxyExternal0;
37 CHECK_DIF_OK(dif_soc_proxy_irq_set_enabled(&soc_proxy, soc_proxy_irq,
44 top_darjeeling_pinmux_peripheral_in_t peripheral_in[] = {
45 kTopDarjeelingPinmuxPeripheralInSocProxySocGpi12,
46 kTopDarjeelingPinmuxPeripheralInSocProxySocGpi13,
47 kTopDarjeelingPinmuxPeripheralInSocProxySocGpi14,
48 kTopDarjeelingPinmuxPeripheralInSocProxySocGpi15,
50 top_darjeeling_pinmux_insel_t insel[] = {
51 kTopDarjeelingPinmuxInselMio4,
52 kTopDarjeelingPinmuxInselMio5,
53 kTopDarjeelingPinmuxInselMio6,
54 kTopDarjeelingPinmuxInselMio7,
57 "Illegal pinmux input configuration arrays!");
58 for (
size_t i = 0; i <
ARRAYSIZE(peripheral_in); i++) {
61 LOG_INFO(
"Muxable SoC GPIs mapped.");
67 LOG_ERROR(
"Exceeded allowed number of unexpected IRQs!");
72 bool soc_proxy_irq_pending, rv_plic_irq_pending;
73 CHECK_DIF_OK(dif_soc_proxy_irq_is_pending(&soc_proxy, soc_proxy_irq,
74 &soc_proxy_irq_pending));
76 &rv_plic_irq_pending));
77 if (soc_proxy_irq_pending && rv_plic_irq_pending) {
85 CHECK_DIF_OK(dif_soc_proxy_irq_acknowledge(&soc_proxy, soc_proxy_irq));
91 CHECK_DIF_OK(dif_soc_proxy_irq_set_enabled(&soc_proxy, soc_proxy_irq,
95 irq_external_ctrl(
false);
98 top_darjeeling_pinmux_mio_out_t mio_out[] = {
99 kTopDarjeelingPinmuxMioOutMio4,
100 kTopDarjeelingPinmuxMioOutMio5,
101 kTopDarjeelingPinmuxMioOutMio6,
102 kTopDarjeelingPinmuxMioOutMio7,
104 top_darjeeling_pinmux_outsel_t outsel[] = {
105 kTopDarjeelingPinmuxOutselSocProxySocGpo12,
106 kTopDarjeelingPinmuxOutselSocProxySocGpo13,
107 kTopDarjeelingPinmuxOutselSocProxySocGpo14,
108 kTopDarjeelingPinmuxOutselSocProxySocGpo15,
111 "Illegal pinmux output configuration arrays!");
112 for (
size_t i = 0; i <
ARRAYSIZE(mio_out); i++) {
115 LOG_INFO(
"Muxable SoC GPOs mapped.");