]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/RISC-V-Qemu-sifive_e-FreedomStudio/freedom-e-sdk/include/sifive/devices/spi.h
e3c1d35afb97bbdab168c3bef9e77f0f76ba8827
[freertos] / FreeRTOS / Demo / RISC-V-Qemu-sifive_e-FreedomStudio / freedom-e-sdk / include / sifive / devices / spi.h
1 // See LICENSE for license details.\r
2 \r
3 #ifndef _SIFIVE_SPI_H\r
4 #define _SIFIVE_SPI_H\r
5 \r
6 /* Register offsets */\r
7 \r
8 #define SPI_REG_SCKDIV          0x00\r
9 #define SPI_REG_SCKMODE         0x04\r
10 #define SPI_REG_CSID            0x10\r
11 #define SPI_REG_CSDEF           0x14\r
12 #define SPI_REG_CSMODE          0x18\r
13 \r
14 #define SPI_REG_DCSSCK          0x28\r
15 #define SPI_REG_DSCKCS          0x2a\r
16 #define SPI_REG_DINTERCS        0x2c\r
17 #define SPI_REG_DINTERXFR       0x2e\r
18 \r
19 #define SPI_REG_FMT             0x40\r
20 #define SPI_REG_TXFIFO          0x48\r
21 #define SPI_REG_RXFIFO          0x4c\r
22 #define SPI_REG_TXCTRL          0x50\r
23 #define SPI_REG_RXCTRL          0x54\r
24 \r
25 #define SPI_REG_FCTRL           0x60\r
26 #define SPI_REG_FFMT            0x64\r
27 \r
28 #define SPI_REG_IE              0x70\r
29 #define SPI_REG_IP              0x74\r
30 \r
31 /* Fields */\r
32 \r
33 #define SPI_SCK_PHA             0x1\r
34 #define SPI_SCK_POL             0x2\r
35 \r
36 #define SPI_FMT_PROTO(x)        ((x) & 0x3)\r
37 #define SPI_FMT_ENDIAN(x)       (((x) & 0x1) << 2)\r
38 #define SPI_FMT_DIR(x)          (((x) & 0x1) << 3)\r
39 #define SPI_FMT_LEN(x)          (((x) & 0xf) << 16)\r
40 \r
41 /* TXCTRL register */\r
42 #define SPI_TXWM(x)             ((x) & 0xffff)\r
43 /* RXCTRL register */\r
44 #define SPI_RXWM(x)             ((x) & 0xffff)\r
45 \r
46 #define SPI_IP_TXWM             0x1\r
47 #define SPI_IP_RXWM             0x2\r
48 \r
49 #define SPI_FCTRL_EN            0x1\r
50 \r
51 #define SPI_INSN_CMD_EN         0x1\r
52 #define SPI_INSN_ADDR_LEN(x)    (((x) & 0x7) << 1)\r
53 #define SPI_INSN_PAD_CNT(x)     (((x) & 0xf) << 4)\r
54 #define SPI_INSN_CMD_PROTO(x)   (((x) & 0x3) << 8)\r
55 #define SPI_INSN_ADDR_PROTO(x)  (((x) & 0x3) << 10)\r
56 #define SPI_INSN_DATA_PROTO(x)  (((x) & 0x3) << 12)\r
57 #define SPI_INSN_CMD_CODE(x)    (((x) & 0xff) << 16)\r
58 #define SPI_INSN_PAD_CODE(x)    (((x) & 0xff) << 24)\r
59 \r
60 #define SPI_TXFIFO_FULL  (1 << 31)   \r
61 #define SPI_RXFIFO_EMPTY (1 << 31)   \r
62 \r
63 /* Values */\r
64 \r
65 #define SPI_CSMODE_AUTO         0\r
66 #define SPI_CSMODE_HOLD         2\r
67 #define SPI_CSMODE_OFF          3\r
68 \r
69 #define SPI_DIR_RX              0\r
70 #define SPI_DIR_TX              1\r
71 \r
72 #define SPI_PROTO_S             0\r
73 #define SPI_PROTO_D             1\r
74 #define SPI_PROTO_Q             2\r
75 \r
76 #define SPI_ENDIAN_MSB          0\r
77 #define SPI_ENDIAN_LSB          1\r
78 \r
79 \r
80 #endif /* _SIFIVE_SPI_H */\r