ARM: tegra12: set CPU rate to 2.2GHz for sku 0x87
[linux-3.10.git] / arch / arm / mach-tegra / include / mach / xusb.h
1 /*
2  * arch/arm/mach-tegra/include/mach/xusb.h
3  *
4  * Copyright (c) 2013, NVIDIA CORPORATION.  All rights reserved.
5  *
6  * Author:
7  *      Ajay Gupta <ajayg@nvidia.com>
8  *
9  * This software is licensed under the terms of the GNU General Public
10  * License version 2, as published by the Free Software Foundation, and
11  * may be copied, distributed, and modified under those terms.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  */
19 #ifndef _XUSB_H
20 #define _XUSB_H
21
22 /*
23  * BIT0 - BIT7 : SS ports
24  * BIT8 - BIT15 : USB2 UTMI ports
25  * BIT16 - BIT23 : HSIC ports
26  * BIT24 - BIT31 : ULPI ports
27  */
28 #define TEGRA_XUSB_SS_P0        (1 << 0)
29 #define TEGRA_XUSB_SS_P1        (1 << 1)
30 #define XUSB_UTMI_INDEX (8)
31 #define XUSB_UTMI_COUNT (3)
32 #define TEGRA_XUSB_USB2_P0      BIT(XUSB_UTMI_INDEX)
33 #define TEGRA_XUSB_USB2_P1      BIT(XUSB_UTMI_INDEX + 1)
34 #define TEGRA_XUSB_USB2_P2      BIT(XUSB_UTMI_INDEX + 2)
35 #define XUSB_HSIC_INDEX (16)
36 #define XUSB_HSIC_COUNT (2)
37 #define XUSB_SS_PORT_COUNT      (2)
38 #define XUSB_UTMI_COUNT         (3)
39 #define XUSB_UTMI_INDEX         (8)
40 #define TEGRA_XUSB_HSIC_P0      BIT(XUSB_HSIC_INDEX)
41 #define TEGRA_XUSB_HSIC_P1      BIT(XUSB_HSIC_INDEX + 1)
42 #define TEGRA_XUSB_ULPI_P0      (1 << 24)
43 #define TEGRA_XUSB_SS_PORT_MAP_USB2_P0 (0x0)
44 #define TEGRA_XUSB_SS_PORT_MAP_USB2_P1 (0x1)
45 #define TEGRA_XUSB_SS_PORT_MAP_USB2_P2 (0x2)
46 #define TEGRA_XUSB_SS0_PORT_MAP (0xf)
47 #define TEGRA_XUSB_SS1_PORT_MAP (0xf0)
48 #define TEGRA_XUSB_ULPI_PORT_CAP_MASTER (0x0)
49 #define TEGRA_XUSB_ULPI_PORT_CAP_PHY    (0x1)
50 #define TEGRA_XUSB_UTMIP_PMC_PORT0      (0x0)
51 #define TEGRA_XUSB_UTMIP_PMC_PORT1      (0x1)
52 #define TEGRA_XUSB_UTMIP_PMC_PORT2      (0x2)
53
54 struct tegra_xusb_regulator_name {
55         const char *utmi_vbuses[XUSB_UTMI_COUNT];
56         const char *s3p3v;
57         const char *s1p8v;
58         const char *vddio_hsic;
59         const char *s1p05v;
60 };
61
62 /* Ensure dt compatiblity when changing order */
63 struct tegra_xusb_hsic_config {
64         u8 rx_strobe_trim;
65         u8 rx_data_trim;
66         u8 tx_rtune_n;
67         u8 tx_rtune_p;
68         u8 tx_slew_n;
69         u8 tx_slew_p;
70         u8 auto_term_en;
71         u8 strb_trim_val;
72         u8 pretend_connect;
73 };
74
75 struct tegra_xusb_board_data {
76         u32     portmap;
77         /*
78          * SS0 or SS1 port may be mapped either to USB2_P0 or USB2_P1
79          * ss_portmap[0:3] = SS0 map, ss_portmap[4:7] = SS1 map
80          */
81         u8      ss_portmap;
82         u8      ulpicap;
83         u8      lane_owner;
84         bool uses_external_pmic;
85         bool gpio_controls_muxed_ss_lanes;
86         u32 gpio_ss1_sata;
87         struct tegra_xusb_regulator_name supply;
88         struct tegra_xusb_hsic_config hsic[XUSB_HSIC_COUNT];
89 };
90
91 struct tegra_xusb_platform_data {
92         u32 portmap;
93         u8 lane_owner;
94         bool pretend_connect_0;
95 };
96
97 struct tegra_xusb_chip_calib {
98         u32 hs_curr_level_pad0;
99         u32 hs_curr_level_pad1;
100         u32 hs_curr_level_pad2;
101         u32 hs_iref_cap;
102         u32 hs_term_range_adj;
103         u32 hs_squelch_level;
104 };
105 struct tegra_xusb_soc_config {
106         struct tegra_xusb_board_data *bdata;
107         u32 rx_wander;
108         u32 rx_eq;
109         u32 cdr_cntl;
110         u32 dfe_cntl;
111         u32 hs_slew;
112         u32 ls_rslew_pad0;
113         u32 ls_rslew_pad1;
114         u32 ls_rslew_pad2;
115         u32 hs_disc_lvl;
116         u32 spare_in;
117         /*
118          * BIT[0:3] = PMC port # for USB2_P0
119          * BIT[4:7] = PMC port # for USB2_P1
120          * BIT[8:11] = PMC port # for USB2_P2
121          */
122         u32 pmc_portmap;
123         /* chip specific */
124         unsigned long quirks;
125 };
126
127 #define TEGRA_XUSB_USE_HS_SRC_CLOCK2 BIT(0)
128
129 #endif /* _XUSB_H */