f9abc802d447e1ba4f5bfaee0c015cebc3f0c219
[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 #include <linux/platform_data/tegra_xusb.h>
23
24 /*
25  * BIT0 - BIT7 : SS ports
26  * BIT8 - BIT15 : USB2 UTMI ports
27  * BIT16 - BIT23 : HSIC ports
28  * BIT24 - BIT31 : ULPI ports
29  */
30 #define TEGRA_XUSB_SS_P0        (1 << 0)
31 #define TEGRA_XUSB_SS_P1        (1 << 1)
32 #define TEGRA_XUSB_USB2_P0      (1 << 8)
33 #define TEGRA_XUSB_USB2_P1      (1 << 9)
34 #define TEGRA_XUSB_HSIC_P0      (1 << 16)
35 #define TEGRA_XUSB_HSIC_P1      (1 << 17)
36 #define TEGRA_XUSB_ULPI_P0      (1 << 24)
37 #define TEGRA_XUSB_SS_PORT_MAP_USB2_P0 (0x0)
38 #define TEGRA_XUSB_SS_PORT_MAP_USB2_P1 (0x1)
39 #define TEGRA_XUSB_SS0_PORT_MAP (0xf)
40 #define TEGRA_XUSB_SS1_PORT_MAP (0xf0)
41
42 struct tegra_xusb_board_data {
43         u32     portmap;
44         /*
45          * SS0 or SS1 port may be mapped either to USB2_P0 or USB2_P1
46          * ss_portmap[0:3] = SS0 map, ss_portmap[4:7] = SS1 map
47          */
48         u8      ss_portmap;
49         struct tegra_xusb_pad_data *padctl_data;
50 };
51
52 struct tegra_xusb_platform_data {
53         struct tegra_xusb_board_data *bdata;
54 };
55
56 extern void tegra_xusb_init(struct tegra_xusb_board_data *bdata);
57 #endif /* _XUSB_H */