xhci: tegra: support HSIC ports
[linux-3.10.git] / drivers / usb / host / xhci-tegra.h
1 /*
2  * xhci-tegra.h - Nvidia xHCI host controller related data
3  *
4  * Copyright (c) 2013, NVIDIA CORPORATION.  All rights reserved.
5  *
6  * This program is free software; you can redistribute it and/or modify it
7  * under the terms and conditions of the GNU General Public License,
8  * version 2, as published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
13  * more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18
19 #ifndef __XUSB_H
20 #define __XUSB_H
21
22 /* PADCTL BITS */
23 #define USB2_OTG_PAD_PORT_MASK(x) (0x3 << (2 * x))
24 #define USB2_OTG_PAD_PORT_OWNER_XUSB(x) (0x1 << (2 * x))
25 #define USB2_PORT_CAP_MASK(x) (0x3 << (4 * x))
26 #define USB2_PORT_CAP_HOST(x) (0x1 << (4 * x))
27 #define USB2_ULPI_PAD   (0x1 << 12)
28 #define USB2_ULPI_PAD_OWNER_XUSB        (0x1 << 12)
29 #define USB2_HSIC_PAD_P0_OWNER_XUSB     (0x1 << 14)
30 #define USB2_HSIC_PAD_P1_OWNER_XUSB     (0x1 << 15)
31 #define USB2_ULPI_PORT_CAP      (0x1 << 24)
32 #define SS_PORT_MAP_P0  (0x7 << 0)
33 #define SS_PORT_MAP_P1  (0x7 << 4)
34 #define SS_PORT_MAP_P0_USB2_PORT0       (0x0 << 0)
35 #define SS_PORT_MAP_P0_USB2_PORT1       (0x1 << 0)
36 #define USB2_OTG_HS_CURR_LVL (0x3F << 0)
37 #define USB2_OTG_HS_SLEW (0x3F << 6)
38 #define USB2_OTG_FS_SLEW (0x3 << 12)
39 #define USB2_OTG_LS_RSLEW (0x3 << 14)
40 #define USB2_OTG_LS_FSLEW (0x3 << 16)
41 #define USB2_OTG_PD (0x1 << 19)
42 #define USB2_OTG_PD2 (0x1 << 20)
43 #define USB2_OTG_PD_ZI (0x1 << 21)
44 #define USB2_OTG_PD_CHRP_FORCE_POWERUP (0x1 << 0)
45 #define USB2_OTG_PD_DISC_FORCE_POWERUP (0x1 << 1)
46 #define USB2_OTG_PD_DR (0x1 << 2)
47 #define USB2_OTG_TERM_RANGE_AD (0xF << 3)
48 #define USB2_OTG_HS_IREF_CAP (0x3 << 9)
49 #define USB2_BIAS_HS_SQUELCH_LEVEL (0x3 << 0)
50 #define USB2_BIAS_HS_DISCON_LEVEL (0x7 << 2)
51 #define HSIC_TX_SLEWP (0xF << 8)
52 #define HSIC_TX_SLEWN (0xF << 12)
53 #define IOPHY_USB3_RXWANDER (0xF << 4)
54 #define IOPHY_USB3_RXEQ (0xFFFF << 8)
55 #define IOPHY_USB3_CDRCNTL (0xFF << 24)
56 #define SNPS_OC_MAP_CTRL1 (0x7 << 0)
57 #define SNPS_OC_MAP_CTRL2 (0x7 << 3)
58 #define SNPS_OC_MAP_CTRL3 (0x7 << 6)
59 #define SNPS_CTRL1_OC_DETECTED_VBUS_PAD0 (0x4 << 0)
60 #define OC_DET_VBUS_ENABLE0_OC_MAP (0x7 << 10)
61 #define OC_DET_VBUS_ENABLE1_OC_MAP (0x7 << 13)
62 #define OC_DET_VBUS_ENABLE2_OC_MAP (0x7 << 5)
63 #define OC_DET_VBUS_EN0_OC_DETECTED_VBUS_PAD0 (0x4 << 10)
64 #define OC_DET_VBUS_EN1_OC_DETECTED_VBUS_PAD1 (0x5 << 13)
65 #define OC_DET_VBUS_EN2_OC_DETECTED_VBUS_PAD2 (0x6 << 5)
66 #define OC_DET_OC_DETECTED_VBUS_PAD0 (1 << 20)
67 #define OC_DET_OC_DETECTED_VBUS_PAD1 (1 << 21)
68 #define OC_DET_OC_DETECTED_VBUS_PAD2 (1 << 22)
69 #define USB2_OC_MAP_PORT0 (0x7 << 0)
70 #define USB2_OC_MAP_PORT1 (0x7 << 3)
71 #define USB2_OC_MAP_PORT2 (0x7 << 6)
72 #define USB2_OC_MAP_PORT0_OC_DETECTED_VBUS_PAD0 (0x4 << 0)
73 #define USB2_OC_MAP_PORT1_OC_DETECTED_VBUS_PAD1 (0x5 << 3)
74
75 #define XUSB_CSB_MP_L2IMEMOP_TRIG                               0x00101A14
76 #define XUSB_CSB_MP_APMAP                                       0x0010181C
77 #define XUSB_CSB_ARU_SCRATCH0                           0x00100100
78
79 /* Nvidia Cfg Registers */
80
81 #define XUSB_CFG_0                                      0x00000000
82 #define XUSB_CFG_1                                      0x00000004
83 #define XUSB_CFG_4                                      0x00000010
84 #define XUSB_CFG_16                                     0x00000040
85 #define XUSB_CFG_24                                     0x00000060
86 #define XUSB_CFG_FPCICFG                                        0x000000F8
87 #define XUSB_CFG_ARU_C11_CSBRANGE                               0x0000041C
88 #define XUSB_CFG_ARU_SMI_INTR                           0x00000428
89 #define XUSB_CFG_ARU_RST                                        0x0000042C
90 #define XUSB_CFG_ARU_SMI_INTR                           0x00000428
91 #define XUSB_CFG_ARU_CONTEXT                            0x0000043C
92 #define XUSB_CFG_ARU_FW_SCRATCH                         0x00000440
93 #define XUSB_CFG_CSB_BASE_ADDR                          0x00000800
94 #define XUSB_CFG_ARU_CONTEXT_HSFS_SPEED                 0x00000480
95 #define XUSB_CFG_ARU_CONTEXT_HS_PLS                     0x00000478
96 #define XUSB_CFG_ARU_CONTEXT_FS_PLS                     0x0000047C
97 #define XUSB_CFG_ARU_CONTEXT_HSFS_SPEED                 0x00000480
98 #define XUSB_CFG_ARU_CONTEXT_HSFS_PP                    0x00000484
99 #define XUSB_CFG_CSB_BASE_ADDR                          0x00000800
100 #define XUSB_CFG_ARU_C11PAGESEL0                        0x00000400
101 #define XUSB_CFG_ARU_C11PAGESEL1                        0x00000404
102 #define XUSB_CFG_HSPX_CORE_HSICWRAP                     0x00000658
103
104
105 #define XUSB_DEVICE_ID_T114                             0x0E16
106 #define XUSB_DEVICE_ID_T124                             0x0FA3
107
108 /* TODO: Do not have the definitions of below
109  * registers.
110  */
111
112 /* BAR0 Registers */
113 #define BAR0_XHCI_OP_PORTSC(i)                         (0x00000440+(i)*16)
114
115 /* IPFS Registers to save and restore  */
116 #define IPFS_XUSB_HOST_MSI_BAR_SZ_0                     0xC0
117 #define IPFS_XUSB_HOST_MSI_AXI_BAR_ST_0                 0xC4
118 #define IPFS_XUSB_HOST_FPCI_BAR_ST_0                    0xC8
119 #define IPFS_XUSB_HOST_MSI_VEC0_0                       0x100
120 #define IPFS_XUSB_HOST_MSI_EN_VEC0_0                    0x140
121 #define IPFS_XUSB_HOST_CONFIGURATION_0                  0x180
122 #define IPFS_XUSB_HOST_FPCI_ERROR_MASKS_0               0x184
123 #define IPFS_XUSB_HOST_INTR_MASK_0                      0x188
124 #define IPFS_XUSB_HOST_IPFS_INTR_ENABLE_0               0x198
125 #define IPFS_XUSB_HOST_UFPCI_CONFIG_0                   0x19C
126 #define IPFS_XUSB_HOST_CLKGATE_HYSTERESIS_0             0x1BC
127 #define IPFS_XUSB_HOST_MCCIF_FIFOCTRL_0                 0x1DC
128
129 /* IPFS bit definitions */
130 #define IPFS_EN_FPCI                                    (1 << 0)
131 #define IPFS_IP_INT_MASK                                (1 << 16)
132
133 /* Nvidia MailBox Registers */
134
135 #define XUSB_CFG_ARU_MBOX_CMD                           0xE4
136 #define XUSB_CFG_ARU_MBOX_DATA_IN                               0xE8
137 #define XUSB_CFG_ARU_MBOX_DATA_OUT                      0xEC
138 #define XUSB_CFG_ARU_MBOX_OWNER                         0xF0
139
140 /* Nvidia Falcon Registers */
141 #define XUSB_FALC_CPUCTL                                        0x00000100
142 #define XUSB_FALC_BOOTVEC                                       0x00000104
143 #define XUSB_FALC_DMACTL                                        0x0000010C
144 #define XUSB_FALC_IMFILLRNG1                                    0x00000154
145 #define XUSB_FALC_IMFILLCTL                                     0x00000158
146 #define XUSB_FALC_CMEMBASE                                      0x00000160
147 #define XUSB_FALC_DMEMAPERT                                     0x00000164
148 #define XUSB_FALC_IMEMC_START                                   0x00000180
149 #define XUSB_FALC_IMEMD_START                                   0x00000184
150 #define XUSB_FALC_IMEMT_START                                   0x00000188
151 #define XUSB_FALC_ICD_CMD                                       0x00000200
152 #define XUSB_FALC_ICD_RDATA                                     0x0000020C
153 #define XUSB_FALC_SS_PVTPORTSC1                                 0x00116000
154 #define XUSB_FALC_SS_PVTPORTSC2                                 0x00116004
155 #define XUSB_FALC_SS_PVTPORTSC3                                 0x00116008
156 #define XUSB_FALC_HS_PVTPORTSC1                                 0x00116800
157 #define XUSB_FALC_HS_PVTPORTSC2                                 0x00116804
158 #define XUSB_FALC_HS_PVTPORTSC3                                 0x00116808
159 #define XUSB_FALC_FS_PVTPORTSC1                                 0x00117000
160 #define XUSB_FALC_FS_PVTPORTSC2                                 0x00117004
161 #define XUSB_FALC_FS_PVTPORTSC3                                 0x00117008
162
163 #define XUSB_FALC_STATE_HALTED                                  0x00000010
164 /* Nvidia mailbox constants */
165 #define MBOX_INT_EN                     (1 << 31)
166 #define MBOX_XHCI_INT_EN        (1 << 30)
167 #define MBOX_SMI_INT_EN         (1 << 29)
168 #define MBOX_PME_INT_EN         (1 << 28)
169 #define MBOX_FALC_INT_EN        (1 << 27)
170
171 #define MBOX_OWNER_FW                                           1
172 #define MBOX_OWNER_SW                                           2
173 #define MBOX_OWNER_ID_MASK                                      0xFF
174
175 #define MBOX_CMD_TYPE_MASK                                      0xFF000000
176 #define MBOX_CMD_DATA_MASK                                      0x00FFFFFF
177 #define MBOX_CMD_STATUS_MASK                            MBOX_CMD_TYPE_MASK
178 #define MBOX_CMD_RESULT_MASK                            MBOX_CMD_DATA_MASK
179 #define MBOX_CMD_SHIFT                                          24
180 #define MBOX_SMI_INTR_EN                                        (1 << 3)
181
182 /* PMC Register */
183 #define PMC_SCRATCH34                                           0x124
184
185 #define TEGRA_POWERGATE_XUSBA   20
186 #define TEGRA_POWERGATE_XUSBB   21
187 #define TEGRA_POWERGATE_XUSBC   22
188
189 /* Nvidia Constants */
190 #define IMEM_BLOCK_SIZE                                         256
191
192 #define MEMAPERT_ENABLE                                         0x00000010
193 #define DMEMAPERT_ENABLE_INIT                           0x00000000
194 #define CPUCTL_STARTCPU                                         0x00000002
195 #define L2IMEMOP_SIZE_SRC_OFFSET_SHIFT          8
196 #define L2IMEMOP_SIZE_SRC_OFFSET_MASK           0x3ff
197 #define L2IMEMOP_SIZE_SRC_COUNT_SHIFT           24
198 #define L2IMEMOP_SIZE_SRC_COUNT_MASK            0xff
199 #define L2IMEMOP_TRIG_LOAD_LOCKED_SHIFT 24
200 #define IMFILLRNG_TAG_MASK                      0xffff
201 #define IMFILLRNG1_TAG_HI_SHIFT         16
202 #define APMAP_BOOTPATH                                          (1 << 31)
203 #define L2IMEM_INVALIDATE_ALL                           0x40000000
204 #define L2IMEM_LOAD_LOCKED_RESULT                       (0x11 << 24)
205 #define FW_SIZE_OFFSET                                          0x64
206 #define HSIC_PORT1      0
207 #define HSIC_PORT0      1
208 #define ULPI_PORT       2
209 #define OTG_PORT1       3
210 #define OTG_PORT2       4
211
212 /* Nvidia Host Controller Device and Vendor ID */
213 #define XUSB_USB_DID            0xE16
214 #define XUSB_USB_VID            0x10DE
215
216 /* Nvidia CSB MP Registers */
217 #define XUSB_CSB_MP_ILOAD_ATTR          0x00101A00
218 #define XUSB_CSB_MP_ILOAD_BASE_LO               0x00101A04
219 #define XUSB_CSB_MP_ILOAD_BASE_HI               0x00101A08
220 #define XUSB_CSB_MP_L2IMEMOP_SIZE               0x00101A10
221
222 /*Nvidia CFG registers */
223 #define XUSB_CFG_ARU_CONTEXT_HSFS_SPEED 0x00000480
224 #define XUSB_CFG_ARU_CONTEXT_HS_PLS             0x00000478
225 #define XUSB_CFG_ARU_CONTEXT_FS_PLS             0x0000047C
226 #define ARU_CONTEXT_HSFS_PP                             0x00000484
227 #define ARU_ULPI_REGACCESS                              0x474
228 #define ARU_ULPI_REGACCESS_ADDR_MASK    0xff00
229 #define ARU_ULPI_REGACCESS_CMD_MASK             0x1
230 #define ARU_ULPI_REGACCESS_DATA_MASK    0xff0000
231
232 /* XUSB PAD Ctl Registers START
233  * Extracted and massaged from arxusb_padctl.h
234  */
235 #define MBOX_OWNERSHIP_ERR      -1
236 #define PWR_GATE_ERR            -1
237 #define YES                     1
238 #define NO                      0
239 #define SNPS            0
240 #define XUSB            1
241 #define DISABLED        1
242
243 #define BOOT_MEDIA_0                    0x0
244 #define BOOT_MEDIA_ENABLE               (1 << 0)
245 #define BOOT_PORT(x)                    (((x) & 0xf) << 1)
246
247 #define FORCE_PCIE_PAD_IDDQ_DISABLE                     (1 << 16)
248 #define FORCE_PCIE_PAD_IDDQ_DISABLE_MASK0       (1 << 17)
249 #define FORCE_PCIE_PAD_IDDQ_DISABLE_MASK1       (1 << 18)
250
251 #define USB2_PORT_CAP_0                         0x8
252 #define PORT0_CAP(x)                            (((x) & 0x3) << 0)
253 #define PORT0_INTERNAL                          (1 << 2)
254 #define PORT0_REVERSE_ID                        (1 << 3)
255 #define PORT1_CAP(x)                            (((x) & 0x3) << 4)
256 #define PORT1_INTERNAL                          (1 << 6)
257 #define PORT1_REVERSE_ID                        (1 << 7)
258 #define ULPI_PORT_CAP                           (1 << 24)
259 #define ULPI_MASTER                                     0
260 #define ULPI_PHY                                        1
261 #define ULPI_PORT_INTERNAL                      (1 << 25)
262
263 #define SNPS_OC_MAP_0                           0xc
264 #define CONTROLLER1_OC_PIN(x)           (((x) & 0x7) << 0)
265 #define CONTROLLER2_OC_PIN(x)           (((x) & 0x7) << 3)
266 #define CONTROLLER3_OC_PIN(x)           (((x) & 0x7) << 6)
267
268 #define USB2_OC_MAP_0                           0x10
269 #define PORT0_OC_PIN(x)                         (((x) & 0x7) << 0)
270 #define PORT1_OC_PIN(x)                         (((x) & 0x7) << 3)
271
272 #define SS_PORT_MAP_0                           0x14
273 #define PORT0_MAP(x)                            (((x) & 0x7) << 0)
274 #define PORT1_MAP(x)                            (((x) & 0x7) << 4)
275
276 #define OC_DET_0                                                        0x18
277 #define SET_OC_DETECTED0                                        (1 << 0)
278 #define SET_OC_DETECTED1                                        (1 << 1)
279 #define SET_OC_DETECTED2                                        (1 << 2)
280 #define SET_OC_DETECTED3                                        (1 << 3)
281 #define VBUS_ENABLE0                                            (1 << 8)
282 #define VBUS_ENABLE1                                            (1 << 9)
283 #define VBUS_ENABLE0_OC_MAP(x)          (((x) & 0x7) << 10)
284 #define VBUS_ENABLE1_OC_MAP(x)          (((x) & 0x7) << 13)
285 #define OC_DETECTED0                                            (1 << 16)
286 #define OC_DETECTED1                                            (1 << 17)
287 #define OC_DETECTED2                                            (1 << 18)
288 #define OC_DETECTED3                                            (1 << 19)
289 #define OC_DETECTED_VBUS_PAD0                           (1 << 20)
290 #define OC_DETECTED_VBUS_PAD1                           (1 << 21)
291 #define OC_DETECTED_INTERRUPT_ENABLE0           (1 << 24)
292 #define OC_DETECTED_INTERRUPT_ENABLE1           (1 << 25)
293 #define OC_DETECTED_INTERRUPT_ENABLE2           (1 << 26)
294 #define OC_DETECTED_INTERRUPT_ENABLE3           (1 << 27)
295 #define OC_DETECTED_INTERRUPT_ENABLE_VBUSPAD0   (1 << 28)
296 #define OC_DETECTED_INTERRUPT_ENABLE_VBUSPAD1   (1 << 29)
297
298 #define USB2_BATTERY_CHRG_OTGPAD0_0             0x20
299 #define USB2_BATTERY_CHRG_OTGPAD1_0             0x24
300 #define PD_CHG                                  (1 << 0)
301 #define VDCD_DET                                (1 << 1)
302 #define VDCD_DET_ST_CHNG                (1 << 2)
303 #define VDCD_DET_CHNG_INTR_EN   (1 << 3)
304 #define VDCD_DET_FILTER_EN              (1 << 4)
305 #define VDAT_DET                                (1 << 5)
306 #define VDAT_DET_ST_CHNG                (1 << 6)
307 #define VDAT_DET_CHNG_INTR_EN   (1 << 7)
308 #define VDAT_DET_FILTER_EN              (1 << 8)
309 #define OP_SINK_EN                              (1 << 9)
310 #define OP_SRC_EN                               (1 << 10)
311 #define ON_SINK_EN                              (1 << 11)
312 #define ON_SRC_EN                               (1 << 12)
313 #define OP_I_SRC_EN                             (1 << 13)
314 #define USBOP_RPD                               (1 << 14)
315 #define USBOP_RPU                               (1 << 15)
316 #define USBON_RPD                               (1 << 16)
317 #define USBON_RPU                               (1 << 17)
318 #define ZIP                                             (1 << 18)
319 #define ZIP_ST_CHNG                             (1 << 19)
320 #define ZIP_CHNG_INTR_EN                (1 << 20)
321 #define ZIP_FILTER_EN                   (1 << 21)
322 #define ZIN                                             (1 << 22)
323 #define ZIN_ST_CHNG                             (1 << 23)
324 #define ZIN_CHNG_INTR_EN                (1 << 24)
325 #define ZIN_FILTER_EN                   (1 << 25)
326 #define DCD_DETECTED                    (1 << 26)
327 #define DCD_INTR_EN                             (1 << 27)
328 #define SRP_DETECT_EN                   (1 << 28)
329 #define SRP_DETECTED                    (1 << 29)
330 #define SRP_INTR_EN                             (1 << 30)
331 #define GENERATE_SRP                    (1 << 31)
332
333 #define USB2_BATTERY_CHRG_BIASPAD_0                             0x28
334 #define PD_OTG                                                  (1 << 0)
335 #define OTG_VBUS_SESS_VLD                               (1 << 1)
336 #define OTG_VBUS_SESS_VLD_ST_CHNG               (1 << 2)
337 #define OTG_VBUS_SESS_VLD_CHNG_INTR_EN  (1 << 3)
338 #define VBUS_VLD                                (1 << 4)
339 #define VBUS_VLD_ST_CHNG                (1 << 5)
340 #define VBUS_VLD_CHNG_INTR_EN   (1 << 6)
341 #define IDDIG                                   (1 << 8)
342 #define IDDIG_A                                 (1 << 9)
343 #define IDDIG_B                                 (1 << 10)
344 #define IDDIG_C                                 (1 << 11)
345 #define ID_CONNECT_STATUS               (1 << 12)
346 #define ID_CONNECT_ST_CHNG              (1 << 13)
347 #define ID_CONNECT_CHNG_INTR_EN (1 << 14)
348 #define VBUS_SOURCE_SELECT(x)   (((x) & 0x3) << 15)
349 #define VBUS_OVERRIDE                   (1 << 17)
350 #define ID_SOURCE_SELECT(x)             (((x) & 0x3) << 18)
351 #define ID_OVERRIDE                             (1 << 20)
352
353 #define USB2_BATTERY_CHRG_TDCD_DBNC_TIMER_0     0x2c
354 #define TDCD_DBNC(x)                    (((x) & 0x7ff) << 0)
355
356 #define IOPHY_PLL0_CTL1_0               0x30
357 #define PLL_IDDQ                                (1 << 0)
358 #define PLL_RST_                                (1 << 1)
359 #define PLL_EMULATION_RST_              (1 << 2)
360 #define PLL_PWR_OVRD                    (1 << 3)
361 #define PLL_CKBUFPD_TR                  (1 << 4)
362 #define PLL_CKBUFPD_TL                  (1 << 5)
363 #define PLL_CKBUFPD_BR                  (1 << 6)
364 #define PLL_CKBUFPD_BL                  (1 << 7)
365 #define PLL_CKBUFPD_M                   (1 << 8)
366 #define PLL_CKBUFPD_OVR                 (1 << 9)
367 #define REFCLK_TERM100                  (1 << 11)
368 #define REFCLK_SEL(x)                   (((x) & 0xf) << 12)
369 #define PLL0_MODE                               (1 << 16)
370 #define PLL0_LOCKDET                    (1 << 19)
371 #define PLL0_REFCLK_NDIV(x)             (((x) & 0x3) << 20)
372 #define PLL1_MODE                               (1 << 24)
373 #define PLL1_LOCKDET                    (1 << 27)
374 #define PLL1_REFCLK_NDIV(x)             (((x) & 0x3) << 28)
375
376 #define IOPHY_PLL0_CTL2_0               0x34
377 #define XDIGCLK_SEL(x)                  (((x) & 0x7) << 0)
378 #define XDIGCLK_EN                              (1 << 3)
379 #define TXCLKREF_SEL                    (1 << 4)
380 #define TXCLKREF_EN                             (1 << 5)
381 #define REFCLKBUF_EN                    (1 << 6)
382 #define XDIGCLK4P5_EN                   (1 << 7)
383 #define TCLKOUT_SEL(x)                  (((x) & 0xf) << 8)
384 #define TCLKOUT_EN                              (1 << 12)
385 #define PLL_EMULATION_ON                (1 << 13)
386 #define PLL_BYPASS_EN                   (1 << 15)
387 #define PLL0_CP_CNTL(x)                 (((x) & 0xf) << 16)
388 #define PLL1_CP_CNTL(x)                 (((x) & 0xf) << 20)
389 #define PLL_MISC_OUT(x)                 (((x) & 0xff) << 24)
390
391 #define IOPHY_PLL0_CTL3_0               0x38
392 #define RCAL_CODE(x)                    (((x) & 0x1f) << 0)
393 #define RCAL_BYPASS                             (1 << 7)
394 #define RCAL_VAL(x)                             (((x) & 0x1f) << 8)
395 #define RCAL_RESET                              (1 << 14)
396 #define RCAL_DONE                               (1 << 15)
397 #define PLL_BGAP_CNTL(x)                (((x) & 0x3) << 16)
398 #define PLL_BW_CNTL(x)                  (((x) & 0x3f) << 20)
399 #define PLL_TEMP_CNTL(x)                (((x) & 0xf) << 28)
400
401 #define IOPHY_PLL0_CTL4_0               0x3c
402 #define PLL_MISC_CNTL(x)                (((x) & 0xfff) << 0)
403
404 #define IOPHY_USB3_PAD0_CTL_1_0 0x40
405 #define IOPHY_USB3_PAD1_CTL_1_0 0x44
406 #define USB3_RATE_MODE                  (1 << 0)
407 #define USB3_TX_RATE(x)                 (((x) & 0x3) << 1)
408 #define USB3_RX_RATE(x)                 (((x) & 0x3) << 3)
409 #define TX_AMP(x)                               (((x) & 0x3f) << 5)
410 #define TX_CMADJ(x)                             (((x) & 0xf) << 11)
411 #define TX_DRV_CNTL(x)                  (((x) & 0xf) << 15)
412
413 #define IOPHY_USB3_PAD0_CTL_2_0 0x48
414 #define IOPHY_USB3_PAD1_CTL_2_0 0x4c
415 #define TX_TERM_CNTL(x)                 (((x) & 0x3) << 0)
416 #define RX_TERM_CNTL(x)                 (((x) & 0x3) << 2)
417 #define RX_WANDER(x)                    (((x) & 0xf) << 4)
418 #define RX_EQ(x)                                (((x) & 0xffff) << 8)
419 #define CDR_CNTL(x)                             (((x) & 0xff) << 24)
420
421 #define IOPHY_USB3_PAD0_CTL_3_0 0x50
422 #define EOM_CNTL(x)                             (((x) & 0xffff) << 0)
423
424 #define IOPHY_USB3_PAD1_CTL_3_0 0x54
425 #define EOM_CNTL(x)                             (((x) & 0xffff) << 0)
426
427 #define IOPHY_USB3_PAD0_CTL_4_0 0x58
428 #define DFE_CNTL(x)                             (((x) & 0xffffffff) << 0)
429
430 #define IOPHY_USB3_PAD1_CTL_4_0 0x5c
431 #define DFE_CNTL(x)                             (((x) & 0xffffffff) << 0)
432
433 #define IOPHY_MISC_PAD0_CTL_1_0 0x60
434 #define IOPHY_MISC_PAD1_CTL_1_0 0x64
435 #define IDDQ                                    (1 << 0)
436 #define IDDQ_OVRD                               (1 << 1)
437 #define CKBUFPD                                 (1 << 2)
438 #define CKBUFPD_OVRD                    (1 << 3)
439 #define TX_SLEEP(x)                             (((x) & 0x3) << 4)
440 #define TX_DATA_READY                   (1 << 6)
441 #define TX_DATA_EN                              (1 << 7)
442 #define RX_SLEEP(x)                             (((x) & 0x3) << 8)
443 #define RX_DATA_READY                   (1 << 10)
444 #define RX_DATA_EN                              (1 << 11)
445 #define RX_STAT_IDLE                    (1 << 12)
446 #define TX_STAT_PRESENT                 (1 << 13)
447 #define TX_RDET                                 (1 << 15)
448 #define TX_RATE(x)                              (((x) & 0x3) << 16)
449 #define RX_RATE(x)                              (((x) & 0x3) << 18)
450 #define TX_DIV(x)                               (((x) & 0x3) << 20)
451 #define RX_DIV(x)                               (((x) & 0x3) << 22)
452 #define RATE_MODE                               (1 << 24)
453 #define RATE_MODE_OVRD                  (1 << 25)
454 #define TX_PWR_OVRD                             (1 << 26)
455 #define RX_PWR_OVRD                             (1 << 27)
456
457 #define IOPHY_MISC_PAD0_CTL_2_0 0x68
458 #define IOPHY_MISC_PAD1_CTL_2_0 0x6c
459 #define NED_MODE(x)                             (((x) & 0x3) << 0)
460 #define NED_LOOP                                (1 << 2)
461 #define NEA_LOOP                                (1 << 3)
462 #define FEA_MODE(x)                             (((x) & 0x7) << 4)
463 #define FEA_LOOP                                (1 << 7)
464 #define TX_DATA_MODE(x)                 (((x) & 0x7) << 8)
465 #define FED_LOOP                                (1 << 11)
466 #define TX_SYNC                                 (1 << 12)
467 #define RX_CDR_RESET                    (1 << 13)
468 #define PRBS_ERROR                              (1 << 24)
469 #define PRBS_CHK_EN                             (1 << 25)
470 #define TEST_EN                                 (1 << 27)
471 #define SPARE_IN(x)                             (((x) & 0x3) << 28)
472 #define SPARE_OUT(x)                    (((x) & 0x3) << 30)
473
474 #define IOPHY_MISC_PAD0_CTL_3_0 0x70
475 #define IOPHY_MISC_PAD1_CTL_3_0 0x74
476 #define MISC_CNTL(x)                    (((x) & 0xf) << 0)
477 #define TX_SEL_LOAD(x)                  (((x) & 0xf) << 8)
478 #define TX_RDET_T(x)                    (((x) & 0x3) << 12)
479 #define RX_IDLE_T(x)                    (((x) & 0x3) << 14)
480 #define TX_RDET_BYP                             (1 << 16)
481 #define RX_IDLE_BYP                             (1 << 17)
482 #define RX_IDLE_MODE                    (1 << 18)
483 #define RX_IDLE_MODE_OVRD               (1 << 19)
484 #define CDR_TEST(x)                             (((x) & 0xfff) << 20)
485
486 #define IOPHY_MISC_PAD0_CTL_4_0         0x78
487 #define IOPHY_MISC_PAD1_CTL_4_0         0x7c
488 #define TX_BYP_OUT                              (1 << 4)
489 #define TX_BYP_IN                               (1 << 5)
490 #define TX_BYP_DIR                              (1 << 6)
491 #define TX_BYP_EN                               (1 << 7)
492 #define RX_BYP_IN                               (1 << 8)
493 #define RX_BYP_OUT                              (1 << 9)
494 #define RX_BYP_DIR                              (1 << 10)
495 #define RX_BYP_EN                               (1 << 11)
496 #define RX_BYP_MODE                             (1 << 12)
497 #define TX_BYP_OVRD                             (1 << 13)
498 #define AUX_IDDQ                                (1 << 20)
499 #define AUX_IDDQ_OVRD                   (1 << 21)
500 #define AUX_HOLD_EN                             (1 << 22)
501 #define AUX_MODE_OVRD                   (1 << 23)
502 #define AUX_TX_TERM_EN                  (1 << 24)
503 #define AUX_TX_RDET_EN                  (1 << 25)
504 #define AUX_TX_RDET_CLk_EN              (1 << 26)
505 #define AUX_TX_STAT_PRESENT             (1 << 27)
506 #define AUX_RX_TERM_EN                  (1 << 28)
507 #define AUX_RX_IDLE_EN                  (1 << 29)
508 #define AUX_RX_IDLE_MODE                (1 << 30)
509 #define AUX_RX_STAT_IDLE                (1 << 31)
510
511 #define IOPHY_MISC_PAD0_CTL_5_0         0x80
512 #define IOPHY_MISC_PAD1_CTL_5_0         0x84
513 #define DFE_TRAIN_EN                    (1 << 0)
514 #define DFE_TRAIN_DONE                  (1 << 1)
515 #define DFE_RESET                               (1 << 3)
516 #define EOM_TRAIN_EN                    (1 << 4)
517 #define EOM_TRAIN_DONE                  (1 << 5)
518 #define EOM_EN                                  (1 << 7)
519 #define RX_QEYE_EN                              (1 << 8)
520 #define RX_QEYE_OUT(x)                  (((x) & 0xf) << 12)
521
522 #define IOPHY_MISC_PAD0_CTL_6_0         0x88
523 #define IOPHY_MISC_PAD1_CTL_6_0         0x8c
524 #define MISC_TEST(x)                    (((x) & 0xffff) << 0)
525 #define MISC_OUT_SEL(x)                 (((x) & 0xff) << 16)
526 #define MISC_OUT(x)                             (((x) & 0xff) << 24)
527
528 #define USB2_OTG_PAD0_CTL_0_0   0x90
529 #define USB2_OTG_PAD1_CTL_0_0   0x94
530 #define HS_CURR_LEVEL(x)                (((x) & 0x3f) << 0)
531 #define HS_SLEW(x)                              (((x) & 0x3f) << 6)
532 #define FS_SLEW(x)                              (((x) & 0x3) << 12)
533 #define LS_RSLEW(x)                             (((x) & 0x3) << 14)
534 #define LS_FSLEW(x)                             (((x) & 0x3) << 16)
535 #define TERM_EN                                 (1 << 18)
536 #define PD                                              (1 << 19)
537 #define PD2                                             (1 << 20)
538 #define PD_ZI                                   (1 << 21)
539 #define DISCON_DETECT_METHOD    (1 << 22)
540 #define LSBIAS_SEL                              (1 << 23)
541
542 #define USB2_OTG_PAD0_CTL_1_0   0x98
543 #define USB2_OTG_PAD1_CTL_1_0   0x9c
544 #define PD_CHRP_FORCE_POWERUP   (1 << 0)
545 #define PD_DISC_FORCE_POWERUP   (1 << 1)
546 #define PD_DR                           (1 << 2)
547 #define TERM_RANGE_ADJ(x)       (((x) & 0xf) << 3)
548 #define SPARE(x)                        (((x) & 0x3) << 7)
549 #define HS_IREF_CAP(x)          (((x) & 0x3) << 9)
550 #define RPU_RANGE_ADJ(x)        (((x) & 0x3) << 11)
551
552 #define USB2_BIAS_PAD_CTL_0_0   0xa0
553 #define HS_SQUELCH_LEVEL(x)     (((x) & 0x3) << 0)
554 #define HS_DISCON_LEVEL(x)      (((x) & 0x7) << 2)
555 #define HS_CHIRP_LEVEL(x)       (((x) & 0x3) << 5)
556 #define VBUS_LEVEL(x)           (((x) & 0x3) << 7)
557 #define TERM_OFFSET(x)          (((x) & 0x7) << 9)
558 #define BIAS_PD                         (1 << 12)
559 #define PD_TRK                          (1 << 13)
560 #define ADJRPU(x)                       (((x) & 0x7) << 14)
561
562 #define USB2_BIAS_PAD_CTL_1_0   0xa4
563 #define RCTRL(x)                        (((x) & 0xffff) << 0)
564 #define TCTRL(x)                        (((x) & 0xffff0000) >> 16)
565
566 #define ULPI_LINK_TRIM_CONTROL_0        0xc0
567 #define DAT_TRIM_VAL(x)         (((x) & 0xff) << 0)
568 #define DAT_SEL_DEL0            (1 << 9)
569 #define DAT_SEL_DEL1            (1 << 10)
570 #define CTL_TRIM_VAL(x)         (((x) & 0xff) << 16)
571 #define CTL_SEL_DEL0            (1 << 24)
572 #define CTL_SEL_DEL1            (1 << 25)
573
574 #define ULPI_NULL_CLK_TRIM_CONTROL_0    0xc4
575 #define NULL_CLKOUT_TRIM_VAL(x)         (((x) & 0x1f) << 0)
576 #define NULL_LBKCLK_TRIM_VAL(x)         (((x) & 0x1f) << 8)
577
578 #define HSIC_STRB_TRIM_CONTROL_0        0xc8
579 #define STRB_TRIM_VAL(x)                (((x) & 0x3f) << 0)
580
581 #define WAKE_CTRL_0             0xcc
582 #define PORT0_FORCE_TX_RDET_CLK_ENABLE  (1 << 0)
583 #define PORT1_FORCE_TX_RDET_CLK_ENABLE  (1 << 1)
584
585 #define PM_SPARE_0                              0xd0
586 #define OTG_PM_SPARE_BIT0               (1 << 0)
587 #define OTG_PM_SPARE_BIT1               (1 << 1)
588 #define OTG_PM_SPARE_BIT2               (1 << 2)
589 #define OTG_PM_SPARE_BIT3               (1 << 3)
590 #define ULPI_PM_SPARE_BIT0              (1 << 4)
591 #define ULPI_PM_SPARE_BIT1              (1 << 5)
592 #define ULPI_PM_SPARE_BIT2              (1 << 6)
593 #define ULPI_PM_SPARE_BIT3              (1 << 7)
594 #define HSIC_PM_SPARE_BIT0              (1 << 8)
595 #define HSIC_PM_SPARE_BIT1              (1 << 9)
596 #define HSIC_PM_SPARE_BIT2              (1 << 10)
597 #define HSIC_PM_SPARE_BIT3              (1 << 11)
598
599 #if defined(CONFIG_ARCH_TEGRA_11x_SOC)
600 #define HSIC_PAD_CTL_0(_p)                      (0xa8 + _p * 4)
601 #elif defined(CONFIG_ARCH_TEGRA_12x_SOC)
602 #define HSIC_PAD_CTL_0(_p)                      (0xc0 + _p * 4)
603 #endif
604 #define   TX_RTUNEP(x)                          (((x) & 0xf) << 0)
605 #define   TX_RTUNEN(x)                          (((x) & 0xf) << 4)
606 #define   TX_SLEWP(x)                           (((x) & 0xf) << 8)
607 #define   TX_SLEWN(x)                           (((x) & 0xf) << 12)
608 #define   HSIC_OPT(x)                           (((x) & 0xf) << 16)
609
610 #define USB2_PAD_MUX                            0x4
611 #define   USB2_OTG_PAD_PORT(_p, x)              (((x) & 0x3) << (0 + _p * 2))
612 #define   USB_OTG_PAD_SNPS                      (0)
613 #define   USB_OTG_PAD_XUSB                      (1)
614 #define   USB_OTG_PAD_UART                      (2)
615 #define   USB2_ULPI_PAD_PORT                    (1 << 12)
616 #define   USB2_HSIC_PAD_PORT(_p)                (1 << (14 + _p * 1))
617
618 #if defined(CONFIG_ARCH_TEGRA_11x_SOC)
619 #define HSIC_PAD_CTL_1(_p)                      (0xb0 + _p * 4)
620 #elif defined(CONFIG_ARCH_TEGRA_12x_SOC)
621 #define HSIC_PAD_CTL_1(_p)                      (0xc8 + _p * 4)
622 #endif
623 #define   AUTO_TERM_EN                          (1 << 0)
624 #define   HSIC_IDDQ                             (1 << 1)
625 #define   PD_TX                         (1 << 2)
626 #define   PD_TRX                                (1 << 3)
627 #define   PD_RX                         (1 << 4)
628 #define   HSIC_PD_ZI                            (1 << 5)
629 #define   LPBK                                  (1 << 6)
630 #define   RPD_DATA                              (1 << 7)
631 #define   RPD_STROBE                            (1 << 8)
632 #define   RPU_DATA                              (1 << 9)
633 #define   RPU_STROBE                            (1 << 10)
634
635 #if defined(CONFIG_ARCH_TEGRA_11x_SOC)
636 #define HSIC_PAD_CTL_2(_p)                      (0xb8 + _p * 4)
637 #elif defined(CONFIG_ARCH_TEGRA_12x_SOC)
638 #define HSIC_PAD_CTL_2(_p)                      (0xd0 + _p * 4)
639 #endif
640 #define   RX_DATA_TRIM(x)                       (((x) & 0xf) << 0)
641 #define   RX_STROBE_TRIM(x)                     (((x) & 0xf) << 4)
642 #define   CALIOUT(x)                            (((x) & 0xffff) << 16)
643
644 #if defined(CONFIG_ARCH_TEGRA_11x_SOC)
645 #define HSIC_STRB_TRIM_CONTROL                  (0xc8)
646 #elif defined(CONFIG_ARCH_TEGRA_12x_SOC)
647 #define HSIC_STRB_TRIM_CONTROL                  (0xe0)
648 #endif
649 #define STRB_TRIM_VAL(x)                        (((x) & 0x3f) << 0)
650
651 /* XUSB PAD Ctl Registers END */
652
653 /*
654  * FIXME: looks like no any .c requires below structure types
655  * revisit and decide whether we can delete or not
656  */
657 struct usb2_pad_port_map {
658         u32 hsic_port0;
659         u32 hsic_port1;
660         u32 ulpi_port;
661         u32 otg_port1;
662         u32 otg_port0;
663 };
664
665 struct usb2_otg_caps {
666         u32 port0_cap;
667         u32 port0_internal;
668         u32 port1_cap;
669         u32 port1_internal;
670 };
671
672 struct usb2_ulpi_caps {
673         u32     port_cap;
674         u32 port_internal;
675 };
676
677 /* this is used to assign the SuperSpeed port mapping
678  * to USB2.0 ports owned by XUSB, where the SuperSpeed ports inherit
679  * their port capabilities from the USB2.0 ports they mapped to*/
680
681 struct usb2_ss_port_map {
682         u32     port0;
683         u32 port1;
684 };
685
686 struct hsic_pad0_ctl_0_vals {
687         u32 tx_rtunep;
688         u32 tx_rtunen;
689         u32 tx_slewp;
690         u32 tx_slewn;
691         u32 hsic_opt;
692 };
693
694 struct hsic_pad0_ctl_1_vals {
695         u32     tx_rtunep;
696         u32 tx_rtunen;
697         u32 tx_slewp;
698         u32 tx_slewn;
699         u32 hsic_opt;
700 };
701
702 struct snps_oc_map_0 {
703         u32 controller1_oc;
704         u32 controller2_oc;
705         u32 controller3_oc;
706 };
707
708 struct usb2_oc_map_0 {
709         u32 port0;
710         u32 port1;
711 };
712
713 struct vbus_enable_oc_map {
714         u32 vbus_en0;
715         u32 vbus_en1;
716 };
717
718 /**
719  * port_to_hsic_pad - given "port number", return with hsic pad number
720  * @_port:      (zero-based) index to portsc registers array.
721  */
722 #if defined(CONFIG_ARCH_TEGRA_11x_SOC)
723 #define port_to_hsic_pad(_port) ({                      \
724         int _pad = -1;                                  \
725         int __p = _port;                                \
726         if (__p == 5)                                   \
727                 _pad = 0;                               \
728         else if (__p == 6)                              \
729                 _pad = 1;                               \
730         _pad; })
731 #define hsic_pad_to_port(_pad) ({                       \
732         int _port = -1;                                 \
733         int __p = _pad;                                 \
734         if (__p == 0)                                   \
735                 _port = 5;                              \
736         else if (__p == 1)                              \
737                 _port = 6;                              \
738         _port; })
739 #elif defined(CONFIG_ARCH_TEGRA_12x_SOC)
740 #define port_to_hsic_pad(_port) ({                      \
741         int _pad = -1;                                  \
742         int __p = _port;                                \
743         if (__p == 6)                                   \
744                 _pad = 0;                               \
745         else if (__p == 7)                              \
746                 _pad = 1;                               \
747         _pad; })
748
749 #define hsic_pad_to_port(_pad) ({                       \
750         int _port = -1;                                 \
751         int __p = _pad;                                 \
752         if (__p == 0)                                   \
753                 _port = 6;                              \
754         else if (__p == 1)                              \
755                 _port = 7;                              \
756         _port; })
757 #endif
758 #endif