diff options
author | Kaczanowski Mateusz | 2020-01-08 14:26:55 +0100 |
---|---|---|
committer | Kaczanowski Mateusz | 2020-01-08 14:29:17 +0100 |
commit | 68ecd2668c735031ed3bdfbcb749fb131f459dd2 (patch) | |
tree | c53ff32ab986b8d9c4c18e8dfbba13d27318faa2 /epiphany.h | |
download | aur-68ecd2668c735031ed3bdfbcb749fb131f459dd2.tar.gz |
initial commit
Diffstat (limited to 'epiphany.h')
-rw-r--r-- | epiphany.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/epiphany.h b/epiphany.h new file mode 100644 index 000000000000..1378296d2643 --- /dev/null +++ b/epiphany.h @@ -0,0 +1,131 @@ +#ifndef __EPIPHANY_H__ +#define __EPIPHANY_H__ + +#include <uapi/misc/epiphany.h> + +/* Epiphany system registers */ +enum e_elink_regs { + ELINK_RESET = 0xF0200, + ELINK_CLK = 0xF0204, + ELINK_CHIPID = 0xF0208, + ELINK_VERSION = 0xF020C, + ELINK_TXCFG = 0xF0210, + ELINK_TXSTATUS = 0xF0214, + ELINK_TXGPIO = 0xF0218, + ELINK_TXMONITOR = 0xF021C, + ELINK_TXPACKET = 0xF0220, + ELINK_RXCFG = 0xF0300, + ELINK_RXSTATUS = 0xF0304, + ELINK_RXGPIO = 0xF0308, + ELINK_RXOFFSET = 0xF030C, + ELINK_RXDELAY0 = 0xF0310, + ELINK_RXDELAY1 = 0xF0314, + ELINK_RXTESTDATA = 0xF0318, + ELINK_MAILBOXLO = 0xF0730, + ELINK_MAILBOXHI = 0xF0734, + ELINK_MAILBOXSTAT = 0xF0738, + ELINK_TXMMU = 0xE0000, + ELINK_RXMMU = 0xE8000, +}; + +union elink_reset { + u32 reg; + struct { + unsigned tx_reset:1; + unsigned rx_reset:1; + }; +} __packed; + +union elink_chipid { + u32 reg; + union { + struct { + unsigned corecol:6; + unsigned corerow:6; + }; + struct { + unsigned:2; + unsigned chipcol; + unsigned:2; + unsigned chiprow; + }; + }; +} __packed; + +union elink_version { + u32 reg; + struct { + unsigned platform:8; + unsigned revision:8; + }; +} __packed; + +union elink_txcfg { + u32 reg; + struct { + unsigned enable:1; + unsigned mmu_enable:1; + unsigned remap_mode:2; + unsigned ctrlmode:4; + unsigned:1; + unsigned ctrlmode_bypass:1; + unsigned burst_enable:1; + unsigned transmit_mode:2; + }; +} __packed; + +union elink_rxcfg { + u32 reg; + struct { + unsigned test_mode:1; + unsigned mmu_enable:1; + unsigned remap_mode:2; + unsigned remap_sel:12; + unsigned remap_pattern:12; + unsigned mailbox_irq_en:1; + }; +} __packed; + +union elink_mailboxstat { + u32 reg; + struct { + unsigned not_empty:1; + unsigned full:1; + unsigned half_full:1; + unsigned:13; + u16 count; + }; +} __packed; + +/* Chip registers */ +enum e_chip_regs { + E_REG_LINKCFG = 0xf0300, + E_REG_LINKTXCFG = 0xf0304, + E_REG_LINKRXCFG = 0xf0308, + E_REG_GPIOCFG = 0xf030c, + E_REG_FLAGCFG = 0xf0318, + E_REG_SYNC = 0xf031c, + E_REG_HALT = 0xf0320, + E_REG_RESET = 0xf0324, + E_REG_LINKDEBUG = 0xf0328 +}; + +enum e_ctrlmode { + E_CTRLMODE_NORMAL = 0, + E_CTRLMODE_DMA0_LAST = 4, + E_CTRLMODE_DMA1_LAST = 8, + E_CTRLMODE_MSGMODE = 12, + E_CTRLMODE_MULTICAST = 3, + E_CTRLMODE_NORTH = 1, + E_CTRLMODE_EAST = 5, + E_CTRLMODE_SOUTH = 9, + E_CTRLMODE_WEST = 13 +}; + +enum e_core_reg { + E_REG_BASE = 0xf0000, + E_REG_CONFIG = 0xf0400, + E_REG_MESHCONFIG = 0xf0700 +}; + +#endif /* __EPIPHANY_H__ */ |