commit b8e8a89224f5f477ef09963325aadbeb974cff35
parent 4092b1573f340bed550e20c77bf09e1fb5ad0992
Author: Brian Swetland <swetland@frotz.net>
Date:   Sat, 21 May 2022 16:26:42 -0700
hw/litex: add ethmac registers, base, irq, etc
Diffstat:
2 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/hw/inc/hw/litex.h b/hw/inc/hw/litex.h
@@ -61,3 +61,36 @@
 #define LX_VTG_VSYNC_START   0x008
 #define LX_VTG_VSYNC_END     0x00C
 #define LX_VTG_VSCAN         0x010
+
+
+// Litex Ethernet MAC
+
+// WR is from MAC to SRAM (RX Packets)
+#define LX_ETHMAC_WR_SLOT       0x000
+#define LX_ETHMAC_WR_LEN        0x004
+#define LX_ETHMAC_WR_ERR        0x008
+#define LX_ETHMAC_WR_EV_STATUS  0x00C
+#define LX_ETHMAC_WR_EV_PENDING 0x010
+#define LX_ETHMAC_WR_EV_ENABLE  0x014
+
+// RD is from SRAM to MAC (TX Packets)
+#define LX_ETHMAC_RD_START      0x018
+#define LX_ETHMAC_RD_READY      0x01C
+#define LX_ETHMAC_RD_LEVEL      0x020
+#define LX_ETHMAC_RD_SLOT       0x024
+#define LX_ETHMAC_RD_LEN        0x028
+#define LX_ETHMAC_RD_EV_STATUS  0x02C
+#define LX_ETHMAC_RD_EV_PENDING 0x030
+#define LX_ETHMAC_RD_EV_ENABLE  0x034
+
+#define LX_ETHMAC_PRE_CRC       0x038
+#define LX_ETHMAC_RX_PRE_ERR    0x03C
+#define LX_ETHMAC_RX_CRC_ERR    0x040
+
+#define LX_ETHMAC_EVb_WR 1
+#define LX_ETHMAC_EVb_RD 1
+
+// Litex Ethernet PHY
+
+#define LX_ETHPHY_RESET      0x000
+
diff --git a/hw/inc/hw/platform.h b/hw/inc/hw/platform.h
@@ -9,6 +9,10 @@
 #define FRAMEBUFFER_BASE   0x40C00000 // default fb dma base
 #define DRAM_SIZE          (32*1024*1024)
 #define BOOTLOADER_SIZE    0x00008000
+#define ETHMAC_SRAM_BASE   0xE0000000
+#define ETHMAC_SLOT_SIZE   0x800
+#define ETHMAC_RX_SLOTS    2
+#define ETHMAC_TX_SLOTS    2
 #define MMIO_BASE          0xF0000000
 
 // MMIO Devices
@@ -22,14 +26,17 @@
 #define SPIFLASH_CORE_BASE 0xF0004000
 #define SPICLASH_PHY_BASE  0xF0004800
 #define SPISDCARD_BASE     0xF0005000
+#define ETHMAC_BASE        0xF0005800
 
 // Peripheral Interrupt Numbers
 #define TIMER0_IRQn 0
 #define UART0_IRQn  1
+#define ETHMAC0_IRQn 2
 
 // Peripheral Interrupt Bits
 #define TIMER0_IRQb (1U << TIMER0_IRQn)
 #define UART0_IRQb (1U << UART0_IRQn)
+#define ETHMAC0_IRQb (1U << ETHMAC_IRQn)
 
 #ifndef __ASSEMBLY__