|
3 | 3 | #include <stdint.h> |
4 | 4 | #include <sddf/util/printf.h> |
5 | 5 |
|
6 | | -#define PCIE_CONFIG_BASE 0x3000000lu |
7 | | -#define DEVICE_BASE 0x2000000lu |
8 | | -#define DEVICE_MSIX_TABLE 0x4000000lu |
| 6 | +#define declare_register(name, offset) \ |
| 7 | + uintptr_t name = (uintptr_t)offset; |
9 | 8 |
|
10 | | -#define declare_register(base, name, offset) \ |
11 | | - uintptr_t name = (uintptr_t)(base + offset); |
12 | | - |
13 | | -#define declare_array_register(base, name, offset, count, multiplier) \ |
| 9 | +#define declare_array_register(name, offset, count, multiplier) \ |
14 | 10 | static inline \ |
15 | 11 | uintptr_t \ |
16 | 12 | name(int index) { \ |
17 | 13 | if (index >= count) { \ |
18 | | - sddf_dprintf("array register index out of bounds\n"); \ |
| 14 | + sddf_dprintf("array register index out of bounds\n"); \ |
19 | 15 | return 0; \ |
20 | 16 | } \ |
21 | | - return base + offset + multiplier * index; \ |
| 17 | + return offset + multiplier * index; \ |
22 | 18 | } \ |
23 | 19 |
|
24 | | -declare_register(PCIE_CONFIG_BASE, PCI_VENDOR_ID_16, 0x00); |
25 | | -declare_register(PCIE_CONFIG_BASE, PCI_DEVICE_ID_16, 0x02); |
26 | | -declare_register(PCIE_CONFIG_BASE, PCI_COMMAND_16, 0x04); |
27 | | -declare_register(PCIE_CONFIG_BASE, PCI_STATUS_16, 0x06); |
28 | | -declare_register(PCIE_CONFIG_BASE, PCI_INTERRUPT_PIN_LINE_16, 0x3C); |
29 | | -declare_register(PCIE_CONFIG_BASE, PCI_MSI_MESSAGE_CONTROL_16, 0x52); |
30 | | -declare_register(PCIE_CONFIG_BASE, PCI_MSI_MESSAGE_ADDRESS_LOW, 0x54); |
31 | | -declare_register(PCIE_CONFIG_BASE, PCI_MSI_MESSAGE_ADDRESS_HIGH, 0x58); |
32 | | -declare_register(PCIE_CONFIG_BASE, PCI_MSI_MESSAGE_DATA_16, 0x5C); |
33 | | -declare_register(PCIE_CONFIG_BASE, PCI_MSI_MASK, 0x60); |
34 | | -declare_register(PCIE_CONFIG_BASE, PCI_MSI_PENDING, 0x64); |
35 | | -declare_register(PCIE_CONFIG_BASE, PCI_MSIX_CTRL, 0x70); |
36 | | -declare_register(PCIE_CONFIG_BASE, PCI_MSIX_OFFSET, 0x74); |
37 | | -declare_register(PCIE_CONFIG_BASE, PCI_MSIX_PENDING, 0x78); |
38 | | - |
39 | | -declare_register(DEVICE_BASE, CTRL, 0x00000); |
40 | | -declare_register(DEVICE_BASE, STATUS, 0x00008); |
41 | | -declare_register(DEVICE_BASE, CTRL_EXT, 0x00018); |
42 | | -declare_register(DEVICE_BASE, EEC, 0x10010); |
43 | | -declare_register(DEVICE_BASE, GPRC, 0x04074); |
44 | | -declare_register(DEVICE_BASE, GPTC, 0x04080); |
45 | | -declare_register(DEVICE_BASE, GORCL, 0x04088); |
46 | | -declare_register(DEVICE_BASE, GORCH, 0x0408C); |
47 | | -declare_register(DEVICE_BASE, GOTCL, 0x04090); |
48 | | -declare_register(DEVICE_BASE, GOTCH, 0x04094); |
49 | | -declare_register(DEVICE_BASE, HLREG0, 0x04240); |
50 | | -declare_register(DEVICE_BASE, LINKS, 0x042A4); |
51 | | -declare_register(DEVICE_BASE, FCTRL, 0x05080); |
52 | | -declare_register(DEVICE_BASE, RXCTRL, 0x03000); |
53 | | -declare_register(DEVICE_BASE, RDRXCTL, 0x02F00); |
54 | | -declare_register(DEVICE_BASE, DTXMXSZRQ, 0x08100); |
55 | | -declare_register(DEVICE_BASE, DMATXCTL, 0x04A80); |
56 | | -declare_register(DEVICE_BASE, RTTDCS, 0x04900); |
57 | | -declare_register(DEVICE_BASE, EICR, 0x00800); |
58 | | -declare_register(DEVICE_BASE, EICS, 0x00808); |
59 | | -declare_register(DEVICE_BASE, EIMS, 0x00880); |
60 | | -declare_register(DEVICE_BASE, EIMC, 0x00888); |
61 | | -declare_register(DEVICE_BASE, EIAC, 0x00810); |
62 | | -declare_register(DEVICE_BASE, GPIE, 0x00898); |
63 | | -declare_register(DEVICE_BASE, TXDGPC, 0x087A0); |
64 | | -declare_register(DEVICE_BASE, TXDGBCL, 0x087A4); |
65 | | -declare_register(DEVICE_BASE, TXDGBCH, 0x087A8); |
66 | | -declare_register(DEVICE_BASE, FACTPS, 0x10150); |
67 | | -declare_array_register(DEVICE_BASE, RDBAL, 0x01000, 64, 0x40); |
68 | | -declare_array_register(DEVICE_BASE, RDBAH, 0x01004, 64, 0x40); |
69 | | -declare_array_register(DEVICE_BASE, RDLEN, 0x01008, 64, 0x60); |
70 | | -declare_array_register(DEVICE_BASE, RDH, 0x01010, 64, 0x40); |
71 | | -declare_array_register(DEVICE_BASE, RDT, 0x01018, 64, 0x40); |
72 | | -declare_array_register(DEVICE_BASE, SRRCTL, 0x01014, 64, 0x40); |
73 | | -declare_array_register(DEVICE_BASE, RXPBSIZE, 0x03C00, 8, 0x4); |
74 | | -declare_array_register(DEVICE_BASE, DCA_RXCTRL, 0x0100C, 64, 0x40); |
75 | | -declare_array_register(DEVICE_BASE, RXDCTL, 0x01028, 64, 0x40); |
76 | | -declare_array_register(DEVICE_BASE, RSCCTL, 0x0102C, 64, 0x40); |
77 | | -declare_array_register(DEVICE_BASE, TDBAL, 0x06000, 64, 0x40); |
78 | | -declare_array_register(DEVICE_BASE, TDBAH, 0x06004, 64, 0x40); |
79 | | -declare_array_register(DEVICE_BASE, TDLEN, 0x06008, 64, 0x40); |
80 | | -declare_array_register(DEVICE_BASE, TDH, 0x06010, 64, 0x40); |
81 | | -declare_array_register(DEVICE_BASE, TDT, 0x06018, 64, 0x40); |
82 | | -declare_array_register(DEVICE_BASE, TXPBSIZE, 0x0CC00, 8, 0x4); |
83 | | -declare_array_register(DEVICE_BASE, TXPBTHRESH, 0x04950, 8, 0x4); |
84 | | -declare_array_register(DEVICE_BASE, TXDCTL, 0x06028, 64, 0x40); |
85 | | -declare_array_register(DEVICE_BASE, IVAR, 0x00900, 64, 0x4); |
86 | | -declare_array_register(DEVICE_BASE, EITR, 0x00820, 24, 0x4); |
87 | | -declare_array_register(DEVICE_BASE, QPTC, 0x08680, 16, 0x4); |
88 | | -declare_array_register(DEVICE_BASE, RAL, 0x0A200, 128, 0x8); |
89 | | -declare_array_register(DEVICE_BASE, RAH, 0x0A204, 128, 0x8); |
90 | | -declare_array_register(DEVICE_BASE, RSCINT, 0x12000, 128, 0x4); |
| 20 | +declare_register(CTRL, 0x00000); |
| 21 | +declare_register(STATUS, 0x00008); |
| 22 | +declare_register(CTRL_EXT, 0x00018); |
| 23 | +declare_register(EEC, 0x10010); |
| 24 | +declare_register(GPRC, 0x04074); |
| 25 | +declare_register(GPTC, 0x04080); |
| 26 | +declare_register(GORCL, 0x04088); |
| 27 | +declare_register(GORCH, 0x0408C); |
| 28 | +declare_register(GOTCL, 0x04090); |
| 29 | +declare_register(GOTCH, 0x04094); |
| 30 | +declare_register(HLREG0, 0x04240); |
| 31 | +declare_register(LINKS, 0x042A4); |
| 32 | +declare_register(FCTRL, 0x05080); |
| 33 | +declare_register(RXCTRL, 0x03000); |
| 34 | +declare_register(RDRXCTL, 0x02F00); |
| 35 | +declare_register(DTXMXSZRQ, 0x08100); |
| 36 | +declare_register(DMATXCTL, 0x04A80); |
| 37 | +declare_register(RTTDCS, 0x04900); |
| 38 | +declare_register(EICR, 0x00800); |
| 39 | +declare_register(EICS, 0x00808); |
| 40 | +declare_register(EIMS, 0x00880); |
| 41 | +declare_register(EIMC, 0x00888); |
| 42 | +declare_register(EIAC, 0x00810); |
| 43 | +declare_register(GPIE, 0x00898); |
| 44 | +declare_register(TXDGPC, 0x087A0); |
| 45 | +declare_register(TXDGBCL, 0x087A4); |
| 46 | +declare_register(TXDGBCH, 0x087A8); |
| 47 | +declare_register(FACTPS, 0x10150); |
| 48 | +declare_array_register(RDBAL, 0x01000, 64, 0x40); |
| 49 | +declare_array_register(RDBAH, 0x01004, 64, 0x40); |
| 50 | +declare_array_register(RDLEN, 0x01008, 64, 0x60); |
| 51 | +declare_array_register(RDH, 0x01010, 64, 0x40); |
| 52 | +declare_array_register(RDT, 0x01018, 64, 0x40); |
| 53 | +declare_array_register(SRRCTL, 0x01014, 64, 0x40); |
| 54 | +declare_array_register(RXPBSIZE, 0x03C00, 8, 0x4); |
| 55 | +declare_array_register(DCA_RXCTRL, 0x0100C, 64, 0x40); |
| 56 | +declare_array_register(RXDCTL, 0x01028, 64, 0x40); |
| 57 | +declare_array_register(RSCCTL, 0x0102C, 64, 0x40); |
| 58 | +declare_array_register(TDBAL, 0x06000, 64, 0x40); |
| 59 | +declare_array_register(TDBAH, 0x06004, 64, 0x40); |
| 60 | +declare_array_register(TDLEN, 0x06008, 64, 0x40); |
| 61 | +declare_array_register(TDH, 0x06010, 64, 0x40); |
| 62 | +declare_array_register(TDT, 0x06018, 64, 0x40); |
| 63 | +declare_array_register(TXPBSIZE, 0x0CC00, 8, 0x4); |
| 64 | +declare_array_register(TXPBTHRESH, 0x04950, 8, 0x4); |
| 65 | +declare_array_register(TXDCTL, 0x06028, 64, 0x40); |
| 66 | +declare_array_register(IVAR, 0x00900, 64, 0x4); |
| 67 | +declare_array_register(EITR, 0x00820, 24, 0x4); |
| 68 | +declare_array_register(QPTC, 0x08680, 16, 0x4); |
| 69 | +declare_array_register(RAL, 0x0A200, 128, 0x8); |
| 70 | +declare_array_register(RAH, 0x0A204, 128, 0x8); |
| 71 | +declare_array_register(RSCINT, 0x12000, 128, 0x4); |
91 | 72 |
|
92 | 73 | // Queue Packets Received Count |
93 | | -declare_array_register(DEVICE_BASE, QPRC, 0x01030, 16, 0x40); |
| 74 | +declare_array_register(QPRC, 0x01030, 16, 0x40); |
94 | 75 | // Queue Packets Received Drop Count |
95 | | -declare_array_register(DEVICE_BASE, QPRDC, 0x01430, 16, 0x40); |
| 76 | +declare_array_register(QPRDC, 0x01430, 16, 0x40); |
96 | 77 | // Receive Queue Statistic Mapping Registers |
97 | | -declare_array_register(DEVICE_BASE, RQSMR, 0x02300, 32, 0x4); |
| 78 | +declare_array_register(RQSMR, 0x02300, 32, 0x4); |
98 | 79 |
|
99 | 80 | const uint64_t IXGBE_CTRL_LNK_RST = 0x00000008; /* Link Reset. Resets everything. */ |
100 | 81 | const uint64_t IXGBE_CTRL_RST = 0x04000000; /* Reset (SW) */ |
|
0 commit comments