@ -15,6 +15,76 @@
# include <dt-bindings/pinctrl/pinctrl-tegra-xusb.h>
enum tegra210_function {
TEGRA210_FUNC_SNPS ,
TEGRA210_FUNC_XUSB ,
TEGRA210_FUNC_UART ,
TEGRA210_FUNC_PCIE_X1 ,
TEGRA210_FUNC_PCIE_X4 ,
TEGRA210_FUNC_USB3 ,
TEGRA210_FUNC_SATA ,
TEGRA210_FUNC_RSVD ,
} ;
static const char * const tegra210_functions [ ] = {
" snps " ,
" xusb " ,
" uart " ,
" pcie-x1 " ,
" pcie-x4 " ,
" usb3 " ,
" sata " ,
" rsvd " ,
} ;
static const unsigned int tegra210_otg_functions [ ] = {
TEGRA210_FUNC_SNPS ,
TEGRA210_FUNC_XUSB ,
TEGRA210_FUNC_UART ,
TEGRA210_FUNC_RSVD ,
} ;
static const unsigned int tegra210_usb_functions [ ] = {
TEGRA210_FUNC_SNPS ,
TEGRA210_FUNC_XUSB ,
} ;
static const unsigned int tegra210_pci_functions [ ] = {
TEGRA210_FUNC_PCIE_X1 ,
TEGRA210_FUNC_USB3 ,
TEGRA210_FUNC_SATA ,
TEGRA210_FUNC_PCIE_X4 ,
} ;
# define TEGRA210_LANE(_name, _offset, _shift, _mask, _iddq, _funcs) \
{ \
. name = _name , \
. offset = _offset , \
. shift = _shift , \
. mask = _mask , \
. iddq = _iddq , \
. num_funcs = ARRAY_SIZE ( tegra210_ # # _funcs # # _functions ) , \
. funcs = tegra210_ # # _funcs # # _functions , \
}
static const struct tegra_xusb_padctl_lane tegra210_lanes [ ] = {
TEGRA210_LANE ( " otg-0 " , 0x004 , 0 , 0x3 , 0 , otg ) ,
TEGRA210_LANE ( " otg-1 " , 0x004 , 2 , 0x3 , 0 , otg ) ,
TEGRA210_LANE ( " otg-2 " , 0x004 , 4 , 0x3 , 0 , otg ) ,
TEGRA210_LANE ( " otg-3 " , 0x004 , 6 , 0x3 , 0 , otg ) ,
TEGRA210_LANE ( " usb2-bias " , 0x004 , 18 , 0x3 , 0 , otg ) ,
TEGRA210_LANE ( " hsic-0 " , 0x004 , 14 , 0x1 , 0 , usb ) ,
TEGRA210_LANE ( " hsic-1 " , 0x004 , 15 , 0x1 , 0 , usb ) ,
TEGRA210_LANE ( " pcie-0 " , 0x028 , 12 , 0x3 , 1 , pci ) ,
TEGRA210_LANE ( " pcie-1 " , 0x028 , 14 , 0x3 , 2 , pci ) ,
TEGRA210_LANE ( " pcie-2 " , 0x028 , 16 , 0x3 , 3 , pci ) ,
TEGRA210_LANE ( " pcie-3 " , 0x028 , 18 , 0x3 , 4 , pci ) ,
TEGRA210_LANE ( " pcie-4 " , 0x028 , 20 , 0x3 , 5 , pci ) ,
TEGRA210_LANE ( " pcie-5 " , 0x028 , 22 , 0x3 , 6 , pci ) ,
TEGRA210_LANE ( " pcie-6 " , 0x028 , 24 , 0x3 , 7 , pci ) ,
TEGRA210_LANE ( " sata-0 " , 0x028 , 30 , 0x3 , 8 , pci ) ,
} ;
# define XUSB_PADCTL_ELPG_PROGRAM 0x024
# define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN (1 << 31)
# define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY (1 << 30)
@ -328,10 +398,10 @@ static struct tegra_xusb_phy tegra210_phys[] = {
} ;
static const struct tegra_xusb_padctl_soc tegra210_socdata = {
. lanes = NULL ,
. num_lanes = 0 ,
. functions = NULL ,
. num_functions = 0 ,
. lanes = tegra210_lanes ,
. num_lanes = ARRAY_SIZE ( tegra210_lanes ) ,
. functions = tegra210_functions ,
. num_functions = ARRAY_SIZE ( tegra210_functions ) ,
. phys = tegra210_phys ,
. num_phys = ARRAY_SIZE ( tegra210_phys ) ,
} ;