1*77b55e8cSThomas Abraham /* Copyright (c) 2012 Samsung Electronics Co. Ltd 2*77b55e8cSThomas Abraham * 3*77b55e8cSThomas Abraham * Exynos Phy register definitions 4*77b55e8cSThomas Abraham * 5*77b55e8cSThomas Abraham * SPDX-License-Identifier: GPL-2.0+ 6*77b55e8cSThomas Abraham */ 7*77b55e8cSThomas Abraham 8*77b55e8cSThomas Abraham #ifndef _ASM_ARCH_XHCI_EXYNOS_H_ 9*77b55e8cSThomas Abraham #define _ASM_ARCH_XHCI_EXYNOS_H_ 10*77b55e8cSThomas Abraham 11*77b55e8cSThomas Abraham /* Phy register MACRO definitions */ 12*77b55e8cSThomas Abraham 13*77b55e8cSThomas Abraham #define LINKSYSTEM_FLADJ_MASK (0x3f << 1) 14*77b55e8cSThomas Abraham #define LINKSYSTEM_FLADJ(_x) ((_x) << 1) 15*77b55e8cSThomas Abraham #define LINKSYSTEM_XHCI_VERSION_CONTROL (0x1 << 27) 16*77b55e8cSThomas Abraham 17*77b55e8cSThomas Abraham #define PHYUTMI_OTGDISABLE (1 << 6) 18*77b55e8cSThomas Abraham #define PHYUTMI_FORCESUSPEND (1 << 1) 19*77b55e8cSThomas Abraham #define PHYUTMI_FORCESLEEP (1 << 0) 20*77b55e8cSThomas Abraham 21*77b55e8cSThomas Abraham #define PHYCLKRST_SSC_REFCLKSEL_MASK (0xff << 23) 22*77b55e8cSThomas Abraham #define PHYCLKRST_SSC_REFCLKSEL(_x) ((_x) << 23) 23*77b55e8cSThomas Abraham 24*77b55e8cSThomas Abraham #define PHYCLKRST_SSC_RANGE_MASK (0x03 << 21) 25*77b55e8cSThomas Abraham #define PHYCLKRST_SSC_RANGE(_x) ((_x) << 21) 26*77b55e8cSThomas Abraham 27*77b55e8cSThomas Abraham #define PHYCLKRST_SSC_EN (0x1 << 20) 28*77b55e8cSThomas Abraham #define PHYCLKRST_REF_SSP_EN (0x1 << 19) 29*77b55e8cSThomas Abraham #define PHYCLKRST_REF_CLKDIV2 (0x1 << 18) 30*77b55e8cSThomas Abraham 31*77b55e8cSThomas Abraham #define PHYCLKRST_MPLL_MULTIPLIER_MASK (0x7f << 11) 32*77b55e8cSThomas Abraham #define PHYCLKRST_MPLL_MULTIPLIER_100MHZ_REF (0x19 << 11) 33*77b55e8cSThomas Abraham #define PHYCLKRST_MPLL_MULTIPLIER_50M_REF (0x02 << 11) 34*77b55e8cSThomas Abraham #define PHYCLKRST_MPLL_MULTIPLIER_24MHZ_REF (0x68 << 11) 35*77b55e8cSThomas Abraham #define PHYCLKRST_MPLL_MULTIPLIER_20MHZ_REF (0x7d << 11) 36*77b55e8cSThomas Abraham #define PHYCLKRST_MPLL_MULTIPLIER_19200KHZ_REF (0x02 << 11) 37*77b55e8cSThomas Abraham 38*77b55e8cSThomas Abraham #define PHYCLKRST_FSEL_MASK (0x3f << 5) 39*77b55e8cSThomas Abraham #define PHYCLKRST_FSEL(_x) ((_x) << 5) 40*77b55e8cSThomas Abraham #define PHYCLKRST_FSEL_PAD_100MHZ (0x27 << 5) 41*77b55e8cSThomas Abraham #define PHYCLKRST_FSEL_PAD_24MHZ (0x2a << 5) 42*77b55e8cSThomas Abraham #define PHYCLKRST_FSEL_PAD_20MHZ (0x31 << 5) 43*77b55e8cSThomas Abraham #define PHYCLKRST_FSEL_PAD_19_2MHZ (0x38 << 5) 44*77b55e8cSThomas Abraham 45*77b55e8cSThomas Abraham #define PHYCLKRST_RETENABLEN (0x1 << 4) 46*77b55e8cSThomas Abraham 47*77b55e8cSThomas Abraham #define PHYCLKRST_REFCLKSEL_MASK (0x03 << 2) 48*77b55e8cSThomas Abraham #define PHYCLKRST_REFCLKSEL_PAD_REFCLK (0x2 << 2) 49*77b55e8cSThomas Abraham #define PHYCLKRST_REFCLKSEL_EXT_REFCLK (0x3 << 2) 50*77b55e8cSThomas Abraham 51*77b55e8cSThomas Abraham #define PHYCLKRST_PORTRESET (0x1 << 1) 52*77b55e8cSThomas Abraham #define PHYCLKRST_COMMONONN (0x1 << 0) 53*77b55e8cSThomas Abraham 54*77b55e8cSThomas Abraham #define PHYPARAM0_REF_USE_PAD (0x1 << 31) 55*77b55e8cSThomas Abraham #define PHYPARAM0_REF_LOSLEVEL_MASK (0x1f << 26) 56*77b55e8cSThomas Abraham #define PHYPARAM0_REF_LOSLEVEL (0x9 << 26) 57*77b55e8cSThomas Abraham 58*77b55e8cSThomas Abraham #define PHYPARAM1_PCS_TXDEEMPH_MASK (0x1f << 0) 59*77b55e8cSThomas Abraham #define PHYPARAM1_PCS_TXDEEMPH (0x1c) 60*77b55e8cSThomas Abraham 61*77b55e8cSThomas Abraham #define PHYTEST_POWERDOWN_SSP (0x1 << 3) 62*77b55e8cSThomas Abraham #define PHYTEST_POWERDOWN_HSP (0x1 << 2) 63*77b55e8cSThomas Abraham 64*77b55e8cSThomas Abraham #define PHYBATCHG_UTMI_CLKSEL (0x1 << 2) 65*77b55e8cSThomas Abraham 66*77b55e8cSThomas Abraham #define FSEL_CLKSEL_24M (0x5) 67*77b55e8cSThomas Abraham 68*77b55e8cSThomas Abraham /* XHCI PHY register structure */ 69*77b55e8cSThomas Abraham struct exynos_usb3_phy { 70*77b55e8cSThomas Abraham unsigned int reserve1; 71*77b55e8cSThomas Abraham unsigned int link_system; 72*77b55e8cSThomas Abraham unsigned int phy_utmi; 73*77b55e8cSThomas Abraham unsigned int phy_pipe; 74*77b55e8cSThomas Abraham unsigned int phy_clk_rst; 75*77b55e8cSThomas Abraham unsigned int phy_reg0; 76*77b55e8cSThomas Abraham unsigned int phy_reg1; 77*77b55e8cSThomas Abraham unsigned int phy_param0; 78*77b55e8cSThomas Abraham unsigned int phy_param1; 79*77b55e8cSThomas Abraham unsigned int phy_term; 80*77b55e8cSThomas Abraham unsigned int phy_test; 81*77b55e8cSThomas Abraham unsigned int phy_adp; 82*77b55e8cSThomas Abraham unsigned int phy_batchg; 83*77b55e8cSThomas Abraham unsigned int phy_resume; 84*77b55e8cSThomas Abraham unsigned int reserve2[3]; 85*77b55e8cSThomas Abraham unsigned int link_port; 86*77b55e8cSThomas Abraham }; 87*77b55e8cSThomas Abraham 88*77b55e8cSThomas Abraham #endif /* _ASM_ARCH_XHCI_EXYNOS_H_ */ 89