]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/blobdiff - rpp/src/sys/notification.c
Enable ethernet interrupts for all platforms
[pes-rpp/rpp-lib.git] / rpp / src / sys / notification.c
index 8823c6a09db62a02be51ced30076a698c3be0574..bd16549edc63e0848de57ad364e8f47bfe156fba 100644 (file)
@@ -12,6 +12,8 @@
 /* Include Files */
 
 #include "sys/sys.h"
+#include "rpp/eth.h"
+#include "sys/ti_drv_can.h"
 
 void esmGroup1Notification(uint32_t channel)
 {
@@ -86,3 +88,53 @@ void hetNotification(hetBASE_t *het, uint32_t offset)
 /*  enter user code and remove the while loop... */
        while (1) ;
 }
+
+#ifndef FREERTOS_POSIX
+extern boolean_t HostPendErrHandler(void);
+#if PHY_LINK_MONITOR_INT
+extern boolean_t LinkIntHandler(void);
+#endif
+#pragma INTERRUPT(MDIOMiscInt, IRQ)
+void MDIOMiscInt(void)
+{
+       if (HostPendErrHandler()) return;
+#if PHY_LINK_MONITOR_INT
+       if (LinkIntHandler()) return;
+#endif
+}
+
+extern void RxIntHandler(uint32_t instNum);
+extern void TxIntHandler(uint32_t instNum);
+
+volatile int countEMACCore0RxIsr = 0;
+#pragma INTERRUPT(EMACCore0RxIsr, IRQ)
+void EMACCore0RxIsr(void)
+{
+       countEMACCore0RxIsr++;
+       RxIntHandler(0);
+       /* FIXME was in emac_cmd.c/eth.c and should move somewhere else.
+          rx_irq_cnt++;
+
+          // We know we have only one RX Packet Buffer descriptor --
+          // so we write it in CP to disable interrupt
+          EMACRxCPWrite(emacBase, channel, (unsigned int)rx_desc);
+          EMACCoreIntAck(emacBase, EMAC_INT_CORE0_RX);
+        */
+}
+
+volatile int countEMACCore0TxIsr = 0;
+#pragma INTERRUPT(EMACCore0TxIsr, IRQ)
+void EMACCore0TxIsr(void)
+{
+       countEMACCore0TxIsr++;
+       TxIntHandler(0);
+       /* FIXME Was in emac_cmd.c/eth.c and should move somewhere else
+          tx_irq_cnt++;
+          // If is not being processed by the EMAC anymore
+          if (!(fr1.PktFlgLen & EMAC_DSC_FLAG_OWNER)) {
+          EMACTxCPWrite(emacBase, channel, (unsigned int)&fr1);
+          EMACCoreIntAck(emacBase, EMAC_INT_CORE0_TX);
+          }
+        */
+}
+#endif /* ifndef FREERTOS_POSIX */
\ No newline at end of file