Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Octeon HCD hardware register definitions.
   4 *
   5 * This file is subject to the terms and conditions of the GNU General Public
   6 * License. See the file "COPYING" in the main directory of this archive
   7 * for more details.
   8 *
   9 * Some parts of the code were originally released under BSD license:
  10 *
  11 * Copyright (c) 2003-2010 Cavium Networks (support@cavium.com). All rights
  12 * reserved.
  13 *
  14 * Redistribution and use in source and binary forms, with or without
  15 * modification, are permitted provided that the following conditions are
  16 * met:
  17 *
  18 *   * Redistributions of source code must retain the above copyright
  19 *     notice, this list of conditions and the following disclaimer.
  20 *
  21 *   * Redistributions in binary form must reproduce the above
  22 *     copyright notice, this list of conditions and the following
  23 *     disclaimer in the documentation and/or other materials provided
  24 *     with the distribution.
  25 *
  26 *   * Neither the name of Cavium Networks nor the names of
  27 *     its contributors may be used to endorse or promote products
  28 *     derived from this software without specific prior written
  29 *     permission.
  30 *
  31 * This Software, including technical data, may be subject to U.S. export
  32 * control laws, including the U.S. Export Administration Act and its associated
  33 * regulations, and may be subject to export or import regulations in other
  34 * countries.
  35 *
  36 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
  37 * AND WITH ALL FAULTS AND CAVIUM NETWORKS MAKES NO PROMISES, REPRESENTATIONS OR
  38 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
  39 * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION
  40 * OR DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
  41 * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
  42 * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
  43 * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
  44 * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
  45 * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
  46 */
  47
  48#ifndef __OCTEON_HCD_H__
  49#define __OCTEON_HCD_H__
  50
  51#include <asm/bitfield.h>
  52
  53#define CVMX_USBCXBASE 0x00016F0010000000ull
  54#define CVMX_USBCXREG1(reg, bid) \
  55	(CVMX_ADD_IO_SEG(CVMX_USBCXBASE | reg) + \
  56	 ((bid) & 1) * 0x100000000000ull)
  57#define CVMX_USBCXREG2(reg, bid, off) \
  58	(CVMX_ADD_IO_SEG(CVMX_USBCXBASE | reg) + \
  59	 (((off) & 7) + ((bid) & 1) * 0x8000000000ull) * 32)
  60
  61#define CVMX_USBCX_GAHBCFG(bid)		CVMX_USBCXREG1(0x008, bid)
  62#define CVMX_USBCX_GHWCFG3(bid)		CVMX_USBCXREG1(0x04c, bid)
  63#define CVMX_USBCX_GINTMSK(bid)		CVMX_USBCXREG1(0x018, bid)
  64#define CVMX_USBCX_GINTSTS(bid)		CVMX_USBCXREG1(0x014, bid)
  65#define CVMX_USBCX_GNPTXFSIZ(bid)	CVMX_USBCXREG1(0x028, bid)
  66#define CVMX_USBCX_GNPTXSTS(bid)	CVMX_USBCXREG1(0x02c, bid)
  67#define CVMX_USBCX_GOTGCTL(bid)		CVMX_USBCXREG1(0x000, bid)
  68#define CVMX_USBCX_GRSTCTL(bid)		CVMX_USBCXREG1(0x010, bid)
  69#define CVMX_USBCX_GRXFSIZ(bid)		CVMX_USBCXREG1(0x024, bid)
  70#define CVMX_USBCX_GRXSTSPH(bid)	CVMX_USBCXREG1(0x020, bid)
  71#define CVMX_USBCX_GUSBCFG(bid)		CVMX_USBCXREG1(0x00c, bid)
  72#define CVMX_USBCX_HAINT(bid)		CVMX_USBCXREG1(0x414, bid)
  73#define CVMX_USBCX_HAINTMSK(bid)	CVMX_USBCXREG1(0x418, bid)
  74#define CVMX_USBCX_HCCHARX(off, bid)	CVMX_USBCXREG2(0x500, bid, off)
  75#define CVMX_USBCX_HCFG(bid)		CVMX_USBCXREG1(0x400, bid)
  76#define CVMX_USBCX_HCINTMSKX(off, bid)	CVMX_USBCXREG2(0x50c, bid, off)
  77#define CVMX_USBCX_HCINTX(off, bid)	CVMX_USBCXREG2(0x508, bid, off)
  78#define CVMX_USBCX_HCSPLTX(off, bid)	CVMX_USBCXREG2(0x504, bid, off)
  79#define CVMX_USBCX_HCTSIZX(off, bid)	CVMX_USBCXREG2(0x510, bid, off)
  80#define CVMX_USBCX_HFIR(bid)		CVMX_USBCXREG1(0x404, bid)
  81#define CVMX_USBCX_HFNUM(bid)		CVMX_USBCXREG1(0x408, bid)
  82#define CVMX_USBCX_HPRT(bid)		CVMX_USBCXREG1(0x440, bid)
  83#define CVMX_USBCX_HPTXFSIZ(bid)	CVMX_USBCXREG1(0x100, bid)
  84#define CVMX_USBCX_HPTXSTS(bid)		CVMX_USBCXREG1(0x410, bid)
  85
  86#define CVMX_USBNXBID1(bid) (((bid) & 1) * 0x10000000ull)
  87#define CVMX_USBNXBID2(bid) (((bid) & 1) * 0x100000000000ull)
  88
  89#define CVMX_USBNXREG1(reg, bid) \
  90	(CVMX_ADD_IO_SEG(0x0001180068000000ull | reg) + CVMX_USBNXBID1(bid))
  91#define CVMX_USBNXREG2(reg, bid) \
  92	(CVMX_ADD_IO_SEG(0x00016F0000000000ull | reg) + CVMX_USBNXBID2(bid))
  93
  94#define CVMX_USBNX_CLK_CTL(bid)		CVMX_USBNXREG1(0x10, bid)
  95#define CVMX_USBNX_DMA0_INB_CHN0(bid)	CVMX_USBNXREG2(0x818, bid)
  96#define CVMX_USBNX_DMA0_OUTB_CHN0(bid)	CVMX_USBNXREG2(0x858, bid)
  97#define CVMX_USBNX_USBP_CTL_STATUS(bid)	CVMX_USBNXREG1(0x18, bid)
  98
  99/**
 100 * cvmx_usbc#_gahbcfg
 101 *
 102 * Core AHB Configuration Register (GAHBCFG)
 103 *
 104 * This register can be used to configure the core after power-on or a change in
 105 * mode of operation. This register mainly contains AHB system-related
 106 * configuration parameters. The AHB is the processor interface to the O2P USB
 107 * core. In general, software need not know about this interface except to
 108 * program the values as specified.
 109 *
 110 * The application must program this register as part of the O2P USB core
 111 * initialization. Do not change this register after the initial programming.
 112 */
 113union cvmx_usbcx_gahbcfg {
 114	u32 u32;
 115	/**
 116	 * struct cvmx_usbcx_gahbcfg_s
 117	 * @ptxfemplvl: Periodic TxFIFO Empty Level (PTxFEmpLvl)
 118	 *	Software should set this bit to 0x1.
 119	 *	Indicates when the Periodic TxFIFO Empty Interrupt bit in the
 120	 *	Core Interrupt register (GINTSTS.PTxFEmp) is triggered. This
 121	 *	bit is used only in Slave mode.
 122	 *	* 1'b0: GINTSTS.PTxFEmp interrupt indicates that the Periodic
 123	 *	TxFIFO is half empty
 124	 *	* 1'b1: GINTSTS.PTxFEmp interrupt indicates that the Periodic
 125	 *	TxFIFO is completely empty
 126	 * @nptxfemplvl: Non-Periodic TxFIFO Empty Level (NPTxFEmpLvl)
 127	 *	Software should set this bit to 0x1.
 128	 *	Indicates when the Non-Periodic TxFIFO Empty Interrupt bit in
 129	 *	the Core Interrupt register (GINTSTS.NPTxFEmp) is triggered.
 130	 *	This bit is used only in Slave mode.
 131	 *	* 1'b0: GINTSTS.NPTxFEmp interrupt indicates that the Non-
 132	 *	Periodic TxFIFO is half empty
 133	 *	* 1'b1: GINTSTS.NPTxFEmp interrupt indicates that the Non-
 134	 *	Periodic TxFIFO is completely empty
 135	 * @dmaen: DMA Enable (DMAEn)
 136	 *	* 1'b0: Core operates in Slave mode
 137	 *	* 1'b1: Core operates in a DMA mode
 138	 * @hbstlen: Burst Length/Type (HBstLen)
 139	 *	This field has not effect and should be left as 0x0.
 140	 * @glblintrmsk: Global Interrupt Mask (GlblIntrMsk)
 141	 *	Software should set this field to 0x1.
 142	 *	The application uses this bit to mask or unmask the interrupt
 143	 *	line assertion to itself. Irrespective of this bit's setting,
 144	 *	the interrupt status registers are updated by the core.
 145	 *	* 1'b0: Mask the interrupt assertion to the application.
 146	 *	* 1'b1: Unmask the interrupt assertion to the application.
 147	 */
 148	struct cvmx_usbcx_gahbcfg_s {
 149		__BITFIELD_FIELD(u32 reserved_9_31	: 23,
 150		__BITFIELD_FIELD(u32 ptxfemplvl		: 1,
 151		__BITFIELD_FIELD(u32 nptxfemplvl	: 1,
 152		__BITFIELD_FIELD(u32 reserved_6_6	: 1,
 153		__BITFIELD_FIELD(u32 dmaen		: 1,
 154		__BITFIELD_FIELD(u32 hbstlen		: 4,
 155		__BITFIELD_FIELD(u32 glblintrmsk	: 1,
 156		;)))))))
 157	} s;
 158};
 159
 160/**
 161 * cvmx_usbc#_ghwcfg3
 162 *
 163 * User HW Config3 Register (GHWCFG3)
 164 *
 165 * This register contains the configuration options of the O2P USB core.
 166 */
 167union cvmx_usbcx_ghwcfg3 {
 168	u32 u32;
 169	/**
 170	 * struct cvmx_usbcx_ghwcfg3_s
 171	 * @dfifodepth: DFIFO Depth (DfifoDepth)
 172	 *	This value is in terms of 32-bit words.
 173	 *	* Minimum value is 32
 174	 *	* Maximum value is 32768
 175	 * @ahbphysync: AHB and PHY Synchronous (AhbPhySync)
 176	 *	Indicates whether AHB and PHY clocks are synchronous to
 177	 *	each other.
 178	 *	* 1'b0: No
 179	 *	* 1'b1: Yes
 180	 *	This bit is tied to 1.
 181	 * @rsttype: Reset Style for Clocked always Blocks in RTL (RstType)
 182	 *	* 1'b0: Asynchronous reset is used in the core
 183	 *	* 1'b1: Synchronous reset is used in the core
 184	 * @optfeature: Optional Features Removed (OptFeature)
 185	 *	Indicates whether the User ID register, GPIO interface ports,
 186	 *	and SOF toggle and counter ports were removed for gate count
 187	 *	optimization.
 188	 * @vendor_control_interface_support: Vendor Control Interface Support
 189	 *	* 1'b0: Vendor Control Interface is not available on the core.
 190	 *	* 1'b1: Vendor Control Interface is available.
 191	 * @i2c_selection: I2C Selection
 192	 *	* 1'b0: I2C Interface is not available on the core.
 193	 *	* 1'b1: I2C Interface is available on the core.
 194	 * @otgen: OTG Function Enabled (OtgEn)
 195	 *	The application uses this bit to indicate the O2P USB core's
 196	 *	OTG capabilities.
 197	 *	* 1'b0: Not OTG capable
 198	 *	* 1'b1: OTG Capable
 199	 * @pktsizewidth: Width of Packet Size Counters (PktSizeWidth)
 200	 *	* 3'b000: 4 bits
 201	 *	* 3'b001: 5 bits
 202	 *	* 3'b010: 6 bits
 203	 *	* 3'b011: 7 bits
 204	 *	* 3'b100: 8 bits
 205	 *	* 3'b101: 9 bits
 206	 *	* 3'b110: 10 bits
 207	 *	* Others: Reserved
 208	 * @xfersizewidth: Width of Transfer Size Counters (XferSizeWidth)
 209	 *	* 4'b0000: 11 bits
 210	 *	* 4'b0001: 12 bits
 211	 *	- ...
 212	 *	* 4'b1000: 19 bits
 213	 *	* Others: Reserved
 214	 */
 215	struct cvmx_usbcx_ghwcfg3_s {
 216		__BITFIELD_FIELD(u32 dfifodepth				: 16,
 217		__BITFIELD_FIELD(u32 reserved_13_15			: 3,
 218		__BITFIELD_FIELD(u32 ahbphysync				: 1,
 219		__BITFIELD_FIELD(u32 rsttype				: 1,
 220		__BITFIELD_FIELD(u32 optfeature				: 1,
 221		__BITFIELD_FIELD(u32 vendor_control_interface_support	: 1,
 222		__BITFIELD_FIELD(u32 i2c_selection			: 1,
 223		__BITFIELD_FIELD(u32 otgen				: 1,
 224		__BITFIELD_FIELD(u32 pktsizewidth			: 3,
 225		__BITFIELD_FIELD(u32 xfersizewidth			: 4,
 226		;))))))))))
 227	} s;
 228};
 229
 230/**
 231 * cvmx_usbc#_gintmsk
 232 *
 233 * Core Interrupt Mask Register (GINTMSK)
 234 *
 235 * This register works with the Core Interrupt register to interrupt the
 236 * application. When an interrupt bit is masked, the interrupt associated with
 237 * that bit will not be generated. However, the Core Interrupt (GINTSTS)
 238 * register bit corresponding to that interrupt will still be set.
 239 * Mask interrupt: 1'b0, Unmask interrupt: 1'b1
 240 */
 241union cvmx_usbcx_gintmsk {
 242	u32 u32;
 243	/**
 244	 * struct cvmx_usbcx_gintmsk_s
 245	 * @wkupintmsk: Resume/Remote Wakeup Detected Interrupt Mask
 246	 *	(WkUpIntMsk)
 247	 * @sessreqintmsk: Session Request/New Session Detected Interrupt Mask
 248	 *	(SessReqIntMsk)
 249	 * @disconnintmsk: Disconnect Detected Interrupt Mask (DisconnIntMsk)
 250	 * @conidstschngmsk: Connector ID Status Change Mask (ConIDStsChngMsk)
 251	 * @ptxfempmsk: Periodic TxFIFO Empty Mask (PTxFEmpMsk)
 252	 * @hchintmsk: Host Channels Interrupt Mask (HChIntMsk)
 253	 * @prtintmsk: Host Port Interrupt Mask (PrtIntMsk)
 254	 * @fetsuspmsk: Data Fetch Suspended Mask (FetSuspMsk)
 255	 * @incomplpmsk: Incomplete Periodic Transfer Mask (incomplPMsk)
 256	 *	Incomplete Isochronous OUT Transfer Mask
 257	 *	(incompISOOUTMsk)
 258	 * @incompisoinmsk: Incomplete Isochronous IN Transfer Mask
 259	 *		    (incompISOINMsk)
 260	 * @oepintmsk: OUT Endpoints Interrupt Mask (OEPIntMsk)
 261	 * @inepintmsk: IN Endpoints Interrupt Mask (INEPIntMsk)
 262	 * @epmismsk: Endpoint Mismatch Interrupt Mask (EPMisMsk)
 263	 * @eopfmsk: End of Periodic Frame Interrupt Mask (EOPFMsk)
 264	 * @isooutdropmsk: Isochronous OUT Packet Dropped Interrupt Mask
 265	 *	(ISOOutDropMsk)
 266	 * @enumdonemsk: Enumeration Done Mask (EnumDoneMsk)
 267	 * @usbrstmsk: USB Reset Mask (USBRstMsk)
 268	 * @usbsuspmsk: USB Suspend Mask (USBSuspMsk)
 269	 * @erlysuspmsk: Early Suspend Mask (ErlySuspMsk)
 270	 * @i2cint: I2C Interrupt Mask (I2CINT)
 271	 * @ulpickintmsk: ULPI Carkit Interrupt Mask (ULPICKINTMsk)
 272	 *	I2C Carkit Interrupt Mask (I2CCKINTMsk)
 273	 * @goutnakeffmsk: Global OUT NAK Effective Mask (GOUTNakEffMsk)
 274	 * @ginnakeffmsk: Global Non-Periodic IN NAK Effective Mask
 275	 *		  (GINNakEffMsk)
 276	 * @nptxfempmsk: Non-Periodic TxFIFO Empty Mask (NPTxFEmpMsk)
 277	 * @rxflvlmsk: Receive FIFO Non-Empty Mask (RxFLvlMsk)
 278	 * @sofmsk: Start of (micro)Frame Mask (SofMsk)
 279	 * @otgintmsk: OTG Interrupt Mask (OTGIntMsk)
 280	 * @modemismsk: Mode Mismatch Interrupt Mask (ModeMisMsk)
 281	 */
 282	struct cvmx_usbcx_gintmsk_s {
 283		__BITFIELD_FIELD(u32 wkupintmsk		: 1,
 284		__BITFIELD_FIELD(u32 sessreqintmsk	: 1,
 285		__BITFIELD_FIELD(u32 disconnintmsk	: 1,
 286		__BITFIELD_FIELD(u32 conidstschngmsk	: 1,
 287		__BITFIELD_FIELD(u32 reserved_27_27	: 1,
 288		__BITFIELD_FIELD(u32 ptxfempmsk		: 1,
 289		__BITFIELD_FIELD(u32 hchintmsk		: 1,
 290		__BITFIELD_FIELD(u32 prtintmsk		: 1,
 291		__BITFIELD_FIELD(u32 reserved_23_23	: 1,
 292		__BITFIELD_FIELD(u32 fetsuspmsk		: 1,
 293		__BITFIELD_FIELD(u32 incomplpmsk	: 1,
 294		__BITFIELD_FIELD(u32 incompisoinmsk	: 1,
 295		__BITFIELD_FIELD(u32 oepintmsk		: 1,
 296		__BITFIELD_FIELD(u32 inepintmsk		: 1,
 297		__BITFIELD_FIELD(u32 epmismsk		: 1,
 298		__BITFIELD_FIELD(u32 reserved_16_16	: 1,
 299		__BITFIELD_FIELD(u32 eopfmsk		: 1,
 300		__BITFIELD_FIELD(u32 isooutdropmsk	: 1,
 301		__BITFIELD_FIELD(u32 enumdonemsk	: 1,
 302		__BITFIELD_FIELD(u32 usbrstmsk		: 1,
 303		__BITFIELD_FIELD(u32 usbsuspmsk		: 1,
 304		__BITFIELD_FIELD(u32 erlysuspmsk	: 1,
 305		__BITFIELD_FIELD(u32 i2cint		: 1,
 306		__BITFIELD_FIELD(u32 ulpickintmsk	: 1,
 307		__BITFIELD_FIELD(u32 goutnakeffmsk	: 1,
 308		__BITFIELD_FIELD(u32 ginnakeffmsk	: 1,
 309		__BITFIELD_FIELD(u32 nptxfempmsk	: 1,
 310		__BITFIELD_FIELD(u32 rxflvlmsk		: 1,
 311		__BITFIELD_FIELD(u32 sofmsk		: 1,
 312		__BITFIELD_FIELD(u32 otgintmsk		: 1,
 313		__BITFIELD_FIELD(u32 modemismsk		: 1,
 314		__BITFIELD_FIELD(u32 reserved_0_0	: 1,
 315		;))))))))))))))))))))))))))))))))
 316	} s;
 317};
 318
 319/**
 320 * cvmx_usbc#_gintsts
 321 *
 322 * Core Interrupt Register (GINTSTS)
 323 *
 324 * This register interrupts the application for system-level events in the
 325 * current mode of operation (Device mode or Host mode). It is shown in
 326 * Interrupt. Some of the bits in this register are valid only in Host mode,
 327 * while others are valid in Device mode only. This register also indicates the
 328 * current mode of operation. In order to clear the interrupt status bits of
 329 * type R_SS_WC, the application must write 1'b1 into the bit. The FIFO status
 330 * interrupts are read only; once software reads from or writes to the FIFO
 331 * while servicing these interrupts, FIFO interrupt conditions are cleared
 332 * automatically.
 333 */
 334union cvmx_usbcx_gintsts {
 335	u32 u32;
 336	/**
 337	 * struct cvmx_usbcx_gintsts_s
 338	 * @wkupint: Resume/Remote Wakeup Detected Interrupt (WkUpInt)
 339	 *	In Device mode, this interrupt is asserted when a resume is
 340	 *	detected on the USB. In Host mode, this interrupt is asserted
 341	 *	when a remote wakeup is detected on the USB.
 342	 *	For more information on how to use this interrupt, see "Partial
 343	 *	Power-Down and Clock Gating Programming Model" on
 344	 *	page 353.
 345	 * @sessreqint: Session Request/New Session Detected Interrupt
 346	 *		(SessReqInt)
 347	 *	In Host mode, this interrupt is asserted when a session request
 348	 *	is detected from the device. In Device mode, this interrupt is
 349	 *	asserted when the utmiotg_bvalid signal goes high.
 350	 *	For more information on how to use this interrupt, see "Partial
 351	 *	Power-Down and Clock Gating Programming Model" on
 352	 *	page 353.
 353	 * @disconnint: Disconnect Detected Interrupt (DisconnInt)
 354	 *	Asserted when a device disconnect is detected.
 355	 * @conidstschng: Connector ID Status Change (ConIDStsChng)
 356	 *	The core sets this bit when there is a change in connector ID
 357	 *	status.
 358	 * @ptxfemp: Periodic TxFIFO Empty (PTxFEmp)
 359	 *	Asserted when the Periodic Transmit FIFO is either half or
 360	 *	completely empty and there is space for at least one entry to be
 361	 *	written in the Periodic Request Queue. The half or completely
 362	 *	empty status is determined by the Periodic TxFIFO Empty Level
 363	 *	bit in the Core AHB Configuration register
 364	 *	(GAHBCFG.PTxFEmpLvl).
 365	 * @hchint: Host Channels Interrupt (HChInt)
 366	 *	The core sets this bit to indicate that an interrupt is pending
 367	 *	on one of the channels of the core (in Host mode). The
 368	 *	application must read the Host All Channels Interrupt (HAINT)
 369	 *	register to determine the exact number of the channel on which
 370	 *	the interrupt occurred, and then read the corresponding Host
 371	 *	Channel-n Interrupt (HCINTn) register to determine the exact
 372	 *	cause of the interrupt. The application must clear the
 373	 *	appropriate status bit in the HCINTn register to clear this bit.
 374	 * @prtint: Host Port Interrupt (PrtInt)
 375	 *	The core sets this bit to indicate a change in port status of
 376	 *	one of the O2P USB core ports in Host mode. The application must
 377	 *	read the Host Port Control and Status (HPRT) register to
 378	 *	determine the exact event that caused this interrupt. The
 379	 *	application must clear the appropriate status bit in the Host
 380	 *	Port Control and Status register to clear this bit.
 381	 * @fetsusp: Data Fetch Suspended (FetSusp)
 382	 *	This interrupt is valid only in DMA mode. This interrupt
 383	 *	indicates that the core has stopped fetching data for IN
 384	 *	endpoints due to the unavailability of TxFIFO space or Request
 385	 *	Queue space. This interrupt is used by the application for an
 386	 *	endpoint mismatch algorithm.
 387	 * @incomplp: Incomplete Periodic Transfer (incomplP)
 388	 *	In Host mode, the core sets this interrupt bit when there are
 389	 *	incomplete periodic transactions still pending which are
 390	 *	scheduled for the current microframe.
 391	 *	Incomplete Isochronous OUT Transfer (incompISOOUT)
 392	 *	The Device mode, the core sets this interrupt to indicate that
 393	 *	there is at least one isochronous OUT endpoint on which the
 394	 *	transfer is not completed in the current microframe. This
 395	 *	interrupt is asserted along with the End of Periodic Frame
 396	 *	Interrupt (EOPF) bit in this register.
 397	 * @incompisoin: Incomplete Isochronous IN Transfer (incompISOIN)
 398	 *	The core sets this interrupt to indicate that there is at least
 399	 *	one isochronous IN endpoint on which the transfer is not
 400	 *	completed in the current microframe. This interrupt is asserted
 401	 *	along with the End of Periodic Frame Interrupt (EOPF) bit in
 402	 *	this register.
 403	 * @oepint: OUT Endpoints Interrupt (OEPInt)
 404	 *	The core sets this bit to indicate that an interrupt is pending
 405	 *	on one of the OUT endpoints of the core (in Device mode). The
 406	 *	application must read the Device All Endpoints Interrupt
 407	 *	(DAINT) register to determine the exact number of the OUT
 408	 *	endpoint on which the interrupt occurred, and then read the
 409	 *	corresponding Device OUT Endpoint-n Interrupt (DOEPINTn)
 410	 *	register to determine the exact cause of the interrupt. The
 411	 *	application must clear the appropriate status bit in the
 412	 *	corresponding DOEPINTn register to clear this bit.
 413	 * @iepint: IN Endpoints Interrupt (IEPInt)
 414	 *	The core sets this bit to indicate that an interrupt is pending
 415	 *	on one of the IN endpoints of the core (in Device mode). The
 416	 *	application must read the Device All Endpoints Interrupt
 417	 *	(DAINT) register to determine the exact number of the IN
 418	 *	endpoint on which the interrupt occurred, and then read the
 419	 *	corresponding Device IN Endpoint-n Interrupt (DIEPINTn)
 420	 *	register to determine the exact cause of the interrupt. The
 421	 *	application must clear the appropriate status bit in the
 422	 *	corresponding DIEPINTn register to clear this bit.
 423	 * @epmis: Endpoint Mismatch Interrupt (EPMis)
 424	 *	Indicates that an IN token has been received for a non-periodic
 425	 *	endpoint, but the data for another endpoint is present in the
 426	 *	top of the Non-Periodic Transmit FIFO and the IN endpoint
 427	 *	mismatch count programmed by the application has expired.
 428	 * @eopf: End of Periodic Frame Interrupt (EOPF)
 429	 *	Indicates that the period specified in the Periodic Frame
 430	 *	Interval field of the Device Configuration register
 431	 *	(DCFG.PerFrInt) has been reached in the current microframe.
 432	 * @isooutdrop: Isochronous OUT Packet Dropped Interrupt (ISOOutDrop)
 433	 *	The core sets this bit when it fails to write an isochronous OUT
 434	 *	packet into the RxFIFO because the RxFIFO doesn't have
 435	 *	enough space to accommodate a maximum packet size packet
 436	 *	for the isochronous OUT endpoint.
 437	 * @enumdone: Enumeration Done (EnumDone)
 438	 *	The core sets this bit to indicate that speed enumeration is
 439	 *	complete. The application must read the Device Status (DSTS)
 440	 *	register to obtain the enumerated speed.
 441	 * @usbrst: USB Reset (USBRst)
 442	 *	The core sets this bit to indicate that a reset is detected on
 443	 *	the USB.
 444	 * @usbsusp: USB Suspend (USBSusp)
 445	 *	The core sets this bit to indicate that a suspend was detected
 446	 *	on the USB. The core enters the Suspended state when there
 447	 *	is no activity on the phy_line_state_i signal for an extended
 448	 *	period of time.
 449	 * @erlysusp: Early Suspend (ErlySusp)
 450	 *	The core sets this bit to indicate that an Idle state has been
 451	 *	detected on the USB for 3 ms.
 452	 * @i2cint: I2C Interrupt (I2CINT)
 453	 *	This bit is always 0x0.
 454	 * @ulpickint: ULPI Carkit Interrupt (ULPICKINT)
 455	 *	This bit is always 0x0.
 456	 * @goutnakeff: Global OUT NAK Effective (GOUTNakEff)
 457	 *	Indicates that the Set Global OUT NAK bit in the Device Control
 458	 *	register (DCTL.SGOUTNak), set by the application, has taken
 459	 *	effect in the core. This bit can be cleared by writing the Clear
 460	 *	Global OUT NAK bit in the Device Control register
 461	 *	(DCTL.CGOUTNak).
 462	 * @ginnakeff: Global IN Non-Periodic NAK Effective (GINNakEff)
 463	 *	Indicates that the Set Global Non-Periodic IN NAK bit in the
 464	 *	Device Control register (DCTL.SGNPInNak), set by the
 465	 *	application, has taken effect in the core. That is, the core has
 466	 *	sampled the Global IN NAK bit set by the application. This bit
 467	 *	can be cleared by clearing the Clear Global Non-Periodic IN
 468	 *	NAK bit in the Device Control register (DCTL.CGNPInNak).
 469	 *	This interrupt does not necessarily mean that a NAK handshake
 470	 *	is sent out on the USB. The STALL bit takes precedence over
 471	 *	the NAK bit.
 472	 * @nptxfemp: Non-Periodic TxFIFO Empty (NPTxFEmp)
 473	 *	This interrupt is asserted when the Non-Periodic TxFIFO is
 474	 *	either half or completely empty, and there is space for at least
 475	 *	one entry to be written to the Non-Periodic Transmit Request
 476	 *	Queue. The half or completely empty status is determined by
 477	 *	the Non-Periodic TxFIFO Empty Level bit in the Core AHB
 478	 *	Configuration register (GAHBCFG.NPTxFEmpLvl).
 479	 * @rxflvl: RxFIFO Non-Empty (RxFLvl)
 480	 *	Indicates that there is at least one packet pending to be read
 481	 *	from the RxFIFO.
 482	 * @sof: Start of (micro)Frame (Sof)
 483	 *	In Host mode, the core sets this bit to indicate that an SOF
 484	 *	(FS), micro-SOF (HS), or Keep-Alive (LS) is transmitted on the
 485	 *	USB. The application must write a 1 to this bit to clear the
 486	 *	interrupt.
 487	 *	In Device mode, in the core sets this bit to indicate that an
 488	 *	SOF token has been received on the USB. The application can read
 489	 *	the Device Status register to get the current (micro)frame
 490	 *	number. This interrupt is seen only when the core is operating
 491	 *	at either HS or FS.
 492	 * @otgint: OTG Interrupt (OTGInt)
 493	 *	The core sets this bit to indicate an OTG protocol event. The
 494	 *	application must read the OTG Interrupt Status (GOTGINT)
 495	 *	register to determine the exact event that caused this
 496	 *	interrupt. The application must clear the appropriate status bit
 497	 *	in the GOTGINT register to clear this bit.
 498	 * @modemis: Mode Mismatch Interrupt (ModeMis)
 499	 *	The core sets this bit when the application is trying to access:
 500	 *	* A Host mode register, when the core is operating in Device
 501	 *	mode
 502	 *	* A Device mode register, when the core is operating in Host
 503	 *	mode
 504	 *	The register access is completed on the AHB with an OKAY
 505	 *	response, but is ignored by the core internally and doesn't
 506	 *	affect the operation of the core.
 507	 * @curmod: Current Mode of Operation (CurMod)
 508	 *	Indicates the current mode of operation.
 509	 *	* 1'b0: Device mode
 510	 *	* 1'b1: Host mode
 511	 */
 512	struct cvmx_usbcx_gintsts_s {
 513		__BITFIELD_FIELD(u32 wkupint		: 1,
 514		__BITFIELD_FIELD(u32 sessreqint		: 1,
 515		__BITFIELD_FIELD(u32 disconnint		: 1,
 516		__BITFIELD_FIELD(u32 conidstschng	: 1,
 517		__BITFIELD_FIELD(u32 reserved_27_27	: 1,
 518		__BITFIELD_FIELD(u32 ptxfemp		: 1,
 519		__BITFIELD_FIELD(u32 hchint		: 1,
 520		__BITFIELD_FIELD(u32 prtint		: 1,
 521		__BITFIELD_FIELD(u32 reserved_23_23	: 1,
 522		__BITFIELD_FIELD(u32 fetsusp		: 1,
 523		__BITFIELD_FIELD(u32 incomplp		: 1,
 524		__BITFIELD_FIELD(u32 incompisoin	: 1,
 525		__BITFIELD_FIELD(u32 oepint		: 1,
 526		__BITFIELD_FIELD(u32 iepint		: 1,
 527		__BITFIELD_FIELD(u32 epmis		: 1,
 528		__BITFIELD_FIELD(u32 reserved_16_16	: 1,
 529		__BITFIELD_FIELD(u32 eopf		: 1,
 530		__BITFIELD_FIELD(u32 isooutdrop		: 1,
 531		__BITFIELD_FIELD(u32 enumdone		: 1,
 532		__BITFIELD_FIELD(u32 usbrst		: 1,
 533		__BITFIELD_FIELD(u32 usbsusp		: 1,
 534		__BITFIELD_FIELD(u32 erlysusp		: 1,
 535		__BITFIELD_FIELD(u32 i2cint		: 1,
 536		__BITFIELD_FIELD(u32 ulpickint		: 1,
 537		__BITFIELD_FIELD(u32 goutnakeff		: 1,
 538		__BITFIELD_FIELD(u32 ginnakeff		: 1,
 539		__BITFIELD_FIELD(u32 nptxfemp		: 1,
 540		__BITFIELD_FIELD(u32 rxflvl		: 1,
 541		__BITFIELD_FIELD(u32 sof		: 1,
 542		__BITFIELD_FIELD(u32 otgint		: 1,
 543		__BITFIELD_FIELD(u32 modemis		: 1,
 544		__BITFIELD_FIELD(u32 curmod		: 1,
 545		;))))))))))))))))))))))))))))))))
 546	} s;
 547};
 548
 549/**
 550 * cvmx_usbc#_gnptxfsiz
 551 *
 552 * Non-Periodic Transmit FIFO Size Register (GNPTXFSIZ)
 553 *
 554 * The application can program the RAM size and the memory start address for the
 555 * Non-Periodic TxFIFO.
 556 */
 557union cvmx_usbcx_gnptxfsiz {
 558	u32 u32;
 559	/**
 560	 * struct cvmx_usbcx_gnptxfsiz_s
 561	 * @nptxfdep: Non-Periodic TxFIFO Depth (NPTxFDep)
 562	 *	This value is in terms of 32-bit words.
 563	 *	Minimum value is 16
 564	 *	Maximum value is 32768
 565	 * @nptxfstaddr: Non-Periodic Transmit RAM Start Address (NPTxFStAddr)
 566	 *	This field contains the memory start address for Non-Periodic
 567	 *	Transmit FIFO RAM.
 568	 */
 569	struct cvmx_usbcx_gnptxfsiz_s {
 570		__BITFIELD_FIELD(u32 nptxfdep		: 16,
 571		__BITFIELD_FIELD(u32 nptxfstaddr	: 16,
 572		;))
 573	} s;
 574};
 575
 576/**
 577 * cvmx_usbc#_gnptxsts
 578 *
 579 * Non-Periodic Transmit FIFO/Queue Status Register (GNPTXSTS)
 580 *
 581 * This read-only register contains the free space information for the
 582 * Non-Periodic TxFIFO and the Non-Periodic Transmit Request Queue.
 583 */
 584union cvmx_usbcx_gnptxsts {
 585	u32 u32;
 586	/**
 587	 * struct cvmx_usbcx_gnptxsts_s
 588	 * @nptxqtop: Top of the Non-Periodic Transmit Request Queue (NPTxQTop)
 589	 *	Entry in the Non-Periodic Tx Request Queue that is currently
 590	 *	being processed by the MAC.
 591	 *	* Bits [30:27]: Channel/endpoint number
 592	 *	* Bits [26:25]:
 593	 *	- 2'b00: IN/OUT token
 594	 *	- 2'b01: Zero-length transmit packet (device IN/host OUT)
 595	 *	- 2'b10: PING/CSPLIT token
 596	 *	- 2'b11: Channel halt command
 597	 *	* Bit [24]: Terminate (last entry for selected channel/endpoint)
 598	 * @nptxqspcavail: Non-Periodic Transmit Request Queue Space Available
 599	 *	(NPTxQSpcAvail)
 600	 *	Indicates the amount of free space available in the Non-
 601	 *	Periodic Transmit Request Queue. This queue holds both IN
 602	 *	and OUT requests in Host mode. Device mode has only IN
 603	 *	requests.
 604	 *	* 8'h0: Non-Periodic Transmit Request Queue is full
 605	 *	* 8'h1: 1 location available
 606	 *	* 8'h2: 2 locations available
 607	 *	* n: n locations available (0..8)
 608	 *	* Others: Reserved
 609	 * @nptxfspcavail: Non-Periodic TxFIFO Space Avail (NPTxFSpcAvail)
 610	 *	Indicates the amount of free space available in the Non-
 611	 *	Periodic TxFIFO.
 612	 *	Values are in terms of 32-bit words.
 613	 *	* 16'h0: Non-Periodic TxFIFO is full
 614	 *	* 16'h1: 1 word available
 615	 *	* 16'h2: 2 words available
 616	 *	* 16'hn: n words available (where 0..32768)
 617	 *	* 16'h8000: 32768 words available
 618	 *	* Others: Reserved
 619	 */
 620	struct cvmx_usbcx_gnptxsts_s {
 621		__BITFIELD_FIELD(u32 reserved_31_31	: 1,
 622		__BITFIELD_FIELD(u32 nptxqtop		: 7,
 623		__BITFIELD_FIELD(u32 nptxqspcavail	: 8,
 624		__BITFIELD_FIELD(u32 nptxfspcavail	: 16,
 625		;))))
 626	} s;
 627};
 628
 629/**
 630 * cvmx_usbc#_grstctl
 631 *
 632 * Core Reset Register (GRSTCTL)
 633 *
 634 * The application uses this register to reset various hardware features inside
 635 * the core.
 636 */
 637union cvmx_usbcx_grstctl {
 638	u32 u32;
 639	/**
 640	 * struct cvmx_usbcx_grstctl_s
 641	 * @ahbidle: AHB Master Idle (AHBIdle)
 642	 *	Indicates that the AHB Master State Machine is in the IDLE
 643	 *	condition.
 644	 * @dmareq: DMA Request Signal (DMAReq)
 645	 *	Indicates that the DMA request is in progress. Used for debug.
 646	 * @txfnum: TxFIFO Number (TxFNum)
 647	 *	This is the FIFO number that must be flushed using the TxFIFO
 648	 *	Flush bit. This field must not be changed until the core clears
 649	 *	the TxFIFO Flush bit.
 650	 *	* 5'h0: Non-Periodic TxFIFO flush
 651	 *	* 5'h1: Periodic TxFIFO 1 flush in Device mode or Periodic
 652	 *	TxFIFO flush in Host mode
 653	 *	* 5'h2: Periodic TxFIFO 2 flush in Device mode
 654	 *	- ...
 655	 *	* 5'hF: Periodic TxFIFO 15 flush in Device mode
 656	 *	* 5'h10: Flush all the Periodic and Non-Periodic TxFIFOs in the
 657	 *	core
 658	 * @txfflsh: TxFIFO Flush (TxFFlsh)
 659	 *	This bit selectively flushes a single or all transmit FIFOs, but
 660	 *	cannot do so if the core is in the midst of a transaction.
 661	 *	The application must only write this bit after checking that the
 662	 *	core is neither writing to the TxFIFO nor reading from the
 663	 *	TxFIFO.
 664	 *	The application must wait until the core clears this bit before
 665	 *	performing any operations. This bit takes 8 clocks (of phy_clk
 666	 *	or hclk, whichever is slower) to clear.
 667	 * @rxfflsh: RxFIFO Flush (RxFFlsh)
 668	 *	The application can flush the entire RxFIFO using this bit, but
 669	 *	must first ensure that the core is not in the middle of a
 670	 *	transaction.
 671	 *	The application must only write to this bit after checking that
 672	 *	the core is neither reading from the RxFIFO nor writing to the
 673	 *	RxFIFO.
 674	 *	The application must wait until the bit is cleared before
 675	 *	performing any other operations. This bit will take 8 clocks
 676	 *	(slowest of PHY or AHB clock) to clear.
 677	 * @intknqflsh: IN Token Sequence Learning Queue Flush (INTknQFlsh)
 678	 *	The application writes this bit to flush the IN Token Sequence
 679	 *	Learning Queue.
 680	 * @frmcntrrst: Host Frame Counter Reset (FrmCntrRst)
 681	 *	The application writes this bit to reset the (micro)frame number
 682	 *	counter inside the core. When the (micro)frame counter is reset,
 683	 *	the subsequent SOF sent out by the core will have a
 684	 *	(micro)frame number of 0.
 685	 * @hsftrst: HClk Soft Reset (HSftRst)
 686	 *	The application uses this bit to flush the control logic in the
 687	 *	AHB Clock domain. Only AHB Clock Domain pipelines are reset.
 688	 *	* FIFOs are not flushed with this bit.
 689	 *	* All state machines in the AHB clock domain are reset to the
 690	 *	Idle state after terminating the transactions on the AHB,
 691	 *	following the protocol.
 692	 *	* CSR control bits used by the AHB clock domain state
 693	 *	machines are cleared.
 694	 *	* To clear this interrupt, status mask bits that control the
 695	 *	interrupt status and are generated by the AHB clock domain
 696	 *	state machine are cleared.
 697	 *	* Because interrupt status bits are not cleared, the application
 698	 *	can get the status of any core events that occurred after it set
 699	 *	this bit.
 700	 *	This is a self-clearing bit that the core clears after all
 701	 *	necessary logic is reset in the core. This may take several
 702	 *	clocks, depending on the core's current state.
 703	 * @csftrst: Core Soft Reset (CSftRst)
 704	 *	Resets the hclk and phy_clock domains as follows:
 705	 *	* Clears the interrupts and all the CSR registers except the
 706	 *	following register bits:
 707	 *	- PCGCCTL.RstPdwnModule
 708	 *	- PCGCCTL.GateHclk
 709	 *	- PCGCCTL.PwrClmp
 710	 *	- PCGCCTL.StopPPhyLPwrClkSelclk
 711	 *	- GUSBCFG.PhyLPwrClkSel
 712	 *	- GUSBCFG.DDRSel
 713	 *	- GUSBCFG.PHYSel
 714	 *	- GUSBCFG.FSIntf
 715	 *	- GUSBCFG.ULPI_UTMI_Sel
 716	 *	- GUSBCFG.PHYIf
 717	 *	- HCFG.FSLSPclkSel
 718	 *	- DCFG.DevSpd
 719	 *	* All module state machines (except the AHB Slave Unit) are
 720	 *	reset to the IDLE state, and all the transmit FIFOs and the
 721	 *	receive FIFO are flushed.
 722	 *	* Any transactions on the AHB Master are terminated as soon
 723	 *	as possible, after gracefully completing the last data phase of
 724	 *	an AHB transfer. Any transactions on the USB are terminated
 725	 *	immediately.
 726	 *	The application can write to this bit any time it wants to reset
 727	 *	the core. This is a self-clearing bit and the core clears this
 728	 *	bit after all the necessary logic is reset in the core, which
 729	 *	may take several clocks, depending on the current state of the
 730	 *	core. Once this bit is cleared software should wait at least 3
 731	 *	PHY clocks before doing any access to the PHY domain
 732	 *	(synchronization delay). Software should also should check that
 733	 *	bit 31 of this register is 1 (AHB Master is IDLE) before
 734	 *	starting any operation.
 735	 *	Typically software reset is used during software development
 736	 *	and also when you dynamically change the PHY selection bits
 737	 *	in the USB configuration registers listed above. When you
 738	 *	change the PHY, the corresponding clock for the PHY is
 739	 *	selected and used in the PHY domain. Once a new clock is
 740	 *	selected, the PHY domain has to be reset for proper operation.
 741	 */
 742	struct cvmx_usbcx_grstctl_s {
 743		__BITFIELD_FIELD(u32 ahbidle		: 1,
 744		__BITFIELD_FIELD(u32 dmareq		: 1,
 745		__BITFIELD_FIELD(u32 reserved_11_29	: 19,
 746		__BITFIELD_FIELD(u32 txfnum		: 5,
 747		__BITFIELD_FIELD(u32 txfflsh		: 1,
 748		__BITFIELD_FIELD(u32 rxfflsh		: 1,
 749		__BITFIELD_FIELD(u32 intknqflsh		: 1,
 750		__BITFIELD_FIELD(u32 frmcntrrst		: 1,
 751		__BITFIELD_FIELD(u32 hsftrst		: 1,
 752		__BITFIELD_FIELD(u32 csftrst		: 1,
 753		;))))))))))
 754	} s;
 755};
 756
 757/**
 758 * cvmx_usbc#_grxfsiz
 759 *
 760 * Receive FIFO Size Register (GRXFSIZ)
 761 *
 762 * The application can program the RAM size that must be allocated to the
 763 * RxFIFO.
 764 */
 765union cvmx_usbcx_grxfsiz {
 766	u32 u32;
 767	/**
 768	 * struct cvmx_usbcx_grxfsiz_s
 769	 * @rxfdep: RxFIFO Depth (RxFDep)
 770	 *	This value is in terms of 32-bit words.
 771	 *	* Minimum value is 16
 772	 *	* Maximum value is 32768
 773	 */
 774	struct cvmx_usbcx_grxfsiz_s {
 775		__BITFIELD_FIELD(u32 reserved_16_31	: 16,
 776		__BITFIELD_FIELD(u32 rxfdep		: 16,
 777		;))
 778	} s;
 779};
 780
 781/**
 782 * cvmx_usbc#_grxstsph
 783 *
 784 * Receive Status Read and Pop Register, Host Mode (GRXSTSPH)
 785 *
 786 * A read to the Receive Status Read and Pop register returns and additionally
 787 * pops the top data entry out of the RxFIFO.
 788 * This Description is only valid when the core is in Host Mode. For Device Mode
 789 * use USBC_GRXSTSPD instead.
 790 * NOTE: GRXSTSPH and GRXSTSPD are physically the same register and share the
 791 *	 same offset in the O2P USB core. The offset difference shown in this
 792 *	 document is for software clarity and is actually ignored by the
 793 *       hardware.
 794 */
 795union cvmx_usbcx_grxstsph {
 796	u32 u32;
 797	/**
 798	 * struct cvmx_usbcx_grxstsph_s
 799	 * @pktsts: Packet Status (PktSts)
 800	 *	Indicates the status of the received packet
 801	 *	* 4'b0010: IN data packet received
 802	 *	* 4'b0011: IN transfer completed (triggers an interrupt)
 803	 *	* 4'b0101: Data toggle error (triggers an interrupt)
 804	 *	* 4'b0111: Channel halted (triggers an interrupt)
 805	 *	* Others: Reserved
 806	 * @dpid: Data PID (DPID)
 807	 *	* 2'b00: DATA0
 808	 *	* 2'b10: DATA1
 809	 *	* 2'b01: DATA2
 810	 *	* 2'b11: MDATA
 811	 * @bcnt: Byte Count (BCnt)
 812	 *	Indicates the byte count of the received IN data packet
 813	 * @chnum: Channel Number (ChNum)
 814	 *	Indicates the channel number to which the current received
 815	 *	packet belongs.
 816	 */
 817	struct cvmx_usbcx_grxstsph_s {
 818		__BITFIELD_FIELD(u32 reserved_21_31	: 11,
 819		__BITFIELD_FIELD(u32 pktsts		: 4,
 820		__BITFIELD_FIELD(u32 dpid		: 2,
 821		__BITFIELD_FIELD(u32 bcnt		: 11,
 822		__BITFIELD_FIELD(u32 chnum		: 4,
 823		;)))))
 824	} s;
 825};
 826
 827/**
 828 * cvmx_usbc#_gusbcfg
 829 *
 830 * Core USB Configuration Register (GUSBCFG)
 831 *
 832 * This register can be used to configure the core after power-on or a changing
 833 * to Host mode or Device mode. It contains USB and USB-PHY related
 834 * configuration parameters. The application must program this register before
 835 * starting any transactions on either the AHB or the USB. Do not make changes
 836 * to this register after the initial programming.
 837 */
 838union cvmx_usbcx_gusbcfg {
 839	u32 u32;
 840	/**
 841	 * struct cvmx_usbcx_gusbcfg_s
 842	 * @otgi2csel: UTMIFS or I2C Interface Select (OtgI2CSel)
 843	 *	This bit is always 0x0.
 844	 * @phylpwrclksel: PHY Low-Power Clock Select (PhyLPwrClkSel)
 845	 *	Software should set this bit to 0x0.
 846	 *	Selects either 480-MHz or 48-MHz (low-power) PHY mode. In
 847	 *	FS and LS modes, the PHY can usually operate on a 48-MHz
 848	 *	clock to save power.
 849	 *	* 1'b0: 480-MHz Internal PLL clock
 850	 *	* 1'b1: 48-MHz External Clock
 851	 *	In 480 MHz mode, the UTMI interface operates at either 60 or
 852	 *	30-MHz, depending upon whether 8- or 16-bit data width is
 853	 *	selected. In 48-MHz mode, the UTMI interface operates at 48
 854	 *	MHz in FS mode and at either 48 or 6 MHz in LS mode
 855	 *	(depending on the PHY vendor).
 856	 *	This bit drives the utmi_fsls_low_power core output signal, and
 857	 *	is valid only for UTMI+ PHYs.
 858	 * @usbtrdtim: USB Turnaround Time (USBTrdTim)
 859	 *	Sets the turnaround time in PHY clocks.
 860	 *	Specifies the response time for a MAC request to the Packet
 861	 *	FIFO Controller (PFC) to fetch data from the DFIFO (SPRAM).
 862	 *	This must be programmed to 0x5.
 863	 * @hnpcap: HNP-Capable (HNPCap)
 864	 *	This bit is always 0x0.
 865	 * @srpcap: SRP-Capable (SRPCap)
 866	 *	This bit is always 0x0.
 867	 * @ddrsel: ULPI DDR Select (DDRSel)
 868	 *	Software should set this bit to 0x0.
 869	 * @physel: USB 2.0 High-Speed PHY or USB 1.1 Full-Speed Serial
 870	 *	Software should set this bit to 0x0.
 871	 * @fsintf: Full-Speed Serial Interface Select (FSIntf)
 872	 *	Software should set this bit to 0x0.
 873	 * @ulpi_utmi_sel: ULPI or UTMI+ Select (ULPI_UTMI_Sel)
 874	 *	This bit is always 0x0.
 875	 * @phyif: PHY Interface (PHYIf)
 876	 *	This bit is always 0x1.
 877	 * @toutcal: HS/FS Timeout Calibration (TOutCal)
 878	 *	The number of PHY clocks that the application programs in this
 879	 *	field is added to the high-speed/full-speed interpacket timeout
 880	 *	duration in the core to account for any additional delays
 881	 *	introduced by the PHY. This may be required, since the delay
 882	 *	introduced by the PHY in generating the linestate condition may
 883	 *	vary from one PHY to another.
 884	 *	The USB standard timeout value for high-speed operation is
 885	 *	736 to 816 (inclusive) bit times. The USB standard timeout
 886	 *	value for full-speed operation is 16 to 18 (inclusive) bit
 887	 *	times. The application must program this field based on the
 888	 *	speed of enumeration. The number of bit times added per PHY
 889	 *	clock are:
 890	 *	High-speed operation:
 891	 *	* One 30-MHz PHY clock = 16 bit times
 892	 *	* One 60-MHz PHY clock = 8 bit times
 893	 *	Full-speed operation:
 894	 *	* One 30-MHz PHY clock = 0.4 bit times
 895	 *	* One 60-MHz PHY clock = 0.2 bit times
 896	 *	* One 48-MHz PHY clock = 0.25 bit times
 897	 */
 898	struct cvmx_usbcx_gusbcfg_s {
 899		__BITFIELD_FIELD(u32 reserved_17_31	: 15,
 900		__BITFIELD_FIELD(u32 otgi2csel		: 1,
 901		__BITFIELD_FIELD(u32 phylpwrclksel	: 1,
 902		__BITFIELD_FIELD(u32 reserved_14_14	: 1,
 903		__BITFIELD_FIELD(u32 usbtrdtim		: 4,
 904		__BITFIELD_FIELD(u32 hnpcap		: 1,
 905		__BITFIELD_FIELD(u32 srpcap		: 1,
 906		__BITFIELD_FIELD(u32 ddrsel		: 1,
 907		__BITFIELD_FIELD(u32 physel		: 1,
 908		__BITFIELD_FIELD(u32 fsintf		: 1,
 909		__BITFIELD_FIELD(u32 ulpi_utmi_sel	: 1,
 910		__BITFIELD_FIELD(u32 phyif		: 1,
 911		__BITFIELD_FIELD(u32 toutcal		: 3,
 912		;)))))))))))))
 913	} s;
 914};
 915
 916/**
 917 * cvmx_usbc#_haint
 918 *
 919 * Host All Channels Interrupt Register (HAINT)
 920 *
 921 * When a significant event occurs on a channel, the Host All Channels Interrupt
 922 * register interrupts the application using the Host Channels Interrupt bit of
 923 * the Core Interrupt register (GINTSTS.HChInt). This is shown in Interrupt.
 924 * There is one interrupt bit per channel, up to a maximum of 16 bits. Bits in
 925 * this register are set and cleared when the application sets and clears bits
 926 * in the corresponding Host Channel-n Interrupt register.
 927 */
 928union cvmx_usbcx_haint {
 929	u32 u32;
 930	/**
 931	 * struct cvmx_usbcx_haint_s
 932	 * @haint: Channel Interrupts (HAINT)
 933	 *	One bit per channel: Bit 0 for Channel 0, bit 15 for Channel 15
 934	 */
 935	struct cvmx_usbcx_haint_s {
 936		__BITFIELD_FIELD(u32 reserved_16_31	: 16,
 937		__BITFIELD_FIELD(u32 haint		: 16,
 938		;))
 939	} s;
 940};
 941
 942/**
 943 * cvmx_usbc#_haintmsk
 944 *
 945 * Host All Channels Interrupt Mask Register (HAINTMSK)
 946 *
 947 * The Host All Channel Interrupt Mask register works with the Host All Channel
 948 * Interrupt register to interrupt the application when an event occurs on a
 949 * channel. There is one interrupt mask bit per channel, up to a maximum of 16
 950 * bits.
 951 * Mask interrupt: 1'b0 Unmask interrupt: 1'b1
 952 */
 953union cvmx_usbcx_haintmsk {
 954	u32 u32;
 955	/**
 956	 * struct cvmx_usbcx_haintmsk_s
 957	 * @haintmsk: Channel Interrupt Mask (HAINTMsk)
 958	 *	One bit per channel: Bit 0 for channel 0, bit 15 for channel 15
 959	 */
 960	struct cvmx_usbcx_haintmsk_s {
 961		__BITFIELD_FIELD(u32 reserved_16_31	: 16,
 962		__BITFIELD_FIELD(u32 haintmsk		: 16,
 963		;))
 964	} s;
 965};
 966
 967/**
 968 * cvmx_usbc#_hcchar#
 969 *
 970 * Host Channel-n Characteristics Register (HCCHAR)
 971 *
 972 */
 973union cvmx_usbcx_hccharx {
 974	u32 u32;
 975	/**
 976	 * struct cvmx_usbcx_hccharx_s
 977	 * @chena: Channel Enable (ChEna)
 978	 *	This field is set by the application and cleared by the OTG
 979	 *	host.
 980	 *	* 1'b0: Channel disabled
 981	 *	* 1'b1: Channel enabled
 982	 * @chdis: Channel Disable (ChDis)
 983	 *	The application sets this bit to stop transmitting/receiving
 984	 *	data on a channel, even before the transfer for that channel is
 985	 *	complete. The application must wait for the Channel Disabled
 986	 *	interrupt before treating the channel as disabled.
 987	 * @oddfrm: Odd Frame (OddFrm)
 988	 *	This field is set (reset) by the application to indicate that
 989	 *	the OTG host must perform a transfer in an odd (micro)frame.
 990	 *	This field is applicable for only periodic (isochronous and
 991	 *	interrupt) transactions.
 992	 *	* 1'b0: Even (micro)frame
 993	 *	* 1'b1: Odd (micro)frame
 994	 * @devaddr: Device Address (DevAddr)
 995	 *	This field selects the specific device serving as the data
 996	 *	source or sink.
 997	 * @ec: Multi Count (MC) / Error Count (EC)
 998	 *	When the Split Enable bit of the Host Channel-n Split Control
 999	 *	register (HCSPLTn.SpltEna) is reset (1'b0), this field indicates
1000	 *	to the host the number of transactions that should be executed
1001	 *	per microframe for this endpoint.
1002	 *	* 2'b00: Reserved. This field yields undefined results.
1003	 *	* 2'b01: 1 transaction
1004	 *	* 2'b10: 2 transactions to be issued for this endpoint per
1005	 *	microframe
1006	 *	* 2'b11: 3 transactions to be issued for this endpoint per
1007	 *	microframe
1008	 *	When HCSPLTn.SpltEna is set (1'b1), this field indicates the
1009	 *	number of immediate retries to be performed for a periodic split
1010	 *	transactions on transaction errors. This field must be set to at
1011	 *	least 2'b01.
1012	 * @eptype: Endpoint Type (EPType)
1013	 *	Indicates the transfer type selected.
1014	 *	* 2'b00: Control
1015	 *	* 2'b01: Isochronous
1016	 *	* 2'b10: Bulk
1017	 *	* 2'b11: Interrupt
1018	 * @lspddev: Low-Speed Device (LSpdDev)
1019	 *	This field is set by the application to indicate that this
1020	 *	channel is communicating to a low-speed device.
1021	 * @epdir: Endpoint Direction (EPDir)
1022	 *	Indicates whether the transaction is IN or OUT.
1023	 *	* 1'b0: OUT
1024	 *	* 1'b1: IN
1025	 * @epnum: Endpoint Number (EPNum)
1026	 *	Indicates the endpoint number on the device serving as the
1027	 *	data source or sink.
1028	 * @mps: Maximum Packet Size (MPS)
1029	 *	Indicates the maximum packet size of the associated endpoint.
1030	 */
1031	struct cvmx_usbcx_hccharx_s {
1032		__BITFIELD_FIELD(u32 chena		: 1,
1033		__BITFIELD_FIELD(u32 chdis		: 1,
1034		__BITFIELD_FIELD(u32 oddfrm		: 1,
1035		__BITFIELD_FIELD(u32 devaddr		: 7,
1036		__BITFIELD_FIELD(u32 ec			: 2,
1037		__BITFIELD_FIELD(u32 eptype		: 2,
1038		__BITFIELD_FIELD(u32 lspddev		: 1,
1039		__BITFIELD_FIELD(u32 reserved_16_16	: 1,
1040		__BITFIELD_FIELD(u32 epdir		: 1,
1041		__BITFIELD_FIELD(u32 epnum		: 4,
1042		__BITFIELD_FIELD(u32 mps		: 11,
1043		;)))))))))))
1044	} s;
1045};
1046
1047/**
1048 * cvmx_usbc#_hcfg
1049 *
1050 * Host Configuration Register (HCFG)
1051 *
1052 * This register configures the core after power-on. Do not make changes to this
1053 * register after initializing the host.
1054 */
1055union cvmx_usbcx_hcfg {
1056	u32 u32;
1057	/**
1058	 * struct cvmx_usbcx_hcfg_s
1059	 * @fslssupp: FS- and LS-Only Support (FSLSSupp)
1060	 *	The application uses this bit to control the core's enumeration
1061	 *	speed. Using this bit, the application can make the core
1062	 *	enumerate as a FS host, even if the connected device supports
1063	 *	HS traffic. Do not make changes to this field after initial
1064	 *	programming.
1065	 *	* 1'b0: HS/FS/LS, based on the maximum speed supported by
1066	 *	the connected device
1067	 *	* 1'b1: FS/LS-only, even if the connected device can support HS
1068	 * @fslspclksel: FS/LS PHY Clock Select (FSLSPclkSel)
1069	 *	When the core is in FS Host mode
1070	 *	* 2'b00: PHY clock is running at 30/60 MHz
1071	 *	* 2'b01: PHY clock is running at 48 MHz
1072	 *	* Others: Reserved
1073	 *	When the core is in LS Host mode
1074	 *	* 2'b00: PHY clock is running at 30/60 MHz. When the
1075	 *	UTMI+/ULPI PHY Low Power mode is not selected, use
1076	 *	30/60 MHz.
1077	 *	* 2'b01: PHY clock is running at 48 MHz. When the UTMI+
1078	 *	PHY Low Power mode is selected, use 48MHz if the PHY
1079	 *	supplies a 48 MHz clock during LS mode.
1080	 *	* 2'b10: PHY clock is running at 6 MHz. In USB 1.1 FS mode,
1081	 *	use 6 MHz when the UTMI+ PHY Low Power mode is
1082	 *	selected and the PHY supplies a 6 MHz clock during LS
1083	 *	mode. If you select a 6 MHz clock during LS mode, you must
1084	 *	do a soft reset.
1085	 *	* 2'b11: Reserved
1086	 */
1087	struct cvmx_usbcx_hcfg_s {
1088		__BITFIELD_FIELD(u32 reserved_3_31	: 29,
1089		__BITFIELD_FIELD(u32 fslssupp		: 1,
1090		__BITFIELD_FIELD(u32 fslspclksel	: 2,
1091		;)))
1092	} s;
1093};
1094
1095/**
1096 * cvmx_usbc#_hcint#
1097 *
1098 * Host Channel-n Interrupt Register (HCINT)
1099 *
1100 * This register indicates the status of a channel with respect to USB- and
1101 * AHB-related events. The application must read this register when the Host
1102 * Channels Interrupt bit of the Core Interrupt register (GINTSTS.HChInt) is
1103 * set. Before the application can read this register, it must first read
1104 * the Host All Channels Interrupt (HAINT) register to get the exact channel
1105 * number for the Host Channel-n Interrupt register. The application must clear
1106 * the appropriate bit in this register to clear the corresponding bits in the
1107 * HAINT and GINTSTS registers.
1108 */
1109union cvmx_usbcx_hcintx {
1110	u32 u32;
1111	/**
1112	 * struct cvmx_usbcx_hcintx_s
1113	 * @datatglerr: Data Toggle Error (DataTglErr)
1114	 * @frmovrun: Frame Overrun (FrmOvrun)
1115	 * @bblerr: Babble Error (BblErr)
1116	 * @xacterr: Transaction Error (XactErr)
1117	 * @nyet: NYET Response Received Interrupt (NYET)
1118	 * @ack: ACK Response Received Interrupt (ACK)
1119	 * @nak: NAK Response Received Interrupt (NAK)
1120	 * @stall: STALL Response Received Interrupt (STALL)
1121	 * @ahberr: This bit is always 0x0.
1122	 * @chhltd: Channel Halted (ChHltd)
1123	 *	Indicates the transfer completed abnormally either because of
1124	 *	any USB transaction error or in response to disable request by
1125	 *	the application.
1126	 * @xfercompl: Transfer Completed (XferCompl)
1127	 *	Transfer completed normally without any errors.
1128	 */
1129	struct cvmx_usbcx_hcintx_s {
1130		__BITFIELD_FIELD(u32 reserved_11_31	: 21,
1131		__BITFIELD_FIELD(u32 datatglerr		: 1,
1132		__BITFIELD_FIELD(u32 frmovrun		: 1,
1133		__BITFIELD_FIELD(u32 bblerr		: 1,
1134		__BITFIELD_FIELD(u32 xacterr		: 1,
1135		__BITFIELD_FIELD(u32 nyet		: 1,
1136		__BITFIELD_FIELD(u32 ack		: 1,
1137		__BITFIELD_FIELD(u32 nak		: 1,
1138		__BITFIELD_FIELD(u32 stall		: 1,
1139		__BITFIELD_FIELD(u32 ahberr		: 1,
1140		__BITFIELD_FIELD(u32 chhltd		: 1,
1141		__BITFIELD_FIELD(u32 xfercompl		: 1,
1142		;))))))))))))
1143	} s;
1144};
1145
1146/**
1147 * cvmx_usbc#_hcintmsk#
1148 *
1149 * Host Channel-n Interrupt Mask Register (HCINTMSKn)
1150 *
1151 * This register reflects the mask for each channel status described in the
1152 * previous section.
1153 * Mask interrupt: 1'b0 Unmask interrupt: 1'b1
1154 */
1155union cvmx_usbcx_hcintmskx {
1156	u32 u32;
1157	/**
1158	 * struct cvmx_usbcx_hcintmskx_s
1159	 * @datatglerrmsk: Data Toggle Error Mask (DataTglErrMsk)
1160	 * @frmovrunmsk: Frame Overrun Mask (FrmOvrunMsk)
1161	 * @bblerrmsk: Babble Error Mask (BblErrMsk)
1162	 * @xacterrmsk: Transaction Error Mask (XactErrMsk)
1163	 * @nyetmsk: NYET Response Received Interrupt Mask (NyetMsk)
1164	 * @ackmsk: ACK Response Received Interrupt Mask (AckMsk)
1165	 * @nakmsk: NAK Response Received Interrupt Mask (NakMsk)
1166	 * @stallmsk: STALL Response Received Interrupt Mask (StallMsk)
1167	 * @ahberrmsk: AHB Error Mask (AHBErrMsk)
1168	 * @chhltdmsk: Channel Halted Mask (ChHltdMsk)
1169	 * @xfercomplmsk: Transfer Completed Mask (XferComplMsk)
1170	 */
1171	struct cvmx_usbcx_hcintmskx_s {
1172		__BITFIELD_FIELD(u32 reserved_11_31		: 21,
1173		__BITFIELD_FIELD(u32 datatglerrmsk		: 1,
1174		__BITFIELD_FIELD(u32 frmovrunmsk		: 1,
1175		__BITFIELD_FIELD(u32 bblerrmsk			: 1,
1176		__BITFIELD_FIELD(u32 xacterrmsk			: 1,
1177		__BITFIELD_FIELD(u32 nyetmsk			: 1,
1178		__BITFIELD_FIELD(u32 ackmsk			: 1,
1179		__BITFIELD_FIELD(u32 nakmsk			: 1,
1180		__BITFIELD_FIELD(u32 stallmsk			: 1,
1181		__BITFIELD_FIELD(u32 ahberrmsk			: 1,
1182		__BITFIELD_FIELD(u32 chhltdmsk			: 1,
1183		__BITFIELD_FIELD(u32 xfercomplmsk		: 1,
1184		;))))))))))))
1185	} s;
1186};
1187
1188/**
1189 * cvmx_usbc#_hcsplt#
1190 *
1191 * Host Channel-n Split Control Register (HCSPLT)
1192 *
1193 */
1194union cvmx_usbcx_hcspltx {
1195	u32 u32;
1196	/**
1197	 * struct cvmx_usbcx_hcspltx_s
1198	 * @spltena: Split Enable (SpltEna)
1199	 *	The application sets this field to indicate that this channel is
1200	 *	enabled to perform split transactions.
1201	 * @compsplt: Do Complete Split (CompSplt)
1202	 *	The application sets this field to request the OTG host to
1203	 *	perform a complete split transaction.
1204	 * @xactpos: Transaction Position (XactPos)
1205	 *	This field is used to determine whether to send all, first,
1206	 *	middle, or last payloads with each OUT transaction.
1207	 *	* 2'b11: All. This is the entire data payload is of this
1208	 *	transaction (which is less than or equal to 188 bytes).
1209	 *	* 2'b10: Begin. This is the first data payload of this
1210	 *	transaction (which is larger than 188 bytes).
1211	 *	* 2'b00: Mid. This is the middle payload of this transaction
1212	 *	(which is larger than 188 bytes).
1213	 *	* 2'b01: End. This is the last payload of this transaction
1214	 *	(which is larger than 188 bytes).
1215	 * @hubaddr: Hub Address (HubAddr)
1216	 *	This field holds the device address of the transaction
1217	 *	translator's hub.
1218	 * @prtaddr: Port Address (PrtAddr)
1219	 *	This field is the port number of the recipient transaction
1220	 *	translator.
1221	 */
1222	struct cvmx_usbcx_hcspltx_s {
1223		__BITFIELD_FIELD(u32 spltena			: 1,
1224		__BITFIELD_FIELD(u32 reserved_17_30		: 14,
1225		__BITFIELD_FIELD(u32 compsplt			: 1,
1226		__BITFIELD_FIELD(u32 xactpos			: 2,
1227		__BITFIELD_FIELD(u32 hubaddr			: 7,
1228		__BITFIELD_FIELD(u32 prtaddr			: 7,
1229		;))))))
1230	} s;
1231};
1232
1233/**
1234 * cvmx_usbc#_hctsiz#
1235 *
1236 * Host Channel-n Transfer Size Register (HCTSIZ)
1237 *
1238 */
1239union cvmx_usbcx_hctsizx {
1240	u32 u32;
1241	/**
1242	 * struct cvmx_usbcx_hctsizx_s
1243	 * @dopng: Do Ping (DoPng)
1244	 *	Setting this field to 1 directs the host to do PING protocol.
1245	 * @pid: PID (Pid)
1246	 *	The application programs this field with the type of PID to use
1247	 *	for the initial transaction. The host will maintain this field
1248	 *	for the rest of the transfer.
1249	 *	* 2'b00: DATA0
1250	 *	* 2'b01: DATA2
1251	 *	* 2'b10: DATA1
1252	 *	* 2'b11: MDATA (non-control)/SETUP (control)
1253	 * @pktcnt: Packet Count (PktCnt)
1254	 *	This field is programmed by the application with the expected
1255	 *	number of packets to be transmitted (OUT) or received (IN).
1256	 *	The host decrements this count on every successful
1257	 *	transmission or reception of an OUT/IN packet. Once this count
1258	 *	reaches zero, the application is interrupted to indicate normal
1259	 *	completion.
1260	 * @xfersize: Transfer Size (XferSize)
1261	 *	For an OUT, this field is the number of data bytes the host will
1262	 *	send during the transfer.
1263	 *	For an IN, this field is the buffer size that the application
1264	 *	has reserved for the transfer. The application is expected to
1265	 *	program this field as an integer multiple of the maximum packet
1266	 *	size for IN transactions (periodic and non-periodic).
1267	 */
1268	struct cvmx_usbcx_hctsizx_s {
1269		__BITFIELD_FIELD(u32 dopng		: 1,
1270		__BITFIELD_FIELD(u32 pid		: 2,
1271		__BITFIELD_FIELD(u32 pktcnt		: 10,
1272		__BITFIELD_FIELD(u32 xfersize		: 19,
1273		;))))
1274	} s;
1275};
1276
1277/**
1278 * cvmx_usbc#_hfir
1279 *
1280 * Host Frame Interval Register (HFIR)
1281 *
1282 * This register stores the frame interval information for the current speed to
1283 * which the O2P USB core has enumerated.
1284 */
1285union cvmx_usbcx_hfir {
1286	u32 u32;
1287	/**
1288	 * struct cvmx_usbcx_hfir_s
1289	 * @frint: Frame Interval (FrInt)
1290	 *	The value that the application programs to this field specifies
1291	 *	the interval between two consecutive SOFs (FS) or micro-
1292	 *	SOFs (HS) or Keep-Alive tokens (HS). This field contains the
1293	 *	number of PHY clocks that constitute the required frame
1294	 *	interval. The default value set in this field for a FS operation
1295	 *	when the PHY clock frequency is 60 MHz. The application can
1296	 *	write a value to this register only after the Port Enable bit of
1297	 *	the Host Port Control and Status register (HPRT.PrtEnaPort)
1298	 *	has been set. If no value is programmed, the core calculates
1299	 *	the value based on the PHY clock specified in the FS/LS PHY
1300	 *	Clock Select field of the Host Configuration register
1301	 *	(HCFG.FSLSPclkSel). Do not change the value of this field
1302	 *	after the initial configuration.
1303	 *	* 125 us (PHY clock frequency for HS)
1304	 *	* 1 ms (PHY clock frequency for FS/LS)
1305	 */
1306	struct cvmx_usbcx_hfir_s {
1307		__BITFIELD_FIELD(u32 reserved_16_31		: 16,
1308		__BITFIELD_FIELD(u32 frint			: 16,
1309		;))
1310	} s;
1311};
1312
1313/**
1314 * cvmx_usbc#_hfnum
1315 *
1316 * Host Frame Number/Frame Time Remaining Register (HFNUM)
1317 *
1318 * This register indicates the current frame number.
1319 * It also indicates the time remaining (in terms of the number of PHY clocks)
1320 * in the current (micro)frame.
1321 */
1322union cvmx_usbcx_hfnum {
1323	u32 u32;
1324	/**
1325	 * struct cvmx_usbcx_hfnum_s
1326	 * @frrem: Frame Time Remaining (FrRem)
1327	 *	Indicates the amount of time remaining in the current
1328	 *	microframe (HS) or frame (FS/LS), in terms of PHY clocks.
1329	 *	This field decrements on each PHY clock. When it reaches
1330	 *	zero, this field is reloaded with the value in the Frame
1331	 *	Interval register and a new SOF is transmitted on the USB.
1332	 * @frnum: Frame Number (FrNum)
1333	 *	This field increments when a new SOF is transmitted on the
1334	 *	USB, and is reset to 0 when it reaches 16'h3FFF.
1335	 */
1336	struct cvmx_usbcx_hfnum_s {
1337		__BITFIELD_FIELD(u32 frrem		: 16,
1338		__BITFIELD_FIELD(u32 frnum		: 16,
1339		;))
1340	} s;
1341};
1342
1343/**
1344 * cvmx_usbc#_hprt
1345 *
1346 * Host Port Control and Status Register (HPRT)
1347 *
1348 * This register is available in both Host and Device modes.
1349 * Currently, the OTG Host supports only one port.
1350 * A single register holds USB port-related information such as USB reset,
1351 * enable, suspend, resume, connect status, and test mode for each port. The
1352 * R_SS_WC bits in this register can trigger an interrupt to the application
1353 * through the Host Port Interrupt bit of the Core Interrupt register
1354 * (GINTSTS.PrtInt). On a Port Interrupt, the application must read this
1355 * register and clear the bit that caused the interrupt. For the R_SS_WC bits,
1356 * the application must write a 1 to the bit to clear the interrupt.
1357 */
1358union cvmx_usbcx_hprt {
1359	u32 u32;
1360	/**
1361	 * struct cvmx_usbcx_hprt_s
1362	 * @prtspd: Port Speed (PrtSpd)
1363	 *	Indicates the speed of the device attached to this port.
1364	 *	* 2'b00: High speed
1365	 *	* 2'b01: Full speed
1366	 *	* 2'b10: Low speed
1367	 *	* 2'b11: Reserved
1368	 * @prttstctl: Port Test Control (PrtTstCtl)
1369	 *	The application writes a nonzero value to this field to put
1370	 *	the port into a Test mode, and the corresponding pattern is
1371	 *	signaled on the port.
1372	 *	* 4'b0000: Test mode disabled
1373	 *	* 4'b0001: Test_J mode
1374	 *	* 4'b0010: Test_K mode
1375	 *	* 4'b0011: Test_SE0_NAK mode
1376	 *	* 4'b0100: Test_Packet mode
1377	 *	* 4'b0101: Test_Force_Enable
1378	 *	* Others: Reserved
1379	 *	PrtSpd must be zero (i.e. the interface must be in high-speed
1380	 *	mode) to use the PrtTstCtl test modes.
1381	 * @prtpwr: Port Power (PrtPwr)
1382	 *	The application uses this field to control power to this port,
1383	 *	and the core clears this bit on an overcurrent condition.
1384	 *	* 1'b0: Power off
1385	 *	* 1'b1: Power on
1386	 * @prtlnsts: Port Line Status (PrtLnSts)
1387	 *	Indicates the current logic level USB data lines
1388	 *	* Bit [10]: Logic level of D-
1389	 *	* Bit [11]: Logic level of D+
1390	 * @prtrst: Port Reset (PrtRst)
1391	 *	When the application sets this bit, a reset sequence is
1392	 *	started on this port. The application must time the reset
1393	 *	period and clear this bit after the reset sequence is
1394	 *	complete.
1395	 *	* 1'b0: Port not in reset
1396	 *	* 1'b1: Port in reset
1397	 *	The application must leave this bit set for at least a
1398	 *	minimum duration mentioned below to start a reset on the
1399	 *	port. The application can leave it set for another 10 ms in
1400	 *	addition to the required minimum duration, before clearing
1401	 *	the bit, even though there is no maximum limit set by the
1402	 *	USB standard.
1403	 *	* High speed: 50 ms
1404	 *	* Full speed/Low speed: 10 ms
1405	 * @prtsusp: Port Suspend (PrtSusp)
1406	 *	The application sets this bit to put this port in Suspend
1407	 *	mode. The core only stops sending SOFs when this is set.
1408	 *	To stop the PHY clock, the application must set the Port
1409	 *	Clock Stop bit, which will assert the suspend input pin of
1410	 *	the PHY.
1411	 *	The read value of this bit reflects the current suspend
1412	 *	status of the port. This bit is cleared by the core after a
1413	 *	remote wakeup signal is detected or the application sets
1414	 *	the Port Reset bit or Port Resume bit in this register or the
1415	 *	Resume/Remote Wakeup Detected Interrupt bit or
1416	 *	Disconnect Detected Interrupt bit in the Core Interrupt
1417	 *	register (GINTSTS.WkUpInt or GINTSTS.DisconnInt,
1418	 *	respectively).
1419	 *	* 1'b0: Port not in Suspend mode
1420	 *	* 1'b1: Port in Suspend mode
1421	 * @prtres: Port Resume (PrtRes)
1422	 *	The application sets this bit to drive resume signaling on
1423	 *	the port. The core continues to drive the resume signal
1424	 *	until the application clears this bit.
1425	 *	If the core detects a USB remote wakeup sequence, as
1426	 *	indicated by the Port Resume/Remote Wakeup Detected
1427	 *	Interrupt bit of the Core Interrupt register
1428	 *	(GINTSTS.WkUpInt), the core starts driving resume
1429	 *	signaling without application intervention and clears this bit
1430	 *	when it detects a disconnect condition. The read value of
1431	 *	this bit indicates whether the core is currently driving
1432	 *	resume signaling.
1433	 *	* 1'b0: No resume driven
1434	 *	* 1'b1: Resume driven
1435	 * @prtovrcurrchng: Port Overcurrent Change (PrtOvrCurrChng)
1436	 *	The core sets this bit when the status of the Port
1437	 *	Overcurrent Active bit (bit 4) in this register changes.
1438	 * @prtovrcurract: Port Overcurrent Active (PrtOvrCurrAct)
1439	 *	Indicates the overcurrent condition of the port.
1440	 *	* 1'b0: No overcurrent condition
1441	 *	* 1'b1: Overcurrent condition
1442	 * @prtenchng: Port Enable/Disable Change (PrtEnChng)
1443	 *	The core sets this bit when the status of the Port Enable bit
1444	 *	[2] of this register changes.
1445	 * @prtena: Port Enable (PrtEna)
1446	 *	A port is enabled only by the core after a reset sequence,
1447	 *	and is disabled by an overcurrent condition, a disconnect
1448	 *	condition, or by the application clearing this bit. The
1449	 *	application cannot set this bit by a register write. It can only
1450	 *	clear it to disable the port. This bit does not trigger any
1451	 *	interrupt to the application.
1452	 *	* 1'b0: Port disabled
1453	 *	* 1'b1: Port enabled
1454	 * @prtconndet: Port Connect Detected (PrtConnDet)
1455	 *	The core sets this bit when a device connection is detected
1456	 *	to trigger an interrupt to the application using the Host Port
1457	 *	Interrupt bit of the Core Interrupt register (GINTSTS.PrtInt).
1458	 *	The application must write a 1 to this bit to clear the
1459	 *	interrupt.
1460	 * @prtconnsts: Port Connect Status (PrtConnSts)
1461	 *	* 0: No device is attached to the port.
1462	 *	* 1: A device is attached to the port.
1463	 */
1464	struct cvmx_usbcx_hprt_s {
1465		__BITFIELD_FIELD(u32 reserved_19_31	: 13,
1466		__BITFIELD_FIELD(u32 prtspd		: 2,
1467		__BITFIELD_FIELD(u32 prttstctl		: 4,
1468		__BITFIELD_FIELD(u32 prtpwr		: 1,
1469		__BITFIELD_FIELD(u32 prtlnsts		: 2,
1470		__BITFIELD_FIELD(u32 reserved_9_9	: 1,
1471		__BITFIELD_FIELD(u32 prtrst		: 1,
1472		__BITFIELD_FIELD(u32 prtsusp		: 1,
1473		__BITFIELD_FIELD(u32 prtres		: 1,
1474		__BITFIELD_FIELD(u32 prtovrcurrchng	: 1,
1475		__BITFIELD_FIELD(u32 prtovrcurract	: 1,
1476		__BITFIELD_FIELD(u32 prtenchng		: 1,
1477		__BITFIELD_FIELD(u32 prtena		: 1,
1478		__BITFIELD_FIELD(u32 prtconndet		: 1,
1479		__BITFIELD_FIELD(u32 prtconnsts		: 1,
1480		;)))))))))))))))
1481	} s;
1482};
1483
1484/**
1485 * cvmx_usbc#_hptxfsiz
1486 *
1487 * Host Periodic Transmit FIFO Size Register (HPTXFSIZ)
1488 *
1489 * This register holds the size and the memory start address of the Periodic
1490 * TxFIFO, as shown in Figures 310 and 311.
1491 */
1492union cvmx_usbcx_hptxfsiz {
1493	u32 u32;
1494	/**
1495	 * struct cvmx_usbcx_hptxfsiz_s
1496	 * @ptxfsize: Host Periodic TxFIFO Depth (PTxFSize)
1497	 *	This value is in terms of 32-bit words.
1498	 *	* Minimum value is 16
1499	 *	* Maximum value is 32768
1500	 * @ptxfstaddr: Host Periodic TxFIFO Start Address (PTxFStAddr)
1501	 */
1502	struct cvmx_usbcx_hptxfsiz_s {
1503		__BITFIELD_FIELD(u32 ptxfsize	: 16,
1504		__BITFIELD_FIELD(u32 ptxfstaddr	: 16,
1505		;))
1506	} s;
1507};
1508
1509/**
1510 * cvmx_usbc#_hptxsts
1511 *
1512 * Host Periodic Transmit FIFO/Queue Status Register (HPTXSTS)
1513 *
1514 * This read-only register contains the free space information for the Periodic
1515 * TxFIFO and the Periodic Transmit Request Queue
1516 */
1517union cvmx_usbcx_hptxsts {
1518	u32 u32;
1519	/**
1520	 * struct cvmx_usbcx_hptxsts_s
1521	 * @ptxqtop: Top of the Periodic Transmit Request Queue (PTxQTop)
1522	 *	This indicates the entry in the Periodic Tx Request Queue that
1523	 *	is currently being processes by the MAC.
1524	 *	This register is used for debugging.
1525	 *	* Bit [31]: Odd/Even (micro)frame
1526	 *	- 1'b0: send in even (micro)frame
1527	 *	- 1'b1: send in odd (micro)frame
1528	 *	* Bits [30:27]: Channel/endpoint number
1529	 *	* Bits [26:25]: Type
1530	 *	- 2'b00: IN/OUT
1531	 *	- 2'b01: Zero-length packet
1532	 *	- 2'b10: CSPLIT
1533	 *	- 2'b11: Disable channel command
1534	 *	* Bit [24]: Terminate (last entry for the selected
1535	 *	channel/endpoint)
1536	 * @ptxqspcavail: Periodic Transmit Request Queue Space Available
1537	 *	(PTxQSpcAvail)
1538	 *	Indicates the number of free locations available to be written
1539	 *	in the Periodic Transmit Request Queue. This queue holds both
1540	 *	IN and OUT requests.
1541	 *	* 8'h0: Periodic Transmit Request Queue is full
1542	 *	* 8'h1: 1 location available
1543	 *	* 8'h2: 2 locations available
1544	 *	* n: n locations available (0..8)
1545	 *	* Others: Reserved
1546	 * @ptxfspcavail: Periodic Transmit Data FIFO Space Available
1547	 *		  (PTxFSpcAvail)
1548	 *	Indicates the number of free locations available to be written
1549	 *	to in the Periodic TxFIFO.
1550	 *	Values are in terms of 32-bit words
1551	 *	* 16'h0: Periodic TxFIFO is full
1552	 *	* 16'h1: 1 word available
1553	 *	* 16'h2: 2 words available
1554	 *	* 16'hn: n words available (where 0..32768)
1555	 *	* 16'h8000: 32768 words available
1556	 *	* Others: Reserved
1557	 */
1558	struct cvmx_usbcx_hptxsts_s {
1559		__BITFIELD_FIELD(u32 ptxqtop		: 8,
1560		__BITFIELD_FIELD(u32 ptxqspcavail	: 8,
1561		__BITFIELD_FIELD(u32 ptxfspcavail	: 16,
1562		;)))
1563	} s;
1564};
1565
1566/**
1567 * cvmx_usbn#_clk_ctl
1568 *
1569 * USBN_CLK_CTL = USBN's Clock Control
1570 *
1571 * This register is used to control the frequency of the hclk and the
1572 * hreset and phy_rst signals.
1573 */
1574union cvmx_usbnx_clk_ctl {
1575	u64 u64;
1576	/**
1577	 * struct cvmx_usbnx_clk_ctl_s
1578	 * @divide2: The 'hclk' used by the USB subsystem is derived
1579	 *	from the eclk.
1580	 *	Also see the field DIVIDE. DIVIDE2<1> must currently
1581	 *	be zero because it is not implemented, so the maximum
1582	 *	ratio of eclk/hclk is currently 16.
1583	 *	The actual divide number for hclk is:
1584	 *	(DIVIDE2 + 1) * (DIVIDE + 1)
1585	 * @hclk_rst: When this field is '0' the HCLK-DIVIDER used to
1586	 *	generate the hclk in the USB Subsystem is held
1587	 *	in reset. This bit must be set to '0' before
1588	 *	changing the value os DIVIDE in this register.
1589	 *	The reset to the HCLK_DIVIDERis also asserted
1590	 *	when core reset is asserted.
1591	 * @p_x_on: Force USB-PHY on during suspend.
1592	 *	'1' USB-PHY XO block is powered-down during
1593	 *	suspend.
1594	 *	'0' USB-PHY XO block is powered-up during
1595	 *	suspend.
1596	 *	The value of this field must be set while POR is
1597	 *	active.
1598	 * @p_rtype: PHY reference clock type
1599	 *	On CN50XX/CN52XX/CN56XX the values are:
1600	 *		'0' The USB-PHY uses a 12MHz crystal as a clock source
1601	 *		    at the USB_XO and USB_XI pins.
1602	 *		'1' Reserved.
1603	 *		'2' The USB_PHY uses 12/24/48MHz 2.5V board clock at the
1604	 *		    USB_XO pin. USB_XI should be tied to ground in this
1605	 *		    case.
1606	 *		'3' Reserved.
1607	 *	On CN3xxx bits 14 and 15 are p_xenbn and p_rclk and values are:
1608	 *		'0' Reserved.
1609	 *		'1' Reserved.
1610	 *		'2' The PHY PLL uses the XO block output as a reference.
1611	 *		    The XO block uses an external clock supplied on the
1612	 *		    XO pin. USB_XI should be tied to ground for this
1613	 *		    usage.
1614	 *		'3' The XO block uses the clock from a crystal.
1615	 * @p_com_on: '0' Force USB-PHY XO Bias, Bandgap and PLL to
1616	 *	remain powered in Suspend Mode.
1617	 *	'1' The USB-PHY XO Bias, Bandgap and PLL are
1618	 *	powered down in suspend mode.
1619	 *	The value of this field must be set while POR is
1620	 *	active.
1621	 * @p_c_sel: Phy clock speed select.
1622	 *	Selects the reference clock / crystal frequency.
1623	 *	'11': Reserved
1624	 *	'10': 48 MHz (reserved when a crystal is used)
1625	 *	'01': 24 MHz (reserved when a crystal is used)
1626	 *	'00': 12 MHz
1627	 *	The value of this field must be set while POR is
1628	 *	active.
1629	 *	NOTE: if a crystal is used as a reference clock,
1630	 *	this field must be set to 12 MHz.
1631	 * @cdiv_byp: Used to enable the bypass input to the USB_CLK_DIV.
1632	 * @sd_mode: Scaledown mode for the USBC. Control timing events
1633	 *	in the USBC, for normal operation this must be '0'.
1634	 * @s_bist: Starts bist on the hclk memories, during the '0'
1635	 *	to '1' transition.
1636	 * @por: Power On Reset for the PHY.
1637	 *	Resets all the PHYS registers and state machines.
1638	 * @enable: When '1' allows the generation of the hclk. When
1639	 *	'0' the hclk will not be generated. SEE DIVIDE
1640	 *	field of this register.
1641	 * @prst: When this field is '0' the reset associated with
1642	 *	the phy_clk functionality in the USB Subsystem is
1643	 *	help in reset. This bit should not be set to '1'
1644	 *	until the time it takes 6 clocks (hclk or phy_clk,
1645	 *	whichever is slower) has passed. Under normal
1646	 *	operation once this bit is set to '1' it should not
1647	 *	be set to '0'.
1648	 * @hrst: When this field is '0' the reset associated with
1649	 *	the hclk functioanlity in the USB Subsystem is
1650	 *	held in reset.This bit should not be set to '1'
1651	 *	until 12ms after phy_clk is stable. Under normal
1652	 *	operation, once this bit is set to '1' it should
1653	 *	not be set to '0'.
1654	 * @divide: The frequency of 'hclk' used by the USB subsystem
1655	 *	is the eclk frequency divided by the value of
1656	 *	(DIVIDE2 + 1) * (DIVIDE + 1), also see the field
1657	 *	DIVIDE2 of this register.
1658	 *	The hclk frequency should be less than 125Mhz.
1659	 *	After writing a value to this field the SW should
1660	 *	read the field for the value written.
1661	 *	The ENABLE field of this register should not be set
1662	 *	until AFTER this field is set and then read.
1663	 */
1664	struct cvmx_usbnx_clk_ctl_s {
1665		__BITFIELD_FIELD(u64 reserved_20_63	: 44,
1666		__BITFIELD_FIELD(u64 divide2		: 2,
1667		__BITFIELD_FIELD(u64 hclk_rst		: 1,
1668		__BITFIELD_FIELD(u64 p_x_on		: 1,
1669		__BITFIELD_FIELD(u64 p_rtype		: 2,
1670		__BITFIELD_FIELD(u64 p_com_on		: 1,
1671		__BITFIELD_FIELD(u64 p_c_sel		: 2,
1672		__BITFIELD_FIELD(u64 cdiv_byp		: 1,
1673		__BITFIELD_FIELD(u64 sd_mode		: 2,
1674		__BITFIELD_FIELD(u64 s_bist		: 1,
1675		__BITFIELD_FIELD(u64 por		: 1,
1676		__BITFIELD_FIELD(u64 enable		: 1,
1677		__BITFIELD_FIELD(u64 prst		: 1,
1678		__BITFIELD_FIELD(u64 hrst		: 1,
1679		__BITFIELD_FIELD(u64 divide		: 3,
1680		;)))))))))))))))
1681	} s;
1682};
1683
1684/**
1685 * cvmx_usbn#_usbp_ctl_status
1686 *
1687 * USBN_USBP_CTL_STATUS = USBP Control And Status Register
1688 *
1689 * Contains general control and status information for the USBN block.
1690 */
1691union cvmx_usbnx_usbp_ctl_status {
1692	u64 u64;
1693	/**
1694	 * struct cvmx_usbnx_usbp_ctl_status_s
1695	 * @txrisetune: HS Transmitter Rise/Fall Time Adjustment
1696	 * @txvreftune: HS DC Voltage Level Adjustment
1697	 * @txfslstune: FS/LS Source Impedance Adjustment
1698	 * @txhsxvtune: Transmitter High-Speed Crossover Adjustment
1699	 * @sqrxtune: Squelch Threshold Adjustment
1700	 * @compdistune: Disconnect Threshold Adjustment
1701	 * @otgtune: VBUS Valid Threshold Adjustment
1702	 * @otgdisable: OTG Block Disable
1703	 * @portreset: Per_Port Reset
1704	 * @drvvbus: Drive VBUS
1705	 * @lsbist: Low-Speed BIST Enable.
1706	 * @fsbist: Full-Speed BIST Enable.
1707	 * @hsbist: High-Speed BIST Enable.
1708	 * @bist_done: PHY Bist Done.
1709	 *	Asserted at the end of the PHY BIST sequence.
1710	 * @bist_err: PHY Bist Error.
1711	 *	Indicates an internal error was detected during
1712	 *	the BIST sequence.
1713	 * @tdata_out: PHY Test Data Out.
1714	 *	Presents either internally generated signals or
1715	 *	test register contents, based upon the value of
1716	 *	test_data_out_sel.
1717	 * @siddq: Drives the USBP (USB-PHY) SIDDQ input.
1718	 *	Normally should be set to zero.
1719	 *	When customers have no intent to use USB PHY
1720	 *	interface, they should:
1721	 *	- still provide 3.3V to USB_VDD33, and
1722	 *	- tie USB_REXT to 3.3V supply, and
1723	 *	- set USBN*_USBP_CTL_STATUS[SIDDQ]=1
1724	 * @txpreemphasistune: HS Transmitter Pre-Emphasis Enable
1725	 * @dma_bmode: When set to 1 the L2C DMA address will be updated
1726	 *	with byte-counts between packets. When set to 0
1727	 *	the L2C DMA address is incremented to the next
1728	 *	4-byte aligned address after adding byte-count.
1729	 * @usbc_end: Bigendian input to the USB Core. This should be
1730	 *	set to '0' for operation.
1731	 * @usbp_bist: PHY, This is cleared '0' to run BIST on the USBP.
1732	 * @tclk: PHY Test Clock, used to load TDATA_IN to the USBP.
1733	 * @dp_pulld: PHY DP_PULLDOWN input to the USB-PHY.
1734	 *	This signal enables the pull-down resistance on
1735	 *	the D+ line. '1' pull down-resistance is connected
1736	 *	to D+/ '0' pull down resistance is not connected
1737	 *	to D+. When an A/B device is acting as a host
1738	 *	(downstream-facing port), dp_pulldown and
1739	 *	dm_pulldown are enabled. This must not toggle
1740	 *	during normal operation.
1741	 * @dm_pulld: PHY DM_PULLDOWN input to the USB-PHY.
1742	 *	This signal enables the pull-down resistance on
1743	 *	the D- line. '1' pull down-resistance is connected
1744	 *	to D-. '0' pull down resistance is not connected
1745	 *	to D-. When an A/B device is acting as a host
1746	 *	(downstream-facing port), dp_pulldown and
1747	 *	dm_pulldown are enabled. This must not toggle
1748	 *	during normal operation.
1749	 * @hst_mode: When '0' the USB is acting as HOST, when '1'
1750	 *	USB is acting as device. This field needs to be
1751	 *	set while the USB is in reset.
1752	 * @tuning: Transmitter Tuning for High-Speed Operation.
1753	 *	Tunes the current supply and rise/fall output
1754	 *	times for high-speed operation.
1755	 *	[20:19] == 11: Current supply increased
1756	 *	approximately 9%
1757	 *	[20:19] == 10: Current supply increased
1758	 *	approximately 4.5%
1759	 *	[20:19] == 01: Design default.
1760	 *	[20:19] == 00: Current supply decreased
1761	 *	approximately 4.5%
1762	 *	[22:21] == 11: Rise and fall times are increased.
1763	 *	[22:21] == 10: Design default.
1764	 *	[22:21] == 01: Rise and fall times are decreased.
1765	 *	[22:21] == 00: Rise and fall times are decreased
1766	 *	further as compared to the 01 setting.
1767	 * @tx_bs_enh: Transmit Bit Stuffing on [15:8].
1768	 *	Enables or disables bit stuffing on data[15:8]
1769	 *	when bit-stuffing is enabled.
1770	 * @tx_bs_en: Transmit Bit Stuffing on [7:0].
1771	 *	Enables or disables bit stuffing on data[7:0]
1772	 *	when bit-stuffing is enabled.
1773	 * @loop_enb: PHY Loopback Test Enable.
1774	 *	'1': During data transmission the receive is
1775	 *	enabled.
1776	 *	'0': During data transmission the receive is
1777	 *	disabled.
1778	 *	Must be '0' for normal operation.
1779	 * @vtest_enb: Analog Test Pin Enable.
1780	 *	'1' The PHY's analog_test pin is enabled for the
1781	 *	input and output of applicable analog test signals.
1782	 *	'0' THe analog_test pin is disabled.
1783	 * @bist_enb: Built-In Self Test Enable.
1784	 *	Used to activate BIST in the PHY.
1785	 * @tdata_sel: Test Data Out Select.
1786	 *	'1' test_data_out[3:0] (PHY) register contents
1787	 *	are output. '0' internally generated signals are
1788	 *	output.
1789	 * @taddr_in: Mode Address for Test Interface.
1790	 *	Specifies the register address for writing to or
1791	 *	reading from the PHY test interface register.
1792	 * @tdata_in: Internal Testing Register Input Data and Select
1793	 *	This is a test bus. Data is present on [3:0],
1794	 *	and its corresponding select (enable) is present
1795	 *	on bits [7:4].
1796	 * @ate_reset: Reset input from automatic test equipment.
1797	 *	This is a test signal. When the USB Core is
1798	 *	powered up (not in Susned Mode), an automatic
1799	 *	tester can use this to disable phy_clock and
1800	 *	free_clk, then re-enable them with an aligned
1801	 *	phase.
1802	 *	'1': The phy_clk and free_clk outputs are
1803	 *	disabled. "0": The phy_clock and free_clk outputs
1804	 *	are available within a specific period after the
1805	 *	de-assertion.
1806	 */
1807	struct cvmx_usbnx_usbp_ctl_status_s {
1808		__BITFIELD_FIELD(u64 txrisetune		: 1,
1809		__BITFIELD_FIELD(u64 txvreftune		: 4,
1810		__BITFIELD_FIELD(u64 txfslstune		: 4,
1811		__BITFIELD_FIELD(u64 txhsxvtune		: 2,
1812		__BITFIELD_FIELD(u64 sqrxtune		: 3,
1813		__BITFIELD_FIELD(u64 compdistune	: 3,
1814		__BITFIELD_FIELD(u64 otgtune		: 3,
1815		__BITFIELD_FIELD(u64 otgdisable		: 1,
1816		__BITFIELD_FIELD(u64 portreset		: 1,
1817		__BITFIELD_FIELD(u64 drvvbus		: 1,
1818		__BITFIELD_FIELD(u64 lsbist		: 1,
1819		__BITFIELD_FIELD(u64 fsbist		: 1,
1820		__BITFIELD_FIELD(u64 hsbist		: 1,
1821		__BITFIELD_FIELD(u64 bist_done		: 1,
1822		__BITFIELD_FIELD(u64 bist_err		: 1,
1823		__BITFIELD_FIELD(u64 tdata_out		: 4,
1824		__BITFIELD_FIELD(u64 siddq		: 1,
1825		__BITFIELD_FIELD(u64 txpreemphasistune	: 1,
1826		__BITFIELD_FIELD(u64 dma_bmode		: 1,
1827		__BITFIELD_FIELD(u64 usbc_end		: 1,
1828		__BITFIELD_FIELD(u64 usbp_bist		: 1,
1829		__BITFIELD_FIELD(u64 tclk		: 1,
1830		__BITFIELD_FIELD(u64 dp_pulld		: 1,
1831		__BITFIELD_FIELD(u64 dm_pulld		: 1,
1832		__BITFIELD_FIELD(u64 hst_mode		: 1,
1833		__BITFIELD_FIELD(u64 tuning		: 4,
1834		__BITFIELD_FIELD(u64 tx_bs_enh		: 1,
1835		__BITFIELD_FIELD(u64 tx_bs_en		: 1,
1836		__BITFIELD_FIELD(u64 loop_enb		: 1,
1837		__BITFIELD_FIELD(u64 vtest_enb		: 1,
1838		__BITFIELD_FIELD(u64 bist_enb		: 1,
1839		__BITFIELD_FIELD(u64 tdata_sel		: 1,
1840		__BITFIELD_FIELD(u64 taddr_in		: 4,
1841		__BITFIELD_FIELD(u64 tdata_in		: 8,
1842		__BITFIELD_FIELD(u64 ate_reset		: 1,
1843		;)))))))))))))))))))))))))))))))))))
1844	} s;
1845};
1846
1847#endif /* __OCTEON_HCD_H__ */