1 /* ==========================================================================
2 * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_core_if.h $
7 * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,
8 * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
9 * otherwise expressly agreed to in writing between Synopsys and you.
11 * The Software IS NOT an item of Licensed Software or Licensed Product under
12 * any End User Software License Agreement or Agreement for Licensed Product
13 * with Synopsys or any supplement thereto. You are permitted to use and
14 * redistribute this Software in source and binary forms, with or without
15 * modification, provided that redistributions of source code must retain this
16 * notice. You may not view, use, disclose, copy or distribute this file or
17 * any information contained herein except pursuant to this license grant from
18 * Synopsys. If you do not agree with this notice, including the disclaimer
19 * below, then you are not authorized to use the Software.
21 * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
25 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
32 * ========================================================================== */
33 #if !defined(__DWC_CORE_IF_H__)
34 #define __DWC_CORE_IF_H__
39 * This file defines DWC_OTG Core API
42 struct dwc_otg_core_if
;
43 typedef struct dwc_otg_core_if dwc_otg_core_if_t
;
45 /** Maximum number of Periodic FIFOs */
46 #define MAX_PERIO_FIFOS 15
47 /** Maximum number of Periodic FIFOs */
48 #define MAX_TX_FIFOS 15
50 /** Maximum number of Endpoints/HostChannels */
51 #define MAX_EPS_CHANNELS 16
53 extern dwc_otg_core_if_t
*dwc_otg_cil_init(const uint32_t * _reg_base_addr
);
54 extern void dwc_otg_core_init(dwc_otg_core_if_t
* _core_if
);
55 extern void dwc_otg_cil_remove(dwc_otg_core_if_t
* _core_if
);
57 extern void dwc_otg_enable_global_interrupts(dwc_otg_core_if_t
* _core_if
);
58 extern void dwc_otg_disable_global_interrupts(dwc_otg_core_if_t
* _core_if
);
60 extern uint8_t dwc_otg_is_device_mode(dwc_otg_core_if_t
* _core_if
);
61 extern uint8_t dwc_otg_is_host_mode(dwc_otg_core_if_t
* _core_if
);
63 extern uint8_t dwc_otg_is_dma_enable(dwc_otg_core_if_t
* core_if
);
65 /** This function should be called on every hardware interrupt. */
66 extern int32_t dwc_otg_handle_common_intr(void *otg_dev
);
68 /** @name OTG Core Parameters */
72 * Specifies the OTG capabilities. The driver will automatically
73 * detect the value for this parameter if none is specified.
74 * 0 - HNP and SRP capable (default)
75 * 1 - SRP Only capable
76 * 2 - No HNP/SRP capable
78 extern int dwc_otg_set_param_otg_cap(dwc_otg_core_if_t
* core_if
, int32_t val
);
79 extern int32_t dwc_otg_get_param_otg_cap(dwc_otg_core_if_t
* core_if
);
80 #define DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE 0
81 #define DWC_OTG_CAP_PARAM_SRP_ONLY_CAPABLE 1
82 #define DWC_OTG_CAP_PARAM_NO_HNP_SRP_CAPABLE 2
83 #define dwc_param_otg_cap_default DWC_OTG_CAP_PARAM_HNP_SRP_CAPABLE
85 extern int dwc_otg_set_param_opt(dwc_otg_core_if_t
* core_if
, int32_t val
);
86 extern int32_t dwc_otg_get_param_opt(dwc_otg_core_if_t
* core_if
);
87 #define dwc_param_opt_default 1
90 * Specifies whether to use slave or DMA mode for accessing the data
91 * FIFOs. The driver will automatically detect the value for this
92 * parameter if none is specified.
94 * 1 - DMA (default, if available)
96 extern int dwc_otg_set_param_dma_enable(dwc_otg_core_if_t
* core_if
,
98 extern int32_t dwc_otg_get_param_dma_enable(dwc_otg_core_if_t
* core_if
);
99 #define dwc_param_dma_enable_default 1
102 * When DMA mode is enabled specifies whether to use
103 * address DMA or DMA Descritor mode for accessing the data
104 * FIFOs in device mode. The driver will automatically detect
105 * the value for this parameter if none is specified.
107 * 1 - DMA Descriptor(default, if available)
109 extern int dwc_otg_set_param_dma_desc_enable(dwc_otg_core_if_t
* core_if
,
111 extern int32_t dwc_otg_get_param_dma_desc_enable(dwc_otg_core_if_t
* core_if
);
112 //#define dwc_param_dma_desc_enable_default 1
113 #define dwc_param_dma_desc_enable_default 0 // Broadcom BCM2708
115 /** The DMA Burst size (applicable only for External DMA
116 * Mode). 1, 4, 8 16, 32, 64, 128, 256 (default 32)
118 extern int dwc_otg_set_param_dma_burst_size(dwc_otg_core_if_t
* core_if
,
120 extern int32_t dwc_otg_get_param_dma_burst_size(dwc_otg_core_if_t
* core_if
);
121 #define dwc_param_dma_burst_size_default 32
124 * Specifies the maximum speed of operation in host and device mode.
125 * The actual speed depends on the speed of the attached device and
126 * the value of phy_type. The actual speed depends on the speed of the
128 * 0 - High Speed (default)
131 extern int dwc_otg_set_param_speed(dwc_otg_core_if_t
* core_if
, int32_t val
);
132 extern int32_t dwc_otg_get_param_speed(dwc_otg_core_if_t
* core_if
);
133 #define dwc_param_speed_default 0
134 #define DWC_SPEED_PARAM_HIGH 0
135 #define DWC_SPEED_PARAM_FULL 1
137 /** Specifies whether low power mode is supported when attached
138 * to a Full Speed or Low Speed device in host mode.
139 * 0 - Don't support low power mode (default)
140 * 1 - Support low power mode
142 extern int dwc_otg_set_param_host_support_fs_ls_low_power(dwc_otg_core_if_t
*
143 core_if
, int32_t val
);
144 extern int32_t dwc_otg_get_param_host_support_fs_ls_low_power(dwc_otg_core_if_t
146 #define dwc_param_host_support_fs_ls_low_power_default 0
148 /** Specifies the PHY clock rate in low power mode when connected to a
149 * Low Speed device in host mode. This parameter is applicable only if
150 * HOST_SUPPORT_FS_LS_LOW_POWER is enabled. If PHY_TYPE is set to FS
151 * then defaults to 6 MHZ otherwise 48 MHZ.
156 extern int dwc_otg_set_param_host_ls_low_power_phy_clk(dwc_otg_core_if_t
*
157 core_if
, int32_t val
);
158 extern int32_t dwc_otg_get_param_host_ls_low_power_phy_clk(dwc_otg_core_if_t
*
160 #define dwc_param_host_ls_low_power_phy_clk_default 0
161 #define DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_48MHZ 0
162 #define DWC_HOST_LS_LOW_POWER_PHY_CLK_PARAM_6MHZ 1
165 * 0 - Use cC FIFO size parameters
166 * 1 - Allow dynamic FIFO sizing (default)
168 extern int dwc_otg_set_param_enable_dynamic_fifo(dwc_otg_core_if_t
* core_if
,
170 extern int32_t dwc_otg_get_param_enable_dynamic_fifo(dwc_otg_core_if_t
*
172 #define dwc_param_enable_dynamic_fifo_default 1
174 /** Total number of 4-byte words in the data FIFO memory. This
175 * memory includes the Rx FIFO, non-periodic Tx FIFO, and periodic
177 * 32 to 32768 (default 8192)
178 * Note: The total FIFO memory depth in the FPGA configuration is 8192.
180 extern int dwc_otg_set_param_data_fifo_size(dwc_otg_core_if_t
* core_if
,
182 extern int32_t dwc_otg_get_param_data_fifo_size(dwc_otg_core_if_t
* core_if
);
183 //#define dwc_param_data_fifo_size_default 8192
184 #define dwc_param_data_fifo_size_default 0xFF0 // Broadcom BCM2708
186 /** Number of 4-byte words in the Rx FIFO in device mode when dynamic
187 * FIFO sizing is enabled.
188 * 16 to 32768 (default 1064)
190 extern int dwc_otg_set_param_dev_rx_fifo_size(dwc_otg_core_if_t
* core_if
,
192 extern int32_t dwc_otg_get_param_dev_rx_fifo_size(dwc_otg_core_if_t
* core_if
);
193 #define dwc_param_dev_rx_fifo_size_default 1064
195 /** Number of 4-byte words in the non-periodic Tx FIFO in device mode
196 * when dynamic FIFO sizing is enabled.
197 * 16 to 32768 (default 1024)
199 extern int dwc_otg_set_param_dev_nperio_tx_fifo_size(dwc_otg_core_if_t
*
200 core_if
, int32_t val
);
201 extern int32_t dwc_otg_get_param_dev_nperio_tx_fifo_size(dwc_otg_core_if_t
*
203 #define dwc_param_dev_nperio_tx_fifo_size_default 1024
205 /** Number of 4-byte words in each of the periodic Tx FIFOs in device
206 * mode when dynamic FIFO sizing is enabled.
207 * 4 to 768 (default 256)
209 extern int dwc_otg_set_param_dev_perio_tx_fifo_size(dwc_otg_core_if_t
* core_if
,
210 int32_t val
, int fifo_num
);
211 extern int32_t dwc_otg_get_param_dev_perio_tx_fifo_size(dwc_otg_core_if_t
*
212 core_if
, int fifo_num
);
213 #define dwc_param_dev_perio_tx_fifo_size_default 256
215 /** Number of 4-byte words in the Rx FIFO in host mode when dynamic
216 * FIFO sizing is enabled.
217 * 16 to 32768 (default 1024)
219 extern int dwc_otg_set_param_host_rx_fifo_size(dwc_otg_core_if_t
* core_if
,
221 extern int32_t dwc_otg_get_param_host_rx_fifo_size(dwc_otg_core_if_t
* core_if
);
222 //#define dwc_param_host_rx_fifo_size_default 1024
223 #define dwc_param_host_rx_fifo_size_default 774 // Broadcom BCM2708
225 /** Number of 4-byte words in the non-periodic Tx FIFO in host mode
226 * when Dynamic FIFO sizing is enabled in the core.
227 * 16 to 32768 (default 1024)
229 extern int dwc_otg_set_param_host_nperio_tx_fifo_size(dwc_otg_core_if_t
*
230 core_if
, int32_t val
);
231 extern int32_t dwc_otg_get_param_host_nperio_tx_fifo_size(dwc_otg_core_if_t
*
233 //#define dwc_param_host_nperio_tx_fifo_size_default 1024
234 #define dwc_param_host_nperio_tx_fifo_size_default 0x100 // Broadcom BCM2708
236 /** Number of 4-byte words in the host periodic Tx FIFO when dynamic
237 * FIFO sizing is enabled.
238 * 16 to 32768 (default 1024)
240 extern int dwc_otg_set_param_host_perio_tx_fifo_size(dwc_otg_core_if_t
*
241 core_if
, int32_t val
);
242 extern int32_t dwc_otg_get_param_host_perio_tx_fifo_size(dwc_otg_core_if_t
*
244 //#define dwc_param_host_perio_tx_fifo_size_default 1024
245 #define dwc_param_host_perio_tx_fifo_size_default 0x200 // Broadcom BCM2708
247 /** The maximum transfer size supported in bytes.
248 * 2047 to 65,535 (default 65,535)
250 extern int dwc_otg_set_param_max_transfer_size(dwc_otg_core_if_t
* core_if
,
252 extern int32_t dwc_otg_get_param_max_transfer_size(dwc_otg_core_if_t
* core_if
);
253 #define dwc_param_max_transfer_size_default 65535
255 /** The maximum number of packets in a transfer.
256 * 15 to 511 (default 511)
258 extern int dwc_otg_set_param_max_packet_count(dwc_otg_core_if_t
* core_if
,
260 extern int32_t dwc_otg_get_param_max_packet_count(dwc_otg_core_if_t
* core_if
);
261 #define dwc_param_max_packet_count_default 511
263 /** The number of host channel registers to use.
264 * 1 to 16 (default 12)
265 * Note: The FPGA configuration supports a maximum of 12 host channels.
267 extern int dwc_otg_set_param_host_channels(dwc_otg_core_if_t
* core_if
,
269 extern int32_t dwc_otg_get_param_host_channels(dwc_otg_core_if_t
* core_if
);
270 //#define dwc_param_host_channels_default 12
271 #define dwc_param_host_channels_default 8 // Broadcom BCM2708
273 /** The number of endpoints in addition to EP0 available for device
275 * 1 to 15 (default 6 IN and OUT)
276 * Note: The FPGA configuration supports a maximum of 6 IN and OUT
277 * endpoints in addition to EP0.
279 extern int dwc_otg_set_param_dev_endpoints(dwc_otg_core_if_t
* core_if
,
281 extern int32_t dwc_otg_get_param_dev_endpoints(dwc_otg_core_if_t
* core_if
);
282 #define dwc_param_dev_endpoints_default 6
285 * Specifies the type of PHY interface to use. By default, the driver
286 * will automatically detect the phy_type.
289 * 1 - UTMI+ (default)
292 extern int dwc_otg_set_param_phy_type(dwc_otg_core_if_t
* core_if
, int32_t val
);
293 extern int32_t dwc_otg_get_param_phy_type(dwc_otg_core_if_t
* core_if
);
294 #define DWC_PHY_TYPE_PARAM_FS 0
295 #define DWC_PHY_TYPE_PARAM_UTMI 1
296 #define DWC_PHY_TYPE_PARAM_ULPI 2
297 #define dwc_param_phy_type_default DWC_PHY_TYPE_PARAM_UTMI
300 * Specifies the UTMI+ Data Width. This parameter is
301 * applicable for a PHY_TYPE of UTMI+ or ULPI. (For a ULPI
302 * PHY_TYPE, this parameter indicates the data width between
303 * the MAC and the ULPI Wrapper.) Also, this parameter is
304 * applicable only if the OTG_HSPHY_WIDTH cC parameter was set
305 * to "8 and 16 bits", meaning that the core has been
306 * configured to work at either data path width.
308 * 8 or 16 bits (default 16)
310 extern int dwc_otg_set_param_phy_utmi_width(dwc_otg_core_if_t
* core_if
,
312 extern int32_t dwc_otg_get_param_phy_utmi_width(dwc_otg_core_if_t
* core_if
);
313 //#define dwc_param_phy_utmi_width_default 16
314 #define dwc_param_phy_utmi_width_default 8 // Broadcom BCM2708
317 * Specifies whether the ULPI operates at double or single
318 * data rate. This parameter is only applicable if PHY_TYPE is
321 * 0 - single data rate ULPI interface with 8 bit wide data
323 * 1 - double data rate ULPI interface with 4 bit wide data
326 extern int dwc_otg_set_param_phy_ulpi_ddr(dwc_otg_core_if_t
* core_if
,
328 extern int32_t dwc_otg_get_param_phy_ulpi_ddr(dwc_otg_core_if_t
* core_if
);
329 #define dwc_param_phy_ulpi_ddr_default 0
332 * Specifies whether to use the internal or external supply to
333 * drive the vbus with a ULPI phy.
335 extern int dwc_otg_set_param_phy_ulpi_ext_vbus(dwc_otg_core_if_t
* core_if
,
337 extern int32_t dwc_otg_get_param_phy_ulpi_ext_vbus(dwc_otg_core_if_t
* core_if
);
338 #define DWC_PHY_ULPI_INTERNAL_VBUS 0
339 #define DWC_PHY_ULPI_EXTERNAL_VBUS 1
340 #define dwc_param_phy_ulpi_ext_vbus_default DWC_PHY_ULPI_INTERNAL_VBUS
343 * Specifies whether to use the I2Cinterface for full speed PHY. This
344 * parameter is only applicable if PHY_TYPE is FS.
348 extern int dwc_otg_set_param_i2c_enable(dwc_otg_core_if_t
* core_if
,
350 extern int32_t dwc_otg_get_param_i2c_enable(dwc_otg_core_if_t
* core_if
);
351 #define dwc_param_i2c_enable_default 0
353 extern int dwc_otg_set_param_ulpi_fs_ls(dwc_otg_core_if_t
* core_if
,
355 extern int32_t dwc_otg_get_param_ulpi_fs_ls(dwc_otg_core_if_t
* core_if
);
356 #define dwc_param_ulpi_fs_ls_default 0
358 extern int dwc_otg_set_param_ts_dline(dwc_otg_core_if_t
* core_if
, int32_t val
);
359 extern int32_t dwc_otg_get_param_ts_dline(dwc_otg_core_if_t
* core_if
);
360 #define dwc_param_ts_dline_default 0
363 * Specifies whether dedicated transmit FIFOs are
364 * enabled for non periodic IN endpoints in device mode
368 extern int dwc_otg_set_param_en_multiple_tx_fifo(dwc_otg_core_if_t
* core_if
,
370 extern int32_t dwc_otg_get_param_en_multiple_tx_fifo(dwc_otg_core_if_t
*
372 #define dwc_param_en_multiple_tx_fifo_default 1
374 /** Number of 4-byte words in each of the Tx FIFOs in device
375 * mode when dynamic FIFO sizing is enabled.
376 * 4 to 768 (default 256)
378 extern int dwc_otg_set_param_dev_tx_fifo_size(dwc_otg_core_if_t
* core_if
,
379 int fifo_num
, int32_t val
);
380 extern int32_t dwc_otg_get_param_dev_tx_fifo_size(dwc_otg_core_if_t
* core_if
,
382 #define dwc_param_dev_tx_fifo_size_default 768
384 /** Thresholding enable flag-
385 * bit 0 - enable non-ISO Tx thresholding
386 * bit 1 - enable ISO Tx thresholding
387 * bit 2 - enable Rx thresholding
389 extern int dwc_otg_set_param_thr_ctl(dwc_otg_core_if_t
* core_if
, int32_t val
);
390 extern int32_t dwc_otg_get_thr_ctl(dwc_otg_core_if_t
* core_if
, int fifo_num
);
391 #define dwc_param_thr_ctl_default 0
393 /** Thresholding length for Tx
394 * FIFOs in 32 bit DWORDs
396 extern int dwc_otg_set_param_tx_thr_length(dwc_otg_core_if_t
* core_if
,
398 extern int32_t dwc_otg_get_tx_thr_length(dwc_otg_core_if_t
* core_if
);
399 #define dwc_param_tx_thr_length_default 64
401 /** Thresholding length for Rx
402 * FIFOs in 32 bit DWORDs
404 extern int dwc_otg_set_param_rx_thr_length(dwc_otg_core_if_t
* core_if
,
406 extern int32_t dwc_otg_get_rx_thr_length(dwc_otg_core_if_t
* core_if
);
407 #define dwc_param_rx_thr_length_default 64
410 * Specifies whether LPM (Link Power Management) support is enabled
412 extern int dwc_otg_set_param_lpm_enable(dwc_otg_core_if_t
* core_if
,
414 extern int32_t dwc_otg_get_param_lpm_enable(dwc_otg_core_if_t
* core_if
);
415 #define dwc_param_lpm_enable_default 1
418 * Specifies whether PTI enhancement is enabled
420 extern int dwc_otg_set_param_pti_enable(dwc_otg_core_if_t
* core_if
,
422 extern int32_t dwc_otg_get_param_pti_enable(dwc_otg_core_if_t
* core_if
);
423 #define dwc_param_pti_enable_default 0
426 * Specifies whether MPI enhancement is enabled
428 extern int dwc_otg_set_param_mpi_enable(dwc_otg_core_if_t
* core_if
,
430 extern int32_t dwc_otg_get_param_mpi_enable(dwc_otg_core_if_t
* core_if
);
431 #define dwc_param_mpi_enable_default 0
434 * Specifies whether ADP capability is enabled
436 extern int dwc_otg_set_param_adp_enable(dwc_otg_core_if_t
* core_if
,
438 extern int32_t dwc_otg_get_param_adp_enable(dwc_otg_core_if_t
* core_if
);
439 #define dwc_param_adp_enable_default 0
442 * Specifies whether IC_USB capability is enabled
445 extern int dwc_otg_set_param_ic_usb_cap(dwc_otg_core_if_t
* core_if
,
447 extern int32_t dwc_otg_get_param_ic_usb_cap(dwc_otg_core_if_t
* core_if
);
448 #define dwc_param_ic_usb_cap_default 0
450 extern int dwc_otg_set_param_ahb_thr_ratio(dwc_otg_core_if_t
* core_if
,
452 extern int32_t dwc_otg_get_param_ahb_thr_ratio(dwc_otg_core_if_t
* core_if
);
453 #define dwc_param_ahb_thr_ratio_default 0
455 extern int dwc_otg_set_param_power_down(dwc_otg_core_if_t
* core_if
,
457 extern int32_t dwc_otg_get_param_power_down(dwc_otg_core_if_t
* core_if
);
458 #define dwc_param_power_down_default 0
460 extern int dwc_otg_set_param_reload_ctl(dwc_otg_core_if_t
* core_if
,
462 extern int32_t dwc_otg_get_param_reload_ctl(dwc_otg_core_if_t
* core_if
);
463 #define dwc_param_reload_ctl_default 0
465 extern int dwc_otg_set_param_dev_out_nak(dwc_otg_core_if_t
* core_if
,
467 extern int32_t dwc_otg_get_param_dev_out_nak(dwc_otg_core_if_t
* core_if
);
468 #define dwc_param_dev_out_nak_default 0
470 extern int dwc_otg_set_param_cont_on_bna(dwc_otg_core_if_t
* core_if
,
472 extern int32_t dwc_otg_get_param_cont_on_bna(dwc_otg_core_if_t
* core_if
);
473 #define dwc_param_cont_on_bna_default 0
475 extern int dwc_otg_set_param_ahb_single(dwc_otg_core_if_t
* core_if
,
477 extern int32_t dwc_otg_get_param_ahb_single(dwc_otg_core_if_t
* core_if
);
478 #define dwc_param_ahb_single_default 0
480 extern int dwc_otg_set_param_otg_ver(dwc_otg_core_if_t
* core_if
, int32_t val
);
481 extern int32_t dwc_otg_get_param_otg_ver(dwc_otg_core_if_t
* core_if
);
482 #define dwc_param_otg_ver_default 0
486 /** @name Access to registers and bit-fields */
489 * Dump core registers and SPRAM
491 extern void dwc_otg_dump_dev_registers(dwc_otg_core_if_t
* _core_if
);
492 extern void dwc_otg_dump_spram(dwc_otg_core_if_t
* _core_if
);
493 extern void dwc_otg_dump_host_registers(dwc_otg_core_if_t
* _core_if
);
494 extern void dwc_otg_dump_global_registers(dwc_otg_core_if_t
* _core_if
);
497 * Get host negotiation status.
499 extern uint32_t dwc_otg_get_hnpstatus(dwc_otg_core_if_t
* core_if
);
504 extern uint32_t dwc_otg_get_srpstatus(dwc_otg_core_if_t
* core_if
);
507 * Set hnpreq bit in the GOTGCTL register.
509 extern void dwc_otg_set_hnpreq(dwc_otg_core_if_t
* core_if
, uint32_t val
);
512 * Get Content of SNPSID register.
514 extern uint32_t dwc_otg_get_gsnpsid(dwc_otg_core_if_t
* core_if
);
518 * Returns 0 if in device mode, and 1 if in host mode.
520 extern uint32_t dwc_otg_get_mode(dwc_otg_core_if_t
* core_if
);
523 * Get value of hnpcapable field in the GUSBCFG register
525 extern uint32_t dwc_otg_get_hnpcapable(dwc_otg_core_if_t
* core_if
);
527 * Set value of hnpcapable field in the GUSBCFG register
529 extern void dwc_otg_set_hnpcapable(dwc_otg_core_if_t
* core_if
, uint32_t val
);
532 * Get value of srpcapable field in the GUSBCFG register
534 extern uint32_t dwc_otg_get_srpcapable(dwc_otg_core_if_t
* core_if
);
536 * Set value of srpcapable field in the GUSBCFG register
538 extern void dwc_otg_set_srpcapable(dwc_otg_core_if_t
* core_if
, uint32_t val
);
541 * Get value of devspeed field in the DCFG register
543 extern uint32_t dwc_otg_get_devspeed(dwc_otg_core_if_t
* core_if
);
545 * Set value of devspeed field in the DCFG register
547 extern void dwc_otg_set_devspeed(dwc_otg_core_if_t
* core_if
, uint32_t val
);
550 * Get the value of busconnected field from the HPRT0 register
552 extern uint32_t dwc_otg_get_busconnected(dwc_otg_core_if_t
* core_if
);
555 * Gets the device enumeration Speed.
557 extern uint32_t dwc_otg_get_enumspeed(dwc_otg_core_if_t
* core_if
);
560 * Get value of prtpwr field from the HPRT0 register
562 extern uint32_t dwc_otg_get_prtpower(dwc_otg_core_if_t
* core_if
);
565 * Get value of flag indicating core state - hibernated or not
567 extern uint32_t dwc_otg_get_core_state(dwc_otg_core_if_t
* core_if
);
570 * Set value of prtpwr field from the HPRT0 register
572 extern void dwc_otg_set_prtpower(dwc_otg_core_if_t
* core_if
, uint32_t val
);
575 * Get value of prtsusp field from the HPRT0 regsiter
577 extern uint32_t dwc_otg_get_prtsuspend(dwc_otg_core_if_t
* core_if
);
579 * Set value of prtpwr field from the HPRT0 register
581 extern void dwc_otg_set_prtsuspend(dwc_otg_core_if_t
* core_if
, uint32_t val
);
584 * Get value of ModeChTimEn field from the HCFG regsiter
586 extern uint32_t dwc_otg_get_mode_ch_tim(dwc_otg_core_if_t
* core_if
);
588 * Set value of ModeChTimEn field from the HCFG regsiter
590 extern void dwc_otg_set_mode_ch_tim(dwc_otg_core_if_t
* core_if
, uint32_t val
);
593 * Get value of Fram Interval field from the HFIR regsiter
595 extern uint32_t dwc_otg_get_fr_interval(dwc_otg_core_if_t
* core_if
);
597 * Set value of Frame Interval field from the HFIR regsiter
599 extern void dwc_otg_set_fr_interval(dwc_otg_core_if_t
* core_if
, uint32_t val
);
602 * Set value of prtres field from the HPRT0 register
605 extern void dwc_otg_set_prtresume(dwc_otg_core_if_t
* core_if
, uint32_t val
);
608 * Get value of rmtwkupsig bit in DCTL register
610 extern uint32_t dwc_otg_get_remotewakesig(dwc_otg_core_if_t
* core_if
);
613 * Get value of prt_sleep_sts field from the GLPMCFG register
615 extern uint32_t dwc_otg_get_lpm_portsleepstatus(dwc_otg_core_if_t
* core_if
);
618 * Get value of rem_wkup_en field from the GLPMCFG register
620 extern uint32_t dwc_otg_get_lpm_remotewakeenabled(dwc_otg_core_if_t
* core_if
);
623 * Get value of appl_resp field from the GLPMCFG register
625 extern uint32_t dwc_otg_get_lpmresponse(dwc_otg_core_if_t
* core_if
);
627 * Set value of appl_resp field from the GLPMCFG register
629 extern void dwc_otg_set_lpmresponse(dwc_otg_core_if_t
* core_if
, uint32_t val
);
632 * Get value of hsic_connect field from the GLPMCFG register
634 extern uint32_t dwc_otg_get_hsic_connect(dwc_otg_core_if_t
* core_if
);
636 * Set value of hsic_connect field from the GLPMCFG register
638 extern void dwc_otg_set_hsic_connect(dwc_otg_core_if_t
* core_if
, uint32_t val
);
641 * Get value of inv_sel_hsic field from the GLPMCFG register.
643 extern uint32_t dwc_otg_get_inv_sel_hsic(dwc_otg_core_if_t
* core_if
);
645 * Set value of inv_sel_hsic field from the GLPMFG register.
647 extern void dwc_otg_set_inv_sel_hsic(dwc_otg_core_if_t
* core_if
, uint32_t val
);
650 * Some functions for accessing registers
656 extern uint32_t dwc_otg_get_gotgctl(dwc_otg_core_if_t
* core_if
);
657 extern void dwc_otg_set_gotgctl(dwc_otg_core_if_t
* core_if
, uint32_t val
);
662 extern uint32_t dwc_otg_get_gusbcfg(dwc_otg_core_if_t
* core_if
);
663 extern void dwc_otg_set_gusbcfg(dwc_otg_core_if_t
* core_if
, uint32_t val
);
668 extern uint32_t dwc_otg_get_grxfsiz(dwc_otg_core_if_t
* core_if
);
669 extern void dwc_otg_set_grxfsiz(dwc_otg_core_if_t
* core_if
, uint32_t val
);
674 extern uint32_t dwc_otg_get_gnptxfsiz(dwc_otg_core_if_t
* core_if
);
675 extern void dwc_otg_set_gnptxfsiz(dwc_otg_core_if_t
* core_if
, uint32_t val
);
677 extern uint32_t dwc_otg_get_gpvndctl(dwc_otg_core_if_t
* core_if
);
678 extern void dwc_otg_set_gpvndctl(dwc_otg_core_if_t
* core_if
, uint32_t val
);
683 extern uint32_t dwc_otg_get_ggpio(dwc_otg_core_if_t
* core_if
);
684 extern void dwc_otg_set_ggpio(dwc_otg_core_if_t
* core_if
, uint32_t val
);
689 extern uint32_t dwc_otg_get_guid(dwc_otg_core_if_t
* core_if
);
690 extern void dwc_otg_set_guid(dwc_otg_core_if_t
* core_if
, uint32_t val
);
695 extern uint32_t dwc_otg_get_hprt0(dwc_otg_core_if_t
* core_if
);
696 extern void dwc_otg_set_hprt0(dwc_otg_core_if_t
* core_if
, uint32_t val
);
701 extern uint32_t dwc_otg_get_hptxfsiz(dwc_otg_core_if_t
* core_if
);
705 #endif /* __DWC_CORE_IF_H__ */