arm: tegra: cardhu: separate pinmux and gpio init
[linux-2.6.git] / arch / arm / mach-tegra / board-cardhu.h
1 /*
2  * arch/arm/mach-tegra/board-cardhu.h
3  *
4  * Copyright (c) 2011-2012, NVIDIA Corporation. All rights reserved.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program; if not, write to the Free Software Foundation, Inc.,
18  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  */
20
21 #ifndef _MACH_TEGRA_BOARD_CARDHU_H
22 #define _MACH_TEGRA_BOARD_CARDHU_H
23
24 #include <mach/gpio.h>
25 #include <mach/irqs.h>
26 #include <linux/mfd/tps6591x.h>
27 #include <linux/mfd/ricoh583.h>
28
29 /* Processor Board  ID */
30 #define BOARD_E1187   0x0B57
31 #define BOARD_E1186   0x0B56
32 #define BOARD_E1198   0x0B62
33 #define BOARD_E1256   0x0C38
34 #define BOARD_E1257   0x0C39
35 #define BOARD_E1291   0x0C5B
36 #define BOARD_PM267   0x0243
37 #define BOARD_PM269   0x0245
38 #define BOARD_E1208   0x0C08
39 #define BOARD_PM305   0x0305
40 #define BOARD_PM311   0x030B
41 #define BOARD_PMU_PM298   0x0262
42 #define BOARD_PMU_PM299   0x0263
43
44 /* SKU Information */
45 #define BOARD_SKU_B11   0xb11
46
47 #define SKU_DCDC_TPS62361_SUPPORT       0x1
48 #define SKU_SLT_ULPI_SUPPORT            0x2
49 #define SKU_T30S_SUPPORT                0x4
50 #define SKU_TOUCHSCREEN_MECH_FIX        0x0100
51
52 #define SKU_TOUCH_MASK                  0xFF00
53 #define SKU_TOUCH_2000                  0x0B00
54
55 #define SKU_MEMORY_TYPE_BIT             0x3
56 #define SKU_MEMORY_TYPE_MASK            0x7
57 /* If BOARD_PM269 */
58 #define SKU_MEMORY_SAMSUNG_EC           0x0
59 #define SKU_MEMORY_ELPIDA               0x2
60 #define SKU_MEMORY_SAMSUNG_EB           0x4
61 /* If BOARD_PM272 */
62 #define SKU_MEMORY_1GB_1R_HYNIX         0x0
63 #define SKU_MEMORY_2GB_2R_HYH9          0x2
64 /* If other BOARD_ variants */
65 #define SKU_MEMORY_CARDHU_1GB_1R        0x0
66 #define SKU_MEMORY_CARDHU_2GB_2R        0x2
67 #define SKU_MEMORY_CARDHU_2GB_1R_HYK0   0x4
68 #define SKU_MEMORY_CARDHU_2GB_1R_HYH9   0x6
69 #define SKU_MEMORY_CARDHU_2GB_1R_HYNIX  0x1
70 #define MEMORY_TYPE(sku) (((sku) >> SKU_MEMORY_TYPE_BIT) & SKU_MEMORY_TYPE_MASK)
71
72 /* Board Fab version */
73 #define BOARD_FAB_A00                   0x0
74 #define BOARD_FAB_A01                   0x1
75 #define BOARD_FAB_A02                   0x2
76 #define BOARD_FAB_A03                   0x3
77 #define BOARD_FAB_A04                   0x4
78 #define BOARD_FAB_A05                   0x5
79 #define BOARD_FAB_A06                   0x6
80 #define BOARD_FAB_A07                   0x7
81
82 /* Display Board ID */
83 #define BOARD_DISPLAY_PM313             0x030D
84 #define BOARD_DISPLAY_E1213             0x0C0D
85 #define BOARD_DISPLAY_E1247             0x0C2F
86 #define BOARD_DISPLAY_E1253             0x0C35
87 #define BOARD_DISPLAY_E1506             0x0F06
88
89 /* External peripheral act as gpio */
90 /* TPS6591x GPIOs */
91 #define TPS6591X_GPIO_BASE      TEGRA_NR_GPIOS
92 #define TPS6591X_GPIO_0         (TPS6591X_GPIO_BASE + TPS6591X_GPIO_GP0)
93 #define TPS6591X_GPIO_1         (TPS6591X_GPIO_BASE + TPS6591X_GPIO_GP1)
94 #define TPS6591X_GPIO_2         (TPS6591X_GPIO_BASE + TPS6591X_GPIO_GP2)
95 #define TPS6591X_GPIO_3         (TPS6591X_GPIO_BASE + TPS6591X_GPIO_GP3)
96 #define TPS6591X_GPIO_4         (TPS6591X_GPIO_BASE + TPS6591X_GPIO_GP4)
97 #define TPS6591X_GPIO_5         (TPS6591X_GPIO_BASE + TPS6591X_GPIO_GP5)
98 #define TPS6591X_GPIO_6         (TPS6591X_GPIO_BASE + TPS6591X_GPIO_GP6)
99 #define TPS6591X_GPIO_7         (TPS6591X_GPIO_BASE + TPS6591X_GPIO_GP7)
100 #define TPS6591X_GPIO_8         (TPS6591X_GPIO_BASE + TPS6591X_GPIO_GP8)
101 #define TPS6591X_GPIO_END       (TPS6591X_GPIO_BASE + TPS6591X_GPIO_NR)
102
103 /* RICOH583 GPIO */
104 #define RICOH583_GPIO_BASE      TEGRA_NR_GPIOS
105 #define RICOH583_GPIO_END       (RICOH583_GPIO_BASE + 8)
106
107 /* MAX77663 GPIO */
108 #define MAX77663_GPIO_BASE      TEGRA_NR_GPIOS
109 #define MAX77663_GPIO_END       (MAX77663_GPIO_BASE + MAX77663_GPIO_NR)
110
111 /* PMU_TCA6416 GPIOs */
112 #define PMU_TCA6416_GPIO_BASE   (TPS6591X_GPIO_END)
113 #define PMU_TCA6416_GPIO_PORT00 (PMU_TCA6416_GPIO_BASE + 0)
114 #define PMU_TCA6416_GPIO_PORT01 (PMU_TCA6416_GPIO_BASE + 1)
115 #define PMU_TCA6416_GPIO_PORT02 (PMU_TCA6416_GPIO_BASE + 2)
116 #define PMU_TCA6416_GPIO_PORT03 (PMU_TCA6416_GPIO_BASE + 3)
117 #define PMU_TCA6416_GPIO_PORT04 (PMU_TCA6416_GPIO_BASE + 4)
118 #define PMU_TCA6416_GPIO_PORT05 (PMU_TCA6416_GPIO_BASE + 5)
119 #define PMU_TCA6416_GPIO_PORT06 (PMU_TCA6416_GPIO_BASE + 6)
120 #define PMU_TCA6416_GPIO_PORT07 (PMU_TCA6416_GPIO_BASE + 7)
121 #define PMU_TCA6416_GPIO_PORT10 (PMU_TCA6416_GPIO_BASE + 8)
122 #define PMU_TCA6416_GPIO_PORT11 (PMU_TCA6416_GPIO_BASE + 9)
123 #define PMU_TCA6416_GPIO_PORT12 (PMU_TCA6416_GPIO_BASE + 10)
124 #define PMU_TCA6416_GPIO_PORT13 (PMU_TCA6416_GPIO_BASE + 11)
125 #define PMU_TCA6416_GPIO_PORT14 (PMU_TCA6416_GPIO_BASE + 12)
126 #define PMU_TCA6416_GPIO_PORT15 (PMU_TCA6416_GPIO_BASE + 13)
127 #define PMU_TCA6416_GPIO_PORT16 (PMU_TCA6416_GPIO_BASE + 14)
128 #define PMU_TCA6416_GPIO_PORT17 (PMU_TCA6416_GPIO_BASE + 15)
129 #define PMU_TCA6416_GPIO_END    (PMU_TCA6416_GPIO_BASE + 16)
130
131 /* PMU_TCA6416 GPIO assignment */
132 #define EN_HSIC_GPIO                            PMU_TCA6416_GPIO_PORT11 /* PMU_GPIO25 */
133 #define PM267_SMSC4640_HSIC_HUB_RESET_GPIO      PMU_TCA6416_GPIO_PORT17 /* PMU_GPIO31 */
134
135 /* CAM_TCA6416 GPIOs */
136 #define CAM_TCA6416_GPIO_BASE           PMU_TCA6416_GPIO_END
137 #define CAM1_PWR_DN_GPIO                        CAM_TCA6416_GPIO_BASE + 0
138 #define CAM1_RST_L_GPIO                         CAM_TCA6416_GPIO_BASE + 1
139 #define CAM1_AF_PWR_DN_L_GPIO           CAM_TCA6416_GPIO_BASE + 2
140 #define CAM1_LDO_SHUTDN_L_GPIO          CAM_TCA6416_GPIO_BASE + 3
141 #define CAM2_PWR_DN_GPIO                        CAM_TCA6416_GPIO_BASE + 4
142 #define CAM2_RST_L_GPIO                         CAM_TCA6416_GPIO_BASE + 5
143 #define CAM2_AF_PWR_DN_L_GPIO           CAM_TCA6416_GPIO_BASE + 6
144 #define CAM2_LDO_SHUTDN_L_GPIO          CAM_TCA6416_GPIO_BASE + 7
145 #define CAM_FRONT_PWR_DN_GPIO           CAM_TCA6416_GPIO_BASE + 8
146 #define CAM_FRONT_RST_L_GPIO            CAM_TCA6416_GPIO_BASE + 9
147 #define CAM_FRONT_AF_PWR_DN_L_GPIO      CAM_TCA6416_GPIO_BASE + 10
148 #define CAM_FRONT_LDO_SHUTDN_L_GPIO     CAM_TCA6416_GPIO_BASE + 11
149 #define CAM_FRONT_LED_EXP                       CAM_TCA6416_GPIO_BASE + 12
150 #define CAM_SNN_LED_REAR_EXP            CAM_TCA6416_GPIO_BASE + 13
151 /* PIN 19 NOT USED and is reserved */
152 #define CAM_NOT_USED                            CAM_TCA6416_GPIO_BASE + 14
153 #define CAM_I2C_MUX_RST_EXP                     CAM_TCA6416_GPIO_BASE + 15
154 #define CAM_TCA6416_GPIO_END            CAM_TCA6416_GPIO_BASE + 16
155
156 /* WM8903 GPIOs */
157 #define CARDHU_GPIO_WM8903(_x_)         (CAM_TCA6416_GPIO_END + (_x_))
158 #define CARDHU_GPIO_WM8903_END          CARDHU_GPIO_WM8903(4)
159
160 /* Audio-related GPIOs */
161 #define TEGRA_GPIO_CDC_IRQ              TEGRA_GPIO_PW3
162 #define TEGRA_GPIO_SPKR_EN              CARDHU_GPIO_WM8903(2)
163 #define TEGRA_GPIO_HP_DET               TEGRA_GPIO_PW2
164
165 /* CAMERA RELATED GPIOs on CARDHU */
166 #define OV5650_RESETN_GPIO                      TEGRA_GPIO_PBB0
167 #define CAM1_POWER_DWN_GPIO                     TEGRA_GPIO_PBB5
168 #define CAM2_POWER_DWN_GPIO                     TEGRA_GPIO_PBB6
169 #define CAM3_POWER_DWN_GPIO                     TEGRA_GPIO_PBB7
170 #define CAMERA_CSI_CAM_SEL_GPIO         TEGRA_GPIO_PBB4
171 #define CAMERA_CSI_MUX_SEL_GPIO         TEGRA_GPIO_PCC1
172 #define CAM1_LDO_EN_GPIO                        TEGRA_GPIO_PR6
173 #define CAM2_LDO_EN_GPIO                        TEGRA_GPIO_PR7
174 #define CAM3_LDO_EN_GPIO                        TEGRA_GPIO_PS0
175 #define OV14810_RESETN_GPIO                     TEGRA_GPIO_PBB0
176
177 #define CAMERA_FLASH_SYNC_GPIO          TEGRA_GPIO_PBB3
178 #define CAMERA_FLASH_MAX_TORCH_AMP      7
179 #define CAMERA_FLASH_MAX_FLASH_AMP      7
180
181 /* PCA954x I2C bus expander bus addresses */
182 #define PCA954x_I2C_BUS_BASE    6
183 #define PCA954x_I2C_BUS0        (PCA954x_I2C_BUS_BASE + 0)
184 #define PCA954x_I2C_BUS1        (PCA954x_I2C_BUS_BASE + 1)
185 #define PCA954x_I2C_BUS2        (PCA954x_I2C_BUS_BASE + 2)
186 #define PCA954x_I2C_BUS3        (PCA954x_I2C_BUS_BASE + 3)
187
188 #define AC_PRESENT_GPIO         TPS6591X_GPIO_4
189
190 /*****************Interrupt tables ******************/
191 /* External peripheral act as interrupt controller */
192 /* TPS6591x IRQs */
193 #define TPS6591X_IRQ_BASE       TEGRA_NR_IRQS
194 #define TPS6591X_IRQ_END        (TPS6591X_IRQ_BASE + 18)
195 #define DOCK_DETECT_GPIO TEGRA_GPIO_PU4
196
197 /* RICOH583 IRQs */
198 #define RICOH583_IRQ_BASE       TEGRA_NR_IRQS
199 #define RICOH583_IRQ_END        (RICOH583_IRQ_BASE + RICOH583_NR_IRQS)
200
201 /* MAX77663 IRQs */
202 #define MAX77663_IRQ_BASE       TEGRA_NR_IRQS
203 #define MAX77663_IRQ_END        (MAX77663_IRQ_BASE + MAX77663_IRQ_NR)
204
205 int cardhu_charge_init(void);
206 int cardhu_regulator_init(void);
207 int cardhu_suspend_init(void);
208 int cardhu_sdhci_init(void);
209 int cardhu_pinmux_init(void);
210 int cardhu_gpio_init(void);
211 int cardhu_panel_init(void);
212 int cardhu_sensors_init(void);
213 int cardhu_kbc_init(void);
214 int cardhu_scroll_init(void);
215 int cardhu_keys_init(void);
216 int cardhu_pins_state_init(void);
217 int cardhu_emc_init(void);
218 int cardhu_edp_init(void);
219 int cardhu_pmon_init(void);
220 int cardhu_pm298_gpio_switch_regulator_init(void);
221 int cardhu_pm298_regulator_init(void);
222 int cardhu_pm299_gpio_switch_regulator_init(void);
223 int cardhu_pm299_regulator_init(void);
224
225 extern struct tegra_uart_platform_data cardhu_irda_pdata;
226
227 /* Touch definitions */
228 #define TOUCH_GPIO_IRQ_RAYDIUM_SPI      TEGRA_GPIO_PH4
229 #define TOUCH_GPIO_RST_RAYDIUM_SPI      TEGRA_GPIO_PH6
230
231 /* Sensor definitions */
232 #define MPU_GYRO_NAME           "mpu3050"
233 #define MPU_GYRO_IRQ_GPIO       TEGRA_GPIO_PX1
234 #define MPU_GYRO_ADDR           0x68
235 #define MPU_GYRO_BUS_NUM        2
236 #define MPU_GYRO_ORIENTATION    { 0, -1, 0, -1, 0, 0, 0, 0, -1 }
237 #define MPU_ACCEL_NAME          "kxtf9"
238 #define MPU_ACCEL_IRQ_GPIO      0 /* DISABLE ACCELIRQ:  TEGRA_GPIO_PL1 */
239 #define MPU_ACCEL_ADDR          0x0F
240 #define MPU_ACCEL_BUS_NUM       2
241 #define MPU_ACCEL_ORIENTATION   { 0, -1, 0, -1, 0, 0, 0, 0, -1 }
242 #define MPU_COMPASS_NAME        "ak8975"
243 #define MPU_COMPASS_IRQ_GPIO    0
244 #define MPU_COMPASS_ADDR        0x0C
245 #define MPU_COMPASS_BUS_NUM     2
246 #define MPU_COMPASS_ORIENTATION { 1, 0, 0, 0, 1, 0, 0, 0, 1 }
247
248 /* Baseband GPIO addresses */
249 #define BB_GPIO_BB_EN                   TEGRA_GPIO_PR5
250 #define BB_GPIO_BB_RST                  TEGRA_GPIO_PS4
251 #define BB_GPIO_SPI_INT                 TEGRA_GPIO_PS6
252 #define BB_GPIO_SPI_SS                  TEGRA_GPIO_PV0
253 #define BB_GPIO_AWR                     TEGRA_GPIO_PS7
254 #define BB_GPIO_CWR                     TEGRA_GPIO_PU5
255
256 #define XMM_GPIO_BB_ON                  BB_GPIO_BB_EN
257 #define XMM_GPIO_BB_RST                 BB_GPIO_BB_RST
258 #define XMM_GPIO_IPC_HSIC_ACTIVE        BB_GPIO_SPI_INT
259 #define XMM_GPIO_IPC_HSIC_SUS_REQ       BB_GPIO_SPI_SS
260 #define XMM_GPIO_IPC_BB_WAKE            BB_GPIO_AWR
261 #define XMM_GPIO_IPC_AP_WAKE            BB_GPIO_CWR
262
263 #endif