1/***********************license start*************** 2 * Copyright (c) 2003-2012 Cavium Inc. (support@cavium.com). All rights 3 * reserved. 4 * 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are 8 * met: 9 * 10 * * Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 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. 17 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 21 * permission. 22 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 26 * countries. 27 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**************************************/ 39 40 41/** 42 * cvmx-uctlx-defs.h 43 * 44 * Configuration and status register (CSR) type definitions for 45 * Octeon uctlx. 46 * 47 * This file is auto generated. Do not edit. 48 * 49 * <hr>$Revision$<hr> 50 * 51 */ 52#ifndef __CVMX_UCTLX_DEFS_H__ 53#define __CVMX_UCTLX_DEFS_H__ 54 55#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 56static inline uint64_t CVMX_UCTLX_BIST_STATUS(unsigned long block_id) 57{ 58 if (!( 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); 66} 67#else 68#define CVMX_UCTLX_BIST_STATUS(block_id) (CVMX_ADD_IO_SEG(0x000118006F0000A0ull)) 69#endif 70#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 71static inline uint64_t CVMX_UCTLX_CLK_RST_CTL(unsigned long block_id) 72{ 73 if (!( 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); 81} 82#else 83#define CVMX_UCTLX_CLK_RST_CTL(block_id) (CVMX_ADD_IO_SEG(0x000118006F000000ull)) 84#endif 85#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 86static inline uint64_t CVMX_UCTLX_EHCI_CTL(unsigned long block_id) 87{ 88 if (!( 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); 96} 97#else 98#define CVMX_UCTLX_EHCI_CTL(block_id) (CVMX_ADD_IO_SEG(0x000118006F000080ull)) 99#endif 100#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 101static inline uint64_t CVMX_UCTLX_EHCI_FLA(unsigned long block_id) 102{ 103 if (!( 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); 111} 112#else 113#define CVMX_UCTLX_EHCI_FLA(block_id) (CVMX_ADD_IO_SEG(0x000118006F0000A8ull)) 114#endif 115#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 116static inline uint64_t CVMX_UCTLX_ERTO_CTL(unsigned long block_id) 117{ 118 if (!( 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); 126} 127#else 128#define CVMX_UCTLX_ERTO_CTL(block_id) (CVMX_ADD_IO_SEG(0x000118006F000090ull)) 129#endif 130#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 131static inline uint64_t CVMX_UCTLX_IF_ENA(unsigned long block_id) 132{ 133 if (!( 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); 141} 142#else 143#define CVMX_UCTLX_IF_ENA(block_id) (CVMX_ADD_IO_SEG(0x000118006F000030ull)) 144#endif 145#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 146static inline uint64_t CVMX_UCTLX_INT_ENA(unsigned long block_id) 147{ 148 if (!( 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); 156} 157#else 158#define CVMX_UCTLX_INT_ENA(block_id) (CVMX_ADD_IO_SEG(0x000118006F000028ull)) 159#endif 160#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 161static inline uint64_t CVMX_UCTLX_INT_REG(unsigned long block_id) 162{ 163 if (!( 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); 171} 172#else 173#define CVMX_UCTLX_INT_REG(block_id) (CVMX_ADD_IO_SEG(0x000118006F000020ull)) 174#endif 175#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 176static inline uint64_t CVMX_UCTLX_OHCI_CTL(unsigned long block_id) 177{ 178 if (!( 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); 186} 187#else 188#define CVMX_UCTLX_OHCI_CTL(block_id) (CVMX_ADD_IO_SEG(0x000118006F000088ull)) 189#endif 190#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 191static inline uint64_t CVMX_UCTLX_ORTO_CTL(unsigned long block_id) 192{ 193 if (!( 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); 201} 202#else 203#define CVMX_UCTLX_ORTO_CTL(block_id) (CVMX_ADD_IO_SEG(0x000118006F000098ull)) 204#endif 205#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 206static inline uint64_t CVMX_UCTLX_PPAF_WM(unsigned long block_id) 207{ 208 if (!( 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); 215} 216#else 217#define CVMX_UCTLX_PPAF_WM(block_id) (CVMX_ADD_IO_SEG(0x000118006F000038ull)) 218#endif 219#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 220static inline uint64_t CVMX_UCTLX_UPHY_CTL_STATUS(unsigned long block_id) 221{ 222 if (!( 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); 230} 231#else 232#define CVMX_UCTLX_UPHY_CTL_STATUS(block_id) (CVMX_ADD_IO_SEG(0x000118006F000008ull)) 233#endif 234#if CVMX_ENABLE_CSR_ADDRESS_CHECKING 235static inline uint64_t CVMX_UCTLX_UPHY_PORTX_CTL_STATUS(unsigned long offset, unsigned long block_id) 236{ 237 if (!( 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; 245} 246#else 247#define CVMX_UCTLX_UPHY_PORTX_CTL_STATUS(offset, block_id) (CVMX_ADD_IO_SEG(0x000118006F000010ull) + (((offset) & 1) + ((block_id) & 0) * 0x0ull) * 8) 248#endif 249 250/** 251 * cvmx_uctl#_bist_status 252 * 253 * UCTL_BIST_STATUS = UCTL Bist Status 254 * 255 * Results from BIST runs of UCTL's memories. 256 */ 257union cvmx_uctlx_bist_status { 258 uint64_t u64; 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 */ 268#else 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; 276#endif 277 } s; 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; 285}; 286typedef union cvmx_uctlx_bist_status cvmx_uctlx_bist_status_t; 287 288/** 289 * cvmx_uctl#_clk_rst_ctl 290 * 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. 293 */ 294union cvmx_uctlx_clk_rst_ctl { 295 uint64_t u64; 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 301 transition. */ 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 306 operation. */ 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 318 not active. */ 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 346 following: 347 0 -> 1 348 5 -> 4 349 7 -> 6 350 9,10,11 -> 8 351 13,14,15 -> 12 */ 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). 356 1x: Reserved. */ 357 uint64_t p_refclk_div : 2; /**< PHY Reference Clock Frequency Select. 358 - 00: 12MHz, 359 - 01: 24Mhz (Not Supported), 360 - 10: 48Mhz (Not Supported), 361 - 11: Reserved. 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 369 Suspend mode. 370 - 0: The XO, Bias, and PLL blocks remain powered in 371 suspend mode. 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 384 is stable. */ 385#else 386 uint64_t hrst : 1; 387 uint64_t p_prst : 1; 388 uint64_t p_por : 1; 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; 393 uint64_t h_div : 4; 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; 407#endif 408 } s; 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; 416}; 417typedef union cvmx_uctlx_clk_rst_ctl cvmx_uctlx_clk_rst_ctl_t; 418 419/** 420 * cvmx_uctl#_ehci_ctl 421 * 422 * UCTL_EHCI_CTL = UCTL EHCI Control Register 423 * This register controls the general behavior of UCTL EHCI datapath. 424 */ 425union cvmx_uctlx_ehci_ctl { 426 uint64_t u64; 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 432 clock cycle 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 444 command to L2C. */ 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. 447 IN: A-B-C-D-E-F-G-H 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. 453 IN: A-B-C-D-E-F-G-H 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 466 bit[39:32]. */ 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]). */ 469#else 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; 477 uint64_t l2c_bc : 1; 478 uint64_t l2c_dc : 1; 479 uint64_t reg_nb : 1; 480 uint64_t desc_rbm : 1; 481 uint64_t reserved_20_63 : 44; 482#endif 483 } s; 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; 491}; 492typedef union cvmx_uctlx_ehci_ctl cvmx_uctlx_ehci_ctl_t; 493 494/** 495 * cvmx_uctl#_ehci_fla 496 * 497 * UCTL_EHCI_FLA = UCTL EHCI Frame Length Adjument Register 498 * This register configures the EHCI Frame Length Adjustment. 499 */ 500union cvmx_uctlx_ehci_fla { 501 uint64_t u64; 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 ------------------------------------------------- 515 59488 0x00 516 59504 0x01 517 59520 0x02 518 ... ... 519 59984 0x1F 520 60000 0x20 521 60016 0x21 522 ... ... 523 60496 0x3F 524 -------------------------------------------------- 525 Note: keep this value to 0x20 (decimal 32) for no 526 offset. */ 527#else 528 uint64_t fla : 6; 529 uint64_t reserved_6_63 : 58; 530#endif 531 } s; 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; 539}; 540typedef union cvmx_uctlx_ehci_fla cvmx_uctlx_ehci_fla_t; 541 542/** 543 * cvmx_uctl#_erto_ctl 544 * 545 * UCTL_ERTO_CTL = UCTL EHCI Readbuffer TimeOut Control Register 546 * This register controls timeout for EHCI Readbuffer. 547 */ 548union cvmx_uctlx_erto_ctl { 549 uint64_t u64; 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; 556#else 557 uint64_t reserved_0_4 : 5; 558 uint64_t to_val : 27; 559 uint64_t reserved_32_63 : 32; 560#endif 561 } s; 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; 569}; 570typedef union cvmx_uctlx_erto_ctl cvmx_uctlx_erto_ctl_t; 571 572/** 573 * cvmx_uctl#_if_ena 574 * 575 * UCTL_IF_ENA = UCTL Interface Enable Register 576 * 577 * Register to enable the uctl interface clock. 578 */ 579union cvmx_uctlx_if_ena { 580 uint64_t u64; 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 */ 585#else 586 uint64_t en : 1; 587 uint64_t reserved_1_63 : 63; 588#endif 589 } s; 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; 597}; 598typedef union cvmx_uctlx_if_ena cvmx_uctlx_if_ena_t; 599 600/** 601 * cvmx_uctl#_int_ena 602 * 603 * UCTL_INT_ENA = UCTL Interrupt Enable Register 604 * 605 * Register to enable individual interrupt source in corresponding to UCTL_INT_REG 606 */ 607union cvmx_uctlx_int_ena { 608 uint64_t u64; 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 */ 620#else 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; 630#endif 631 } s; 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; 639}; 640typedef union cvmx_uctlx_int_ena cvmx_uctlx_int_ena_t; 641 642/** 643 * cvmx_uctl#_int_reg 644 * 645 * UCTL_INT_REG = UCTL Interrupt Register 646 * 647 * Summary of different bits of RSL interrupt status. 648 */ 649union cvmx_uctlx_int_reg { 650 uint64_t u64; 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 656 to be reset. */ 657 uint64_t oc_ovf_e : 1; /**< Ohci Commit OVerFlow Error 658 When the error happenes, the whole NCB system needs 659 to be reset. */ 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 */ 666#else 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; 676#endif 677 } s; 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; 685}; 686typedef union cvmx_uctlx_int_reg cvmx_uctlx_int_reg_t; 687 688/** 689 * cvmx_uctl#_ohci_ctl 690 * 691 * RSL registers starting from 0x10 can be accessed only after hclk is active and hreset is deasserted. 692 * 693 * UCTL_OHCI_CTL = UCTL OHCI Control Register 694 * This register controls the general behavior of UCTL OHCI datapath. 695 */ 696union cvmx_uctlx_ohci_ctl { 697 uint64_t u64; 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 710 command to L2C. */ 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. 713 IN: A-B-C-D-E-F-G-H 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. 719 IN: A-B-C-D-E-F-G-H 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 729 for ohci. */ 730#else 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; 738 uint64_t l2c_bc : 1; 739 uint64_t l2c_dc : 1; 740 uint64_t reg_nb : 1; 741 uint64_t reserved_19_63 : 45; 742#endif 743 } s; 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; 751}; 752typedef union cvmx_uctlx_ohci_ctl cvmx_uctlx_ohci_ctl_t; 753 754/** 755 * cvmx_uctl#_orto_ctl 756 * 757 * UCTL_ORTO_CTL = UCTL OHCI Readbuffer TimeOut Control Register 758 * This register controls timeout for OHCI Readbuffer. 759 */ 760union cvmx_uctlx_orto_ctl { 761 uint64_t u64; 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; 768#else 769 uint64_t reserved_0_7 : 8; 770 uint64_t to_val : 24; 771 uint64_t reserved_32_63 : 32; 772#endif 773 } s; 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; 781}; 782typedef union cvmx_uctlx_orto_ctl cvmx_uctlx_orto_ctl_t; 783 784/** 785 * cvmx_uctl#_ppaf_wm 786 * 787 * UCTL_PPAF_WM = UCTL PP Access FIFO WaterMark Register 788 * 789 * Register to set PP access FIFO full watermark. 790 */ 791union cvmx_uctlx_ppaf_wm { 792 uint64_t u64; 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) */ 798#else 799 uint64_t wm : 5; 800 uint64_t reserved_5_63 : 59; 801#endif 802 } s; 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; 808}; 809typedef union cvmx_uctlx_ppaf_wm cvmx_uctlx_ppaf_wm_t; 810 811/** 812 * cvmx_uctl#_uphy_ctl_status 813 * 814 * UPHY_CTL_STATUS = USB PHY Control and Status Reigster 815 * This register controls the USB PHY test and Bist. 816 */ 817union cvmx_uctlx_uphy_ctl_status { 818 uint64_t u64; 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 823 sequence. */ 824 uint64_t bist_err : 1; /**< PHY BIST Error. Valid when BIST_ENB is high. 825 Indicates an internal error was detected during the 826 BIST sequence. */ 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 838 signals. 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, 841 utmi_txvld == 0. */ 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 847 phase. 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. */ 851#else 852 uint64_t ate_reset : 1; 853 uint64_t bist_en : 1; 854 uint64_t uphy_bist : 1; 855 uint64_t vtest_en : 1; 856 uint64_t siddq : 1; 857 uint64_t lsbist : 1; 858 uint64_t fsbist : 1; 859 uint64_t hsbist : 1; 860 uint64_t bist_err : 1; 861 uint64_t bist_done : 1; 862 uint64_t reserved_10_63 : 54; 863#endif 864 } s; 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; 872}; 873typedef union cvmx_uctlx_uphy_ctl_status cvmx_uctlx_uphy_ctl_status_t; 874 875/** 876 * cvmx_uctl#_uphy_port#_ctl_status 877 * 878 * UPHY_PORTX_CTL_STATUS = USB PHY Port X Control and Status Reigsters 879 * This register controls the each port of the USB PHY. 880 */ 881union cvmx_uctlx_uphy_portx_ctl_status { 882 uint64_t u64; 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 898 to 1'b0. */ 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 910 value is 1 */ 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 916 enabled 917 - 0: During data transmission, the receive logic is 918 disabled */ 919 uint64_t tclk : 1; /**< PHY port test clock, used to load TDATA_IN to the 920 UPHY. */ 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]. */ 930#else 931 uint64_t tdata_in : 8; 932 uint64_t taddr_in : 4; 933 uint64_t tdata_sel : 1; 934 uint64_t tclk : 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; 951#endif 952 } s; 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; 960}; 961typedef union cvmx_uctlx_uphy_portx_ctl_status cvmx_uctlx_uphy_portx_ctl_status_t; 962 963#endif 964