1 /*
2  * the definition file of cs5536 Virtual Support Module(VSM).
3  * pci configuration space can be accessed through the VSM, so
4  * there is no need of the MSR read/write now, except the spec.
5  * MSR registers which are not implemented yet.
6  *
7  * Copyright (C) 2007 Lemote Inc.
8  * Author : jlliu, liujl@lemote.com
9  */
10 
11 #ifndef	_CS5536_PCI_H
12 #define	_CS5536_PCI_H
13 
14 #include <linux/types.h>
15 #include <linux/pci_regs.h>
16 
17 extern void cs5536_pci_conf_write4(int function, int reg, u32 value);
18 extern u32 cs5536_pci_conf_read4(int function, int reg);
19 
20 #define	CS5536_ACC_INTR		9
21 #define	CS5536_IDE_INTR		14
22 #define	CS5536_USB_INTR		11
23 #define	CS5536_MFGPT_INTR	5
24 #define	CS5536_UART1_INTR	4
25 #define	CS5536_UART2_INTR	3
26 
27 /************** PCI BUS DEVICE FUNCTION ***************/
28 
29 /*
30  * PCI bus device function
31  */
32 #define	PCI_BUS_CS5536		0
33 #define	PCI_IDSEL_CS5536	14
34 
35 /********** STANDARD PCI-2.2 EXPANSION ****************/
36 
37 /*
38  * PCI configuration space
39  * we have to virtualize the PCI configure space head, so we should
40  * define the necessary IDs and some others.
41  */
42 
43 /* CONFIG of PCI VENDOR ID*/
44 #define CFG_PCI_VENDOR_ID(mod_dev_id, sys_vendor_id) \
45 	(((mod_dev_id) << 16) | (sys_vendor_id))
46 
47 /* VENDOR ID */
48 #define	CS5536_VENDOR_ID	0x1022
49 
50 /* DEVICE ID */
51 #define	CS5536_ISA_DEVICE_ID		0x2090
52 #define	CS5536_IDE_DEVICE_ID		0x209a
53 #define	CS5536_ACC_DEVICE_ID		0x2093
54 #define	CS5536_OHCI_DEVICE_ID		0x2094
55 #define	CS5536_EHCI_DEVICE_ID		0x2095
56 
57 /* CLASS CODE : CLASS SUB-CLASS INTERFACE */
58 #define	CS5536_ISA_CLASS_CODE		0x060100
59 #define CS5536_IDE_CLASS_CODE		0x010180
60 #define	CS5536_ACC_CLASS_CODE		0x040100
61 #define	CS5536_OHCI_CLASS_CODE		0x0C0310
62 #define	CS5536_EHCI_CLASS_CODE		0x0C0320
63 
64 /* BHLC : BIST HEADER-TYPE LATENCY-TIMER CACHE-LINE-SIZE */
65 
66 #define CFG_PCI_CACHE_LINE_SIZE(header_type, latency_timer)	\
67 	((PCI_NONE_BIST << 24) | ((header_type) << 16) \
68 		| ((latency_timer) << 8) | PCI_NORMAL_CACHE_LINE_SIZE);
69 
70 #define	PCI_NONE_BIST			0x00	/* RO not implemented yet. */
71 #define	PCI_BRIDGE_HEADER_TYPE		0x80	/* RO */
72 #define	PCI_NORMAL_HEADER_TYPE		0x00
73 #define	PCI_NORMAL_LATENCY_TIMER	0x00
74 #define	PCI_NORMAL_CACHE_LINE_SIZE	0x08	/* RW */
75 
76 /* BAR */
77 #define	PCI_BAR0_REG			0x10
78 #define	PCI_BAR1_REG			0x14
79 #define	PCI_BAR2_REG			0x18
80 #define	PCI_BAR3_REG			0x1c
81 #define	PCI_BAR4_REG			0x20
82 #define	PCI_BAR5_REG			0x24
83 #define	PCI_BAR_COUNT			6
84 #define	PCI_BAR_RANGE_MASK		0xFFFFFFFF
85 
86 /* CARDBUS CIS POINTER */
87 #define	PCI_CARDBUS_CIS_POINTER		0x00000000
88 
89 /* SUBSYSTEM VENDOR ID  */
90 #define	CS5536_SUB_VENDOR_ID		CS5536_VENDOR_ID
91 
92 /* SUBSYSTEM ID */
93 #define	CS5536_ISA_SUB_ID		CS5536_ISA_DEVICE_ID
94 #define	CS5536_IDE_SUB_ID		CS5536_IDE_DEVICE_ID
95 #define	CS5536_ACC_SUB_ID		CS5536_ACC_DEVICE_ID
96 #define	CS5536_OHCI_SUB_ID		CS5536_OHCI_DEVICE_ID
97 #define	CS5536_EHCI_SUB_ID		CS5536_EHCI_DEVICE_ID
98 
99 /* EXPANSION ROM BAR */
100 #define	PCI_EXPANSION_ROM_BAR		0x00000000
101 
102 /* CAPABILITIES POINTER */
103 #define	PCI_CAPLIST_POINTER		0x00000000
104 #define PCI_CAPLIST_USB_POINTER		0x40
105 /* INTERRUPT */
106 
107 #define CFG_PCI_INTERRUPT_LINE(pin, mod_intr) \
108 	((PCI_MAX_LATENCY << 24) | (PCI_MIN_GRANT << 16) | \
109 		((pin) << 8) | (mod_intr))
110 
111 #define	PCI_MAX_LATENCY			0x40
112 #define	PCI_MIN_GRANT			0x00
113 #define	PCI_DEFAULT_PIN			0x01
114 
115 /*********** EXPANSION PCI REG ************************/
116 
117 /*
118  * ISA EXPANSION
119  */
120 #define	PCI_UART1_INT_REG 	0x50
121 #define PCI_UART2_INT_REG	0x54
122 #define	PCI_ISA_FIXUP_REG	0x58
123 
124 /*
125  * IDE EXPANSION
126  */
127 #define	PCI_IDE_CFG_REG		0x40
128 #define	CS5536_IDE_FLASH_SIGNATURE	0xDEADBEEF
129 #define	PCI_IDE_DTC_REG		0x48
130 #define	PCI_IDE_CAST_REG	0x4C
131 #define	PCI_IDE_ETC_REG		0x50
132 #define	PCI_IDE_PM_REG		0x54
133 #define	PCI_IDE_INT_REG		0x60
134 
135 /*
136  * ACC EXPANSION
137  */
138 #define	PCI_ACC_INT_REG		0x50
139 
140 /*
141  * OHCI EXPANSION : INTTERUPT IS IMPLEMENTED BY THE OHCI
142  */
143 #define	PCI_OHCI_PM_REG		0x40
144 #define	PCI_OHCI_INT_REG	0x50
145 
146 /*
147  * EHCI EXPANSION
148  */
149 #define	PCI_EHCI_LEGSMIEN_REG	0x50
150 #define	PCI_EHCI_LEGSMISTS_REG	0x54
151 #define	PCI_EHCI_FLADJ_REG	0x60
152 
153 #endif				/* _CS5536_PCI_H_ */
154