icE1usb fw: Put E1 IP core register related #defines in e1_hw.h
Related: OS#4675
Change-Id: I6783f473e6bb7dd08a5b5714bdd9b5aac0f28f0d
diff --git a/firmware/ice40-riscv/icE1usb/e1.c b/firmware/ice40-riscv/icE1usb/e1.c
index ad12fe2..7682ce0 100644
--- a/firmware/ice40-riscv/icE1usb/e1.c
+++ b/firmware/ice40-riscv/icE1usb/e1.c
@@ -12,71 +12,12 @@
#include "config.h"
#include "console.h"
#include "e1.h"
+#include "e1_hw.h"
#include "dma.h"
#include "led.h" // FIXME
-// Hardware
-// --------
-
-struct e1_chan {
- uint32_t csr;
- uint32_t bd;
-} __attribute__((packed,aligned(4)));
-
-struct e1_core {
- struct e1_chan rx;
- struct e1_chan tx;
-} __attribute__((packed,aligned(4)));
-
-/* E1 receiver control register */
-#define E1_RX_CR_ENABLE (1 << 0) /* Enable receiver */
-#define E1_RX_CR_MODE_TRSP (0 << 1) /* Request no alignment at all */
-#define E1_RX_CR_MODE_BYTE (1 << 1) /* Request byte-level alignment */
-#define E1_RX_CR_MODE_BFA (2 << 1) /* Request Basic Frame Alignment */
-#define E1_RX_CR_MODE_MFA (3 << 1) /* Request Multi-Frame Alignment */
-#define E1_RX_CR_OVFL_CLR (1 << 12) /* Clear Rx overflow condition */
-
-/* E1 receiver status register */
-#define E1_RX_SR_ENABLED (1 << 0) /* Indicate Rx is enabled */
-#define E1_RX_SR_ALIGNED (1 << 1) /* Indicate Alignment achieved */
-#define E1_RX_SR_BD_IN_EMPTY (1 << 8)
-#define E1_RX_SR_BD_IN_FULL (1 << 9)
-#define E1_RX_SR_BD_OUT_EMPTY (1 << 10)
-#define E1_RX_SR_BD_OUT_FULL (1 << 11)
-#define E1_RX_SR_OVFL (1 << 12) /* Indicate Rx overflow */
-
-/* E1 transmitter control register */
-#define E1_TX_CR_ENABLE (1 << 0) /* Enable transmitter */
-#define E1_TX_CR_MODE_TRSP (0 << 1) /* Transparent bit-stream mode */
-#define E1_TX_CR_MODE_TS0 (1 << 1) /* Generate TS0 in framer */
-#define E1_TX_CR_MODE_TS0_CRC (2 << 1) /* Generate TS0 + CRC4 in framer */
-#define E1_TX_CR_MODE_TS0_CRC_E (3 << 1) /* Generate TS0 + CRC4 + E-bits (based on Rx) in framer */
-#define E1_TX_CR_TICK_LOCAL (0 << 3) /* use local clock for Tx */
-#define E1_TX_CR_TICK_REMOTE (1 << 3) /* use recovered remote clock for Tx */
-#define E1_TX_CR_ALARM (1 << 4) /* indicate ALARM to remote */
-#define E1_TX_CR_LOOPBACK (1 << 5) /* external loopback enable/diasble */
-#define E1_TX_CR_LOOPBACK_CROSS (1 << 6) /* source of loopback: local (0) or other (1) port */
-#define E1_TX_CR_UNFL_CLR (1 << 12) /* Clear Tx underflow condition */
-
-/* E1 transmitter status register */
-#define E1_TX_SR_ENABLED (1 << 0) /* Indicate Tx is enabled */
-#define E1_TX_SR_BD_IN_EMPTY (1 << 8)
-#define E1_TX_SR_BD_IN_FULL (1 << 9)
-#define E1_TX_SR_BD_OUT_EMPTY (1 << 10)
-#define E1_TX_SR_BD_OUT_FULL (1 << 11)
-#define E1_TX_SR_UNFL (1 << 12) /* Indicate Tx underflow */
-
-/* E1 buffer descriptor flags */
-#define E1_BD_VALID (1 << 15)
-#define E1_BD_CRC1 (1 << 14)
-#define E1_BD_CRC0 (1 << 13)
-#define E1_BD_ADDR(x) ((x) & 0x7f)
-#define E1_BD_ADDR_MSK 0x7f
-#define E1_BD_ADDR_SHFT 0
-
-
static volatile struct e1_core * const e1_regs = (void *)(E1_CORE_BASE);
static volatile uint8_t * const e1_data = (void *)(E1_DATA_BASE);