Merge branch 'dev' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
[pandora-kernel.git] / arch / powerpc / platforms / wsp / wsp_pci.h
1 /*
2  * Copyright 2010 Ben Herrenschmidt, IBM Corporation
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version
7  * 2 of the License, or (at your option) any later version.
8  */
9
10 #ifndef __WSP_PCI_H
11 #define __WSP_PCI_H
12
13 /* Architected registers */
14 #define PCIE_REG_DMA_CHAN_STATUS        0x110
15 #define PCIE_REG_CPU_LOADSTORE_STATUS   0x120
16
17 #define PCIE_REG_CONFIG_DATA            0x130
18 #define PCIE_REG_LOCK0                  0x138
19 #define PCIE_REG_CONFIG_ADDRESS         0x140
20 #define   PCIE_REG_CA_ENABLE                    0x8000000000000000ull
21 #define   PCIE_REG_CA_BUS_MASK                  0x0ff0000000000000ull
22 #define   PCIE_REG_CA_BUS_SHIFT                 (20+32)
23 #define   PCIE_REG_CA_DEV_MASK                  0x000f800000000000ull
24 #define   PCIE_REG_CA_DEV_SHIFT                 (15+32)
25 #define   PCIE_REG_CA_FUNC_MASK                 0x0000700000000000ull
26 #define   PCIE_REG_CA_FUNC_SHIFT                (12+32)
27 #define   PCIE_REG_CA_REG_MASK                  0x00000fff00000000ull
28 #define   PCIE_REG_CA_REG_SHIFT                 ( 0+32)
29 #define   PCIE_REG_CA_BE_MASK                   0x00000000f0000000ull
30 #define   PCIE_REG_CA_BE_SHIFT                  (   28)
31 #define PCIE_REG_LOCK1                  0x148
32
33 #define PCIE_REG_PHB_CONFIG             0x160
34 #define   PCIE_REG_PHBC_64B_TCE_EN              0x2000000000000000ull
35 #define   PCIE_REG_PHBC_MMIO_DMA_FREEZE_EN      0x1000000000000000ull
36 #define   PCIE_REG_PHBC_32BIT_MSI_EN            0x0080000000000000ull
37 #define   PCIE_REG_PHBC_M64_EN                  0x0040000000000000ull
38 #define   PCIE_REG_PHBC_IO_EN                   0x0008000000000000ull
39 #define   PCIE_REG_PHBC_64BIT_MSI_EN            0x0002000000000000ull
40 #define   PCIE_REG_PHBC_M32A_EN                 0x0000800000000000ull
41 #define   PCIE_REG_PHBC_M32B_EN                 0x0000400000000000ull
42 #define   PCIE_REG_PHBC_MSI_PE_VALIDATE         0x0000200000000000ull
43 #define   PCIE_REG_PHBC_DMA_XLATE_BYPASS        0x0000100000000000ull
44
45 #define PCIE_REG_IO_BASE_ADDR           0x170
46 #define PCIE_REG_IO_BASE_MASK           0x178
47 #define PCIE_REG_IO_START_ADDR          0x180
48
49 #define PCIE_REG_M32A_BASE_ADDR         0x190
50 #define PCIE_REG_M32A_BASE_MASK         0x198
51 #define PCIE_REG_M32A_START_ADDR        0x1a0
52
53 #define PCIE_REG_M32B_BASE_ADDR         0x1b0
54 #define PCIE_REG_M32B_BASE_MASK         0x1b8
55 #define PCIE_REG_M32B_START_ADDR        0x1c0
56
57 #define PCIE_REG_M64_BASE_ADDR          0x1e0
58 #define PCIE_REG_M64_BASE_MASK          0x1e8
59 #define PCIE_REG_M64_START_ADDR         0x1f0
60
61 #define PCIE_REG_TCE_KILL               0x210
62 #define   PCIE_REG_TCEKILL_SINGLE       0x8000000000000000ull
63 #define   PCIE_REG_TCEKILL_ADDR_MASK    0x000003fffffffff8ull
64 #define   PCIE_REG_TCEKILL_PS_4K        0
65 #define   PCIE_REG_TCEKILL_PS_64K       1
66 #define   PCIE_REG_TCEKILL_PS_16M       2
67 #define   PCIE_REG_TCEKILL_PS_16G       3
68
69 #define PCIE_REG_IODA_ADDR              0x220
70 #define   PCIE_REG_IODA_AD_AUTOINC      0x8000000000000000ull
71 #define   PCIE_REG_IODA_AD_TBL_MVT      0x0005000000000000ull
72 #define   PCIE_REG_IODA_AD_TBL_PELT     0x0006000000000000ull
73 #define   PCIE_REG_IODA_AD_TBL_PESTA    0x0007000000000000ull
74 #define   PCIE_REG_IODA_AD_TBL_PESTB    0x0008000000000000ull
75 #define   PCIE_REG_IODA_AD_TBL_TVT      0x0009000000000000ull
76 #define   PCIE_REG_IODA_AD_TBL_TCE      0x000a000000000000ull
77 #define PCIE_REG_IODA_DATA0             0x228
78 #define PCIE_REG_IODA_DATA1             0x230
79
80 #define PCIE_REG_LOCK2                  0x240
81
82 #define PCIE_REG_PHB_GEN_CAP            0x250
83 #define PCIE_REG_PHB_TCE_CAP            0x258
84 #define PCIE_REG_PHB_IRQ_CAP            0x260
85 #define PCIE_REG_PHB_EEH_CAP            0x268
86
87 #define PCIE_REG_PAPR_ERR_INJ_CONTROL   0x2b0
88 #define PCIE_REG_PAPR_ERR_INJ_ADDR      0x2b8
89 #define PCIE_REG_PAPR_ERR_INJ_MASK      0x2c0
90
91
92 #define PCIE_REG_SYS_CFG1               0x600
93 #define   PCIE_REG_SYS_CFG1_CLASS_CODE  0x0000000000ffffffull
94
95 #define IODA_TVT0_TTA_MASK              0x000fffffffff0000ull
96 #define IODA_TVT0_TTA_SHIFT             4
97 #define IODA_TVT0_BUSNUM_VALID_MASK     0x000000000000e000ull
98 #define IODA_TVT0_TCE_TABLE_SIZE_MASK   0x0000000000001f00ull
99 #define IODA_TVT0_TCE_TABLE_SIZE_SHIFT  8
100 #define IODA_TVT0_BUSNUM_VALUE_MASK     0x00000000000000ffull
101 #define IODA_TVT0_BUSNUM_VALID_SHIFT    0
102 #define IODA_TVT1_DEVNUM_VALID          0x2000000000000000ull
103 #define IODA_TVT1_DEVNUM_VALUE_MASK     0x1f00000000000000ull
104 #define IODA_TVT1_DEVNUM_VALUE_SHIFT    56
105 #define IODA_TVT1_FUNCNUM_VALID         0x0008000000000000ull
106 #define IODA_TVT1_FUNCNUM_VALUE_MASK    0x0007000000000000ull
107 #define IODA_TVT1_FUNCNUM_VALUE_SHIFT   48
108 #define IODA_TVT1_IO_PAGE_SIZE_MASK     0x00001f0000000000ull
109 #define IODA_TVT1_IO_PAGE_SIZE_SHIFT    40
110 #define IODA_TVT1_PE_NUMBER_MASK        0x000000000000003full
111 #define IODA_TVT1_PE_NUMBER_SHIFT       0
112
113 #define IODA_TVT_COUNT                  64
114
115 /* UTL Core registers */
116 #define PCIE_UTL_SYS_BUS_CONTROL        0x400
117 #define PCIE_UTL_STATUS                 0x408
118 #define PCIE_UTL_SYS_BUS_AGENT_STATUS   0x410
119 #define PCIE_UTL_SYS_BUS_AGENT_ERR_SEV  0x418
120 #define PCIE_UTL_SYS_BUS_AGENT_IRQ_EN   0x420
121 #define PCIE_UTL_SYS_BUS_BURST_SZ_CONF  0x440
122 #define PCIE_UTL_REVISION_ID            0x448
123
124 #define PCIE_UTL_OUT_POST_HDR_BUF_ALLOC 0x4c0
125 #define PCIE_UTL_OUT_POST_DAT_BUF_ALLOC 0x4d0
126 #define PCIE_UTL_IN_POST_HDR_BUF_ALLOC  0x4e0
127 #define PCIE_UTL_IN_POST_DAT_BUF_ALLOC  0x4f0
128 #define PCIE_UTL_OUT_NP_BUF_ALLOC       0x500
129 #define PCIE_UTL_IN_NP_BUF_ALLOC        0x510
130 #define PCIE_UTL_PCIE_TAGS_ALLOC        0x520
131 #define PCIE_UTL_GBIF_READ_TAGS_ALLOC   0x530
132
133 #define PCIE_UTL_PCIE_PORT_CONTROL      0x540
134 #define PCIE_UTL_PCIE_PORT_STATUS       0x548
135 #define PCIE_UTL_PCIE_PORT_ERROR_SEV    0x550
136 #define PCIE_UTL_PCIE_PORT_IRQ_EN       0x558
137 #define PCIE_UTL_RC_STATUS              0x560
138 #define PCIE_UTL_RC_ERR_SEVERITY        0x568
139 #define PCIE_UTL_RC_IRQ_EN              0x570
140 #define PCIE_UTL_EP_STATUS              0x578
141 #define PCIE_UTL_EP_ERR_SEVERITY        0x580
142 #define PCIE_UTL_EP_ERR_IRQ_EN          0x588
143
144 #define PCIE_UTL_PCI_PM_CTRL1           0x590
145 #define PCIE_UTL_PCI_PM_CTRL2           0x598
146
147 /* PCIe stack registers */
148 #define PCIE_REG_SYSTEM_CONFIG1         0x600
149 #define PCIE_REG_SYSTEM_CONFIG2         0x608
150 #define PCIE_REG_EP_SYSTEM_CONFIG       0x618
151 #define PCIE_REG_EP_FLR                 0x620
152 #define PCIE_REG_EP_BAR_CONFIG          0x628
153 #define PCIE_REG_LINK_CONFIG            0x630
154 #define PCIE_REG_PM_CONFIG              0x640
155 #define PCIE_REG_DLP_CONTROL            0x650
156 #define PCIE_REG_DLP_STATUS             0x658
157 #define PCIE_REG_ERR_REPORT_CONTROL     0x660
158 #define PCIE_REG_SLOT_CONTROL1          0x670
159 #define PCIE_REG_SLOT_CONTROL2          0x678
160 #define PCIE_REG_UTL_CONFIG             0x680
161 #define PCIE_REG_BUFFERS_CONFIG         0x690
162 #define PCIE_REG_ERROR_INJECT           0x698
163 #define PCIE_REG_SRIOV_CONFIG           0x6a0
164 #define PCIE_REG_PF0_SRIOV_STATUS       0x6a8
165 #define PCIE_REG_PF1_SRIOV_STATUS       0x6b0
166 #define PCIE_REG_PORT_NUMBER            0x700
167 #define PCIE_REG_POR_SYSTEM_CONFIG      0x708
168
169 /* PHB internal logic registers */
170 #define PCIE_REG_PHB_VERSION            0x800
171 #define PCIE_REG_RESET                  0x808
172 #define PCIE_REG_PHB_CONTROL            0x810
173 #define PCIE_REG_PHB_TIMEOUT_CONTROL1   0x878
174 #define PCIE_REG_PHB_QUIESCE_DMA        0x888
175 #define PCIE_REG_PHB_DMA_READ_TAG_ACTV  0x900
176 #define PCIE_REG_PHB_TCE_READ_TAG_ACTV  0x908
177
178 /* FIR registers */
179 #define PCIE_REG_LEM_FIR_ACCUM          0xc00
180 #define PCIE_REG_LEM_FIR_AND_MASK       0xc08
181 #define PCIE_REG_LEM_FIR_OR_MASK        0xc10
182 #define PCIE_REG_LEM_ACTION0            0xc18
183 #define PCIE_REG_LEM_ACTION1            0xc20
184 #define PCIE_REG_LEM_ERROR_MASK         0xc30
185 #define PCIE_REG_LEM_ERROR_AND_MASK     0xc38
186 #define PCIE_REG_LEM_ERROR_OR_MASK      0xc40
187
188 /* PHB Error registers */
189 #define PCIE_REG_PHB_ERR_STATUS         0xc80
190 #define PCIE_REG_PHB_ERR1_STATUS        0xc88
191 #define PCIE_REG_PHB_ERR_INJECT         0xc90
192 #define PCIE_REG_PHB_ERR_LEM_ENABLE     0xc98
193 #define PCIE_REG_PHB_ERR_IRQ_ENABLE     0xca0
194 #define PCIE_REG_PHB_ERR_FREEZE_ENABLE  0xca8
195 #define PCIE_REG_PHB_ERR_SIDE_ENABLE    0xcb8
196 #define PCIE_REG_PHB_ERR_LOG_0          0xcc0
197 #define PCIE_REG_PHB_ERR_LOG_1          0xcc8
198 #define PCIE_REG_PHB_ERR_STATUS_MASK    0xcd0
199 #define PCIE_REG_PHB_ERR1_STATUS_MASK   0xcd8
200
201 #define PCIE_REG_MMIO_ERR_STATUS        0xd00
202 #define PCIE_REG_MMIO_ERR1_STATUS       0xd08
203 #define PCIE_REG_MMIO_ERR_INJECT        0xd10
204 #define PCIE_REG_MMIO_ERR_LEM_ENABLE    0xd18
205 #define PCIE_REG_MMIO_ERR_IRQ_ENABLE    0xd20
206 #define PCIE_REG_MMIO_ERR_FREEZE_ENABLE 0xd28
207 #define PCIE_REG_MMIO_ERR_SIDE_ENABLE   0xd38
208 #define PCIE_REG_MMIO_ERR_LOG_0         0xd40
209 #define PCIE_REG_MMIO_ERR_LOG_1         0xd48
210 #define PCIE_REG_MMIO_ERR_STATUS_MASK   0xd50
211 #define PCIE_REG_MMIO_ERR1_STATUS_MASK  0xd58
212
213 #define PCIE_REG_DMA_ERR_STATUS         0xd80
214 #define PCIE_REG_DMA_ERR1_STATUS        0xd88
215 #define PCIE_REG_DMA_ERR_INJECT         0xd90
216 #define PCIE_REG_DMA_ERR_LEM_ENABLE     0xd98
217 #define PCIE_REG_DMA_ERR_IRQ_ENABLE     0xda0
218 #define PCIE_REG_DMA_ERR_FREEZE_ENABLE  0xda8
219 #define PCIE_REG_DMA_ERR_SIDE_ENABLE    0xdb8
220 #define PCIE_REG_DMA_ERR_LOG_0          0xdc0
221 #define PCIE_REG_DMA_ERR_LOG_1          0xdc8
222 #define PCIE_REG_DMA_ERR_STATUS_MASK    0xdd0
223 #define PCIE_REG_DMA_ERR1_STATUS_MASK   0xdd8
224
225 /* Shortcuts for access to the above using the PHB definitions
226  * with an offset
227  */
228 #define PCIE_REG_ERR_PHB_OFFSET         0x0
229 #define PCIE_REG_ERR_MMIO_OFFSET        0x80
230 #define PCIE_REG_ERR_DMA_OFFSET         0x100
231
232 /* Debug and Trace registers */
233 #define PCIE_REG_PHB_DEBUG_CONTROL0     0xe00
234 #define PCIE_REG_PHB_DEBUG_STATUS0      0xe08
235 #define PCIE_REG_PHB_DEBUG_CONTROL1     0xe10
236 #define PCIE_REG_PHB_DEBUG_STATUS1      0xe18
237 #define PCIE_REG_PHB_DEBUG_CONTROL2     0xe20
238 #define PCIE_REG_PHB_DEBUG_STATUS2      0xe28
239 #define PCIE_REG_PHB_DEBUG_CONTROL3     0xe30
240 #define PCIE_REG_PHB_DEBUG_STATUS3      0xe38
241 #define PCIE_REG_PHB_DEBUG_CONTROL4     0xe40
242 #define PCIE_REG_PHB_DEBUG_STATUS4      0xe48
243 #define PCIE_REG_PHB_DEBUG_CONTROL5     0xe50
244 #define PCIE_REG_PHB_DEBUG_STATUS5      0xe58
245 #define PCIE_REG_PHB_DEBUG_CONTROL6     0xe60
246 #define PCIE_REG_PHB_DEBUG_STATUS6      0xe68
247
248 /* Definition for PCIe errors */
249 struct wsp_pcie_err_log_data {
250         __u64   phb_err;
251         __u64   phb_err1;
252         __u64   phb_log0;
253         __u64   phb_log1;
254         __u64   mmio_err;
255         __u64   mmio_err1;
256         __u64   mmio_log0;
257         __u64   mmio_log1;
258         __u64   dma_err;
259         __u64   dma_err1;
260         __u64   dma_log0;
261         __u64   dma_log1;
262         __u64   utl_sys_err;
263         __u64   utl_port_err;
264         __u64   utl_rc_err;
265         __u64   unused;
266 };
267
268 #endif /* __WSP_PCI_H */