1
2
3
4
5
6
7
8
9
10
11#include <common.h>
12#include <asm/arch/power.h>
13#include <asm/arch/xhci-exynos.h>
14
15void exynos5_usb3_phy_init(struct exynos_usb3_phy *phy)
16{
17 u32 reg;
18
19
20 writel(0x0, &phy->phy_reg0);
21
22 clrbits_le32(&phy->phy_param0,
23
24 PHYPARAM0_REF_USE_PAD |
25
26 PHYPARAM0_REF_LOSLEVEL_MASK);
27 setbits_le32(&phy->phy_param0, PHYPARAM0_REF_LOSLEVEL);
28
29
30 writel(0x0, &phy->phy_resume);
31
32
33
34
35
36 setbits_le32(&phy->link_system,
37 LINKSYSTEM_XHCI_VERSION_CONTROL |
38 LINKSYSTEM_FLADJ(0x20));
39
40
41 clrbits_le32(&phy->phy_param1, PHYPARAM1_PCS_TXDEEMPH_MASK);
42 setbits_le32(&phy->phy_param1, PHYPARAM1_PCS_TXDEEMPH);
43
44 setbits_le32(&phy->phy_batchg, PHYBATCHG_UTMI_CLKSEL);
45
46
47 clrbits_le32(&phy->phy_test,
48 PHYTEST_POWERDOWN_SSP |
49 PHYTEST_POWERDOWN_HSP);
50
51
52 writel(PHYUTMI_OTGDISABLE, &phy->phy_utmi);
53
54
55 reg = PHYCLKRST_REFCLKSEL_EXT_REFCLK |
56
57 PHYCLKRST_FSEL(FSEL_CLKSEL_24M) |
58 PHYCLKRST_MPLL_MULTIPLIER_24MHZ_REF |
59 PHYCLKRST_SSC_REFCLKSEL(0) |
60
61 PHYCLKRST_PORTRESET |
62
63 PHYCLKRST_RETENABLEN |
64
65 PHYCLKRST_REF_SSP_EN |
66
67 PHYCLKRST_SSC_EN |
68
69 PHYCLKRST_COMMONONN;
70
71 writel(reg, &phy->phy_clk_rst);
72
73
74 udelay(10);
75
76 reg &= ~PHYCLKRST_PORTRESET;
77 writel(reg, &phy->phy_clk_rst);
78}
79