aboutsummaryrefslogtreecommitdiffstats
path: root/src/pru/pru0.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pru/pru0.c')
-rw-r--r--src/pru/pru0.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/pru/pru0.c b/src/pru/pru0.c
index 3a8fd421..c6a63cb9 100644
--- a/src/pru/pru0.c
+++ b/src/pru/pru0.c
@@ -135,8 +135,7 @@ static void
process_io(void)
{
for (;;) {
- if (!(read_r31() & (1 << (WAKE_PRU0_IRQ + R31_IRQ_OFFSET))))
- continue;
+ asm("slp 1");
CT_INTC.SECR0 = (1 << KICK_PRU0_FROM_ARM_EVENT) | (1 << KICK_PRU0_EVENT);
check_can_send();
check_can_read();
@@ -327,6 +326,10 @@ main(void)
, CHAN_DESC, CHAN_PORT) != PRU_RPMSG_SUCCESS)
;
+ // Allow PRU0 and PRU1 to wake from sleep
+ PRU0_CTRL.WAKEUP_EN = 1 << (WAKE_PRU0_IRQ + R31_IRQ_OFFSET);
+ PRU1_CTRL.WAKEUP_EN = 1 << (WAKE_PRU1_IRQ + R31_IRQ_OFFSET);
+
// Wait for PRU1 to be ready
memset(SHARED_MEM, 0, sizeof(*SHARED_MEM));
writel(&SHARED_MEM->signal, SIGNAL_PRU0_WAITING);