ramips: make use of the new board detection layer
[openwrt.git] / target / linux / octeon / files / drivers / staging / octeon-usb / cvmx-usbnx-defs.h
1 /***********************license start***************
2  * Copyright (c) 2003-2010  Cavium Networks (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 Networks 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
24  * control 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 NETWORKS 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
32  * OR 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-usbnx-defs.h
43  *
44  * Configuration and status register (CSR) type definitions for
45  * Octeon usbnx.
46  *
47  */
48 #ifndef __CVMX_USBNX_TYPEDEFS_H__
49 #define __CVMX_USBNX_TYPEDEFS_H__
50
51 #define CVMX_USBNXBID1(bid) (((bid) & 1) * 0x10000000ull)
52 #define CVMX_USBNXBID2(bid) (((bid) & 1) * 0x100000000000ull)
53
54 #define CVMX_USBNXREG1(reg, bid) \
55         (CVMX_ADD_IO_SEG(0x0001180068000000ull | reg) + CVMX_USBNXBID1(bid))
56 #define CVMX_USBNXREG2(reg, bid) \
57         (CVMX_ADD_IO_SEG(0x00016F0000000000ull | reg) + CVMX_USBNXBID2(bid))
58
59 #define CVMX_USBNX_CLK_CTL(bid)         CVMX_USBNXREG1(0x10, bid)
60 #define CVMX_USBNX_DMA0_INB_CHN0(bid)   CVMX_USBNXREG2(0x818, bid)
61 #define CVMX_USBNX_DMA0_OUTB_CHN0(bid)  CVMX_USBNXREG2(0x858, bid)
62 #define CVMX_USBNX_USBP_CTL_STATUS(bid) CVMX_USBNXREG1(0x18, bid)
63
64 /**
65  * cvmx_usbn#_clk_ctl
66  *
67  * USBN_CLK_CTL = USBN's Clock Control
68  *
69  * This register is used to control the frequency of the hclk and the
70  * hreset and phy_rst signals.
71  */
72 union cvmx_usbnx_clk_ctl {
73         uint64_t u64;
74         /**
75          * struct cvmx_usbnx_clk_ctl_s
76          * @divide2: The 'hclk' used by the USB subsystem is derived
77          *      from the eclk.
78          *      Also see the field DIVIDE. DIVIDE2<1> must currently
79          *      be zero because it is not implemented, so the maximum
80          *      ratio of eclk/hclk is currently 16.
81          *      The actual divide number for hclk is:
82          *      (DIVIDE2 + 1) * (DIVIDE + 1)
83          * @hclk_rst: When this field is '0' the HCLK-DIVIDER used to
84          *      generate the hclk in the USB Subsystem is held
85          *      in reset. This bit must be set to '0' before
86          *      changing the value os DIVIDE in this register.
87          *      The reset to the HCLK_DIVIDERis also asserted
88          *      when core reset is asserted.
89          * @p_x_on: Force USB-PHY on during suspend.
90          *      '1' USB-PHY XO block is powered-down during
91          *      suspend.
92          *      '0' USB-PHY XO block is powered-up during
93          *      suspend.
94          *      The value of this field must be set while POR is
95          *      active.
96          * @p_com_on: '0' Force USB-PHY XO Bias, Bandgap and PLL to
97          *      remain powered in Suspend Mode.
98          *      '1' The USB-PHY XO Bias, Bandgap and PLL are
99          *      powered down in suspend mode.
100          *      The value of this field must be set while POR is
101          *      active.
102          * @p_c_sel: Phy clock speed select.
103          *      Selects the reference clock / crystal frequency.
104          *      '11': Reserved
105          *      '10': 48 MHz (reserved when a crystal is used)
106          *      '01': 24 MHz (reserved when a crystal is used)
107          *      '00': 12 MHz
108          *      The value of this field must be set while POR is
109          *      active.
110          *      NOTE: if a crystal is used as a reference clock,
111          *      this field must be set to 12 MHz.
112          * @cdiv_byp: Used to enable the bypass input to the USB_CLK_DIV.
113          * @sd_mode: Scaledown mode for the USBC. Control timing events
114          *      in the USBC, for normal operation this must be '0'.
115          * @s_bist: Starts bist on the hclk memories, during the '0'
116          *      to '1' transition.
117          * @por: Power On Reset for the PHY.
118          *      Resets all the PHYS registers and state machines.
119          * @enable: When '1' allows the generation of the hclk. When
120          *      '0' the hclk will not be generated. SEE DIVIDE
121          *      field of this register.
122          * @prst: When this field is '0' the reset associated with
123          *      the phy_clk functionality in the USB Subsystem is
124          *      help in reset. This bit should not be set to '1'
125          *      until the time it takes 6 clocks (hclk or phy_clk,
126          *      whichever is slower) has passed. Under normal
127          *      operation once this bit is set to '1' it should not
128          *      be set to '0'.
129          * @hrst: When this field is '0' the reset associated with
130          *      the hclk functioanlity in the USB Subsystem is
131          *      held in reset.This bit should not be set to '1'
132          *      until 12ms after phy_clk is stable. Under normal
133          *      operation, once this bit is set to '1' it should
134          *      not be set to '0'.
135          * @divide: The frequency of 'hclk' used by the USB subsystem
136          *      is the eclk frequency divided by the value of
137          *      (DIVIDE2 + 1) * (DIVIDE + 1), also see the field
138          *      DIVIDE2 of this register.
139          *      The hclk frequency should be less than 125Mhz.
140          *      After writing a value to this field the SW should
141          *      read the field for the value written.
142          *      The ENABLE field of this register should not be set
143          *      until AFTER this field is set and then read.
144          */
145         struct cvmx_usbnx_clk_ctl_s {
146                 uint64_t reserved_20_63 : 44;
147                 uint64_t divide2        : 2;
148                 uint64_t hclk_rst       : 1;
149                 uint64_t p_x_on         : 1;
150                 uint64_t reserved_14_15 : 2;
151                 uint64_t p_com_on       : 1;
152                 uint64_t p_c_sel        : 2;
153                 uint64_t cdiv_byp       : 1;
154                 uint64_t sd_mode        : 2;
155                 uint64_t s_bist         : 1;
156                 uint64_t por            : 1;
157                 uint64_t enable         : 1;
158                 uint64_t prst           : 1;
159                 uint64_t hrst           : 1;
160                 uint64_t divide         : 3;
161         } s;
162         /**
163          * struct cvmx_usbnx_clk_ctl_cn30xx
164          * @hclk_rst: When this field is '0' the HCLK-DIVIDER used to
165          *      generate the hclk in the USB Subsystem is held
166          *      in reset. This bit must be set to '0' before
167          *      changing the value os DIVIDE in this register.
168          *      The reset to the HCLK_DIVIDERis also asserted
169          *      when core reset is asserted.
170          * @p_x_on: Force USB-PHY on during suspend.
171          *      '1' USB-PHY XO block is powered-down during
172          *      suspend.
173          *      '0' USB-PHY XO block is powered-up during
174          *      suspend.
175          *      The value of this field must be set while POR is
176          *      active.
177          * @p_rclk: Phy refrence clock enable.
178          *      '1' The PHY PLL uses the XO block output as a
179          *      reference.
180          *      '0' Reserved.
181          * @p_xenbn: Phy external clock enable.
182          *      '1' The XO block uses the clock from a crystal.
183          *      '0' The XO block uses an external clock supplied
184          *      on the XO pin. USB_XI should be tied to
185          *      ground for this usage.
186          * @p_com_on: '0' Force USB-PHY XO Bias, Bandgap and PLL to
187          *      remain powered in Suspend Mode.
188          *      '1' The USB-PHY XO Bias, Bandgap and PLL are
189          *      powered down in suspend mode.
190          *      The value of this field must be set while POR is
191          *      active.
192          * @p_c_sel: Phy clock speed select.
193          *      Selects the reference clock / crystal frequency.
194          *      '11': Reserved
195          *      '10': 48 MHz
196          *      '01': 24 MHz
197          *      '00': 12 MHz
198          *      The value of this field must be set while POR is
199          *      active.
200          * @cdiv_byp: Used to enable the bypass input to the USB_CLK_DIV.
201          * @sd_mode: Scaledown mode for the USBC. Control timing events
202          *      in the USBC, for normal operation this must be '0'.
203          * @s_bist: Starts bist on the hclk memories, during the '0'
204          *      to '1' transition.
205          * @por: Power On Reset for the PHY.
206          *      Resets all the PHYS registers and state machines.
207          * @enable: When '1' allows the generation of the hclk. When
208          *      '0' the hclk will not be generated.
209          * @prst: When this field is '0' the reset associated with
210          *      the phy_clk functionality in the USB Subsystem is
211          *      help in reset. This bit should not be set to '1'
212          *      until the time it takes 6 clocks (hclk or phy_clk,
213          *      whichever is slower) has passed. Under normal
214          *      operation once this bit is set to '1' it should not
215          *      be set to '0'.
216          * @hrst: When this field is '0' the reset associated with
217          *      the hclk functioanlity in the USB Subsystem is
218          *      held in reset.This bit should not be set to '1'
219          *      until 12ms after phy_clk is stable. Under normal
220          *      operation, once this bit is set to '1' it should
221          *      not be set to '0'.
222          * @divide: The 'hclk' used by the USB subsystem is derived
223          *      from the eclk. The eclk will be divided by the
224          *      value of this field +1 to determine the hclk
225          *      frequency. (Also see HRST of this register).
226          *      The hclk frequency must be less than 125 MHz.
227          */
228         struct cvmx_usbnx_clk_ctl_cn30xx {
229                 uint64_t reserved_18_63 : 46;
230                 uint64_t hclk_rst       : 1;
231                 uint64_t p_x_on         : 1;
232                 uint64_t p_rclk         : 1;
233                 uint64_t p_xenbn        : 1;
234                 uint64_t p_com_on       : 1;
235                 uint64_t p_c_sel        : 2;
236                 uint64_t cdiv_byp       : 1;
237                 uint64_t sd_mode        : 2;
238                 uint64_t s_bist         : 1;
239                 uint64_t por            : 1;
240                 uint64_t enable         : 1;
241                 uint64_t prst           : 1;
242                 uint64_t hrst           : 1;
243                 uint64_t divide         : 3;
244         } cn30xx;
245         struct cvmx_usbnx_clk_ctl_cn30xx cn31xx;
246         /**
247          * struct cvmx_usbnx_clk_ctl_cn50xx
248          * @divide2: The 'hclk' used by the USB subsystem is derived
249          *      from the eclk.
250          *      Also see the field DIVIDE. DIVIDE2<1> must currently
251          *      be zero because it is not implemented, so the maximum
252          *      ratio of eclk/hclk is currently 16.
253          *      The actual divide number for hclk is:
254          *      (DIVIDE2 + 1) * (DIVIDE + 1)
255          * @hclk_rst: When this field is '0' the HCLK-DIVIDER used to
256          *      generate the hclk in the USB Subsystem is held
257          *      in reset. This bit must be set to '0' before
258          *      changing the value os DIVIDE in this register.
259          *      The reset to the HCLK_DIVIDERis also asserted
260          *      when core reset is asserted.
261          * @p_rtype: PHY reference clock type
262          *      '0' The USB-PHY uses a 12MHz crystal as a clock
263          *      source at the USB_XO and USB_XI pins
264          *      '1' Reserved
265          *      '2' The USB_PHY uses 12/24/48MHz 2.5V board clock
266          *      at the USB_XO pin. USB_XI should be tied to
267          *      ground in this case.
268          *      '3' Reserved
269          *      (bit 14 was P_XENBN on 3xxx)
270          *      (bit 15 was P_RCLK on 3xxx)
271          * @p_com_on: '0' Force USB-PHY XO Bias, Bandgap and PLL to
272          *      remain powered in Suspend Mode.
273          *      '1' The USB-PHY XO Bias, Bandgap and PLL are
274          *      powered down in suspend mode.
275          *      The value of this field must be set while POR is
276          *      active.
277          * @p_c_sel: Phy clock speed select.
278          *      Selects the reference clock / crystal frequency.
279          *      '11': Reserved
280          *      '10': 48 MHz (reserved when a crystal is used)
281          *      '01': 24 MHz (reserved when a crystal is used)
282          *      '00': 12 MHz
283          *      The value of this field must be set while POR is
284          *      active.
285          *      NOTE: if a crystal is used as a reference clock,
286          *      this field must be set to 12 MHz.
287          * @cdiv_byp: Used to enable the bypass input to the USB_CLK_DIV.
288          * @sd_mode: Scaledown mode for the USBC. Control timing events
289          *      in the USBC, for normal operation this must be '0'.
290          * @s_bist: Starts bist on the hclk memories, during the '0'
291          *      to '1' transition.
292          * @por: Power On Reset for the PHY.
293          *      Resets all the PHYS registers and state machines.
294          * @enable: When '1' allows the generation of the hclk. When
295          *      '0' the hclk will not be generated. SEE DIVIDE
296          *      field of this register.
297          * @prst: When this field is '0' the reset associated with
298          *      the phy_clk functionality in the USB Subsystem is
299          *      help in reset. This bit should not be set to '1'
300          *      until the time it takes 6 clocks (hclk or phy_clk,
301          *      whichever is slower) has passed. Under normal
302          *      operation once this bit is set to '1' it should not
303          *      be set to '0'.
304          * @hrst: When this field is '0' the reset associated with
305          *      the hclk functioanlity in the USB Subsystem is
306          *      held in reset.This bit should not be set to '1'
307          *      until 12ms after phy_clk is stable. Under normal
308          *      operation, once this bit is set to '1' it should
309          *      not be set to '0'.
310          * @divide: The frequency of 'hclk' used by the USB subsystem
311          *      is the eclk frequency divided by the value of
312          *      (DIVIDE2 + 1) * (DIVIDE + 1), also see the field
313          *      DIVIDE2 of this register.
314          *      The hclk frequency should be less than 125Mhz.
315          *      After writing a value to this field the SW should
316          *      read the field for the value written.
317          *      The ENABLE field of this register should not be set
318          *      until AFTER this field is set and then read.
319          */
320         struct cvmx_usbnx_clk_ctl_cn50xx {
321                 uint64_t reserved_20_63 : 44;
322                 uint64_t divide2        : 2;
323                 uint64_t hclk_rst       : 1;
324                 uint64_t reserved_16_16 : 1;
325                 uint64_t p_rtype        : 2;
326                 uint64_t p_com_on       : 1;
327                 uint64_t p_c_sel        : 2;
328                 uint64_t cdiv_byp       : 1;
329                 uint64_t sd_mode        : 2;
330                 uint64_t s_bist         : 1;
331                 uint64_t por            : 1;
332                 uint64_t enable         : 1;
333                 uint64_t prst           : 1;
334                 uint64_t hrst           : 1;
335                 uint64_t divide         : 3;
336         } cn50xx;
337         struct cvmx_usbnx_clk_ctl_cn50xx cn52xx;
338         struct cvmx_usbnx_clk_ctl_cn50xx cn56xx;
339 };
340 typedef union cvmx_usbnx_clk_ctl cvmx_usbnx_clk_ctl_t;
341
342 /**
343  * cvmx_usbn#_usbp_ctl_status
344  *
345  * USBN_USBP_CTL_STATUS = USBP Control And Status Register
346  *
347  * Contains general control and status information for the USBN block.
348  */
349 union cvmx_usbnx_usbp_ctl_status {
350         uint64_t u64;
351         /**
352          * struct cvmx_usbnx_usbp_ctl_status_s
353          * @txrisetune: HS Transmitter Rise/Fall Time Adjustment
354          * @txvreftune: HS DC Voltage Level Adjustment
355          * @txfslstune: FS/LS Source Impedence Adjustment
356          * @txhsxvtune: Transmitter High-Speed Crossover Adjustment
357          * @sqrxtune: Squelch Threshold Adjustment
358          * @compdistune: Disconnect Threshold Adjustment
359          * @otgtune: VBUS Valid Threshold Adjustment
360          * @otgdisable: OTG Block Disable
361          * @portreset: Per_Port Reset
362          * @drvvbus: Drive VBUS
363          * @lsbist: Low-Speed BIST Enable.
364          * @fsbist: Full-Speed BIST Enable.
365          * @hsbist: High-Speed BIST Enable.
366          * @bist_done: PHY Bist Done.
367          *      Asserted at the end of the PHY BIST sequence.
368          * @bist_err: PHY Bist Error.
369          *      Indicates an internal error was detected during
370          *      the BIST sequence.
371          * @tdata_out: PHY Test Data Out.
372          *      Presents either internaly generated signals or
373          *      test register contents, based upon the value of
374          *      test_data_out_sel.
375          * @siddq: Drives the USBP (USB-PHY) SIDDQ input.
376          *      Normally should be set to zero.
377          *      When customers have no intent to use USB PHY
378          *      interface, they should:
379          *      - still provide 3.3V to USB_VDD33, and
380          *      - tie USB_REXT to 3.3V supply, and
381          *      - set USBN*_USBP_CTL_STATUS[SIDDQ]=1
382          * @txpreemphasistune: HS Transmitter Pre-Emphasis Enable
383          * @dma_bmode: When set to 1 the L2C DMA address will be updated
384          *      with byte-counts between packets. When set to 0
385          *      the L2C DMA address is incremented to the next
386          *      4-byte aligned address after adding byte-count.
387          * @usbc_end: Bigendian input to the USB Core. This should be
388          *      set to '0' for operation.
389          * @usbp_bist: PHY, This is cleared '0' to run BIST on the USBP.
390          * @tclk: PHY Test Clock, used to load TDATA_IN to the USBP.
391          * @dp_pulld: PHY DP_PULLDOWN input to the USB-PHY.
392          *      This signal enables the pull-down resistance on
393          *      the D+ line. '1' pull down-resistance is connected
394          *      to D+/ '0' pull down resistance is not connected
395          *      to D+. When an A/B device is acting as a host
396          *      (downstream-facing port), dp_pulldown and
397          *      dm_pulldown are enabled. This must not toggle
398          *      during normal opeartion.
399          * @dm_pulld: PHY DM_PULLDOWN input to the USB-PHY.
400          *      This signal enables the pull-down resistance on
401          *      the D- line. '1' pull down-resistance is connected
402          *      to D-. '0' pull down resistance is not connected
403          *      to D-. When an A/B device is acting as a host
404          *      (downstream-facing port), dp_pulldown and
405          *      dm_pulldown are enabled. This must not toggle
406          *      during normal opeartion.
407          * @hst_mode: When '0' the USB is acting as HOST, when '1'
408          *      USB is acting as device. This field needs to be
409          *      set while the USB is in reset.
410          * @tuning: Transmitter Tuning for High-Speed Operation.
411          *      Tunes the current supply and rise/fall output
412          *      times for high-speed operation.
413          *      [20:19] == 11: Current supply increased
414          *      approximately 9%
415          *      [20:19] == 10: Current supply increased
416          *      approximately 4.5%
417          *      [20:19] == 01: Design default.
418          *      [20:19] == 00: Current supply decreased
419          *      approximately 4.5%
420          *      [22:21] == 11: Rise and fall times are increased.
421          *      [22:21] == 10: Design default.
422          *      [22:21] == 01: Rise and fall times are decreased.
423          *      [22:21] == 00: Rise and fall times are decreased
424          *      further as compared to the 01 setting.
425          * @tx_bs_enh: Transmit Bit Stuffing on [15:8].
426          *      Enables or disables bit stuffing on data[15:8]
427          *      when bit-stuffing is enabled.
428          * @tx_bs_en: Transmit Bit Stuffing on [7:0].
429          *      Enables or disables bit stuffing on data[7:0]
430          *      when bit-stuffing is enabled.
431          * @loop_enb: PHY Loopback Test Enable.
432          *      '1': During data transmission the receive is
433          *      enabled.
434          *      '0': During data transmission the receive is
435          *      disabled.
436          *      Must be '0' for normal operation.
437          * @vtest_enb: Analog Test Pin Enable.
438          *      '1' The PHY's analog_test pin is enabled for the
439          *      input and output of applicable analog test signals.
440          *      '0' THe analog_test pin is disabled.
441          * @bist_enb: Built-In Self Test Enable.
442          *      Used to activate BIST in the PHY.
443          * @tdata_sel: Test Data Out Select.
444          *      '1' test_data_out[3:0] (PHY) register contents
445          *      are output. '0' internaly generated signals are
446          *      output.
447          * @taddr_in: Mode Address for Test Interface.
448          *      Specifies the register address for writing to or
449          *      reading from the PHY test interface register.
450          * @tdata_in: Internal Testing Register Input Data and Select
451          *      This is a test bus. Data is present on [3:0],
452          *      and its corresponding select (enable) is present
453          *      on bits [7:4].
454          * @ate_reset: Reset input from automatic test equipment.
455          *      This is a test signal. When the USB Core is
456          *      powered up (not in Susned Mode), an automatic
457          *      tester can use this to disable phy_clock and
458          *      free_clk, then re-eanable them with an aligned
459          *      phase.
460          *      '1': The phy_clk and free_clk outputs are
461          *      disabled. "0": The phy_clock and free_clk outputs
462          *      are available within a specific period after the
463          *      de-assertion.
464          */
465         struct cvmx_usbnx_usbp_ctl_status_s {
466                 uint64_t txrisetune             : 1;
467                 uint64_t txvreftune             : 4;
468                 uint64_t txfslstune             : 4;
469                 uint64_t txhsxvtune             : 2;
470                 uint64_t sqrxtune               : 3;
471                 uint64_t compdistune            : 3;
472                 uint64_t otgtune                : 3;
473                 uint64_t otgdisable             : 1;
474                 uint64_t portreset              : 1;
475                 uint64_t drvvbus                : 1;
476                 uint64_t lsbist                 : 1;
477                 uint64_t fsbist                 : 1;
478                 uint64_t hsbist                 : 1;
479                 uint64_t bist_done              : 1;
480                 uint64_t bist_err               : 1;
481                 uint64_t tdata_out              : 4;
482                 uint64_t siddq                  : 1;
483                 uint64_t txpreemphasistune      : 1;
484                 uint64_t dma_bmode              : 1;
485                 uint64_t usbc_end               : 1;
486                 uint64_t usbp_bist              : 1;
487                 uint64_t tclk                   : 1;
488                 uint64_t dp_pulld               : 1;
489                 uint64_t dm_pulld               : 1;
490                 uint64_t hst_mode               : 1;
491                 uint64_t tuning                 : 4;
492                 uint64_t tx_bs_enh              : 1;
493                 uint64_t tx_bs_en               : 1;
494                 uint64_t loop_enb               : 1;
495                 uint64_t vtest_enb              : 1;
496                 uint64_t bist_enb               : 1;
497                 uint64_t tdata_sel              : 1;
498                 uint64_t taddr_in               : 4;
499                 uint64_t tdata_in               : 8;
500                 uint64_t ate_reset              : 1;
501         } s;
502         /**
503          * struct cvmx_usbnx_usbp_ctl_status_cn30xx
504          * @bist_done: PHY Bist Done.
505          *      Asserted at the end of the PHY BIST sequence.
506          * @bist_err: PHY Bist Error.
507          *      Indicates an internal error was detected during
508          *      the BIST sequence.
509          * @tdata_out: PHY Test Data Out.
510          *      Presents either internaly generated signals or
511          *      test register contents, based upon the value of
512          *      test_data_out_sel.
513          * @dma_bmode: When set to 1 the L2C DMA address will be updated
514          *      with byte-counts between packets. When set to 0
515          *      the L2C DMA address is incremented to the next
516          *      4-byte aligned address after adding byte-count.
517          * @usbc_end: Bigendian input to the USB Core. This should be
518          *      set to '0' for operation.
519          * @usbp_bist: PHY, This is cleared '0' to run BIST on the USBP.
520          * @tclk: PHY Test Clock, used to load TDATA_IN to the USBP.
521          * @dp_pulld: PHY DP_PULLDOWN input to the USB-PHY.
522          *      This signal enables the pull-down resistance on
523          *      the D+ line. '1' pull down-resistance is connected
524          *      to D+/ '0' pull down resistance is not connected
525          *      to D+. When an A/B device is acting as a host
526          *      (downstream-facing port), dp_pulldown and
527          *      dm_pulldown are enabled. This must not toggle
528          *      during normal opeartion.
529          * @dm_pulld: PHY DM_PULLDOWN input to the USB-PHY.
530          *      This signal enables the pull-down resistance on
531          *      the D- line. '1' pull down-resistance is connected
532          *      to D-. '0' pull down resistance is not connected
533          *      to D-. When an A/B device is acting as a host
534          *      (downstream-facing port), dp_pulldown and
535          *      dm_pulldown are enabled. This must not toggle
536          *      during normal opeartion.
537          * @hst_mode: When '0' the USB is acting as HOST, when '1'
538          *      USB is acting as device. This field needs to be
539          *      set while the USB is in reset.
540          * @tuning: Transmitter Tuning for High-Speed Operation.
541          *      Tunes the current supply and rise/fall output
542          *      times for high-speed operation.
543          *      [20:19] == 11: Current supply increased
544          *      approximately 9%
545          *      [20:19] == 10: Current supply increased
546          *      approximately 4.5%
547          *      [20:19] == 01: Design default.
548          *      [20:19] == 00: Current supply decreased
549          *      approximately 4.5%
550          *      [22:21] == 11: Rise and fall times are increased.
551          *      [22:21] == 10: Design default.
552          *      [22:21] == 01: Rise and fall times are decreased.
553          *      [22:21] == 00: Rise and fall times are decreased
554          *      further as compared to the 01 setting.
555          * @tx_bs_enh: Transmit Bit Stuffing on [15:8].
556          *      Enables or disables bit stuffing on data[15:8]
557          *      when bit-stuffing is enabled.
558          * @tx_bs_en: Transmit Bit Stuffing on [7:0].
559          *      Enables or disables bit stuffing on data[7:0]
560          *      when bit-stuffing is enabled.
561          * @loop_enb: PHY Loopback Test Enable.
562          *      '1': During data transmission the receive is
563          *      enabled.
564          *      '0': During data transmission the receive is
565          *      disabled.
566          *      Must be '0' for normal operation.
567          * @vtest_enb: Analog Test Pin Enable.
568          *      '1' The PHY's analog_test pin is enabled for the
569          *      input and output of applicable analog test signals.
570          *      '0' THe analog_test pin is disabled.
571          * @bist_enb: Built-In Self Test Enable.
572          *      Used to activate BIST in the PHY.
573          * @tdata_sel: Test Data Out Select.
574          *      '1' test_data_out[3:0] (PHY) register contents
575          *      are output. '0' internaly generated signals are
576          *      output.
577          * @taddr_in: Mode Address for Test Interface.
578          *      Specifies the register address for writing to or
579          *      reading from the PHY test interface register.
580          * @tdata_in: Internal Testing Register Input Data and Select
581          *      This is a test bus. Data is present on [3:0],
582          *      and its corresponding select (enable) is present
583          *      on bits [7:4].
584          * @ate_reset: Reset input from automatic test equipment.
585          *      This is a test signal. When the USB Core is
586          *      powered up (not in Susned Mode), an automatic
587          *      tester can use this to disable phy_clock and
588          *      free_clk, then re-eanable them with an aligned
589          *      phase.
590          *      '1': The phy_clk and free_clk outputs are
591          *      disabled. "0": The phy_clock and free_clk outputs
592          *      are available within a specific period after the
593          *      de-assertion.
594          */
595         struct cvmx_usbnx_usbp_ctl_status_cn30xx {
596                 uint64_t reserved_38_63 : 26;
597                 uint64_t bist_done      : 1;
598                 uint64_t bist_err       : 1;
599                 uint64_t tdata_out      : 4;
600                 uint64_t reserved_30_31 : 2;
601                 uint64_t dma_bmode      : 1;
602                 uint64_t usbc_end       : 1;
603                 uint64_t usbp_bist      : 1;
604                 uint64_t tclk           : 1;
605                 uint64_t dp_pulld       : 1;
606                 uint64_t dm_pulld       : 1;
607                 uint64_t hst_mode       : 1;
608                 uint64_t tuning         : 4;
609                 uint64_t tx_bs_enh      : 1;
610                 uint64_t tx_bs_en       : 1;
611                 uint64_t loop_enb       : 1;
612                 uint64_t vtest_enb      : 1;
613                 uint64_t bist_enb       : 1;
614                 uint64_t tdata_sel      : 1;
615                 uint64_t taddr_in       : 4;
616                 uint64_t tdata_in       : 8;
617                 uint64_t ate_reset      : 1;
618         } cn30xx;
619         /**
620          * struct cvmx_usbnx_usbp_ctl_status_cn50xx
621          * @txrisetune: HS Transmitter Rise/Fall Time Adjustment
622          * @txvreftune: HS DC Voltage Level Adjustment
623          * @txfslstune: FS/LS Source Impedence Adjustment
624          * @txhsxvtune: Transmitter High-Speed Crossover Adjustment
625          * @sqrxtune: Squelch Threshold Adjustment
626          * @compdistune: Disconnect Threshold Adjustment
627          * @otgtune: VBUS Valid Threshold Adjustment
628          * @otgdisable: OTG Block Disable
629          * @portreset: Per_Port Reset
630          * @drvvbus: Drive VBUS
631          * @lsbist: Low-Speed BIST Enable.
632          * @fsbist: Full-Speed BIST Enable.
633          * @hsbist: High-Speed BIST Enable.
634          * @bist_done: PHY Bist Done.
635          *      Asserted at the end of the PHY BIST sequence.
636          * @bist_err: PHY Bist Error.
637          *      Indicates an internal error was detected during
638          *      the BIST sequence.
639          * @tdata_out: PHY Test Data Out.
640          *      Presents either internaly generated signals or
641          *      test register contents, based upon the value of
642          *      test_data_out_sel.
643          * @txpreemphasistune: HS Transmitter Pre-Emphasis Enable
644          * @dma_bmode: When set to 1 the L2C DMA address will be updated
645          *      with byte-counts between packets. When set to 0
646          *      the L2C DMA address is incremented to the next
647          *      4-byte aligned address after adding byte-count.
648          * @usbc_end: Bigendian input to the USB Core. This should be
649          *      set to '0' for operation.
650          * @usbp_bist: PHY, This is cleared '0' to run BIST on the USBP.
651          * @tclk: PHY Test Clock, used to load TDATA_IN to the USBP.
652          * @dp_pulld: PHY DP_PULLDOWN input to the USB-PHY.
653          *      This signal enables the pull-down resistance on
654          *      the D+ line. '1' pull down-resistance is connected
655          *      to D+/ '0' pull down resistance is not connected
656          *      to D+. When an A/B device is acting as a host
657          *      (downstream-facing port), dp_pulldown and
658          *      dm_pulldown are enabled. This must not toggle
659          *      during normal opeartion.
660          * @dm_pulld: PHY DM_PULLDOWN input to the USB-PHY.
661          *      This signal enables the pull-down resistance on
662          *      the D- line. '1' pull down-resistance is connected
663          *      to D-. '0' pull down resistance is not connected
664          *      to D-. When an A/B device is acting as a host
665          *      (downstream-facing port), dp_pulldown and
666          *      dm_pulldown are enabled. This must not toggle
667          *      during normal opeartion.
668          * @hst_mode: When '0' the USB is acting as HOST, when '1'
669          *      USB is acting as device. This field needs to be
670          *      set while the USB is in reset.
671          * @tx_bs_enh: Transmit Bit Stuffing on [15:8].
672          *      Enables or disables bit stuffing on data[15:8]
673          *      when bit-stuffing is enabled.
674          * @tx_bs_en: Transmit Bit Stuffing on [7:0].
675          *      Enables or disables bit stuffing on data[7:0]
676          *      when bit-stuffing is enabled.
677          * @loop_enb: PHY Loopback Test Enable.
678          *      '1': During data transmission the receive is
679          *      enabled.
680          *      '0': During data transmission the receive is
681          *      disabled.
682          *      Must be '0' for normal operation.
683          * @vtest_enb: Analog Test Pin Enable.
684          *      '1' The PHY's analog_test pin is enabled for the
685          *      input and output of applicable analog test signals.
686          *      '0' THe analog_test pin is disabled.
687          * @bist_enb: Built-In Self Test Enable.
688          *      Used to activate BIST in the PHY.
689          * @tdata_sel: Test Data Out Select.
690          *      '1' test_data_out[3:0] (PHY) register contents
691          *      are output. '0' internaly generated signals are
692          *      output.
693          * @taddr_in: Mode Address for Test Interface.
694          *      Specifies the register address for writing to or
695          *      reading from the PHY test interface register.
696          * @tdata_in: Internal Testing Register Input Data and Select
697          *      This is a test bus. Data is present on [3:0],
698          *      and its corresponding select (enable) is present
699          *      on bits [7:4].
700          * @ate_reset: Reset input from automatic test equipment.
701          *      This is a test signal. When the USB Core is
702          *      powered up (not in Susned Mode), an automatic
703          *      tester can use this to disable phy_clock and
704          *      free_clk, then re-eanable them with an aligned
705          *      phase.
706          *      '1': The phy_clk and free_clk outputs are
707          *      disabled. "0": The phy_clock and free_clk outputs
708          *      are available within a specific period after the
709          *      de-assertion.
710          */
711         struct cvmx_usbnx_usbp_ctl_status_cn50xx {
712                 uint64_t txrisetune             : 1;
713                 uint64_t txvreftune             : 4;
714                 uint64_t txfslstune             : 4;
715                 uint64_t txhsxvtune             : 2;
716                 uint64_t sqrxtune               : 3;
717                 uint64_t compdistune            : 3;
718                 uint64_t otgtune                : 3;
719                 uint64_t otgdisable             : 1;
720                 uint64_t portreset              : 1;
721                 uint64_t drvvbus                : 1;
722                 uint64_t lsbist                 : 1;
723                 uint64_t fsbist                 : 1;
724                 uint64_t hsbist                 : 1;
725                 uint64_t bist_done              : 1;
726                 uint64_t bist_err               : 1;
727                 uint64_t tdata_out              : 4;
728                 uint64_t reserved_31_31         : 1;
729                 uint64_t txpreemphasistune      : 1;
730                 uint64_t dma_bmode              : 1;
731                 uint64_t usbc_end               : 1;
732                 uint64_t usbp_bist              : 1;
733                 uint64_t tclk                   : 1;
734                 uint64_t dp_pulld               : 1;
735                 uint64_t dm_pulld               : 1;
736                 uint64_t hst_mode               : 1;
737                 uint64_t reserved_19_22         : 4;
738                 uint64_t tx_bs_enh              : 1;
739                 uint64_t tx_bs_en               : 1;
740                 uint64_t loop_enb               : 1;
741                 uint64_t vtest_enb              : 1;
742                 uint64_t bist_enb               : 1;
743                 uint64_t tdata_sel              : 1;
744                 uint64_t taddr_in               : 4;
745                 uint64_t tdata_in               : 8;
746                 uint64_t ate_reset              : 1;
747         } cn50xx;
748         /**
749          * struct cvmx_usbnx_usbp_ctl_status_cn52xx
750          * @txrisetune: HS Transmitter Rise/Fall Time Adjustment
751          * @txvreftune: HS DC Voltage Level Adjustment
752          * @txfslstune: FS/LS Source Impedence Adjustment
753          * @txhsxvtune: Transmitter High-Speed Crossover Adjustment
754          * @sqrxtune: Squelch Threshold Adjustment
755          * @compdistune: Disconnect Threshold Adjustment
756          * @otgtune: VBUS Valid Threshold Adjustment
757          * @otgdisable: OTG Block Disable
758          * @portreset: Per_Port Reset
759          * @drvvbus: Drive VBUS
760          * @lsbist: Low-Speed BIST Enable.
761          * @fsbist: Full-Speed BIST Enable.
762          * @hsbist: High-Speed BIST Enable.
763          * @bist_done: PHY Bist Done.
764          *      Asserted at the end of the PHY BIST sequence.
765          * @bist_err: PHY Bist Error.
766          *      Indicates an internal error was detected during
767          *      the BIST sequence.
768          * @tdata_out: PHY Test Data Out.
769          *      Presents either internaly generated signals or
770          *      test register contents, based upon the value of
771          *      test_data_out_sel.
772          * @siddq: Drives the USBP (USB-PHY) SIDDQ input.
773          *      Normally should be set to zero.
774          *      When customers have no intent to use USB PHY
775          *      interface, they should:
776          *      - still provide 3.3V to USB_VDD33, and
777          *      - tie USB_REXT to 3.3V supply, and
778          *      - set USBN*_USBP_CTL_STATUS[SIDDQ]=1
779          * @txpreemphasistune: HS Transmitter Pre-Emphasis Enable
780          * @dma_bmode: When set to 1 the L2C DMA address will be updated
781          *      with byte-counts between packets. When set to 0
782          *      the L2C DMA address is incremented to the next
783          *      4-byte aligned address after adding byte-count.
784          * @usbc_end: Bigendian input to the USB Core. This should be
785          *      set to '0' for operation.
786          * @usbp_bist: PHY, This is cleared '0' to run BIST on the USBP.
787          * @tclk: PHY Test Clock, used to load TDATA_IN to the USBP.
788          * @dp_pulld: PHY DP_PULLDOWN input to the USB-PHY.
789          *      This signal enables the pull-down resistance on
790          *      the D+ line. '1' pull down-resistance is connected
791          *      to D+/ '0' pull down resistance is not connected
792          *      to D+. When an A/B device is acting as a host
793          *      (downstream-facing port), dp_pulldown and
794          *      dm_pulldown are enabled. This must not toggle
795          *      during normal opeartion.
796          * @dm_pulld: PHY DM_PULLDOWN input to the USB-PHY.
797          *      This signal enables the pull-down resistance on
798          *      the D- line. '1' pull down-resistance is connected
799          *      to D-. '0' pull down resistance is not connected
800          *      to D-. When an A/B device is acting as a host
801          *      (downstream-facing port), dp_pulldown and
802          *      dm_pulldown are enabled. This must not toggle
803          *      during normal opeartion.
804          * @hst_mode: When '0' the USB is acting as HOST, when '1'
805          *      USB is acting as device. This field needs to be
806          *      set while the USB is in reset.
807          * @tx_bs_enh: Transmit Bit Stuffing on [15:8].
808          *      Enables or disables bit stuffing on data[15:8]
809          *      when bit-stuffing is enabled.
810          * @tx_bs_en: Transmit Bit Stuffing on [7:0].
811          *      Enables or disables bit stuffing on data[7:0]
812          *      when bit-stuffing is enabled.
813          * @loop_enb: PHY Loopback Test Enable.
814          *      '1': During data transmission the receive is
815          *      enabled.
816          *      '0': During data transmission the receive is
817          *      disabled.
818          *      Must be '0' for normal operation.
819          * @vtest_enb: Analog Test Pin Enable.
820          *      '1' The PHY's analog_test pin is enabled for the
821          *      input and output of applicable analog test signals.
822          *      '0' THe analog_test pin is disabled.
823          * @bist_enb: Built-In Self Test Enable.
824          *      Used to activate BIST in the PHY.
825          * @tdata_sel: Test Data Out Select.
826          *      '1' test_data_out[3:0] (PHY) register contents
827          *      are output. '0' internaly generated signals are
828          *      output.
829          * @taddr_in: Mode Address for Test Interface.
830          *      Specifies the register address for writing to or
831          *      reading from the PHY test interface register.
832          * @tdata_in: Internal Testing Register Input Data and Select
833          *      This is a test bus. Data is present on [3:0],
834          *      and its corresponding select (enable) is present
835          *      on bits [7:4].
836          * @ate_reset: Reset input from automatic test equipment.
837          *      This is a test signal. When the USB Core is
838          *      powered up (not in Susned Mode), an automatic
839          *      tester can use this to disable phy_clock and
840          *      free_clk, then re-eanable them with an aligned
841          *      phase.
842          *      '1': The phy_clk and free_clk outputs are
843          *      disabled. "0": The phy_clock and free_clk outputs
844          *      are available within a specific period after the
845          *      de-assertion.
846          */
847         struct cvmx_usbnx_usbp_ctl_status_cn52xx {
848                 uint64_t txrisetune             : 1;
849                 uint64_t txvreftune             : 4;
850                 uint64_t txfslstune             : 4;
851                 uint64_t txhsxvtune             : 2;
852                 uint64_t sqrxtune               : 3;
853                 uint64_t compdistune            : 3;
854                 uint64_t otgtune                : 3;
855                 uint64_t otgdisable             : 1;
856                 uint64_t portreset              : 1;
857                 uint64_t drvvbus                : 1;
858                 uint64_t lsbist                 : 1;
859                 uint64_t fsbist                 : 1;
860                 uint64_t hsbist                 : 1;
861                 uint64_t bist_done              : 1;
862                 uint64_t bist_err               : 1;
863                 uint64_t tdata_out              : 4;
864                 uint64_t siddq                  : 1;
865                 uint64_t txpreemphasistune      : 1;
866                 uint64_t dma_bmode              : 1;
867                 uint64_t usbc_end               : 1;
868                 uint64_t usbp_bist              : 1;
869                 uint64_t tclk                   : 1;
870                 uint64_t dp_pulld               : 1;
871                 uint64_t dm_pulld               : 1;
872                 uint64_t hst_mode               : 1;
873                 uint64_t reserved_19_22         : 4;
874                 uint64_t tx_bs_enh              : 1;
875                 uint64_t tx_bs_en               : 1;
876                 uint64_t loop_enb               : 1;
877                 uint64_t vtest_enb              : 1;
878                 uint64_t bist_enb               : 1;
879                 uint64_t tdata_sel              : 1;
880                 uint64_t taddr_in               : 4;
881                 uint64_t tdata_in               : 8;
882                 uint64_t ate_reset              : 1;
883         } cn52xx;
884 };
885 typedef union cvmx_usbnx_usbp_ctl_status cvmx_usbnx_usbp_ctl_status_t;
886
887 #endif