1
2 #ifndef KP2000_PCIE_H
3 #define KP2000_PCIE_H
4 #include <linux/types.h>
5 #include <linux/pci.h>
6 #include "../kpc.h"
7 #include "dma_common_defs.h"
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #define REG_WIDTH 8
30 #define REG_MAGIC_NUMBER (0 * REG_WIDTH)
31 #define REG_CARD_ID_AND_BUILD (1 * REG_WIDTH)
32 #define REG_DATE_AND_TIME_STAMPS (2 * REG_WIDTH)
33 #define REG_CORE_TABLE_OFFSET (3 * REG_WIDTH)
34 #define REG_FPGA_SSID (4 * REG_WIDTH)
35 #define REG_FPGA_HW_ID (5 * REG_WIDTH)
36 #define REG_FPGA_DDNA (6 * REG_WIDTH)
37 #define REG_CPLD_CONFIG (7 * REG_WIDTH)
38 #define REG_INTERRUPT_MASK (8 * REG_WIDTH)
39 #define REG_INTERRUPT_ACTIVE (9 * REG_WIDTH)
40 #define REG_PCIE_ERROR_COUNT (10 * REG_WIDTH)
41
42 #define KP2000_MAGIC_VALUE 0x196C61482231894DULL
43
44 #define PCI_VENDOR_ID_DAKTRONICS 0x1c33
45 #define PCI_DEVICE_ID_DAKTRONICS 0x6021
46
47 #define DMA_BAR 0
48 #define REG_BAR 1
49
50 struct kp2000_device {
51 struct pci_dev *pdev;
52 char name[16];
53
54 unsigned int card_num;
55 struct mutex sem;
56
57 void __iomem *sysinfo_regs_base;
58 void __iomem *regs_bar_base;
59 struct resource regs_base_resource;
60 void __iomem *dma_bar_base;
61 void __iomem *dma_common_regs;
62 struct resource dma_base_resource;
63
64
65 u32 card_id;
66 u32 build_version;
67 u32 build_datestamp;
68 u32 build_timestamp;
69 u32 core_table_offset;
70 u32 core_table_length;
71 u8 core_table_rev;
72 u8 hardware_revision;
73 u64 ssid;
74 u64 ddna;
75
76
77 unsigned int irq;
78
79 struct list_head uio_devices_list;
80 };
81
82 extern struct class *kpc_uio_class;
83 extern struct attribute *kpc_uio_class_attrs[];
84
85 int kp2000_probe_cores(struct kp2000_device *pcard);
86 void kp2000_remove_cores(struct kp2000_device *pcard);
87
88
89 #define PCARD_TO_DEV(pcard) (&(pcard->pdev->dev))
90
91 #endif