]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/blob - arch/arm/mach-tegra/include/mach/tegra_usb_pad_ctrl.h
platform: tegra: padctl: add receiver detector API
[sojka/nv-tegra/linux-3.10.git] / arch / arm / mach-tegra / include / mach / tegra_usb_pad_ctrl.h
1 /*
2  * Copyright (c) 2013-2016, NVIDIA CORPORATION.  All rights reserved.
3  *
4  * This software is licensed under the terms of the GNU General Public
5  * License version 2, as published by the Free Software Foundation, and
6  * may be copied, distributed, and modified under those terms.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  */
14
15 #ifndef _TEGRA_USB_PAD_CTRL_INTERFACE_H_
16 #define _TEGRA_USB_PAD_CTRL_INTERFACE_H_
17
18 #include <mach/xusb.h>
19 #include <linux/tegra_prod.h>
20
21 #define UTMIPLL_HW_PWRDN_CFG0                   0x52c
22 #define   UTMIPLL_LOCK                          (1<<31)
23 #define   UTMIPLL_HW_PWRDN_CFG0_IDDQ_OVERRIDE  (1<<1)
24 #define   UTMIPLL_HW_PWRDN_CFG0_IDDQ_SWCTL     (1<<0)
25
26 #define UTMIP_BIAS_CFG0         0x80c
27 #define UTMIP_OTGPD                     (1 << 11)
28 #define UTMIP_BIASPD                    (1 << 10)
29 #define UTMIP_HSSQUELCH_LEVEL(x)        (((x) & 0x3) << 0)
30 #define UTMIP_HSDISCON_LEVEL(x) (((x) & 0x3) << 2)
31 #define UTMIP_HSDISCON_LEVEL_MSB        (1 << 24)
32
33 /* Encode lane width of each RP in nibbles starting with RP0 at lowest */
34 #define PCIE_LANES_X4_X1                0x14
35 #define PCIE_LANES_X4_X0                0x04
36 #define PCIE_LANES_X2_X1                0x12
37 #define PCIE_LANES_X2_X0                0x02
38 #define PCIE_LANES_X0_X1                0x10
39
40 enum padctl_lane {
41         PEX_P0 = 0,
42         PEX_P1,
43         PEX_P2,
44         PEX_P3,
45         PEX_P4,
46         PEX_P5,
47         PEX_P6,
48         SATA_S0,
49         LANE_MIN = PEX_P0,
50         LANE_MAX = SATA_S0
51 };
52
53 static inline enum padctl_lane usb3_laneowner_to_lane_enum(u8 laneowner)
54 {
55         if (laneowner == 0x0)
56                 return PEX_P0;
57         else if (laneowner == 0x1)
58                 return PEX_P1;
59         else if (laneowner == 0x2)
60                 return PEX_P2;
61         else if (laneowner == 0x3)
62                 return PEX_P3;
63         else if (laneowner == 0x4)
64                 return PEX_P4;
65         else if (laneowner == 0x5)
66                 return PEX_P5;
67         else if (laneowner == 0x6)
68                 return PEX_P6;
69         else if (laneowner == 0x8)
70                 return SATA_S0;
71         else
72                 return -1; /* unknown */
73 }
74
75 /* PCIe/SATA pad phy */
76 #ifdef CONFIG_ARCH_TEGRA_21x_SOC
77 #define SS_PAD_COUNT    4
78 #define USB3_LANE_NOT_ENABLED   0xF
79 #define SATA_LANE       (0x8 << 12)
80
81 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_0  0x360
82 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_PLL0_IDDQ  (1 << 0)
83 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_PLL0_SLEEP (0x3 << 1)
84 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_PLL0_ENABLE        (1 << 3)
85 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_PLL0_PWR_OVRD      (1 << 4)
86 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_PLL0_LOCKDET_STATUS        (1 << 15)
87 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_PLL0_FREQ_MDIV_MASK        (0x3 << 16)
88 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_PLL0_FREQ_NDIV     (25 << 20)
89 #define XUSB_PADCTL_UPHY_PLL_P0_CTL1_PLL0_FREQ_NDIV_MASK        (0xFF << 20)
90
91 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_0  0x364
92 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_PLL0_CAL_EN        (1 << 0)
93 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_PLL0_CAL_DONE      (1 << 1)
94 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_PLL0_CAL_OVRD      (1 << 2)
95 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_CAL_CTRL_MASK      (0xFFFFFF << 4)
96 #define XUSB_PADCTL_UPHY_PLL_P0_CTL2_PLL0_CAL_CTRL      (0x136 << 4)
97
98 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_0  0x36C
99 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_PLL0_REFCLK_SEL_MASK       (0xF << 4)
100 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_PLL0_REFCLKBUF_EN  (1 << 8)
101 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_PLL0_TXCLKREF_SEL  (0x2 << 12)
102 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_PLL0_TXCLKREF_SEL_MASK     (0x3 << 12)
103 #define XUSB_PADCTL_UPHY_PLL_P0_CTL4_PLL0_TXCLKREF_EN   (1 << 15)
104
105 #define XUSB_PADCTL_UPHY_PLL_P0_CTL5_0  0x370
106 #define XUSB_PADCTL_UPHY_PLL_P0_CTL5_DCO_CTRL_MASK      (0xFF << 16)
107 #define XUSB_PADCTL_UPHY_PLL_P0_CTL5_PLL0_DCO_CTRL      (0x2a << 16)
108
109 #define XUSB_PADCTL_UPHY_PLL_P0_CTL8_0  0x37C
110 #define XUSB_PADCTL_UPHY_PLL_P0_CTL8_PLL0_RCAL_EN       (1 << 12)
111 #define XUSB_PADCTL_UPHY_PLL_P0_CTL8_PLL0_RCAL_CLK_EN   (1 << 13)
112 #define XUSB_PADCTL_UPHY_PLL_P0_CTL8_PLL0_RCAL_OVRD     (1 << 15)
113 #define XUSB_PADCTL_UPHY_PLL_P0_CTL8_PLL0_RCAL_DONE     (1 << 31)
114
115 #define XUSB_PADCTL_UPHY_PLL_S0_CTL1_0                  0x860
116 #define S0_CTL1_PLL0_IDDQ                               (1 << 0)
117 #define S0_CTL1_PLL0_SLEEP                              (0x3 << 1)
118 #define S0_CTL1_PLL0_ENABLE                             (1 << 3)
119 #define S0_CTL1_PLL0_PWR_OVRD                           (1 << 4)
120 #define S0_CTL1_PLL0_LOCKDET_STATUS                     (1 << 15)
121 #define S0_PLL0_FREQ_NDIV(x)                            (((x) & 0xFF) << 20)
122
123 #define XUSB_PADCTL_UPHY_PLL_S0_CTL2_0                  (0x864)
124 #define S0_CTL2_PLL0_CAL_EN                             (1 << 0)
125 #define S0_CTL2_PLL0_CAL_DONE                           (1 << 1)
126 #define S0_CTL2_PLL0_CAL_OVRD                           (1 << 2)
127 #define S0_CTL2_PLL0_CAL_CTRL(x)                        (((x) & 0xFFFFFF) << 4)
128
129 #define XUSB_PADCTL_UPHY_PLL_S0_CTL4_0                  (0x86c)
130 #define S0_PLL0_TXCLKREF_SEL(x)                 (((x) & 0x3) << 12)
131
132 #define XUSB_PADCTL_UPHY_PLL_S0_CTL5_0                  (0x870)
133 #define S0_CTL5_PLL0_DCO_CTRL(x)                        (((x) & 0xFF) << 16)
134
135 #define XUSB_PADCTL_UPHY_PLL_S0_CTL8_0                  (0x87C)
136 #define S0_CTL8_PLL0_RCAL_EN                            (1 << 12)
137 #define S0_CTL8_PLL0_RCAL_CLK_EN                        (1 << 13)
138 #define S0_CTL8_PLL0_RCAL_OVRD                          (1 << 15)
139 #define S0_CTL8_PLL0_RCAL_DONE                          (1 << 31)
140
141 #define XUSB_PADCTL_UPHY_MISC_PAD_PX_CTL1(x)    (0x460 + ((x) * 0x40))
142 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL1       0x460
143 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL1_AUX_RX_IDLE_TH_MASK   (0x3 << 24)
144 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL1_AUX_RX_IDLE_TH        (1 << 24)
145 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL1_AUX_TX_RDET_STATUS    (1 << 7)
146
147 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL1_AUX_RX_IDLE_MODE_SHIFT 20
148 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL1_AUX_RX_IDLE_MODE_MASK 0x3
149 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL1_AUX_RX_IDLE_MODE_VAL 0x1
150 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL1_AUX_RX_TERM_EN BIT(18)
151 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL1_AUX_RX_MODE_OVRD BIT(13)
152 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL1_AUX_TX_MODE_OVRD BIT(12)
153 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL1_AUX_TX_RDET_CLK_EN BIT(6)
154 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL1_AUX_TX_RDET_BYP BIT(5)
155 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL1_AUX_TX_RDET_EN BIT(4)
156 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL1_AUX_TX_TERM_EN BIT(2)
157
158 #define XUSB_PADCTL_UPHY_MISC_PAD_P1_CTL1       0x4A0
159 #define XUSB_PADCTL_UPHY_MISC_PAD_P1_CTL1_AUX_TX_RDET_STATUS    (1 << 7)
160
161 #define XUSB_PADCTL_UPHY_MISC_PAD_P2_CTL1       0x4E0
162 #define XUSB_PADCTL_UPHY_MISC_PAD_P2_CTL1_AUX_TX_RDET_STATUS    (1 << 7)
163
164 #define XUSB_PADCTL_UPHY_MISC_PAD_P3_CTL1       0x520
165 #define XUSB_PADCTL_UPHY_MISC_PAD_P3_CTL1_AUX_TX_RDET_STATUS    (1 << 7)
166
167 #define XUSB_PADCTL_UPHY_MISC_PAD_P4_CTL1       0x560
168 #define XUSB_PADCTL_UPHY_MISC_PAD_P4_CTL1_AUX_TX_RDET_STATUS    (1 << 7)
169
170 #define XUSB_PADCTL_UPHY_MISC_PAD_PX_CTL2(x)    (0x464 + ((x) * 0x40))
171 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL2       0x464
172 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL2_TX_IDDQ       (1 << 0)
173 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL2_RX_IDDQ       (1 << 8)
174 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL2_TX_IDDQ_OVRD  (1 << 1)
175 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL2_RX_IDDQ_OVRD  (1 << 9)
176 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL2_TX_SLEEP      (3 << 4)
177 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL2_RX_SLEEP      (3 << 12)
178 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL2_TX_PWR_OVRD   (1 << 24)
179 #define XUSB_PADCTL_UPHY_MISC_PAD_P0_CTL2_RX_PWR_OVRD   (1 << 25)
180 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL2_RX_IDDQ_OVRD (1 << 9)
181 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL2_RX_IDDQ (1 << 8)
182 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL2_TX_IDDQ_OVRD (1 << 1)
183 #define XUSB_PADCTL_UPHY_MISC_PAD_CTL2_TX_IDDQ (1 << 0)
184
185 #define XUSB_PADCTL_UPHY_MISC_PAD_P1_CTL2       0x4A4
186 #define XUSB_PADCTL_UPHY_MISC_PAD_P2_CTL2       0x4E4
187 #define XUSB_PADCTL_UPHY_MISC_PAD_P3_CTL2       0x524
188 #define XUSB_PADCTL_UPHY_MISC_PAD_P4_CTL2       0x564
189 #define XUSB_PADCTL_UPHY_MISC_PAD_P5_CTL2       0x5A4
190 #define XUSB_PADCTL_UPHY_MISC_PAD_P6_CTL2       0x5E4
191
192 #define XUSB_PADCTL_UPHY_MISC_PAD_S0_CTL1       0x960
193 #define XUSB_PADCTL_UPHY_MISC_PAD_S0_CTL2       0x964
194
195 #define XUSB_PADCTL_UPHY_PLL_S0_CTL_1_0 0x860
196 #define XUSB_PADCTL_UPHY_PLL_S0_CTL1_MDIV_MASK  (0x3 << 16)
197 #define XUSB_PADCTL_UPHY_PLL_S0_CTL1_NDIV_MASK  (0xFF << 20)
198 #define XUSB_PADCTL_UPHY_PLL_S0_CTL1_PLL0_FREQ_MDIV (0x0 << 16)
199 #define XUSB_PADCTL_UPHY_PLL_S0_CTL1_PLL0_FREQ_NDIV (0x19 << 20)
200
201 #define XUSB_PADCTL_UPHY_PLL_S0_CTL_2_0 0x864
202 #define XUSB_PADCTL_UPHY_PLL_S0_CTL2_CAL_CTRL_MASK      (0xFFFFFF << 4)
203 #define XUSB_PADCTL_UPHY_PLL_S0_CTL2_PLL0_CAL_CTRL      (0x136 << 4)
204
205 #define XUSB_PADCTL_UPHY_PLL_S0_CTL_4_0 0x86c
206 #define XUSB_PADCTL_UPHY_PLL_S0_CTL4_TXCLKREF_SEL_MASK  (0x3 << 12)
207 #define XUSB_PADCTL_UPHY_PLL_S0_CTL4_TXCLKREF_EN_MASK   (0x1 << 15)
208 #define XUSB_PADCTL_UPHY_PLL_S0_CTL4_PLL0_TXCLKREF_SEL  (0x2 << 12)
209 #define XUSB_PADCTL_UPHY_PLL_S0_CTL4_PLL0_TXCLKREF_EN   (0x1 << 15)
210
211 #define XUSB_PADCTL_UPHY_PLL_S0_CTL_5_0 0x870
212 #define XUSB_PADCTL_UPHY_PLL_S0_CTL5_DCO_CTRL_MASK      (0xFF << 16)
213 #define XUSB_PADCTL_UPHY_PLL_S0_CTL5_PLL0_DCO_CTRL      (0x2a << 16)
214
215 #define XUSB_PADCTL_UPHY_MISC_PAD_S0_CTL_1_0    0x960
216 #define AUX_TX_IDDQ                             (1 << 0)
217 #define AUX_TX_IDDQ_OVRD                        (1 << 1)
218 #define AUX_RX_MODE_OVRD                        (1 << 13)
219 #define AUX_RX_TERM_EN                          (1 << 18)
220 #define AUX_RX_IDLE_EN                          (1 << 22)
221 #define AUX_RX_IDLE_TH(x)                       (((x) & 0x3) << 24)
222
223 #define XUSB_PADCTL_UPHY_MISC_PAD_S0_CTL_4_0    0x96c
224 #define RX_TERM_EN                              (1 << 21)
225 #define RX_TERM_OVRD                            (1 << 23)
226
227 #else
228 #define SATA_LANE       (0x1)
229
230 /* xusb padctl regs for pad programming of t124 usb3 */
231 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_0                 0x138
232 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_0_PLL0_REFCLK_NDIV_MASK   (0x3 << 20)
233 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_0_PLL0_REFCLK_NDIV        (0x2 << 20)
234
235 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0                 0x13c
236 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_XDIGCLK_SEL_MASK        (0x7 << 0)
237 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_XDIGCLK_SEL             (0x7 << 0)
238 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_TXCLKREF_SEL            (1 << 4)
239 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_TCLKOUT_EN              (1 << 12)
240 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_PLL0_CP_CNTL_MASK       (0xF << 16)
241 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_PLL0_CP_CNTL            (0x8 << 16)
242 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_PLL1_CP_CNTL_MASK       (0xF << 20)
243 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_PLL1_CP_CNTL            (0x8 << 20)
244
245 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL3_0                 0x140
246 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL3_0_RCAL_BYPASS             (1 << 7)
247
248 /* xusb padctl regs for pad programming of pcie */
249 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_0 0x40
250 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_REFCLK_SEL_MASK   (0xF << 12)
251 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_REFCLK_SEL        (0x0 << 12)
252 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_PLL_RST_          (1 << 1)
253 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_PLL0_LOCKDET              (1 << 19)
254
255 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_0 0x44
256 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_TXCLKREF_SEL      (1 << 4)
257 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_TXCLKREF_EN       (1 << 5)
258 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_REFCLKBUF_EN      (1 << 6)
259 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_PLL0_CP_CNTL_MASK (0xF << 16)
260 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_PLL0_CP_CNTL_VAL  (0x5 << 16)
261
262 #endif
263
264 /* PADCTL ELPG_PROGRAM */
265 #ifdef CONFIG_ARCH_TEGRA_21x_SOC
266
267 #define XUSB_PADCTL_ELPG_PROGRAM_0              0x20
268 #define XUSB_PADCTL_ELPG_PROGRAM_1              0x24
269 #define SSPX_ELPG_CLAMP_EN_EARLY(x)           (1 << ((x)*3 + 1))
270 #define SSP0_ELPG_CLAMP_EN                      (1 << 0)
271 #define SSP0_ELPG_CLAMP_EN_EARLY        (1 << 1)
272 #define SSP0_ELPG_VCORE_DOWN            (1 << 2)
273 #define SSP1_ELPG_CLAMP_EN                      (1 << 3)
274 #define SSP1_ELPG_CLAMP_EN_EARLY        (1 << 4)
275 #define SSP1_ELPG_VCORE_DOWN            (1 << 5)
276 #define SSP2_ELPG_CLAMP_EN                      (1 << 6)
277 #define SSP2_ELPG_CLAMP_EN_EARLY        (1 << 7)
278 #define SSP2_ELPG_VCORE_DOWN            (1 << 8)
279 #define SSP3_ELPG_CLAMP_EN                      (1 << 9)
280 #define SSP3_ELPG_CLAMP_EN_EARLY        (1 << 10)
281 #define SSP3_ELPG_VCORE_DOWN            (1 << 11)
282 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN   (1 << 29)
283 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY     (1 << 30)
284 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN (1 << 31)
285
286 #define USB2_PORT3_WAKE_INTERRUPT_ENABLE        (1 << 3)
287 #define SS_PORT0_WAKE_INTERRUPT_ENABLE  (1 << 14)
288 #define SS_PORT1_WAKE_INTERRUPT_ENABLE  (1 << 15)
289 #define SS_PORT2_WAKE_INTERRUPT_ENABLE  (1 << 16)
290 #define SS_PORT3_WAKE_INTERRUPT_ENABLE  (1 << 17)
291
292 #define SS_PORT0_WAKEUP_EVENT           (1 << 21)
293 #define SS_PORT1_WAKEUP_EVENT           (1 << 22)
294 #define SS_PORT2_WAKEUP_EVENT           (1 << 23)
295 #define SS_PORT3_WAKEUP_EVENT           (1 << 24)
296 #define SS_PORT_WAKEUP_EVENT(p)         (1 << (21 + p))
297
298 #define USB2_PORT0_WAKEUP_EVENT         (1 << 7)
299 #define USB2_PORT1_WAKEUP_EVENT         (1 << 8)
300 #define USB2_PORT2_WAKEUP_EVENT         (1 << 9)
301 #define USB2_PORT3_WAKEUP_EVENT         (1 << 10)
302 #define USB2_HSIC_PORT0_WAKEUP_EVENT    (1 << 30)
303 #define USB2_HSIC_PORT1_WAKEUP_EVENT    (1 << 31)
304 #define USB2_HSIC_PORT0_WAKE_INTERRUPT_ENABLE   (1 << 28)
305 #define USB2_HSIC_PORT1_WAKE_INTERRUPT_ENABLE   (1 << 29)
306
307 #define XUSB_ALL_WAKE_EVENT     \
308                 (USB2_PORT0_WAKEUP_EVENT | USB2_PORT1_WAKEUP_EVENT |    \
309                 USB2_PORT2_WAKEUP_EVENT | USB2_PORT3_WAKEUP_EVENT |     \
310                 SS_PORT0_WAKEUP_EVENT | SS_PORT1_WAKEUP_EVENT | \
311                 SS_PORT2_WAKEUP_EVENT | SS_PORT3_WAKEUP_EVENT | \
312                 USB2_HSIC_PORT0_WAKEUP_EVENT)
313
314 #else
315 #define XUSB_PADCTL_ELPG_PROGRAM_0              0x1c
316 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN   (1 << 24)
317 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY     (1 << 25)
318 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN (1 << 26)
319
320 #define SSP0_ELPG_CLAMP_EN              (1 << 16)
321 #define SSP0_ELPG_CLAMP_EN_EARLY        (1 << 17)
322 #define SSP0_ELPG_VCORE_DOWN            (1 << 18)
323 #define SSP1_ELPG_CLAMP_EN              (1 << 20)
324 #define SSP1_ELPG_CLAMP_EN_EARLY        (1 << 21)
325 #define SSP1_ELPG_VCORE_DOWN            (1 << 22)
326 #define SSP2_ELPG_CLAMP_EN                      0x0
327 #define SSP2_ELPG_CLAMP_EN_EARLY        0x0
328 #define SSP2_ELPG_VCORE_DOWN            0x0
329 #define SSP3_ELPG_CLAMP_EN                      0x0
330 #define SSP3_ELPG_CLAMP_EN_EARLY        0x0
331 #define SSP3_ELPG_VCORE_DOWN            0x0
332
333 #define USB2_PORT3_WAKE_INTERRUPT_ENABLE        0x0
334 #define SS_PORT0_WAKE_INTERRUPT_ENABLE  (1 << 6)
335 #define SS_PORT1_WAKE_INTERRUPT_ENABLE  (1 << 7)
336 #define SS_PORT2_WAKE_INTERRUPT_ENABLE  0x0
337 #define SS_PORT3_WAKE_INTERRUPT_ENABLE  0x0
338
339 #define SS_PORT0_WAKEUP_EVENT           (1 << 14)
340 #define SS_PORT1_WAKEUP_EVENT           (1 << 15)
341 #define SS_PORT2_WAKEUP_EVENT           0x0
342 #define SS_PORT3_WAKEUP_EVENT           0x0
343
344 #define USB2_PORT0_WAKEUP_EVENT         (1 << 8)
345 #define USB2_PORT1_WAKEUP_EVENT         (1 << 9)
346 #define USB2_PORT2_WAKEUP_EVENT         (1 << 10)
347 #define USB2_PORT3_WAKEUP_EVENT         0x0
348 #define USB2_HSIC_PORT0_WAKEUP_EVENT    (1 << 11)
349 #define USB2_HSIC_PORT1_WAKEUP_EVENT    (1 << 12)
350 #define USB2_HSIC_PORT0_WAKE_INTERRUPT_ENABLE   (1 << 3)
351 #define USB2_HSIC_PORT1_WAKE_INTERRUPT_ENABLE   (1 << 4)
352
353 #define XUSB_ALL_WAKE_EVENT     \
354                 (USB2_PORT0_WAKEUP_EVENT | USB2_PORT1_WAKEUP_EVENT |    \
355                 USB2_PORT2_WAKEUP_EVENT |       \
356                 SS_PORT0_WAKEUP_EVENT | SS_PORT1_WAKEUP_EVENT | \
357                 SS_PORT2_WAKEUP_EVENT | \
358                 USB2_HSIC_PORT0_WAKEUP_EVENT)
359 #endif
360
361 /* PADCTL register offset (Shared T124/T210/T114)*/
362 #define USB2_PORT0_WAKE_INTERRUPT_ENABLE        (1 << 0)
363 #define USB2_PORT1_WAKE_INTERRUPT_ENABLE        (1 << 1)
364 #define USB2_PORT2_WAKE_INTERRUPT_ENABLE        (1 << 2)
365
366
367 #define XUSB_PADCTL_USB2_PAD_MUX_0              0x4
368 #define PAD_PORT_MASK(_p)       (0x3 << (_p * 2))
369 #define PAD_PORT_SNPS(_p)       (0x0 << (_p * 2))
370 #define PAD_PORT_XUSB(_p)       (0x1 << (_p * 2))
371 #define XUSB_OTG_MODE           3
372 #define XUSB_DEVICE_MODE        2
373 #define XUSB_HOST_MODE          1
374
375 #define XUSB_PADCTL_USB2_PORT_CAP_0             0x8
376 #define USB2_OTG_PORT_CAP(_p, val)      ((val & 0x3) << (_p * 4))
377 #define USB2_PORT_CAP_REVERSE_ID(x) (0x1 << ((4 * (x + 1)) - 1))
378
379 #define CLK_RST_PLLU_HW_PWRDN_CFG0_0    0x530
380 #define PLLU_CLK_ENABLE_OVERRIDE_VALUE  (1 << 3)
381 #define PLLU_SEQ_IN_SWCTL                               (1 << 4)
382
383 /* PAD MUX */
384 #ifdef CONFIG_ARCH_TEGRA_21x_SOC
385 /* XUSB_PADCTL_USB2_PAD_MUX_0 */
386 #define BIAS_PAD_MASK   (0x3 << 18)
387 #define BIAS_PAD_XUSB   (0x1 << 18)
388 #define HSIC_PAD_TRK(x) (((x) & 0x3) << 16)
389 #define  HSIC_PAD_TRK_SNPS      (0)
390 #define  HSIC_PAD_TRK_XUSB      (1)
391
392 #define XUSB_PADCTL_USB3_PAD_MUX_0              0x28
393 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK0      (1 << 1)
394 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK1      (1 << 2)
395 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK2      (1 << 3)
396 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK3      (1 << 4)
397 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK4      (1 << 5)
398 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK5      (1 << 6)
399 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK6      (1 << 7)
400 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_SATA_PAD_IDDQ_DISABLE_MASK0      (1 << 8)
401 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE0 (0x3 << 12)
402 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE1 (0x3 << 14)
403 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE2 (0x3 << 16)
404 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE3 (0x3 << 18)
405 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE4 (0x3 << 20)
406 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE5 (0x3 << 22)
407 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE6 (0x3 << 24)
408 #define XUSB_PADCTL_USB3_PAD_MUX_SATA_PAD_LANE0 (0x3 << 30)
409 #define XUSB_PADCTL_USB3_PAD_MUX_SATA_PAD_LANE0_OWNER_USB3_SS   (0x1 << 30)
410 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE0_OWNER_USB3_SS   (0x1 << 12)
411 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE3_OWNER_USB3_SS   (0x1 << 18)
412 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE4_OWNER_USB3_SS   (0x1 << 20)
413 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE5_OWNER_USB3_SS   (0x1 << 22)
414 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE6_OWNER_USB3_SS   (0x1 << 24)
415 #define PAD_MUX_PAD_LANE(_lane, val)    \
416         ((_lane == 8) ? ((val & 0x3) << 30) :   \
417         ((val & 0x3) << (12 + _lane * 2)))
418 #define PAD_MUX_PAD_LANE_IDDQ(_lane, val)       \
419         ((_lane == 8) ? ((val & 0x1) << 8) :    \
420         ((val & 0x1) << (_lane + 1)))
421
422 #define XUSB_PADCTL_USB2_BIAS_PAD_CTL_0         0x284
423 #define HS_SQUELCH_LEVEL(x)             ((x & 0x7) << 0)
424 #define HS_DISCON_LEVEL(x)                              (((x) & 0x7) << 3)
425 #define XUSB_PADCTL_USB2_BIAS_PAD_CTL_1         0x288
426 #define PD_MASK                 (0x1 << 11)
427 #define PD                              (0x0 << 11)
428 #define PD_TRK_MASK             (0x1 << 26)
429 #define PD_TRK                  (0x0 << 26)
430 #define TRK_START_TIMER_MASK            (0x7F << 12)
431 #define TRK_START_TIMER                         (0x1E << 12)
432 #define TRK_DONE_RESET_TIMER_MASK       (0x7F << 19)
433 #define TRK_DONE_RESET_TIMER            (0xA << 19)
434 #define GET_PCTRL(x)    ((x & 0xfc0) >> 6)
435 #define GET_TCTRL(x)    ((x & 0x3f) >> 0)
436
437
438
439 #define XUSB_PADCTL_HSIC_PAD_TRK_CTL_0          0x340
440 #define HSIC_TRK_START_TIMER(x)         (((x) & 0x7F) << 5)
441 #define HSIC_TRK_DONE_RESET_TIMER(x)            (((x) & 0x7F) << 12)
442 #define HSIC_PD_TRK(x)                          (((x) & 0x1) << 19)
443
444 #define XUSB_PADCTL_HSIC_PAD1_CTL_0_0   0x320
445 #define PAD1_PD_TX_DATA0                (1 << 1)
446 #define PAD1_PD_TX_DATA1                (1 << 2)
447 #define PAD1_PD_TX_STROBE       (1 << 3)
448 #define PAD1_PD_TX_MASK \
449         (PAD1_PD_TX_DATA0 | PAD1_PD_TX_DATA1 | PAD1_PD_TX_STROBE)
450
451
452 #define XUSB_PADCTL_VBUS_OC_MAP_0       0x18
453 #define VBUS_OC_MAP(_p, val)    ((val & 0xf) << ((_p * 5) + 1))
454 #define VBUS_ENABLE(x)    (1 << ((x)*5))
455 #define OC_DISABLE              (0xf)
456
457 #define XUSB_PADCTL_OC_DET_0    0x1c
458 #define VBUS_EN_OC_MAP(x, v)    0x0
459 #define SET_OC_DETECTED(x)                      (1 << (x))
460 #define OC_DETECTED(x)                          (1 << (8 + (x)))
461 #define OC_DETECTED_VBUS_PAD(x)         (1 << (12 + (x)))
462 #define OC_DETECTED_VBUS_PAD_MASK       (0xf << 12)
463 #define OC_DETECTED_INTR_ENABLE(x)      (1 << (20 + (x)))
464 #define OC_DETECTED_INTR_ENABLE_VBUS_PAD(x)     (1 << (24 + (x)))
465
466 #define XUSB_PADCTL_USB2_OTG_PAD_CTL_0(_p)      (0x88 + _p * 0x40)
467 #define USB2_OTG_HS_CURR_LVL    (0x3F << 0)
468 #define USB2_OTG_PD             (0x1 << 26)
469 #define USB2_OTG_PD2    (0x1 << 27)
470 #define USB2_PD2_OVRD_EN (0x1 << 28)
471 #define USB2_OTG_PD_ZI  (0x1 << 29)
472
473 #define XUSB_PADCTL_USB2_OTG_PAD_CTL_1(_p)      (0x8c + _p * 0x40)
474 #define USB2_OTG_TERM_RANGE_ADJ (0xF << 3)
475 #define USB2_OTG_PD_DR                  (0x1 << 2)
476 #define USB2_OTG_PD_DISC_FORCE_POWERUP  (0x1 << 1)
477 #define USB2_OTG_PD_CHRP_FORCE_POWERUP  (0x1 << 0)
478 #define RPD_CTRL                                (0x1f << 26)
479 #define GET_RPD_CTRL(x)                 ((x & 0x7c000000) >> 26)
480 #define USB2_OTG_HS_IREF_CAP                    0x0
481
482
483 #define XUSB_PADCTL_USB2_BATTERY_CHRG_OTGPAD_CTL0(_p)   \
484         (0x80 + _p * 0x40)
485
486 #define XUSB_PADCTL_USB2_BATTERY_CHRG_OTGPAD_CTL1(_p)   \
487         (0x84 + _p * 0x40)
488 #define VREG_FIX18      (1 << 6)
489 #define VREG_LEV        (0x3 << 7)
490 #define VREG_LEV_EN     (0x1 << 7)
491
492 #define XUSB_PADCTL_USB2_OC_MAP_0       0x10
493 #define PORT_OC_PIN(_p, val)    ((val & 0xf) << (_p * 4))
494 #define OC_VBUS_PAD(p)  (p + 4)
495 #define OC_DISABLED     0xf
496
497 #define XUSB_PADCTL_SS_PORT_MAP 0x14
498 #define SS_PORT_MAP(_p, val) \
499         ((val & 0x7) << (_p * 5))
500
501 #define XUSB_PADCTL_UPHY_USB3_ECTL_2_0(p) (0xa64 + p * 0x40)
502 #define XUSB_PADCTL_UPHY_USB3_ECTL_2_0_RX_CTLE_MASK 0xffff
503 #define XUSB_PADCTL_UPHY_USB3_ECTL_3_0(p) (0xa68 + p * 0x40)
504 #define XUSB_PADCTL_UPHY_USB3_ECTL_4_0(p) (0xa6c + p * 0x40)
505 #define XUSB_PADCTL_UPHY_USB3_ECTL_4_0_RX_CDR_CTRL_MASK (0xffff << 16)
506 #define XUSB_PADCTL_UPHY_USB3_ECTL_6_0(p) (0xa74 + p * 0x40)
507
508 #define XUSB_PADCTL_USB2_VBUS_ID_0      0xc60
509 #define VBUS_SOURCE_SELECT(val) ((val & 0x3) << 12)
510 #define ID_SOURCE_SELECT(val)   ((val & 0x3) << 16)
511 #define USB2_VBUS_ID_0_VBUS_OVERRIDE    (1 << 14)
512 #define IDDIG_CHNG_INTR_EN              (1 << 11)
513 #define USB2_VBUS_ID_0_ID_SRC_OVERRIDE          (0x1 << 16)
514 #define USB2_VBUS_ID_0_ID_OVERRIDE              (0xf << 18)
515 #define USB2_VBUS_ID_0_ID_OVERRIDE_RID_FLOAT    (0x8 << 18)
516 #define USB2_VBUS_ID_0_ID_OVERRIDE_RID_GND      (0x0 << 18)
517 #define USB2_VBUS_ID_0_VBUS_SESS_VLD_STS        (0x1 << 0)
518 #define USB2_VBUS_ID_0_VBUS_SESS_VLD_STS_CHG    (0x1 << 1)
519 #define USB2_VBUS_ID_0_VBUS_SESS_VLD_CHG_INT_EN (0x1 << 2)
520 #define USB2_VBUS_ID_0_VBUS_VLD_STS             (0x1 << 3)
521 #define USB2_VBUS_ID_0_VBUS_VLD_STS_CHG         (0x1 << 4)
522 #define USB2_VBUS_ID_0_VBUS_VLD_CHG_INT_EN      (0x1 << 5)
523 #define USB2_VBUS_ID_0_IDDIG_STS                (0x1 << 6)
524 #define USB2_VBUS_ID_0_IDDIGA_STS               (0x1 << 7)
525 #define USB2_VBUS_ID_0_IDDIGB_STS               (0x1 << 8)
526 #define USB2_VBUS_ID_0_IDDIGC_STS               (0x1 << 9)
527 #define USB2_VBUS_ID_0_RID_MASK                 (0xf << 6)
528 #define USB2_VBUS_ID_0_RID_FLOAT                USB2_VBUS_ID_0_IDDIG_STS
529 #define USB2_VBUS_ID_0_RID_A                    USB2_VBUS_ID_0_IDDIGA_STS
530 #define USB2_VBUS_ID_0_RID_B                    USB2_VBUS_ID_0_IDDIGB_STS
531 #define USB2_VBUS_ID_0_RID_C                    USB2_VBUS_ID_0_IDDIGC_STS
532 #define USB2_VBUS_ID_0_RID_GND                  (0x0 << 6)
533 #define USB2_VBUS_ID_0_IDDIG_STS_CHG            (0x1 << 10)
534 #define USB2_VBUS_ID_0_IDDIG_CHG_INT_EN         (0x1 << 11)
535 #define USB2_VBUS_ID_0_VBUS_SRC_SELECT          (0x3 << 12)
536 #define USB2_VBUS_ID_0_VBUS_SRC_OVERRIDE        (0x1 << 12)
537 #define USB2_VBUS_ID_0_VBUS_WKUP_OVERRIDE       (0x1 << 15)
538 #define USB2_VBUS_ID_0_ID_SRC_SELECT            (0x3 << 16)
539 #define USB2_VBUS_ID_0_VBUS_WKUP_STS            (0x1 << 22)
540 #define USB2_VBUS_ID_0_VBUS_WKUP_STS_CHG        (0x1 << 23)
541 #define USB2_VBUS_ID_0_VBUS_WKUP_CHG_INT_EN     (0x1 << 24)
542 #define USB2_VBUS_ID_0_INTR_STS_CHG_MASK (USB2_VBUS_ID_0_VBUS_VLD_STS_CHG | \
543                                         USB2_VBUS_ID_0_VBUS_SESS_VLD_STS_CHG | \
544                                         USB2_VBUS_ID_0_VBUS_WKUP_STS_CHG)
545
546 #define XUSB_PADCTL_USB2_BATTERY_CHRG_OTGPAD_CTL0_0(x) (0x80 + 0x40 * x)
547 #define USB2_BATTERY_CHRG_OTGPAD_GENERATE_SRP           (1 << 31)
548 #define USB2_BATTERY_CHRG_OTGPAD_SRP_INTR_EN            (1 << 30)
549 #define USB2_BATTERY_CHRG_OTGPAD_SRP_DETECTED           (1 << 29)
550 #define USB2_BATTERY_CHRG_OTGPAD_SRP_DETECT_EN          (1 << 28)
551 #define USB2_BATTERY_CHRG_OTGPAD_DCD_DETECTED           (1 << 26)
552 #define USB2_BATTERY_CHRG_OTGPAD_INTR_STS_CHG_MASK (\
553                         USB2_BATTERY_CHRG_OTGPAD_SRP_DETECTED | \
554                         USB2_BATTERY_CHRG_OTGPAD_DCD_DETECTED)
555
556 #else
557 #define XUSB_PADCTL_USB3_PAD_MUX_0              0x134
558 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK0      (1 << 1)
559 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK1      (1 << 2)
560 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK2      (1 << 3)
561 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK3      (1 << 4)
562 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK4      (1 << 5)
563 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_SATA_PAD_IDDQ_DISABLE_MASK0      (1 << 6)
564 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE0 (0x3 << 16)
565 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE1 (0x3 << 18)
566 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE2 (0x3 << 20)
567 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE3 (0x3 << 22)
568 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE4 (0x3 << 24)
569 #define XUSB_PADCTL_USB3_PAD_MUX_SATA_PAD_LANE0 (0x3 << 26)
570 #define XUSB_PADCTL_USB3_PAD_MUX_SATA_PAD_LANE0_OWNER_USB3_SS   (0x1 << 26)
571 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE0_OWNER_USB3_SS   (0x1 << 16)
572 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE1_OWNER_USB3_SS   (0x1 << 18)
573
574 #ifdef CONFIG_ARCH_TEGRA_11x_SOC
575 #define XUSB_PADCTL_USB2_BIAS_PAD_CTL_0         0xa0
576 #else
577 #define XUSB_PADCTL_USB2_BIAS_PAD_CTL_0         0xb8
578 #endif
579 #define PD_MASK         (0x1 << 12)
580
581 #define XUSB_PADCTL_VBUS_OC_MAP_0       0x0
582 #define VBUS_OC_MAP(_p, val)    0x0
583 #define VBUS_ENABLE(x)    0x0
584 #define OC_DISABLE              0x0
585
586 #define XUSB_PADCTL_OC_DET_0    0x18
587 #define VBUS_EN_OC_MAP(x, v) \
588         (((x) == 2) ? \
589         (((v) & 0x7) << 5) : (((v) & 0x7) << (10 + 3 * (x))))
590 #define SET_OC_DETECTED(x)                      (1 << (x))
591 #define OC_DETECTED(x)                          (1 << (16 + (x)))
592 #define OC_DETECTED_VBUS_PAD(x)         (1 << (20 + (x)))
593 #define OC_DETECTED_VBUS_PAD_MASK       (0x7 << 20)
594 #define OC_DETECTED_INTR_ENABLE(x)      (1 << (24 + (x)))
595 #define OC_DETECTED_INTR_ENABLE_VBUS_PAD(x)     (1 << (28 + (x)))
596
597 #define XUSB_PADCTL_USB2_OTG_PAD_CTL_0(_p)      (0xa0 + _p * 0x4)
598 #define USB2_OTG_HS_CURR_LVL    (0x3F << 0)
599 #define USB2_OTG_PD                             (0x1 << 19)
600 #define USB2_OTG_PD2                    (0x1 << 20)
601 #define USB2_OTG_PD_ZI                  (0x1 << 21)
602
603 #define XUSB_PADCTL_USB2_OTG_PAD_CTL_1(_p)      (0xac + _p * 0x4)
604 #define USB2_OTG_PD_DR                                  (0x1 << 2)
605 #define USB2_OTG_TERM_RANGE_ADJ                 (0xF << 3)
606 #define USB2_OTG_HS_IREF_CAP                    (0x3 << 9)
607 #define USB2_OTG_PD_CHRP_FORCE_POWERUP  (0x1 << 0)
608 #define USB2_OTG_PD_DISC_FORCE_POWERUP  (0x1 << 1)
609 #define RPD_CTRL                                                0x0
610
611 #define XUSB_PADCTL_USB2_OC_MAP_0       0x10
612 #define PORT_OC_PIN(_p, val)    ((val & 0xf) << (_p * 3))
613 #define OC_VBUS_PAD(p)  (p + 4)
614 #define OC_DISABLED     0xf
615
616 #define XUSB_PADCTL_SS_PORT_MAP 0x14
617 #define SS_PORT_MAP(_p, val) \
618         ((val & 0x7) << (_p * 4))
619
620 #define XUSB_PADCTL_USB2_BATTERY_CHRG_OTGPAD_CTL1(_p)   0x0
621 #define VREG_FIX18      0x0
622 #define VREG_LEV        0x0
623 #define VREG_LEV_EN     0x0
624 #define RPD_CTRL        0x0
625
626 #define XUSB_PADCTL_USB2_VBUS_ID_0      0x0
627 #define VBUS_SOURCE_SELECT(val) 0x0
628 #define ID_SOURCE_SELECT(val)   0x0
629 #define IDDIG_CHNG_INTR_EN              0x0
630
631 #define HSIC_PAD_TRK    0x0
632 #define TRK_START_TIMER_MASK            0x0
633 #define TRK_DONE_RESET_TIMER_MASK       0x0
634
635 #define XUSB_PADCTL_HSIC_PAD_TRK_CTL_0  0x0
636 #define HSIC_TRK_START_TIMER_MASK               0x0
637 #define HSIC_TRK_DONE_RESET_TIMER_MASK  0x0
638 #define HSIC_PD_TRK_MASK        0x0
639
640 #define XUSB_PADCTL_HSIC_PAD1_CTL_0_0   0x0
641 #define PAD1_PD_TX_MASK 0x0
642 #endif
643 /* SATA PADPLL */
644 #define CLK_RST_CONTROLLER_SATA_PLL_CFG0_0      0x490
645 #define SATA_PADPLL_RESET_SWCTL                 (1 << 0)
646 #define SATA_PADPLL_USE_LOCKDET                 (1 << 2)
647 #define SATA_SEQ_IN_SWCTL                       (1 << 4)
648 #define SATA_SEQ_RESET_INPUT_VALUE              (1 << 5)
649 #define SATA_SEQ_LANE_PD_INPUT_VALUE            (1 << 6)
650 #define SATA_SEQ_PADPLL_PD_INPUT_VALUE          (1 << 7)
651 #define SATA_PADPLL_SLEEP_IDDQ                  (1 << 13)
652 #define SATA_SEQ_ENABLE                         (1 << 24)
653 #define SATA_SEQ_START_STATE                    (1 << 25)
654
655 #define CLK_RST_CONTROLLER_XUSBIO_PLL_CFG0_0            0x51C
656 #define XUSBIO_PADPLL_RESET_SWCTL                       (1 << 0)
657 #define XUSBIO_CLK_ENABLE_SWCTL                 (1 << 2)
658 #define XUSBIO_PADPLL_USE_LOCKDET                       (1 << 6)
659 #define XUSBIO_PADPLL_SLEEP_IDDQ                        (1 << 13)
660 #define XUSBIO_SEQ_ENABLE                               (1 << 24)
661
662 void tegra_xhci_release_otg_port(bool release);
663 void tegra_xhci_release_dev_port(bool release);
664 void tegra_xhci_ss_wake_on_interrupts(u32 portmap, bool enable);
665 void tegra_xhci_hs_wake_on_interrupts(u32 portmap, bool enable);
666 void tegra_xhci_ss_wake_signal(u32 portmap, bool enable);
667 void tegra_xhci_ss_vcore(u32 portmap, bool enable);
668
669 #ifndef CONFIG_ARCH_TEGRA_21x_SOC
670 int utmi_phy_pad_disable(void);
671 int utmi_phy_pad_enable(void);
672 #else
673 int utmi_phy_pad_disable(struct tegra_prod_list *prod_list);
674 int utmi_phy_pad_enable(struct tegra_prod_list *prod_list);
675 #endif
676 int usb3_phy_pad_enable(u32 lane_owner);
677 int pcie_phy_pad_enable(bool enable, int lane_owner);
678 bool tegra_phy_get_lane_rdet(u8 lane_num);
679
680 int utmi_phy_iddq_override(bool set);
681 void tegra_usb_pad_reg_update(u32 reg_offset, u32 mask, u32 val);
682 u32 tegra_usb_pad_reg_read(u32 reg_offset);
683 void tegra_usb_pad_reg_write(u32 reg_offset, u32 val);
684
685 void xusb_utmi_pad_init(int pad, u32 cap, bool external_pmic);
686 void xusb_ss_pad_init(int pad, int port_map, u32 cap);
687 void usb2_vbus_id_init(void);
688 int hsic_trk_enable(void);
689
690 int pex_usb_pad_pll_reset_assert(void);
691 int pex_usb_pad_pll_reset_deassert(void);
692 int sata_usb_pad_pll_reset_assert(void);
693 int sata_usb_pad_pll_reset_deassert(void);
694 int t210_sata_uphy_pll_init(bool sata_used_by_xusb);
695
696 int tegra_pd2_asserted(int pad);
697 int tegra_pd2_deasserted(int pad);
698
699 void xusb_utmi_pad_deinit(int pad);
700 void xusb_ss_pad_deinit(int pad);
701 void usb3_phy_pad_disable(void);
702 void xusb_enable_pad_protection(bool);
703
704 void xusb_utmi_pad_driver_power(int port, bool on);
705
706 int tegra_padctl_init_sata_pad(void);
707 int tegra_padctl_enable_sata_pad(bool enable);
708
709 #ifdef CONFIG_ARCH_TEGRA_21x_SOC
710 void t210_receiver_detector(unsigned port, bool on);
711 void t210_clamp_en_early(unsigned port, bool on);
712 #endif
713
714 #endif