1 /***********************license start***************
2 * Copyright (c) 2003-2012 Cavium Inc. (support@cavium.com). All rights
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
18 * * Neither the name of Cavium Inc. nor the names of
19 * its contributors may be used to endorse or promote products
20 * derived from this software without specific prior written
23 * This Software, including technical data, may be subject to U.S. export control
24 * laws, including the U.S. Export Administration Act and its associated
25 * regulations, and may be subject to export or import regulations in other
28 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29 * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
31 * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
32 * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
33 * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
34 * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35 * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
36 * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
37 * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38 ***********************license end**************************************/
44 * Configuration and status register (CSR) type definitions for
47 * This file is auto generated. Do not edit.
52 #ifndef __CVMX_UCTLX_DEFS_H__
53 #define __CVMX_UCTLX_DEFS_H__
55 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56 static inline uint64_t CVMX_UCTLX_BIST_STATUS(unsigned long block_id)
59 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
60 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
61 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
62 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
63 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
64 cvmx_warn("CVMX_UCTLX_BIST_STATUS(%lu) is invalid on this chip\n", block_id);
65 return CVMX_ADD_IO_SEG(0x000118006F0000A0ull);
68 #define CVMX_UCTLX_BIST_STATUS(block_id) (CVMX_ADD_IO_SEG(0x000118006F0000A0ull))
70 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
71 static inline uint64_t CVMX_UCTLX_CLK_RST_CTL(unsigned long block_id)
74 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
75 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
76 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
77 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
78 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
79 cvmx_warn("CVMX_UCTLX_CLK_RST_CTL(%lu) is invalid on this chip\n", block_id);
80 return CVMX_ADD_IO_SEG(0x000118006F000000ull);
83 #define CVMX_UCTLX_CLK_RST_CTL(block_id) (CVMX_ADD_IO_SEG(0x000118006F000000ull))
85 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
86 static inline uint64_t CVMX_UCTLX_EHCI_CTL(unsigned long block_id)
89 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
90 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
91 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
92 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
93 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
94 cvmx_warn("CVMX_UCTLX_EHCI_CTL(%lu) is invalid on this chip\n", block_id);
95 return CVMX_ADD_IO_SEG(0x000118006F000080ull);
98 #define CVMX_UCTLX_EHCI_CTL(block_id) (CVMX_ADD_IO_SEG(0x000118006F000080ull))
100 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
101 static inline uint64_t CVMX_UCTLX_EHCI_FLA(unsigned long block_id)
104 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
105 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
106 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
107 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
108 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
109 cvmx_warn("CVMX_UCTLX_EHCI_FLA(%lu) is invalid on this chip\n", block_id);
110 return CVMX_ADD_IO_SEG(0x000118006F0000A8ull);
113 #define CVMX_UCTLX_EHCI_FLA(block_id) (CVMX_ADD_IO_SEG(0x000118006F0000A8ull))
115 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
116 static inline uint64_t CVMX_UCTLX_ERTO_CTL(unsigned long block_id)
119 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
120 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
121 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
122 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
123 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
124 cvmx_warn("CVMX_UCTLX_ERTO_CTL(%lu) is invalid on this chip\n", block_id);
125 return CVMX_ADD_IO_SEG(0x000118006F000090ull);
128 #define CVMX_UCTLX_ERTO_CTL(block_id) (CVMX_ADD_IO_SEG(0x000118006F000090ull))
130 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
131 static inline uint64_t CVMX_UCTLX_IF_ENA(unsigned long block_id)
134 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
135 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
136 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
137 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
138 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
139 cvmx_warn("CVMX_UCTLX_IF_ENA(%lu) is invalid on this chip\n", block_id);
140 return CVMX_ADD_IO_SEG(0x000118006F000030ull);
143 #define CVMX_UCTLX_IF_ENA(block_id) (CVMX_ADD_IO_SEG(0x000118006F000030ull))
145 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
146 static inline uint64_t CVMX_UCTLX_INT_ENA(unsigned long block_id)
149 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
150 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
151 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
152 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
153 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
154 cvmx_warn("CVMX_UCTLX_INT_ENA(%lu) is invalid on this chip\n", block_id);
155 return CVMX_ADD_IO_SEG(0x000118006F000028ull);
158 #define CVMX_UCTLX_INT_ENA(block_id) (CVMX_ADD_IO_SEG(0x000118006F000028ull))
160 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
161 static inline uint64_t CVMX_UCTLX_INT_REG(unsigned long block_id)
164 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
165 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
166 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
167 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
168 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
169 cvmx_warn("CVMX_UCTLX_INT_REG(%lu) is invalid on this chip\n", block_id);
170 return CVMX_ADD_IO_SEG(0x000118006F000020ull);
173 #define CVMX_UCTLX_INT_REG(block_id) (CVMX_ADD_IO_SEG(0x000118006F000020ull))
175 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
176 static inline uint64_t CVMX_UCTLX_OHCI_CTL(unsigned long block_id)
179 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
180 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
181 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
182 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
183 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
184 cvmx_warn("CVMX_UCTLX_OHCI_CTL(%lu) is invalid on this chip\n", block_id);
185 return CVMX_ADD_IO_SEG(0x000118006F000088ull);
188 #define CVMX_UCTLX_OHCI_CTL(block_id) (CVMX_ADD_IO_SEG(0x000118006F000088ull))
190 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
191 static inline uint64_t CVMX_UCTLX_ORTO_CTL(unsigned long block_id)
194 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
195 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
196 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
197 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
198 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
199 cvmx_warn("CVMX_UCTLX_ORTO_CTL(%lu) is invalid on this chip\n", block_id);
200 return CVMX_ADD_IO_SEG(0x000118006F000098ull);
203 #define CVMX_UCTLX_ORTO_CTL(block_id) (CVMX_ADD_IO_SEG(0x000118006F000098ull))
205 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
206 static inline uint64_t CVMX_UCTLX_PPAF_WM(unsigned long block_id)
209 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
210 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
211 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
212 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
213 cvmx_warn("CVMX_UCTLX_PPAF_WM(%lu) is invalid on this chip\n", block_id);
214 return CVMX_ADD_IO_SEG(0x000118006F000038ull);
217 #define CVMX_UCTLX_PPAF_WM(block_id) (CVMX_ADD_IO_SEG(0x000118006F000038ull))
219 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
220 static inline uint64_t CVMX_UCTLX_UPHY_CTL_STATUS(unsigned long block_id)
223 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id == 0))) ||
224 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id == 0))) ||
225 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id == 0))) ||
226 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0))) ||
227 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id == 0)))))
228 cvmx_warn("CVMX_UCTLX_UPHY_CTL_STATUS(%lu) is invalid on this chip\n", block_id);
229 return CVMX_ADD_IO_SEG(0x000118006F000008ull);
232 #define CVMX_UCTLX_UPHY_CTL_STATUS(block_id) (CVMX_ADD_IO_SEG(0x000118006F000008ull))
234 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
235 static inline uint64_t CVMX_UCTLX_UPHY_PORTX_CTL_STATUS(unsigned long offset, unsigned long block_id)
238 (OCTEON_IS_MODEL(OCTEON_CN61XX) && (((offset <= 1)) && ((block_id == 0)))) ||
239 (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 1)) && ((block_id == 0)))) ||
240 (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset <= 1)) && ((block_id == 0)))) ||
241 (OCTEON_IS_MODEL(OCTEON_CN68XX) && (((offset <= 1)) && ((block_id == 0)))) ||
242 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && (((offset <= 1)) && ((block_id == 0))))))
243 cvmx_warn("CVMX_UCTLX_UPHY_PORTX_CTL_STATUS(%lu,%lu) is invalid on this chip\n", offset, block_id);
244 return CVMX_ADD_IO_SEG(0x000118006F000010ull) + (((offset) & 1) + ((block_id) & 0) * 0x0ull) * 8;
247 #define CVMX_UCTLX_UPHY_PORTX_CTL_STATUS(offset, block_id) (CVMX_ADD_IO_SEG(0x000118006F000010ull) + (((offset) & 1) + ((block_id) & 0) * 0x0ull) * 8)
251 * cvmx_uctl#_bist_status
253 * UCTL_BIST_STATUS = UCTL Bist Status
255 * Results from BIST runs of UCTL's memories.
257 union cvmx_uctlx_bist_status {
259 struct cvmx_uctlx_bist_status_s {
260 #ifdef __BIG_ENDIAN_BITFIELD
261 uint64_t reserved_6_63 : 58;
262 uint64_t data_bis : 1; /**< UAHC EHCI Data Ram Bist Status */
263 uint64_t desc_bis : 1; /**< UAHC EHCI Descriptor Ram Bist Status */
264 uint64_t erbm_bis : 1; /**< UCTL EHCI Read Buffer Memory Bist Status */
265 uint64_t orbm_bis : 1; /**< UCTL OHCI Read Buffer Memory Bist Status */
266 uint64_t wrbm_bis : 1; /**< UCTL Write Buffer Memory Bist Sta */
267 uint64_t ppaf_bis : 1; /**< PP Access FIFO Memory Bist Status */
269 uint64_t ppaf_bis : 1;
270 uint64_t wrbm_bis : 1;
271 uint64_t orbm_bis : 1;
272 uint64_t erbm_bis : 1;
273 uint64_t desc_bis : 1;
274 uint64_t data_bis : 1;
275 uint64_t reserved_6_63 : 58;
278 struct cvmx_uctlx_bist_status_s cn61xx;
279 struct cvmx_uctlx_bist_status_s cn63xx;
280 struct cvmx_uctlx_bist_status_s cn63xxp1;
281 struct cvmx_uctlx_bist_status_s cn66xx;
282 struct cvmx_uctlx_bist_status_s cn68xx;
283 struct cvmx_uctlx_bist_status_s cn68xxp1;
284 struct cvmx_uctlx_bist_status_s cnf71xx;
286 typedef union cvmx_uctlx_bist_status cvmx_uctlx_bist_status_t;
289 * cvmx_uctl#_clk_rst_ctl
291 * CLK_RST_CTL = Clock and Reset Control Reigster
292 * This register controls the frequceny of hclk and resets for hclk and phy clocks. It also controls Simulation modes and Bists.
294 union cvmx_uctlx_clk_rst_ctl {
296 struct cvmx_uctlx_clk_rst_ctl_s {
297 #ifdef __BIG_ENDIAN_BITFIELD
298 uint64_t reserved_25_63 : 39;
299 uint64_t clear_bist : 1; /**< Clear BIST on the HCLK memories */
300 uint64_t start_bist : 1; /**< Starts BIST on the HCLK memories during 0-to-1
302 uint64_t ehci_sm : 1; /**< Only set it during simulation time. When set to 1,
303 this bit sets the PHY in a non-driving mode so the
304 EHCI can detect device connection.
305 Note: it must not be set to 1, during normal
307 uint64_t ohci_clkcktrst : 1; /**< Clear clock reset. Active low. OHCI initial reset
308 signal for the DPLL block. This is only needed by
309 simulation. The duration of the reset in simulation
310 must be the same as HRST.
311 Note: it must be set to 1 during normal operation. */
312 uint64_t ohci_sm : 1; /**< OHCI Simulation Mode. It selects the counter value
313 for simulation or real time for 1 ms.
314 - 0: counter full 1ms; 1: simulation time. */
315 uint64_t ohci_susp_lgcy : 1; /**< OHCI Clock Control Signal. Note: This bit must be
316 set to 0 if the OHCI 48/12Mhz clocks must be
317 suspended when the EHCI and OHCI controllers are
319 uint64_t app_start_clk : 1; /**< OHCI Clock Control Signal. When the OHCI clocks are
320 suspended, the system has to assert this signal to
321 start the clocks (12 and 48 Mhz). */
322 uint64_t o_clkdiv_rst : 1; /**< OHCI 12Mhz clock divider reset. Active low. When
323 set to 0, divider is held in reset.
324 The reset to the divider is also asserted when core
325 reset is asserted. */
326 uint64_t h_clkdiv_byp : 1; /**< Used to enable the bypass input to the USB_CLK_DIV */
327 uint64_t h_clkdiv_rst : 1; /**< Host clock divider reset. Active low. When set to 0,
328 divider is held in reset. This must be set to 0
329 before change H_DIV0 and H_DIV1.
330 The reset to the divider is also asserted when core
331 reset is asserted. */
332 uint64_t h_clkdiv_en : 1; /**< Hclk enable. When set to 1, the hclk is gernerated. */
333 uint64_t o_clkdiv_en : 1; /**< OHCI 48Mhz/12MHz clock enable. When set to 1, the
334 clocks are gernerated. */
335 uint64_t h_div : 4; /**< The hclk frequency is sclk frequency divided by
336 H_DIV. The maximum frequency of hclk is 200Mhz.
337 The minimum frequency of hclk is no less than the
338 UTMI clock frequency which is 60Mhz. After writing a
339 value to this field, the software should read the
340 field for the value written. The [H_ENABLE] field of
341 this register should not be set until after this
342 field is set and then read.
343 Only the following values are valid:
344 1, 2, 3, 4, 6, 8, 12.
345 All other values are reserved and will be coded as
352 uint64_t p_refclk_sel : 2; /**< PHY PLL Reference Clock Select.
353 - 00: uses 12Mhz crystal at USB_XO and USB_XI;
354 - 01: uses 12/24/48Mhz 2.5V clock source at USB_XO.
355 USB_XI should be tied to GND(Not Supported).
357 uint64_t p_refclk_div : 2; /**< PHY Reference Clock Frequency Select.
359 - 01: 24Mhz (Not Supported),
360 - 10: 48Mhz (Not Supported),
362 Note: This value must be set during POR is active.
363 If a crystal is used as a reference clock,this field
364 must be set to 12 MHz. Values 01 and 10 are reserved
365 when a crystal is used. */
366 uint64_t reserved_4_4 : 1;
367 uint64_t p_com_on : 1; /**< PHY Common Block Power-Down Control.
368 - 1: The XO, Bias, and PLL blocks are powered down in
370 - 0: The XO, Bias, and PLL blocks remain powered in
372 Note: This bit must be set to 0 during POR is active
373 in current design. */
374 uint64_t p_por : 1; /**< Power on reset for PHY. Resets all the PHY's
375 registers and state machines. */
376 uint64_t p_prst : 1; /**< PHY Clock Reset. The is the value for phy_rst_n,
377 utmi_rst_n[1] and utmi_rst_n[0]. It is synchronized
378 to each clock domain to generate the corresponding
379 reset signal. This should not be set to 1 until the
380 time it takes for six clock cycles (HCLK and
381 PHY CLK, which ever is slower) has passed. */
382 uint64_t hrst : 1; /**< Host Clock Reset. This is the value for hreset_n.
383 This should not be set to 1 until 12ms after PHY CLK
389 uint64_t p_com_on : 1;
390 uint64_t reserved_4_4 : 1;
391 uint64_t p_refclk_div : 2;
392 uint64_t p_refclk_sel : 2;
394 uint64_t o_clkdiv_en : 1;
395 uint64_t h_clkdiv_en : 1;
396 uint64_t h_clkdiv_rst : 1;
397 uint64_t h_clkdiv_byp : 1;
398 uint64_t o_clkdiv_rst : 1;
399 uint64_t app_start_clk : 1;
400 uint64_t ohci_susp_lgcy : 1;
401 uint64_t ohci_sm : 1;
402 uint64_t ohci_clkcktrst : 1;
403 uint64_t ehci_sm : 1;
404 uint64_t start_bist : 1;
405 uint64_t clear_bist : 1;
406 uint64_t reserved_25_63 : 39;
409 struct cvmx_uctlx_clk_rst_ctl_s cn61xx;
410 struct cvmx_uctlx_clk_rst_ctl_s cn63xx;
411 struct cvmx_uctlx_clk_rst_ctl_s cn63xxp1;
412 struct cvmx_uctlx_clk_rst_ctl_s cn66xx;
413 struct cvmx_uctlx_clk_rst_ctl_s cn68xx;
414 struct cvmx_uctlx_clk_rst_ctl_s cn68xxp1;
415 struct cvmx_uctlx_clk_rst_ctl_s cnf71xx;
417 typedef union cvmx_uctlx_clk_rst_ctl cvmx_uctlx_clk_rst_ctl_t;
420 * cvmx_uctl#_ehci_ctl
422 * UCTL_EHCI_CTL = UCTL EHCI Control Register
423 * This register controls the general behavior of UCTL EHCI datapath.
425 union cvmx_uctlx_ehci_ctl {
427 struct cvmx_uctlx_ehci_ctl_s {
428 #ifdef __BIG_ENDIAN_BITFIELD
429 uint64_t reserved_20_63 : 44;
430 uint64_t desc_rbm : 1; /**< Descriptor Read Burst Mode on AHB bus
431 - 1: A read burst can be interruprted after 16 AHB
433 - 0: A read burst will not be interrupted until it
434 finishes or no more data available */
435 uint64_t reg_nb : 1; /**< 1: EHCI register access will not be blocked by EHCI
436 buffer/descriptor access on AHB
437 - 0: Buffer/descriptor and register access will be
438 mutually exclusive */
439 uint64_t l2c_dc : 1; /**< When set to 1, set the commit bit in the descriptor
440 store commands to L2C. */
441 uint64_t l2c_bc : 1; /**< When set to 1, set the commit bit in the buffer
442 store commands to L2C. */
443 uint64_t l2c_0pag : 1; /**< When set to 1, sets the zero-page bit in store
445 uint64_t l2c_stt : 1; /**< When set to 1, use STT when store to L2C. */
446 uint64_t l2c_buff_emod : 2; /**< Endian format for buffer from/to the L2C.
448 OUT0: A-B-C-D-E-F-G-H
449 OUT1: H-G-F-E-D-C-B-A
450 OUT2: D-C-B-A-H-G-F-E
451 OUT3: E-F-G-H-A-B-C-D */
452 uint64_t l2c_desc_emod : 2; /**< Endian format for descriptor from/to the L2C.
454 OUT0: A-B-C-D-E-F-G-H
455 OUT1: H-G-F-E-D-C-B-A
456 OUT2: D-C-B-A-H-G-F-E
457 OUT3: E-F-G-H-A-B-C-D */
458 uint64_t inv_reg_a2 : 1; /**< UAHC register address bit<2> invert. When set to 1,
459 for a 32-bit NCB I/O register access, the address
460 offset will be flipped between 0x4 and 0x0. */
461 uint64_t ehci_64b_addr_en : 1; /**< EHCI AHB Master 64-bit Addressing Enable.
462 - 1: enable ehci 64-bit addressing mode;
463 - 0: disable ehci 64-bit addressing mode.
464 When ehci 64-bit addressing mode is disabled,
465 UCTL_EHCI_CTL[L2C_ADDR_MSB] is used as the address
467 uint64_t l2c_addr_msb : 8; /**< This is the bit [39:32] of an address sent to L2C
468 for ehci whenUCTL_EHCI_CFG[EHCI_64B_ADDR_EN=0]). */
470 uint64_t l2c_addr_msb : 8;
471 uint64_t ehci_64b_addr_en : 1;
472 uint64_t inv_reg_a2 : 1;
473 uint64_t l2c_desc_emod : 2;
474 uint64_t l2c_buff_emod : 2;
475 uint64_t l2c_stt : 1;
476 uint64_t l2c_0pag : 1;
480 uint64_t desc_rbm : 1;
481 uint64_t reserved_20_63 : 44;
484 struct cvmx_uctlx_ehci_ctl_s cn61xx;
485 struct cvmx_uctlx_ehci_ctl_s cn63xx;
486 struct cvmx_uctlx_ehci_ctl_s cn63xxp1;
487 struct cvmx_uctlx_ehci_ctl_s cn66xx;
488 struct cvmx_uctlx_ehci_ctl_s cn68xx;
489 struct cvmx_uctlx_ehci_ctl_s cn68xxp1;
490 struct cvmx_uctlx_ehci_ctl_s cnf71xx;
492 typedef union cvmx_uctlx_ehci_ctl cvmx_uctlx_ehci_ctl_t;
495 * cvmx_uctl#_ehci_fla
497 * UCTL_EHCI_FLA = UCTL EHCI Frame Length Adjument Register
498 * This register configures the EHCI Frame Length Adjustment.
500 union cvmx_uctlx_ehci_fla {
502 struct cvmx_uctlx_ehci_fla_s {
503 #ifdef __BIG_ENDIAN_BITFIELD
504 uint64_t reserved_6_63 : 58;
505 uint64_t fla : 6; /**< EHCI Frame Length Adjustment. This feature
506 adjusts any offset from the clock source that drives
507 the uSOF counter. The uSOF cycle time (number of
508 uSOF counter clock periods to generate a uSOF
509 microframe length) is equal to 59,488 plus this value.
510 The default value is 32(0x20), which gives an SOF cycle
511 time of 60,000 (each microframe has 60,000 bit times).
512 -------------------------------------------------
513 Frame Length (decimal) FLA Value
514 -------------------------------------------------
524 --------------------------------------------------
525 Note: keep this value to 0x20 (decimal 32) for no
529 uint64_t reserved_6_63 : 58;
532 struct cvmx_uctlx_ehci_fla_s cn61xx;
533 struct cvmx_uctlx_ehci_fla_s cn63xx;
534 struct cvmx_uctlx_ehci_fla_s cn63xxp1;
535 struct cvmx_uctlx_ehci_fla_s cn66xx;
536 struct cvmx_uctlx_ehci_fla_s cn68xx;
537 struct cvmx_uctlx_ehci_fla_s cn68xxp1;
538 struct cvmx_uctlx_ehci_fla_s cnf71xx;
540 typedef union cvmx_uctlx_ehci_fla cvmx_uctlx_ehci_fla_t;
543 * cvmx_uctl#_erto_ctl
545 * UCTL_ERTO_CTL = UCTL EHCI Readbuffer TimeOut Control Register
546 * This register controls timeout for EHCI Readbuffer.
548 union cvmx_uctlx_erto_ctl {
550 struct cvmx_uctlx_erto_ctl_s {
551 #ifdef __BIG_ENDIAN_BITFIELD
552 uint64_t reserved_32_63 : 32;
553 uint64_t to_val : 27; /**< Read buffer timeout value
554 (value 0 means timeout disabled) */
555 uint64_t reserved_0_4 : 5;
557 uint64_t reserved_0_4 : 5;
558 uint64_t to_val : 27;
559 uint64_t reserved_32_63 : 32;
562 struct cvmx_uctlx_erto_ctl_s cn61xx;
563 struct cvmx_uctlx_erto_ctl_s cn63xx;
564 struct cvmx_uctlx_erto_ctl_s cn63xxp1;
565 struct cvmx_uctlx_erto_ctl_s cn66xx;
566 struct cvmx_uctlx_erto_ctl_s cn68xx;
567 struct cvmx_uctlx_erto_ctl_s cn68xxp1;
568 struct cvmx_uctlx_erto_ctl_s cnf71xx;
570 typedef union cvmx_uctlx_erto_ctl cvmx_uctlx_erto_ctl_t;
575 * UCTL_IF_ENA = UCTL Interface Enable Register
577 * Register to enable the uctl interface clock.
579 union cvmx_uctlx_if_ena {
581 struct cvmx_uctlx_if_ena_s {
582 #ifdef __BIG_ENDIAN_BITFIELD
583 uint64_t reserved_1_63 : 63;
584 uint64_t en : 1; /**< Turns on the USB UCTL interface clock */
587 uint64_t reserved_1_63 : 63;
590 struct cvmx_uctlx_if_ena_s cn61xx;
591 struct cvmx_uctlx_if_ena_s cn63xx;
592 struct cvmx_uctlx_if_ena_s cn63xxp1;
593 struct cvmx_uctlx_if_ena_s cn66xx;
594 struct cvmx_uctlx_if_ena_s cn68xx;
595 struct cvmx_uctlx_if_ena_s cn68xxp1;
596 struct cvmx_uctlx_if_ena_s cnf71xx;
598 typedef union cvmx_uctlx_if_ena cvmx_uctlx_if_ena_t;
603 * UCTL_INT_ENA = UCTL Interrupt Enable Register
605 * Register to enable individual interrupt source in corresponding to UCTL_INT_REG
607 union cvmx_uctlx_int_ena {
609 struct cvmx_uctlx_int_ena_s {
610 #ifdef __BIG_ENDIAN_BITFIELD
611 uint64_t reserved_8_63 : 56;
612 uint64_t ec_ovf_e : 1; /**< Ehci Commit OVerFlow Error */
613 uint64_t oc_ovf_e : 1; /**< Ohci Commit OVerFlow Error */
614 uint64_t wb_pop_e : 1; /**< Write Buffer FIFO Poped When Empty */
615 uint64_t wb_psh_f : 1; /**< Write Buffer FIFO Pushed When Full */
616 uint64_t cf_psh_f : 1; /**< Command FIFO Pushed When Full */
617 uint64_t or_psh_f : 1; /**< OHCI Read Buffer FIFO Pushed When Full */
618 uint64_t er_psh_f : 1; /**< EHCI Read Buffer FIFO Pushed When Full */
619 uint64_t pp_psh_f : 1; /**< PP Access FIFO Pushed When Full */
621 uint64_t pp_psh_f : 1;
622 uint64_t er_psh_f : 1;
623 uint64_t or_psh_f : 1;
624 uint64_t cf_psh_f : 1;
625 uint64_t wb_psh_f : 1;
626 uint64_t wb_pop_e : 1;
627 uint64_t oc_ovf_e : 1;
628 uint64_t ec_ovf_e : 1;
629 uint64_t reserved_8_63 : 56;
632 struct cvmx_uctlx_int_ena_s cn61xx;
633 struct cvmx_uctlx_int_ena_s cn63xx;
634 struct cvmx_uctlx_int_ena_s cn63xxp1;
635 struct cvmx_uctlx_int_ena_s cn66xx;
636 struct cvmx_uctlx_int_ena_s cn68xx;
637 struct cvmx_uctlx_int_ena_s cn68xxp1;
638 struct cvmx_uctlx_int_ena_s cnf71xx;
640 typedef union cvmx_uctlx_int_ena cvmx_uctlx_int_ena_t;
645 * UCTL_INT_REG = UCTL Interrupt Register
647 * Summary of different bits of RSL interrupt status.
649 union cvmx_uctlx_int_reg {
651 struct cvmx_uctlx_int_reg_s {
652 #ifdef __BIG_ENDIAN_BITFIELD
653 uint64_t reserved_8_63 : 56;
654 uint64_t ec_ovf_e : 1; /**< Ehci Commit OVerFlow Error
655 When the error happenes, the whole NCB system needs
657 uint64_t oc_ovf_e : 1; /**< Ohci Commit OVerFlow Error
658 When the error happenes, the whole NCB system needs
660 uint64_t wb_pop_e : 1; /**< Write Buffer FIFO Poped When Empty */
661 uint64_t wb_psh_f : 1; /**< Write Buffer FIFO Pushed When Full */
662 uint64_t cf_psh_f : 1; /**< Command FIFO Pushed When Full */
663 uint64_t or_psh_f : 1; /**< OHCI Read Buffer FIFO Pushed When Full */
664 uint64_t er_psh_f : 1; /**< EHCI Read Buffer FIFO Pushed When Full */
665 uint64_t pp_psh_f : 1; /**< PP Access FIFO Pushed When Full */
667 uint64_t pp_psh_f : 1;
668 uint64_t er_psh_f : 1;
669 uint64_t or_psh_f : 1;
670 uint64_t cf_psh_f : 1;
671 uint64_t wb_psh_f : 1;
672 uint64_t wb_pop_e : 1;
673 uint64_t oc_ovf_e : 1;
674 uint64_t ec_ovf_e : 1;
675 uint64_t reserved_8_63 : 56;
678 struct cvmx_uctlx_int_reg_s cn61xx;
679 struct cvmx_uctlx_int_reg_s cn63xx;
680 struct cvmx_uctlx_int_reg_s cn63xxp1;
681 struct cvmx_uctlx_int_reg_s cn66xx;
682 struct cvmx_uctlx_int_reg_s cn68xx;
683 struct cvmx_uctlx_int_reg_s cn68xxp1;
684 struct cvmx_uctlx_int_reg_s cnf71xx;
686 typedef union cvmx_uctlx_int_reg cvmx_uctlx_int_reg_t;
689 * cvmx_uctl#_ohci_ctl
691 * RSL registers starting from 0x10 can be accessed only after hclk is active and hreset is deasserted.
693 * UCTL_OHCI_CTL = UCTL OHCI Control Register
694 * This register controls the general behavior of UCTL OHCI datapath.
696 union cvmx_uctlx_ohci_ctl {
698 struct cvmx_uctlx_ohci_ctl_s {
699 #ifdef __BIG_ENDIAN_BITFIELD
700 uint64_t reserved_19_63 : 45;
701 uint64_t reg_nb : 1; /**< 1: OHCI register access will not be blocked by EHCI
702 buffer/descriptor access on AHB
703 - 0: Buffer/descriptor and register access will be
704 mutually exclusive */
705 uint64_t l2c_dc : 1; /**< When set to 1, set the commit bit in the descriptor
706 store commands to L2C. */
707 uint64_t l2c_bc : 1; /**< When set to 1, set the commit bit in the buffer
708 store commands to L2C. */
709 uint64_t l2c_0pag : 1; /**< When set to 1, sets the zero-page bit in store
711 uint64_t l2c_stt : 1; /**< When set to 1, use STT when store to L2C. */
712 uint64_t l2c_buff_emod : 2; /**< Endian format for buffer from/to the L2C.
714 OUT0: A-B-C-D-E-F-G-H
715 OUT1: H-G-F-E-D-C-B-A
716 OUT2: D-C-B-A-H-G-F-E
717 OUT3: E-F-G-H-A-B-C-D */
718 uint64_t l2c_desc_emod : 2; /**< Endian format for descriptor from/to the L2C.
720 OUT0: A-B-C-D-E-F-G-H
721 OUT1: H-G-F-E-D-C-B-A
722 OUT2: D-C-B-A-H-G-F-E
723 OUT3: E-F-G-H-A-B-C-D */
724 uint64_t inv_reg_a2 : 1; /**< UAHC register address bit<2> invert. When set to 1,
725 for a 32-bit NCB I/O register access, the address
726 offset will be flipped between 0x4 and 0x0. */
727 uint64_t reserved_8_8 : 1;
728 uint64_t l2c_addr_msb : 8; /**< This is the bit [39:32] of an address sent to L2C
731 uint64_t l2c_addr_msb : 8;
732 uint64_t reserved_8_8 : 1;
733 uint64_t inv_reg_a2 : 1;
734 uint64_t l2c_desc_emod : 2;
735 uint64_t l2c_buff_emod : 2;
736 uint64_t l2c_stt : 1;
737 uint64_t l2c_0pag : 1;
741 uint64_t reserved_19_63 : 45;
744 struct cvmx_uctlx_ohci_ctl_s cn61xx;
745 struct cvmx_uctlx_ohci_ctl_s cn63xx;
746 struct cvmx_uctlx_ohci_ctl_s cn63xxp1;
747 struct cvmx_uctlx_ohci_ctl_s cn66xx;
748 struct cvmx_uctlx_ohci_ctl_s cn68xx;
749 struct cvmx_uctlx_ohci_ctl_s cn68xxp1;
750 struct cvmx_uctlx_ohci_ctl_s cnf71xx;
752 typedef union cvmx_uctlx_ohci_ctl cvmx_uctlx_ohci_ctl_t;
755 * cvmx_uctl#_orto_ctl
757 * UCTL_ORTO_CTL = UCTL OHCI Readbuffer TimeOut Control Register
758 * This register controls timeout for OHCI Readbuffer.
760 union cvmx_uctlx_orto_ctl {
762 struct cvmx_uctlx_orto_ctl_s {
763 #ifdef __BIG_ENDIAN_BITFIELD
764 uint64_t reserved_32_63 : 32;
765 uint64_t to_val : 24; /**< Read buffer timeout value
766 (value 0 means timeout disabled) */
767 uint64_t reserved_0_7 : 8;
769 uint64_t reserved_0_7 : 8;
770 uint64_t to_val : 24;
771 uint64_t reserved_32_63 : 32;
774 struct cvmx_uctlx_orto_ctl_s cn61xx;
775 struct cvmx_uctlx_orto_ctl_s cn63xx;
776 struct cvmx_uctlx_orto_ctl_s cn63xxp1;
777 struct cvmx_uctlx_orto_ctl_s cn66xx;
778 struct cvmx_uctlx_orto_ctl_s cn68xx;
779 struct cvmx_uctlx_orto_ctl_s cn68xxp1;
780 struct cvmx_uctlx_orto_ctl_s cnf71xx;
782 typedef union cvmx_uctlx_orto_ctl cvmx_uctlx_orto_ctl_t;
787 * UCTL_PPAF_WM = UCTL PP Access FIFO WaterMark Register
789 * Register to set PP access FIFO full watermark.
791 union cvmx_uctlx_ppaf_wm {
793 struct cvmx_uctlx_ppaf_wm_s {
794 #ifdef __BIG_ENDIAN_BITFIELD
795 uint64_t reserved_5_63 : 59;
796 uint64_t wm : 5; /**< Number of entries when PP Access FIFO will assert
797 full (back pressure) */
800 uint64_t reserved_5_63 : 59;
803 struct cvmx_uctlx_ppaf_wm_s cn61xx;
804 struct cvmx_uctlx_ppaf_wm_s cn63xx;
805 struct cvmx_uctlx_ppaf_wm_s cn63xxp1;
806 struct cvmx_uctlx_ppaf_wm_s cn66xx;
807 struct cvmx_uctlx_ppaf_wm_s cnf71xx;
809 typedef union cvmx_uctlx_ppaf_wm cvmx_uctlx_ppaf_wm_t;
812 * cvmx_uctl#_uphy_ctl_status
814 * UPHY_CTL_STATUS = USB PHY Control and Status Reigster
815 * This register controls the USB PHY test and Bist.
817 union cvmx_uctlx_uphy_ctl_status {
819 struct cvmx_uctlx_uphy_ctl_status_s {
820 #ifdef __BIG_ENDIAN_BITFIELD
821 uint64_t reserved_10_63 : 54;
822 uint64_t bist_done : 1; /**< PHY BIST DONE. Asserted at the end of the PHY BIST
824 uint64_t bist_err : 1; /**< PHY BIST Error. Valid when BIST_ENB is high.
825 Indicates an internal error was detected during the
827 uint64_t hsbist : 1; /**< High-Speed BIST Enable */
828 uint64_t fsbist : 1; /**< Full-Speed BIST Enable */
829 uint64_t lsbist : 1; /**< Low-Speed BIST Enable */
830 uint64_t siddq : 1; /**< Drives the PHY SIDDQ input. Normally should be set
831 to zero. Customers not using USB PHY interface
832 should do the following:
833 Provide 3.3V to USB_VDD33 Tie USB_REXT to 3.3V
834 supply and Set SIDDQ to 1. */
835 uint64_t vtest_en : 1; /**< Analog Test Pin Enable.
836 1 = The PHY's ANALOG_TEST pin is enabled for the
837 input and output of applicable analog test
839 0 = The ANALOG_TEST pin is disabled. */
840 uint64_t uphy_bist : 1; /**< When set to 1, it makes sure that during PHY BIST,
842 uint64_t bist_en : 1; /**< PHY BIST ENABLE */
843 uint64_t ate_reset : 1; /**< Reset Input from ATE. This is a test signal. When
844 the USB core is powered up (not in suspend mode), an
845 automatic tester can use this to disable PHYCLOCK
846 and FREECLK, then re-enable them with an aligned
848 - 1: PHYCLOCKs and FREECLK outputs are disable.
849 - 0: PHYCLOCKs and FREECLK are available within a
850 specific period after ATERESET is de-asserted. */
852 uint64_t ate_reset : 1;
853 uint64_t bist_en : 1;
854 uint64_t uphy_bist : 1;
855 uint64_t vtest_en : 1;
860 uint64_t bist_err : 1;
861 uint64_t bist_done : 1;
862 uint64_t reserved_10_63 : 54;
865 struct cvmx_uctlx_uphy_ctl_status_s cn61xx;
866 struct cvmx_uctlx_uphy_ctl_status_s cn63xx;
867 struct cvmx_uctlx_uphy_ctl_status_s cn63xxp1;
868 struct cvmx_uctlx_uphy_ctl_status_s cn66xx;
869 struct cvmx_uctlx_uphy_ctl_status_s cn68xx;
870 struct cvmx_uctlx_uphy_ctl_status_s cn68xxp1;
871 struct cvmx_uctlx_uphy_ctl_status_s cnf71xx;
873 typedef union cvmx_uctlx_uphy_ctl_status cvmx_uctlx_uphy_ctl_status_t;
876 * cvmx_uctl#_uphy_port#_ctl_status
878 * UPHY_PORTX_CTL_STATUS = USB PHY Port X Control and Status Reigsters
879 * This register controls the each port of the USB PHY.
881 union cvmx_uctlx_uphy_portx_ctl_status {
883 struct cvmx_uctlx_uphy_portx_ctl_status_s {
884 #ifdef __BIG_ENDIAN_BITFIELD
885 uint64_t reserved_43_63 : 21;
886 uint64_t tdata_out : 4; /**< PHY test data out. Presents either interlly
887 generated signals or test register contenets, based
888 upon the value of TDATA_SEL */
889 uint64_t txbiststuffenh : 1; /**< High-Byte Transmit Bit-Stuffing Enable. It must be
890 set to 1'b1 in normal operation. */
891 uint64_t txbiststuffen : 1; /**< Low-Byte Transmit Bit-Stuffing Enable. It must be
892 set to 1'b1 in normal operation. */
893 uint64_t dmpulldown : 1; /**< D- Pull-Down Resistor Enable. It must be set to 1'b1
894 in normal operation. */
895 uint64_t dppulldown : 1; /**< D+ Pull-Down Resistor Enable. It must be set to 1'b1
896 in normal operation. */
897 uint64_t vbusvldext : 1; /**< In host mode, this input is not used and can be tied
899 uint64_t portreset : 1; /**< Per-port reset */
900 uint64_t txhsvxtune : 2; /**< Transmitter High-Speed Crossover Adjustment */
901 uint64_t txvreftune : 4; /**< HS DC Voltage Level Adjustment
902 When the recommended 37.4 Ohm resistor is present
903 on USB_REXT, the recommended TXVREFTUNE value is 15 */
904 uint64_t txrisetune : 1; /**< HS Transmitter Rise/Fall Time Adjustment
905 When the recommended 37.4 Ohm resistor is present
906 on USB_REXT, the recommended TXRISETUNE value is 1 */
907 uint64_t txpreemphasistune : 1; /**< HS transmitter pre-emphasis enable.
908 When the recommended 37.4 Ohm resistor is present
909 on USB_REXT, the recommended TXPREEMPHASISTUNE
911 uint64_t txfslstune : 4; /**< FS/LS Source Impedance Adjustment */
912 uint64_t sqrxtune : 3; /**< Squelch Threshold Adjustment */
913 uint64_t compdistune : 3; /**< Disconnect Threshold Adjustment */
914 uint64_t loop_en : 1; /**< Port Loop back Test Enable
915 - 1: During data transmission, the receive logic is
917 - 0: During data transmission, the receive logic is
919 uint64_t tclk : 1; /**< PHY port test clock, used to load TDATA_IN to the
921 uint64_t tdata_sel : 1; /**< Test Data out select
922 - 1: Mode-defined test register contents are output
923 - 0: internally generated signals are output */
924 uint64_t taddr_in : 4; /**< Mode address for test interface. Specifies the
925 register address for writing to or reading from the
926 PHY test interface register. */
927 uint64_t tdata_in : 8; /**< Internal testing Register input data and select.
928 This is a test bus. Data presents on [3:0] and the
929 corresponding select (enable) presents on bits[7:4]. */
931 uint64_t tdata_in : 8;
932 uint64_t taddr_in : 4;
933 uint64_t tdata_sel : 1;
935 uint64_t loop_en : 1;
936 uint64_t compdistune : 3;
937 uint64_t sqrxtune : 3;
938 uint64_t txfslstune : 4;
939 uint64_t txpreemphasistune : 1;
940 uint64_t txrisetune : 1;
941 uint64_t txvreftune : 4;
942 uint64_t txhsvxtune : 2;
943 uint64_t portreset : 1;
944 uint64_t vbusvldext : 1;
945 uint64_t dppulldown : 1;
946 uint64_t dmpulldown : 1;
947 uint64_t txbiststuffen : 1;
948 uint64_t txbiststuffenh : 1;
949 uint64_t tdata_out : 4;
950 uint64_t reserved_43_63 : 21;
953 struct cvmx_uctlx_uphy_portx_ctl_status_s cn61xx;
954 struct cvmx_uctlx_uphy_portx_ctl_status_s cn63xx;
955 struct cvmx_uctlx_uphy_portx_ctl_status_s cn63xxp1;
956 struct cvmx_uctlx_uphy_portx_ctl_status_s cn66xx;
957 struct cvmx_uctlx_uphy_portx_ctl_status_s cn68xx;
958 struct cvmx_uctlx_uphy_portx_ctl_status_s cn68xxp1;
959 struct cvmx_uctlx_uphy_portx_ctl_status_s cnf71xx;
961 typedef union cvmx_uctlx_uphy_portx_ctl_status cvmx_uctlx_uphy_portx_ctl_status_t;