ARM: tegra12: set CPU rate to 2.2GHz for sku 0x87
[linux-3.10.git] / arch / arm / mach-tegra / include / mach / tegra_usb_pad_ctrl.h
1 /*
2  * Copyright (c) 2013, NVIDIA CORPORATION.  All rights reserved.
3  *
4  * This software is licensed under the terms of the GNU General Public
5  * License version 2, as published by the Free Software Foundation, and
6  * may be copied, distributed, and modified under those terms.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  */
14
15 #ifndef _TEGRA_USB_PAD_CTRL_INTERFACE_H_
16 #define _TEGRA_USB_PAD_CTRL_INTERFACE_H_
17
18 #include <mach/xusb.h>
19
20 #define UTMIPLL_HW_PWRDN_CFG0                   0x52c
21 #define   UTMIPLL_HW_PWRDN_CFG0_IDDQ_OVERRIDE  (1<<1)
22 #define   UTMIPLL_HW_PWRDN_CFG0_IDDQ_SWCTL     (1<<0)
23
24 #define UTMIP_BIAS_CFG0         0x80c
25 #define UTMIP_OTGPD                     (1 << 11)
26 #define UTMIP_BIASPD                    (1 << 10)
27 #define UTMIP_HSSQUELCH_LEVEL(x)        (((x) & 0x3) << 0)
28 #define UTMIP_HSDISCON_LEVEL(x) (((x) & 0x3) << 2)
29 #define UTMIP_HSDISCON_LEVEL_MSB        (1 << 24)
30
31 #define PCIE_LANES_X4_X1                0
32 #define PCIE_LANES_X4_X0                2
33 #define PCIE_LANES_X2_X1                3
34
35 /* xusb padctl regs for pad programming of t124 usb3 */
36 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_0                 0x138
37 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_0_PLL0_REFCLK_NDIV_MASK   (0x3 << 20)
38 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL1_0_PLL0_REFCLK_NDIV        (0x2 << 20)
39
40 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0                 0x13c
41 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_XDIGCLK_SEL_MASK        (0x7 << 0)
42 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_XDIGCLK_SEL             (0x7 << 0)
43 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_TXCLKREF_SEL            (1 << 4)
44 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_TCLKOUT_EN              (1 << 12)
45 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_PLL0_CP_CNTL_MASK       (0xF << 16)
46 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_PLL0_CP_CNTL            (0x8 << 16)
47 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_PLL1_CP_CNTL_MASK       (0xF << 20)
48 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL2_0_PLL1_CP_CNTL            (0x8 << 20)
49
50 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL3_0                 0x140
51 #define XUSB_PADCTL_IOPHY_PLL_S0_CTL3_0_RCAL_BYPASS             (1 << 7)
52
53 /* xusb padctl regs for pad programming of t124 pcie */
54 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_0 0x40
55 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_REFCLK_SEL_MASK   (0xF << 12)
56 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_REFCLK_SEL        (0x0 << 12)
57 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_PLL_RST_          (1 << 1)
58 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL1_PLL0_LOCKDET              (1 << 19)
59
60 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_0 0x44
61 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_TXCLKREF_SEL      (1 << 4)
62 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_TXCLKREF_EN       (1 << 5)
63 #define XUSB_PADCTL_IOPHY_PLL_P0_CTL2_REFCLKBUF_EN      (1 << 6)
64
65 #define XUSB_PADCTL_ELPG_PROGRAM_0              0x1c
66 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN   (1 << 24)
67 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_CLAMP_EN_EARLY     (1 << 25)
68 #define XUSB_PADCTL_ELPG_PROGRAM_AUX_MUX_LP0_VCORE_DOWN (1 << 26)
69 #define USB2_PORT0_WAKE_INTERRUPT_ENABLE        (1 << 0)
70 #define USB2_PORT1_WAKE_INTERRUPT_ENABLE        (1 << 1)
71 #define USB2_PORT2_WAKE_INTERRUPT_ENABLE        (1 << 2)
72 #define USB2_HSIC_PORT0_WAKE_INTERRUPT_ENABLE   (1 << 3)
73 #define USB2_HSIC_PORT1_WAKE_INTERRUPT_ENABLE   (1 << 4)
74 #define SS_PORT0_WAKE_INTERRUPT_ENABLE  (1 << 6)
75 #define SS_PORT1_WAKE_INTERRUPT_ENABLE  (1 << 7)
76 #define USB2_PORT0_WAKEUP_EVENT         (1 << 8)
77 #define USB2_PORT1_WAKEUP_EVENT         (1 << 9)
78 #define USB2_PORT2_WAKEUP_EVENT         (1 << 10)
79 #define USB2_HSIC_PORT0_WAKEUP_EVENT    (1 << 11)
80 #define USB2_HSIC_PORT1_WAKEUP_EVENT    (1 << 12)
81 #define SS_PORT0_WAKEUP_EVENT           (1 << 14)
82 #define SS_PORT1_WAKEUP_EVENT           (1 << 15)
83 #define SSP0_ELPG_CLAMP_EN              (1 << 16)
84 #define SSP0_ELPG_CLAMP_EN_EARLY        (1 << 17)
85 #define SSP0_ELPG_VCORE_DOWN            (1 << 18)
86 #define SSP1_ELPG_CLAMP_EN              (1 << 20)
87 #define SSP1_ELPG_CLAMP_EN_EARLY        (1 << 21)
88 #define SSP1_ELPG_VCORE_DOWN            (1 << 22)
89
90 #define XUSB_PADCTL_USB2_PAD_MUX_0              0x4
91 #define USB2_OTG_PAD_PORT0_MASK                 0x3
92 #define USB2_OTG_PAD_PORT0_SNPS                 0x0
93 #define USB2_OTG_PAD_PORT0_XUSB                 0x1
94
95 #ifdef CONFIG_ARCH_TEGRA_11x_SOC
96 #define XUSB_PADCTL_USB2_BIAS_PAD_CTL_0         0xa0
97 #else
98 #define XUSB_PADCTL_USB2_BIAS_PAD_CTL_0         0xb8
99 #endif
100 #define PD_MASK         (0x1 << 12)
101
102
103 #define XUSB_PADCTL_USB3_PAD_MUX_0              0x134
104 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK0      (1 << 1)
105 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK1      (1 << 2)
106 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK2      (1 << 3)
107 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK3      (1 << 4)
108 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_PCIE_PAD_IDDQ_DISABLE_MASK4      (1 << 5)
109 #define XUSB_PADCTL_USB3_PAD_MUX_FORCE_SATA_PAD_IDDQ_DISABLE_MASK0      (1 << 6)
110 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE0 (0x3 << 16)
111 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE1 (0x3 << 18)
112 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE2 (0x3 << 20)
113 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE3 (0x3 << 22)
114 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE4 (0x3 << 24)
115 #define XUSB_PADCTL_USB3_PAD_MUX_SATA_PAD_LANE0 (0x3 << 26)
116 #define XUSB_PADCTL_USB3_PAD_MUX_SATA_PAD_LANE0_OWNER_USB3_SS   (0x1 << 26)
117 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE0_OWNER_USB3_SS   (0x1 << 16)
118 #define XUSB_PADCTL_USB3_PAD_MUX_PCIE_PAD_LANE1_OWNER_USB3_SS   (0x1 << 18)
119
120 /* SATA PADPLL */
121 #define CLK_RST_CONTROLLER_SATA_PLL_CFG0_0      0x490
122 #define SATA_PADPLL_USE_LOCKDET                 (1 << 2)
123 #define SATA_PADPLL_RESET_SWCTL                 (1 << 0)
124 #define SATA_SEQ_ENABLE                         (1 << 24)
125 #define SATA_SEQ_START_STATE                    (1 << 25)
126
127 void tegra_xhci_release_otg_port(bool release);
128 void tegra_xhci_ss_wake_on_interrupts(u32 portmap, bool enable);
129 void tegra_xhci_hs_wake_on_interrupts(u32 portmap, bool enable);
130 void tegra_xhci_ss_wake_signal(u32 portmap, bool enable);
131 void tegra_xhci_ss_vcore(u32 portmap, bool enable);
132
133 int utmi_phy_pad_disable(void);
134 int utmi_phy_pad_enable(void);
135 int usb3_phy_pad_enable(u8 lane_owner);
136 int pcie_phy_pad_enable(bool enable, int lane_owner);
137
138 int utmi_phy_iddq_override(bool set);
139 void tegra_usb_pad_reg_update(u32 reg_offset, u32 mask, u32 val);
140 u32 tegra_usb_pad_reg_read(u32 reg_offset);
141 void tegra_usb_pad_reg_write(u32 reg_offset, u32 val);
142 #endif