coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
usb.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __SOC_ROCKCHIP_RK3399_USB_H_
4 #define __SOC_ROCKCHIP_RK3399_USB_H_
5 
6 #include <soc/addressmap.h>
7 
8 /* Global constants */
9 #define DWC3_GSNPSID_MASK 0xffff0000
10 #define DWC3_GSNPSID_SHIFT 16
11 #define DWC3_GSNPSREV_MASK 0xffff
12 
13 /* Global Configuration Register */
14 #define DWC3_GCTL_PWRDNSCALE(n) ((n) << 19)
15 #define DWC3_GCTL_U2RSTECN (1 << 16)
16 #define DWC3_GCTL_RAMCLKSEL(x) \
17  (((x) & DWC3_GCTL_CLK_MASK) << 6)
18 #define DWC3_GCTL_CLK_BUS (0)
19 #define DWC3_GCTL_CLK_PIPE (1)
20 #define DWC3_GCTL_CLK_PIPEHALF (2)
21 #define DWC3_GCTL_CLK_MASK (3)
22 #define DWC3_GCTL_PRTCAP_MASK (3 << 12)
23 #define DWC3_GCTL_PRTCAP_HOST (1 << 12)
24 #define DWC3_GCTL_PRTCAP_DEVICE (2 << 12)
25 #define DWC3_GCTL_PRTCAP_OTG (3 << 12)
26 #define DWC3_GCTL_CORESOFTRESET (1 << 11)
27 #define DWC3_GCTL_SCALEDOWN(n) ((n) << 4)
28 #define DWC3_GCTL_SCALEDOWN_MASK DWC3_GCTL_SCALEDOWN(3)
29 #define DWC3_GCTL_DISSCRAMBLE (1 << 3)
30 #define DWC3_GCTL_DSBLCLKGTNG (1 << 0)
31 
32 /* Global HWPARAMS1 Register */
33 #define DWC3_GHWPARAMS1_EN_PWROPT(n) (((n) & (3 << 24)) >> 24)
34 #define DWC3_GHWPARAMS1_EN_PWROPT_NO 0
35 #define DWC3_GHWPARAMS1_EN_PWROPT_CLK 1
36 
37 /* Global USB2 PHY Configuration Register */
38 #define DWC3_GUSB2PHYCFG_PHYSOFTRST (1 << 31)
39 #define DWC3_GUSB2PHYCFG_U2_FREECLK_EXISTS (1 << 30)
40 #define DWC3_GUSB2PHYCFG_USBTRDTIM(n) ((n) << 10)
41 #define DWC3_GUSB2PHYCFG_USB2TRDTIM_MASK DWC3_GUSB2PHYCFG_USBTRDTIM(0xf)
42 #define DWC3_GUSB2PHYCFG_SUSPHY (1 << 6)
43 #define DWC3_GUSB2PHYCFG_PHYIF(n) ((n) << 3)
44 #define DWC3_GUSB2PHYCFG_PHYIF_MASK DWC3_GUSB2PHYCFG_PHYIF(1)
45 #define USBTRDTIM_UTMI_8_BIT 9
46 #define USBTRDTIM_UTMI_16_BIT 5
47 
48 /* Global USB3 PIPE Control Register */
49 #define DWC3_GUSB3PIPECTL_PHYSOFTRST (1 << 31)
50 #define DWC3_GUSB3PIPECTL_SUSPHY (1 << 17)
51 
94 };
95 
97  (void *)USB_OTG0_DWC3_BASE;
99  (void *)USB_OTG1_DWC3_BASE;
100 
101 #define TCPHY_ISOLATION_CTRL_EN (1 << 15)
102 #define TCPHY_ISOLATION_CTRL_CMN_EN (1 << 14)
103 #define TCPHY_ISOLATION_CTRL_MODE_SEL (1 << 12)
104 #define TCPHY_ISOLATION_CTRL_LN_EN(ln) (1 << (ln))
105 #define TCPHY_CMN_HSCLK_PLL_CONFIG 0x30
106 #define TCPHY_CMN_HSCLK_PLL_MASK 0x33
107 
108 struct rk3399_tcphy {
109  uint8_t _res0[0x780 - 0x0];
111  uint8_t _res1[0x10000 - 0x784];
112  struct {
113  uint8_t _res2[0x3c8 - 0x0];
115  uint8_t _res3[0x408 - 0x3cc];
117  uint8_t _res4[0x488 - 0x40c];
120  uint8_t _res5[0x784 - 0x490];
122  uint8_t _res6[0x800 - 0x788];
123  } lane[4];
124  uint8_t _res7[0x32000 - 0x12000];
126  uint8_t _res8[0x3207c - 0x32004];
128 };
129 check_member(rk3399_tcphy, lane[2].tx_diag_tx_drv, 0x11784);
130 check_member(rk3399_tcphy, isolation_ctrl, 0x3207c);
131 
132 static struct rk3399_tcphy * const rockchip_usb_otg0_phy =
133  (void *)USB_OTG0_TCPHY_BASE;
134 static struct rk3399_tcphy * const rockchip_usb_otg1_phy =
135  (void *)USB_OTG1_TCPHY_BASE;
136 
137 /* Call reset_ before setup_ */
138 void reset_usb_otg0(void);
139 void reset_usb_otg1(void);
140 void setup_usb_otg0(void);
141 void setup_usb_otg1(void);
142 
143 #endif /* __SOC_ROCKCHIP_RK3399_USB_H_ */
check_member(ssusb_sif_port, u3phyd, 0x100)
#define USB_OTG0_TCPHY_BASE
Definition: addressmap.h:63
#define USB_OTG0_DWC3_BASE
Definition: addressmap.h:61
#define USB_OTG1_TCPHY_BASE
Definition: addressmap.h:64
#define USB_OTG1_DWC3_BASE
Definition: addressmap.h:62
static struct rk3399_tcphy *const rockchip_usb_otg0_phy
Definition: usb.h:132
static struct rockchip_usb_dwc3 *const rockchip_usb_otg1_dwc3
Definition: usb.h:98
static struct rk3399_tcphy *const rockchip_usb_otg1_phy
Definition: usb.h:134
void setup_usb_otg0(void)
Definition: usb.c:148
static struct rockchip_usb_dwc3 *const rockchip_usb_otg0_dwc3
Definition: usb.h:96
void reset_usb_otg1(void)
Definition: usb.c:130
void setup_usb_otg1(void)
Definition: usb.c:157
void reset_usb_otg0(void)
Definition: usb.c:112
unsigned int uint32_t
Definition: stdint.h:14
unsigned long long uint64_t
Definition: stdint.h:17
unsigned char uint8_t
Definition: stdint.h:8
uint32_t tx_rcvdet_st_tmr
Definition: usb.h:119
uint32_t tx_diag_tx_drv
Definition: usb.h:121
uint8_t _res8[0x3207c - 0x32004]
Definition: usb.h:126
uint32_t cmn_diag_hsclk_sel
Definition: usb.h:110
uint32_t xcvr_diag_lane_fcm_en_mgn
Definition: usb.h:114
uint8_t _res7[0x32000 - 0x12000]
Definition: usb.h:124
uint32_t isolation_ctrl
Definition: usb.h:127
uint8_t _res1[0x10000 - 0x784]
Definition: usb.h:111
uint8_t _res4[0x488 - 0x40c]
Definition: usb.h:117
uint8_t _res3[0x408 - 0x3cc]
Definition: usb.h:115
uint32_t tx_rcvdet_en_tmr
Definition: usb.h:118
uint8_t _res6[0x800 - 0x788]
Definition: usb.h:122
uint8_t _res0[0x780 - 0x0]
Definition: usb.h:109
uint8_t _res5[0x784 - 0x490]
Definition: usb.h:120
uint32_t pma_cmn_ctrl1
Definition: usb.h:125
uint8_t _res2[0x3c8 - 0x0]
Definition: usb.h:113
struct rk3399_tcphy::@1524 lane[4]
uint32_t tx_psc_a2
Definition: usb.h:116
uint32_t dbgepinfo1
Definition: usb.h:82
uint32_t dbgfifospace
Definition: usb.h:75
uint32_t usb2phycfg
Definition: usb.h:86
uint64_t prtbimap
Definition: usb.h:66
uint32_t gpio
Definition: usb.h:62
uint32_t uctl
Definition: usb.h:64
uint32_t usb2phyacc
Definition: usb.h:90
uint32_t hwparams0
Definition: usb.h:67
uint32_t sts
Definition: usb.h:59
uint32_t usb3pipectl
Definition: usb.h:92
uint32_t txthrcfg
Definition: usb.h:55
uint8_t reserved4[60]
Definition: usb.h:89
uint32_t dbgltssm
Definition: usb.h:76
uint32_t sbuscfg0
Definition: usb.h:53
uint8_t reserved3[60]
Definition: usb.h:87
uint32_t dbglnmcc
Definition: usb.h:77
uint32_t evten
Definition: usb.h:58
uint32_t hwparams5
Definition: usb.h:72
uint32_t hwparams4
Definition: usb.h:71
uint8_t reserved0[4]
Definition: usb.h:60
uint32_t hwparams7
Definition: usb.h:74
uint32_t hwparams6
Definition: usb.h:73
uint32_t dbglsp
Definition: usb.h:80
uint64_t prtbimap_fs
Definition: usb.h:84
uint64_t prtbimap_hs
Definition: usb.h:83
uint32_t dbgepinfo0
Definition: usb.h:81
uint32_t hwparams2
Definition: usb.h:69
uint32_t snpsid
Definition: usb.h:61
uint8_t reserved2[112]
Definition: usb.h:85
uint32_t usb2i2cctl
Definition: usb.h:88
uint32_t hwparams3
Definition: usb.h:70
uint32_t hwparams1
Definition: usb.h:68
uint32_t dbglspmux
Definition: usb.h:79
uint8_t reserved6[60]
Definition: usb.h:93
uint64_t buserraddr
Definition: usb.h:65
uint32_t ctl
Definition: usb.h:57
uint32_t uid
Definition: usb.h:63
uint32_t dbgbmu
Definition: usb.h:78
uint32_t sbuscfg1
Definition: usb.h:54
uint32_t rxthrcfg
Definition: usb.h:56
uint8_t reserved5[60]
Definition: usb.h:91