1
2
3
4
5
6
7
8
9
10
11#ifndef __FTPCI100_H
12#define __FTPCI100_H
13
14
15struct ftpci100_ahbc {
16 unsigned int iosize;
17 unsigned int prot;
18 unsigned int rsved[8];
19 unsigned int conf;
20 unsigned int data;
21};
22
23
24
25
26#define FTPCI100_BASE_IO_SIZE(x) (ffs(x) - 1)
27
28
29
30
31#define PCI_INT_MASK 0x4c
32#define PCI_MEM_BASE_SIZE1 0x50
33#define PCI_MEM_BASE_SIZE2 0x54
34#define PCI_MEM_BASE_SIZE3 0x58
35
36
37
38
39#define PCI_INTA_ENABLE (1 << 22)
40#define PCI_INTB_ENABLE (1 << 23)
41#define PCI_INTC_ENABLE (1 << 24)
42#define PCI_INTD_ENABLE (1 << 25)
43
44
45
46
47#define FTPCI100_BASE_ADR_SIZE(x) ((ffs(x) - 1) << 16)
48
49#define FTPCI100_MAX_FUNCTIONS 20
50#define PCI_IRQ_LINES 4
51
52#define MAX_BUS_NUM 256
53#define MAX_DEV_NUM 32
54#define MAX_FUN_NUM 8
55
56#define PCI_MAX_BAR_PER_FUNC 6
57
58
59
60
61#define FTPCI100_MEM_SIZE(x) (ffs(x) << 24)
62
63
64#define FTPCI100_BRIDGE_VENDORID 0x159b
65#define FTPCI100_BRIDGE_DEVICEID 0x4321
66
67void pci_ftpci_init(void);
68
69struct pcibar {
70 unsigned int size;
71 unsigned int addr;
72};
73
74struct pci_config {
75 unsigned int bus;
76 unsigned int dev;
77 unsigned int func;
78 unsigned int pin;
79 unsigned short v_id;
80 unsigned short d_id;
81 struct pcibar bar[PCI_MAX_BAR_PER_FUNC + 1];
82};
83
84#endif
85