| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * Samsung EXYNOS SoC series USB PHY driver | |
| * | |
| * Copyright (C) 2022 Samsung Electronics Co., Ltd. | |
| */ | |
| #ifndef _USB_USBPHY_CAL_PHY_EXYNOS_USBCON_LINK_SFR_H_ | |
| #define _USB_USBPHY_CAL_PHY_EXYNOS_USBCON_LINK_SFR_H_ | |
| #define USBCON_REG_VERSION 0x0000 | |
| /* | |
| * Description: USB Sub-CTRL version register | |
| * [31:24] - Major version, | |
| * [23:16] - Minor version | |
| * [15:8] - USB3 PHY | |
| * 8'h00 : None | |
| * 8'h01 : SEC SS Combo PHY | |
| * 8'h02 : SEC SSP Combo PHY | |
| * 8'h41 : Synopsys 30 PHY (SS+HS) | |
| * 8'h42 : Synopsys SS PHY | |
| * 8'h43 : Synopsys SSP PHY | |
| * [7:0] - USB2 PHY | |
| * 8'h00 : None | |
| * 8'h41 : Synopsys 20 PHY | |
| * 8'h42 : Synopsys eUSB PHY | |
| */ | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[7:0] : USB2 PHY */ | |
| unsigned USB2PHY : 8; | |
| /* bit[15:8] : USB3 PHY */ | |
| unsigned USB3PHY : 8; | |
| /* bit[23:16] : */ | |
| unsigned MINOR_VER : 8; | |
| /* bit[31:24] : */ | |
| unsigned MAJOR_VER : 8; | |
| } b; | |
| } USBCON_REG_VERSION_o, *USBCON_REG_VERSION_p; | |
| #define USBCON_REG_LINKCTRL 0x0004 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* | |
| * bit[0] | |
| * Function: This signal is used to generate the PME# (Power Management Event). | |
| * When the Run/Stop bit of the USB Command Register is cleared during USB suspend | |
| * mode, the core cannot generate event and cannot assert regular interrupt. | |
| * In this case, the core asserts pme_generation signal to report any wakeup | |
| * condition if pme_en is high. If the system does not support PCI-like PME | |
| * interface, then it should not clear the Run/Stop bit during USB suspend mode. | |
| * In this case, the core generates event and asserts interrupt when there is | |
| * any wakeup event. If the pme interface is not used, connect pme_en to zero and | |
| * keep pme_generation unconnected. This is a level signal that gets cleared when | |
| * the software clears CSC, OCC and PLC bits in all the PORTSC registers. | |
| * In device mode connect pme_en to zero and keep pme_generation unconnected. | |
| */ | |
| unsigned pme_generation:1; | |
| /* | |
| * bit[1] Enable Signal for the pme_generation. | |
| * Function: Enable the core to assert pme_generation. Refer to the | |
| * description of pme_generation signal for details. | |
| */ | |
| unsigned pme_en:1; | |
| /* | |
| * Bit[2] Indicates that a Host System Error has occurred as | |
| * reflected in the USBSTS.HSE field. | |
| * It can occur when the host controller encounters an 'Error' | |
| * response in the AHB, the AXI, or the Native Master Bus. | |
| */ | |
| unsigned host_system_err:1; | |
| /* Bit[7:4] */ | |
| unsigned polarity_inversion:1; | |
| /* | |
| * This signal disables the internal bus filters that are enabled by | |
| * DWC_USB31_EN_BUS_FILTERS coreConsultant parameter. This static signal is present | |
| * only when DWC_USB31_EN_BUS_FILTERS is 1. It is expected that this signal is set | |
| * or reset at power-on reset and is not changed during the normal operation of the | |
| * controller. | |
| * | |
| * The function of each bit is: | |
| * ■ bus_filter_bypass[2]: Bypass the filter for utmisrp_bvalid | |
| * ■ bus_filter_bypass[1]: Bypass the filter for pipe_PowerPresent all U3 ports | |
| * ■ bus_filter_bypass[0]: Bypass the filter for utmiotg_vbusvalid all U2 ports | |
| * In Host mode, internal bus filters are not needed. | |
| * Therefore, bus_filter_bypass[2:0] must be connected to logic high value (3'b111) | |
| */ | |
| unsigned bus_filter_bypass:4; | |
| /* Bit[8] disable HWACG */ | |
| unsigned force_qact:1; | |
| /* Bit[9] Masking bvaild signal for HWACG */ | |
| unsigned dis_bvalid_qact:1; | |
| /* Bit[10] Masking bvaild signal for HWACG */ | |
| unsigned dis_vbusvalid_qact:1; | |
| /* Bit[11] Masking bvaild signal for HWACG */ | |
| unsigned dis_id0_qact:1; | |
| /* Bit[12] Masking bvaild signal for HWACG */ | |
| unsigned dis_linkgate_qact:1; | |
| /* Bit[13] Masking bvaild signal for HWACG */ | |
| unsigned dis_buspend_qact:1; | |
| /* Bit[15:14] Reserved */ | |
| unsigned RSVD15_14:2; | |
| /* Bit[16] */ | |
| unsigned force_pipe_en:1; | |
| /* Bit[17] */ | |
| unsigned force_phystatus:1; | |
| /* Bit[18] */ | |
| unsigned force_rxelecidle:1; | |
| /* Bit[19] Reserved */ | |
| unsigned RSVD19:1; | |
| /* Bit[21:20] Selection for SoF Out signal */ | |
| unsigned sel_sof:2; | |
| /* Bit[22] */ | |
| unsigned pmgt_ref_clk_ok:1; | |
| /* Bit[23] */ | |
| unsigned pmgt_ref_clk_off:1; | |
| /* Bit[24] */ | |
| unsigned pmgt_ext_bus_clk_gated:1; | |
| /* Bit[25] */ | |
| unsigned pmgt_ext_bus_clk_ok:1; | |
| /* Bit[26] */ | |
| unsigned pmgt_ext_bus_clk_off:1; | |
| /* Bit[27] */ | |
| unsigned _20phy_ref_clk_req:1; | |
| /* | |
| * Bit[31:28] Option to Over-ride the device speed | |
| * [3] : Enable/Disable | |
| * [2:0]: set speed | |
| */ | |
| unsigned devspd_ovrd:4; | |
| } b; | |
| } USBCON_REG_LINKCTRL_o, *USBCON_REG_LINKCTRL_p; | |
| #define USBCON_REG_LINKPORT 0x0008 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* | |
| * bit[0] : Indicates if the device attached to a downstream usb2 port is | |
| * permanently attached or not. | |
| * ■ 0: Not permanently attached | |
| * ■ 1: Permanently attached | |
| */ | |
| unsigned hub_perm_attach_u2:1; | |
| /* | |
| * bit[1] : Indicates if the device attached to a downstream usb3 port is | |
| * permanently attached or not. | |
| * ■ 0: Not permanently attached | |
| * ■ 1: Permanently attached | |
| */ | |
| unsigned hub_perm_attach_u3:1; | |
| /* | |
| * bit[2] Select over-current receiving for usb2 | |
| * ■ 0 : | |
| * ■ 1 : | |
| */ | |
| unsigned hub_port_overcurrent_sel_u2:1; | |
| /* | |
| * bit[3] Select over-current receiving for usb3 | |
| * ■ 0 : | |
| * ■ 1 : | |
| */ | |
| unsigned hub_port_overcurrent_sel_u3:1; | |
| /* | |
| * bit[4] Value of Over-current of usb2 port | |
| * ■ 0 : Over-current status occurred | |
| * ■ 1 : Normal status | |
| */ | |
| unsigned hub_port_overcurrent_u2:1; | |
| /* | |
| * bit[5] Value of Over-current of usb3 port | |
| * ■ 0 : Over-current status occurred | |
| * ■ 1 : Normal status | |
| */ | |
| unsigned hub_port_overcurrent_u3:1; | |
| /* | |
| * bit[6] : This port defines the bit [3] of Capability Parameters (HCCPARAMS). | |
| * Change the PPC value through the pin Port Power Control (PPC). | |
| * This indicates whether the host controller implementation includes port | |
| * power control. | |
| * ■ 0: Indicates that the port does not have port power switches. | |
| * ■ 1: Indicates that the port has port power switches. | |
| */ | |
| unsigned host_port_power_con_present:1; | |
| /* bit[7] : */ | |
| unsigned RSVD7:1; | |
| /* | |
| * bit[8] : USB 2.0 Port Disable control | |
| * ■ 0: Port Enabled | |
| * ■ 1: Port Disabled | |
| * This signal, when '1', stops reporting connect/disconnect events on the port. | |
| * This could be used for security reasons where hardware can disable a port | |
| * irrespective of whether xHCI driver enables a port or not. The 'Number of Ports' | |
| * field of the HCSPARAMS1 register is not affected by this signal. | |
| * This signal should be static after vcc_reset_n is de-asserted (should not change | |
| * during operation). | |
| * Note: This signal should not be asserted to disable USB2 Port0. | |
| */ | |
| unsigned host_u2_port_disable:1; | |
| /* | |
| * bit[9] : USB 3.1 ESS Port Disable control | |
| * ■ 0: Port Enabled | |
| * ■ 1: Port Disabled | |
| * This signal, when '1', stops reporting connect/disconnect events on the port. | |
| * This could be used for security reasons where hardware can disable a port | |
| * irrespective of whether xHCI driver enables a port or not. The 'Number of Ports' | |
| * field of the HCSPARAMS1 register is not affected by this signal. | |
| * This signal should be static after vcc_reset_n is de-asserted (should not change | |
| * during operation). | |
| * Note: This signal should not be asserted to disable eSS Port0. | |
| */ | |
| unsigned host_u3_port_disable:1; | |
| /* bit[10] Indicator of Port Power control usb2 port */ | |
| unsigned hub_vbus_ctrl_u2:1; | |
| /* bit[11] Indicator of Port Power control eSS usb3 port */ | |
| unsigned hub_vbus_ctrl_u3:1; | |
| /* bit[12] */ | |
| unsigned host_num_u2:1; | |
| /* bit[13] */ | |
| unsigned host_num_u3:1; | |
| /* Bit[31:20] Reserved */ | |
| unsigned RSVD131_20:12; | |
| } b; | |
| } USBCON_REG_LINKPORT_o, *USBCON_REG_LINKPORT_p; | |
| #define USBCON_REG_LINK_CLKRST 0x000C | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[0] : link reset overriding (to Link) with preset_n */ | |
| unsigned link_sw_rst:1; | |
| /* bit[1] : Link pclk selection signal- 0:suspend_clk, 1:pipe3_clock */ | |
| unsigned link_pclk_sel:1; | |
| /* Reserved 3:2 */ | |
| unsigned RSVD3_2:2; | |
| /* bit[4] Clock selection for USB Audio (0: ref_clk, 1: utmi_clk) */ | |
| unsigned usbaudio_clk_sel:1; | |
| /* bit[5] Enable or disable clock gate out for usb audio */ | |
| unsigned usbaudio_clk_gate_en:1; | |
| /* bit[6] Glitch Free Mux reset for USB Audio clock */ | |
| unsigned usbaudioclk_gfmux_rst:1; | |
| // bit[31:7] : | |
| unsigned RSVD31_7:25; | |
| } b; | |
| } USBCON_REG_LINK_CLKRST_o, *USBCON_REG_LINK_CLKRST_p; | |
| #define USBCON_REG_UTMI_CTRL 0x0010 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[0] : force b-valid signal to high */ | |
| unsigned force_bvalid:1; | |
| /* bit[1] : force vbus-valid signal to high */ | |
| unsigned force_vbusvalid:1; | |
| /* bit[2] : force tx bit stuffen */ | |
| unsigned force_utmi_txbitstuffen:1; | |
| /* bit[3] */ | |
| unsigned RSVD3:1; | |
| /* bit[4] Enable forcing opmode over-ride */ | |
| unsigned force_utmi_opmode_en:1; | |
| /* bit[6:5] force opmode signal */ | |
| unsigned force_utmi_opmode:2; | |
| // bit[7] : | |
| unsigned RSVD7:1; | |
| /* bit[8] forcing DM-Pull down enable signal to high */ | |
| unsigned force_DMPULLDOWN:1; | |
| /* bit[9] forcing DP-Pull down enable signal to high */ | |
| unsigned force_DPPULLDOWN:1; | |
| // bit[11:10] : | |
| unsigned RSVD11_10:2; | |
| /* bit[12] Forcing sleep_n signal */ | |
| unsigned force_utmi_sleep:1; | |
| /* bit[13] Forcing suspend_n signal */ | |
| unsigned force_utmi_suspend:1; | |
| // bit[31:14] : | |
| unsigned RSVD2:18; | |
| } b; | |
| } USBCON_REG_UTMI_CTRL_o, *USBCON_REG_UTMI_CTRL_p; | |
| #define USBCON_REG_ESS_CTRL 0x0014 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[0] : Force Host Speed gen1 */ | |
| unsigned host_force_gen1_speed:1; | |
| /* bit[3:1] */ | |
| unsigned RSVD3_1:3; | |
| /* | |
| * bit[4] : PTM time adjustment valid | |
| * Indicates the ptm_time specified is valid for capture With ptm_time_vld | |
| * tied to zero ptm_time doesn't update host PTM clock You must set this | |
| * signal high when ptm_time indicates the wall clock in the system and | |
| * ready to be loaded into Host ptm_time_vld loads ptm_time in to host | |
| * SOF/ITP counters If your system doesn't support PTM, it is recommended | |
| * to tie this input to 0. | |
| */ | |
| unsigned ptm_time_vld:1; | |
| /* bit[7:5] */ | |
| unsigned RSVD7_5:3; | |
| /* | |
| * bit[8] Start Receiver Detection in U3/Rx.Detect (StartRxdetU3RxDet) | |
| * If DisRxDetU3RxDet is set and the link is in either U3 or Rx.Detect | |
| * state, the controller starts receiver detection on the rising edge of this | |
| * bit. This signal can only be used for downstream ports. It must be set | |
| * to '0' for upstream ports. | |
| * Note: This signal is for debug purpose only, it should be tied to 0 in normal | |
| * operation. | |
| */ | |
| unsigned StartRxDetU3RxDet:1; | |
| /* | |
| * bit[9] DisRxDetU3RxDet_ack of USB 3.1 SS Ports | |
| * This input signal requests the controller to stop issuing more PHY commands and | |
| * release the PIPE ownership. The controller acknowledges this request by | |
| * asserting the DisRxDetU3RxDet_ack signal. | |
| * This signal is for Type-C support. | |
| */ | |
| unsigned DisRxDetU3RxDet:1; | |
| /* | |
| * bit[10] Indicator DisRxDetU3RxDet_ack of USB 3.1 SS Ports | |
| * This signal is an acknowledgment of DisRxDetU3RxDet. When this signal is 1'b1, | |
| * the controller releases the ownership of the PIPE interface and does not issue | |
| * PHY commands to the PIPE interface. | |
| */ | |
| unsigned DisRxDetU3RxDet_ack:1; | |
| // RSVD[31:11] | |
| unsigned RSVD31_11:21; | |
| } b; | |
| } USBCON_REG_ESS_CTRL_o, *USBCON_REG_ESS_CTRL_p; | |
| #define USBCON_REG_PTM_TIME 0x0018 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* | |
| * bit[31:0] : PTM time adjustment value | |
| * This signal indicates the ptm_time in terms of milliseconds and nanoseconds. | |
| * With ptm_time_vld tied to zero ptm_time does not update the host PTM clock. | |
| * You must set this signal valid when ptm_time_vld is asserted. | |
| * ■ ptm_time[31:20] indicates wall clock in milliseconds | |
| * ■ ptm_time[19:0] indicates wall clock in nanoseconds | |
| * ■ ptm_time_vld loads ptm_time in to host SOF/ITP counters initial | |
| * values when the Host controller exits halted state. | |
| * If your system does not support PTM, tie this input to 0. | |
| */ | |
| unsigned ptm_time:32; | |
| } b; | |
| } USBCON_REG_ESS_PTM_TIME_o, *USBCON_REG_ESS_PTM_TIME_p; | |
| #define USBCON_REG_LINK_SOCBW 0x001C | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* | |
| * bit[14:0] : | |
| * This signal is used to indicate maximum write bandwidth on SoC | |
| * available in terms of kilo bytes per micro-frame. | |
| * For example, if the AXI write bandwidth is 150MBps, then the value | |
| * for this signal is 150/8 = 19. | |
| */ | |
| unsigned soc_wr_uF_kB_bandwidth:15; | |
| /* Bit[15] */ | |
| unsigned RSVD15:1; | |
| /* | |
| * bit[14:0] : | |
| * This signal is used to indicate maximum read bandwidth on SoC | |
| * available in terms of kilo bytes per micro-frame. | |
| * For example, if the AXI read bandwidth is 150MBps, then the value | |
| * for this signal is 150/8 = 19. | |
| */ | |
| unsigned soc_rd_uF_kB_bandwidth:15; | |
| /* Bit[31] */ | |
| unsigned RSVD31:1; | |
| } b; | |
| } USBCON_REG_LINK_SOCBW_o, *USBCON_REG_LINK_SOCBW_p; | |
| #define USBCON_REG_REWA_CTL 0x0050 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[0] HS ReWA Enable */ | |
| unsigned hsrewa_en:1; | |
| /* bit[31:1] */ | |
| unsigned RSVD31_1:31; | |
| } b; | |
| } USBCON_REG_REWA_CTL_o, *USBCON_REG_REWA_CTL_p; | |
| #define USBCON_REG_HSREWA_INTR 0x0054 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* | |
| * bit[0] Remote wake-up interrupt mask (to GIC) | |
| * If this bit set to 1, than usb2_wakeup_int0 interrupt is not generated. | |
| * 0: Enable Interrupt. | |
| * 1: Mask interrupt. | |
| */ | |
| unsigned wakeup_intr_mask:1; | |
| /* bit[3:1] */ | |
| unsigned RSVD3_1:3; | |
| /* bit[4] Status change and exception interrupt mask (to GIC) | |
| * If this bit set to 1, than usb2_wakeup_int1 interrupt is not generated. | |
| * 0: Enable Interrupt. | |
| * 1: Mask interrupt. */ | |
| unsigned event_intr_mask:1; | |
| /* bit[7:5] */ | |
| unsigned RSVD7_5:3; | |
| /* | |
| * bit[8] Host K timeout interrupt mask (to GIC) | |
| * If this bit set to 1, than usb2_wakeup_int2 interrupt is not generated. | |
| * 0: Enable Interrupt. | |
| * 1: Mask interrupt. | |
| */ | |
| unsigned timeout_intr_mask:1; | |
| /* bit[11:9] */ | |
| unsigned RSVD11_9:3; | |
| /* | |
| * bit[12] Wakeup interrupt mask (to PMU) | |
| * If this bit set to 1, than usb2_wakeup interrupt is not generated. | |
| * This interrupt asserted by usb2_wakeup_int0 and usb2_wakeup_int1. | |
| * 0: Enable Interrupt. | |
| * 1: Mask interrupt. | |
| */ | |
| unsigned wakeup_req_mask:1; | |
| /* bit[31:13] */ | |
| unsigned RSVD31_13:19; | |
| } b; | |
| } USBCON_REG_HSREWA_INTR_o, *USBCON_REG_HSREWA_INTR_p; | |
| #define USBCON_REG_HSREWA_CTL 0x0058 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* | |
| * bit[0] Done indicator bit for system S/W | |
| * This bit value means that finish for ReWA operation. | |
| * 0: Not done | |
| * 1: Done | |
| */ | |
| unsigned hs_rewa_done:1; | |
| /* bit[3:1] */ | |
| unsigned RSVD3_1:3; | |
| /* | |
| * bit[4] Error indicator bit for system S/W. | |
| * This bit value means that error detected during a ReWA is enabled. | |
| * If this bit value is 1, than S/W shuld check the HSREWA_INT1_EVNT register to get | |
| * the error status. | |
| * 0: No errors | |
| * 1: Error detected | |
| */ | |
| unsigned hs_rewa_error:1; | |
| /* bit[15:5] */ | |
| unsigned RSVD15_5:11; | |
| /* | |
| * bit[16] System valid flag for ReWA. | |
| * System S/W should set this bit when finished wake-up sequence from sleep mode. | |
| * 0: System clock is invalid | |
| * 1: System clock is valid | |
| */ | |
| unsigned hs_sys_valid:1; | |
| /* bit[19:17] */ | |
| unsigned RSVD19_17:3; | |
| /* | |
| * bit[20] USB Link ready flag for ReWA. | |
| * System S/W should set this bit when finished USB link event handling that port | |
| * status change and host K drive command. | |
| * 0: Link is not ready | |
| * 1: Link is ready | |
| */ | |
| unsigned hs_link_ready:1; | |
| /* bit[23:21] */ | |
| unsigned RSVD23_21:3; | |
| /* | |
| * bit[24] DP/DM monitoring method selector. | |
| * HS-ReWA provide two DP/DM monitoring method for detect DP/DM status changes when | |
| * ReWA is enabled. | |
| * This bit value is should be stable before Enable the ReWA. | |
| * 0: FSVPLUS/FSVMINUS | |
| * 1: LINESTATE[1:0] | |
| */ | |
| unsigned dpdm_mon_sel:1; | |
| /* bit[27:25] */ | |
| unsigned RSVD27_25:3; | |
| /* bit[28] Digital bypass controller enable. | |
| * HS-ReWA use to PHY's digital bypass feature for host k generation. | |
| * ??This bit value is should be stable before Enable the ReWA. | |
| * 0: Disable digital bypass controller. | |
| * 1: Enable digital bypass controller. */ | |
| unsigned dig_bypass_con_en:1; | |
| /* bit[31:29] */ | |
| unsigned RSVD31_29:3; | |
| } b; | |
| } USBCON_REG_HSREWA_CTL_o, *USBCON_REG_HSREWA_CTL_p; | |
| #define USBCON_REG_HSREWA_REFTO 0x005c | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* | |
| * bit[31:0] Reference value to determine host K timeout from host K drive. | |
| * The unit of this value is i_clk tick, In other word value 1 means 30.5us. | |
| * | |
| * According to USB specification, Nominal host K drive time is 20ms. | |
| * ReWA provide host K timeout interrupt and this value is expire time reference | |
| * value of internal counter. | |
| * | |
| * Default value of this register means about 20ms. | |
| * | |
| * If this register value is 0 then ReWA override this value to default value | |
| * (0x28d). So the minimum value of this register is 1. | |
| * | |
| * The original value of this register is 0x290, but the initial value is include a | |
| * minus offset that 3. Because of the ReWA has an internal delay time about 3 tick | |
| * of i_clk for dp/dm linestate detection. | |
| */ | |
| unsigned host_k_timeout:32; | |
| } b; | |
| } USBCON_REG_HSREWA_REFTO_o, *USBCON_REG_HSREWA_REFTO_p; | |
| #define USBCON_REG_HSREWA_HSTK 0x0060 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* | |
| * bit[31:0] Reference value to determine host K delay from device K event. | |
| * The unit of this value is i_clk tick, In other word value 1 means 30.5us. | |
| * According to USB specification, Host should respond for remote wakeup request | |
| * from device at least 900us. | |
| * | |
| * Default value of this register means about 854us. | |
| * | |
| * If this register value is 0 then ReWA override this value to default value | |
| * (0x19). So the minimum value of this register is 1. | |
| * | |
| * The original value of this register is 0x1c, but the initial value is include a | |
| * minus offset that 3. Because of the ReWA has an internal delay time about 3 tick | |
| * of i_clk for dp/dm linestate detection. | |
| */ | |
| unsigned host_k_delay:32; | |
| } b; | |
| } USBCON_REG_HSREWA_HSTK_o, *USBCON_REG_HSREWA_HSTK_p; | |
| #define USBCON_REG_HSREWA_CNT 0x0064 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[31:0] Current timer value that accumulated from device K event. */ | |
| unsigned wakeup_cnt:32; | |
| } b; | |
| } USBCON_REG_HSREWA_CNT_o, *USBCON_REG_HSREWA_CNT_p; | |
| #define USBCON_REG_HSREWA_INT1_EVNT 0x0068 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[0] UTMI signal retention enabled event flag | |
| * This bit value means that all of UTMI signals will be retained. | |
| * 0: UTMI retention is not enabled | |
| * 1: UTMI retention is enabled */ | |
| unsigned ret_en:1; | |
| /* bit[1] UTMI signal retention disabled event flag | |
| * This bit value means that retention disabled (bypass) for all of UTMI signals. | |
| * 0: UTMI retention is not disabled | |
| * 1: UTMI retention is disabled */ | |
| unsigned ret_dis:1; | |
| /* bit[2] Digital BYPASS disabled event flag | |
| * This bit value means that Digital BYPASS control signals is disabled, and the | |
| * ownership of DP/DM is return to UTMI signals. | |
| * | |
| * 0: Digital BYPASS is not disabled | |
| * 1: Digital BYPASS is disabled */ | |
| unsigned bypass_dis:1; | |
| /* bit[15:3] */ | |
| unsigned RSVD15_3:13; | |
| /* bit[16] Disconnect detected error event flag | |
| * This bit value means that disconnect error detected during a ReWA is enabled. | |
| * 0: Disconnect event is not detected | |
| * 1: Disconnect event is detected */ | |
| unsigned discon:1; | |
| /* bit[17] Invalid device K error event flag | |
| * This bit value means that invalid device K detected during a waiting for host K | |
| * drive after device K event. | |
| * | |
| * 0: Device K error is not detected | |
| * 1: Device K error is detected */ | |
| unsigned err_dev_k:1; | |
| /* bit[18] Suspend state error event flag | |
| * This bit value means that USB PHY is not suspend state when the ReWA is enabled. | |
| * 0: Suspend error is not detected | |
| * 1: Suspend error is detected */ | |
| unsigned err_sus:1; | |
| /* bit[31:19] */ | |
| unsigned RSVD31_19:13; | |
| } b; | |
| } USBCON_REG_HSREWA_INT1_EVNT_o, *USBCON_REG_HSREWA_INT1_EVNT_p; | |
| #define USBCON_REG_HSREWA_INT1_EVNT_MSK 0x006c | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[0] Status event mask for interrupt generation. | |
| * 0: Enable Interrupt. | |
| * 1: Mask interrupt. */ | |
| unsigned ret_en_mask:1; | |
| /* bit[1] Status event mask for interrupt generation. | |
| * 0: Enable Interrupt. | |
| * 1: Mask interrupt. */ | |
| unsigned ret_dis_mask:1; | |
| /* bit[2] Status event mask for interrupt generation. | |
| * 0: Enable Interrupt. | |
| * 1: Mask interrupt. */ | |
| unsigned bypass_dis_mask:1; | |
| /* bit[15:3] Reserved */ | |
| unsigned reserve_mask0:13; | |
| /* bit[16] Exception event mask for interrupt generation. | |
| * 0: Enable Interrupt. | |
| * 1: Mask interrupt. */ | |
| unsigned discon_mask:1; | |
| /* bit[17] Exception event mask for interrupt generation. | |
| * 0: Enable Interrupt. | |
| * 1: Mask interrupt. */ | |
| unsigned err_dev_k_mask:1; | |
| /* bit[18] Exception event mask for interrupt generation. | |
| * 0: Enable Interrupt. | |
| * 1: Mask interrupt. */ | |
| unsigned err_sus_mask:1; | |
| /* bit[31:19] Reserved */ | |
| unsigned reserve_mask1:13; | |
| } b; | |
| } USBCON_REG_HSREWA_INT1_EVNT_MSK_o, *USBCON_REG_HSREWA_INT1_EVNT_MSK_p; | |
| #define USBCON_REG_U3REWA_CTRL 0x0070 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* | |
| * bit[0] U3 rewa operation enable. Actullay, when this bit is enabled, RxElecIdle | |
| * signal is masked to Link. Before Link enter the U3 state, this bit is set. And, | |
| * If the system is enabled, it should be released. | |
| */ | |
| unsigned u3rewa_blk_en:1; | |
| /* | |
| * bit[1] when this bit is set, it generates tx LFPS which can overlap absolutely | |
| * with Rx LFPS. | |
| */ | |
| unsigned overlap_lfps:1; | |
| /* bit[2] check in U3 when the U3Rewa works */ | |
| unsigned check_u3:1; | |
| /* bit[3] */ | |
| unsigned RSVD3:1; | |
| /* bit[7:4] The number of skipped LFPS burst due to U3Rewa masking */ | |
| unsigned skip_wakeuplfps_cnt:4; | |
| /* bit[23:8] */ | |
| unsigned RSVD23_8:16; | |
| /* bit[24] System wakeup Interrupt masking */ | |
| unsigned sys_wakeup_intr_mask:1; | |
| /* bit[27:25] */ | |
| unsigned RSVD27_25:3; | |
| /* bit[28] System wakeup Interrupt */ | |
| unsigned sys_wakeup_intr:1; | |
| /* bit[31:29] */ | |
| unsigned RSVD31_29:3; | |
| } b; | |
| } USBCON_REG_U3REWA_CTRL_o, *USBCON_REG_U3REWA_CTRL_p; | |
| #define USBCON_REG_U3REWA_LMT_CNT 0x0074 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* | |
| * bit[31:0] Link needs some time to generate LFPS from receiving Rx LFPS. So, when | |
| * Link receives the end of Rx LFPS by ReWa Masking, LFPS overlapping may not be | |
| * achieved. At this time, it should ignore this Rx LFPS. i_lfpsresp_limit_cnt is | |
| * limitation counter value for release RxElecIdle mask with i_suspend_clk. This | |
| * value can be set as following. | |
| * ((Expected RxLFPS Burst period (10ms) - margin (1ms)) / | |
| * i_suspend_clk period(38.26ns)) | |
| */ | |
| unsigned lfpsresp_limit_cnt:32; | |
| } b; | |
| } USBCON_REG_U3REWA_LMT_CNT_o, *USBCON_REG_U3REWA_LMT_CNT_p; | |
| #define USBCON_REG_LTSTATE_HIS 0x0080 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[3:0] LTSSM State history buffer 0 */ | |
| unsigned ltstate_his0:4; | |
| /* bit[7:4] LTSSM State history buffer 1 */ | |
| unsigned ltstate_his1:4; | |
| /* bit[11:8] LTSSM State history buffer 2 */ | |
| unsigned ltstate_his2:4; | |
| /* bit[15:12] LTSSM State history buffer 3 */ | |
| unsigned ltstate_his3:4; | |
| /* bit[19:16] LTSSM State history buffer 4 */ | |
| unsigned ltstate_his4:4; | |
| /* bit[30:20] */ | |
| unsigned RSVD30_20:11; | |
| /* bit[31] Flag for the successful link training sequence (POLL=>U0) */ | |
| unsigned linktrn_done:1; | |
| } b; | |
| } USBCON_REG_LTSTATE_HIS_o, *USBCON_REG_LTSTATE_HIS_p; | |
| #define USBCON_REG_LINK_DEBUG_L 0x0084 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[31:0] Link internal design signal value for debugging | |
| * Refer to the logic_analyzer_trace signal description in link databook */ | |
| unsigned debug_l:32; | |
| } b; | |
| } USBCON_REG_LINK_DEBUG_L_o, *USBCON_REG_LINK_DEBUG_L_p; | |
| #define USBCON_REG_LINK_DEBUG_H 0x0088 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[31:0] Link internal design signal value for debugging | |
| * Refer to the logic_analyzer_trace signal description in link databook */ | |
| unsigned debug_h:32; | |
| } b; | |
| } USBCON_REG_LINK_DEBUG_H_o, *USBCON_REG_LINK_DEBUG_H_p; | |
| #define USBCON_REG_HSP_MISC 0x0114 | |
| typedef union { | |
| u32 data; | |
| struct { | |
| /* bit[1:0] selection of resistance tune chain | |
| * 0: Phy2 -> Phy1 | |
| * 1: Phy1 -> Phy2 | |
| * 2: Phy1 only | |
| * 3: Phy2 only */ | |
| unsigned sel_res_tune_mux:2; | |
| /* bit[3:2] */ | |
| unsigned RSVD3_2:2; | |
| /* bit[4] set value for req_in port of phy2 */ | |
| unsigned set_req_in2:1; | |
| /* bit[5] set value for ack_in port of phy2 */ | |
| unsigned set_ack_in2:1; | |
| /* bit[6] set value for req_in port of phy1 */ | |
| unsigned set_req_in1:1; | |
| /* bit[7] set value for ack_in port of phy1 */ | |
| unsigned set_ack_in1:1; | |
| /* bit[9:8] host_disconnect filtering mode | |
| * 0: Disable Filtering | |
| * 1: host_disconnect from phy is blocked | |
| * 2: Normal Filtering - host_disconnect signal from phy can be transferred to link, | |
| * if host_disconnect drive high more than valid_hsdiscon_count during | |
| * mon_sof_count frames. | |
| * 3: No limit of monitoring sof counter. Only if host_disconnect drive high more | |
| * than valid_hsdiscon_count, then host_disconnect signal from phy can be | |
| * transferred to link. | |
| */ | |
| unsigned hsdiscon_filter_mode:2; | |
| /* bit[11:10] */ | |
| unsigned RSVD11_10:2; | |
| /* bit[12] */ | |
| unsigned fsvplus:1; | |
| /* bit[13] */ | |
| unsigned fsvminus:1; | |
| /* bit[14] */ | |
| unsigned fsvp_out_en:1; | |
| /* bit[15] */ | |
| unsigned fsvm_out_en:1; | |
| /* bit[23:16] host_disconnect monitoring period by number sof count */ | |
| unsigned mon_sof_count:8; | |
| /* bit[31:24] count of asserted host_disconnect in monitoring frames */ | |
| unsigned valid_hsdiscon_count:8; | |
| } b; | |
| } USBCON_REG_HSP_MISC_o, *USBCON_REG_HSP_MISC_p; | |
| #endif |