icE1usb fw: Automatically report alarm condition to remote peer
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I5ccf6b92f7be512bad3dda42caaee5f7eabf3ca3
diff --git a/firmware/ice40-riscv/icE1usb/e1.c b/firmware/ice40-riscv/icE1usb/e1.c
index 17c1786..80b3aea 100644
--- a/firmware/ice40-riscv/icE1usb/e1.c
+++ b/firmware/ice40-riscv/icE1usb/e1.c
@@ -646,6 +646,12 @@
e1->errors.flags &= ~E1_ERR_F_RAI;
}
+ /* If we have any local alarm, make sure to notify remote side */
+ if (e1->errors.flags & (E1_ERR_F_LOS | E1_ERR_F_AIS | E1_ERR_F_ALIGN_ERR))
+ e1_regs->tx.csr = e1->tx.cr.val | E1_TX_CR_ALARM;
+ else
+ e1_regs->tx.csr = e1->tx.cr.val;
+
/* Update leds */
_e1_update_leds(port);