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 CPU_SAMSUNG_EXYNOS5420_USB_H
4 #define CPU_SAMSUNG_EXYNOS5420_USB_H
5 
6 #include <soc/cpu.h>
7 
8 #define CLK_24MHZ 5
9 
10 #define HOST_CTRL0_PHYSWRSTALL (1 << 31)
11 #define HOST_CTRL0_COMMONON_N (1 << 9)
12 #define HOST_CTRL0_SIDDQ (1 << 6)
13 #define HOST_CTRL0_FORCESLEEP (1 << 5)
14 #define HOST_CTRL0_FORCESUSPEND (1 << 4)
15 #define HOST_CTRL0_WORDINTERFACE (1 << 3)
16 #define HOST_CTRL0_UTMISWRST (1 << 2)
17 #define HOST_CTRL0_LINKSWRST (1 << 1)
18 #define HOST_CTRL0_PHYSWRST (1 << 0)
19 
20 #define HOST_CTRL0_FSEL_MASK (7 << 16)
21 
22 #define EHCICTRL_ENAINCRXALIGN (1 << 29)
23 #define EHCICTRL_ENAINCR4 (1 << 28)
24 #define EHCICTRL_ENAINCR8 (1 << 27)
25 #define EHCICTRL_ENAINCR16 (1 << 26)
26 
27 /* Register map for PHY control */
28 struct exynos5_usb_host_phy {
31  uint8_t reserved1[8];
34  uint8_t reserved2[8];
37  uint8_t reserved3[8];
41  uint8_t reserved4[4];
43 };
45 
48 
49 struct exynos5_usb_drd_phy {
50  uint8_t reserved1[4];
52  uint32_t utmi;
53  uint32_t pipe;
55  uint32_t reg0;
56  uint32_t reg1;
59  uint32_t term;
60  uint32_t test;
61  uint32_t adp;
64  uint8_t reserved2[8];
67 };
69 
74 
75 struct exynos5_usb_drd_dwc3 {
80  uint32_t ctl;
82  uint32_t sts;
83  uint8_t reserved0[4];
85  uint32_t gpio;
86  uint32_t uid;
87  uint32_t uctl;
90  uint8_t reserved1[32];
101  uint8_t reserved2[112];
103  uint8_t reserved3[60];
105  uint8_t reserved4[60];
107  uint8_t reserved5[60];
109  uint8_t reserved6[60];
110 };
111 check_member(exynos5_usb_drd_dwc3, usb3pipectl, 0x1c0);
112 
117 
118 /* Leave hsic_gpio at 0 to not enable HSIC. */
119 void setup_usb_host_phy(int hsic_gpio);
120 
121 void setup_usb_drd0_phy(void);
122 void setup_usb_drd1_phy(void);
123 
124 /* Call reset_ before setup_, ensure at least 100ms pass in between. */
125 void reset_usb_drd0_dwc3(void);
126 void reset_usb_drd1_dwc3(void);
127 void setup_usb_drd0_dwc3(void);
128 void setup_usb_drd1_dwc3(void);
129 
130 #endif
check_member(ssusb_sif_port, u3phyd, 0x100)
#define EXYNOS5_USB_HOST_PHY_BASE
Definition: cpu.h:30
void setup_usb_host_phy(int hsic_gpio)
Definition: usb.c:119
#define EXYNOS5420_USB_DRD1_DWC3_BASE
Definition: cpu.h:36
#define EXYNOS5420_USB_DRD1_PHY_BASE
Definition: cpu.h:37
#define EXYNOS5420_USB_DRD0_PHY_BASE
Definition: cpu.h:29
#define EXYNOS5420_USB_DRD0_DWC3_BASE
Definition: cpu.h:28
void setup_usb_drd1_dwc3(void)
Definition: usb.c:67
static struct exynos5_usb_host_phy *const exynos_usb_host_phy
Definition: usb.h:46
void setup_usb_drd0_dwc3(void)
Definition: usb.c:61
static struct exynos5_usb_drd_phy *const exynos_usb_drd1_phy
Definition: usb.h:72
static struct exynos5_usb_drd_dwc3 *const exynos_usb_drd1_dwc3
Definition: usb.h:115
static struct exynos5_usb_drd_phy *const exynos_usb_drd0_phy
Definition: usb.h:70
void setup_usb_drd0_phy(void)
Definition: usb.c:124
static struct exynos5_usb_drd_dwc3 *const exynos_usb_drd0_dwc3
Definition: usb.h:113
void reset_usb_drd0_dwc3(void)
Definition: usb.c:19
void setup_usb_drd1_phy(void)
Definition: usb.c:131
void reset_usb_drd1_dwc3(void)
Definition: usb.c:25
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 dbgepinfo1
Definition: usb.h:96
uint32_t ctl
Definition: usb.h:78
uint32_t snpsid
Definition: usb.h:82
uint8_t reserved2[112]
Definition: usb.h:99
uint32_t uctl
Definition: usb.h:85
uint64_t prtbimap
Definition: usb.h:87
uint32_t sbuscfg0
Definition: usb.h:74
uint32_t rxthrcfg
Definition: usb.h:77
uint8_t reserved4[60]
Definition: usb.h:103
uint8_t reserved3[60]
Definition: usb.h:101
uint32_t usb3pipectl
Definition: usb.h:106
uint32_t usb2i2cctl
Definition: usb.h:102
uint32_t dbglsp
Definition: usb.h:94
uint8_t reserved5[60]
Definition: usb.h:105
uint32_t gpio
Definition: usb.h:83
uint32_t dbgbmu
Definition: usb.h:92
uint32_t dbglspmux
Definition: usb.h:93
uint32_t usb2phyacc
Definition: usb.h:104
uint32_t dbgltssm
Definition: usb.h:90
uint32_t sbuscfg1
Definition: usb.h:75
uint32_t sts
Definition: usb.h:80
uint8_t reserved0[4]
Definition: usb.h:81
uint64_t prtbimap_hs
Definition: usb.h:97
uint64_t prtbimap_fs
Definition: usb.h:98
uint32_t dbgfifospace
Definition: usb.h:89
uint32_t txthrcfg
Definition: usb.h:76
uint32_t evten
Definition: usb.h:79
uint32_t dbglnmcc
Definition: usb.h:91
uint32_t usb2phycfg
Definition: usb.h:100
uint8_t reserved6[60]
Definition: usb.h:107
uint32_t dbgepinfo0
Definition: usb.h:95
uint64_t buserraddr
Definition: usb.h:86
uint32_t uid
Definition: usb.h:84
uint8_t reserved1[32]
Definition: usb.h:88
uint32_t linkport
Definition: usb.h:66
uint32_t utmiclksel
Definition: usb.h:62
uint32_t param0
Definition: usb.h:57
uint32_t pipe
Definition: usb.h:53
uint32_t reg1
Definition: usb.h:56
uint32_t reg0
Definition: usb.h:55
uint8_t reserved2[8]
Definition: usb.h:64
uint32_t test
Definition: usb.h:60
uint32_t param1
Definition: usb.h:58
uint32_t resume
Definition: usb.h:63
uint32_t term
Definition: usb.h:59
uint8_t reserved1[4]
Definition: usb.h:50
uint32_t utmi
Definition: usb.h:52
uint32_t clkrst
Definition: usb.h:54
uint32_t linksystem
Definition: usb.h:51
uint32_t linkhcbelt
Definition: usb.h:65
uint32_t adp
Definition: usb.h:61
uint8_t reserved4[4]
Definition: usb.h:41
uint8_t reserved2[8]
Definition: usb.h:34
uint32_t hsicphytune1
Definition: usb.h:33
uint32_t hsicphyctrl2
Definition: usb.h:35
uint32_t ohcictrl
Definition: usb.h:39
uint32_t ehcictrl
Definition: usb.h:38
uint32_t usbphytune0
Definition: usb.h:30
uint8_t reserved1[8]
Definition: usb.h:31
uint32_t hsicphyctrl1
Definition: usb.h:32
uint32_t usbotgtune
Definition: usb.h:42
uint8_t reserved3[8]
Definition: usb.h:37
uint32_t hsicphytune2
Definition: usb.h:36
uint32_t usbphyctrl0
Definition: usb.h:29
uint32_t usbotgsys
Definition: usb.h:40