arm: tegra: E1239: Add TI aic326x support
[linux-2.6.git] / arch / arm / mach-tegra / board-enterprise.h
1 /*
2  * arch/arm/mach-tegra/board-enterprise.h
3  *
4  * Copyright (c) 2012, NVIDIA Corporation.
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_ENTERPRISE_H
22 #define _MACH_TEGRA_BOARD_ENTERPRISE_H
23
24 #include <mach/gpio.h>
25 #include <mach/irqs.h>
26 #include <linux/mfd/tps80031.h>
27
28 /* Processor Board  ID */
29 #define BOARD_E1205             0x0C05
30 #define BOARD_E1197             0x0B61
31 #define BOARD_E1239             0x0C27
32 #define SKU_BATTERY_SUPPORT     0x1
33
34 /* Board Fab version */
35 #define BOARD_FAB_A00           0x0
36 #define BOARD_FAB_A01           0x1
37 #define BOARD_FAB_A02           0x2
38 #define BOARD_FAB_A03           0x3
39 #define BOARD_FAB_A04           0x4
40
41 /* vdd_cpu voltage follower */
42 #define BOARD_SKU_VF_BIT        0x0400
43
44 int enterprise_charge_init(void);
45 int enterprise_sdhci_init(void);
46 int enterprise_pinmux_init(void);
47 int enterprise_panel_init(void);
48 int enterprise_sensors_init(void);
49 int touch_init(void);
50 int enterprise_kbc_init(void);
51 int enterprise_emc_init(void);
52 int enterprise_regulator_init(void);
53 int enterprise_modem_init(void);
54 int enterprise_suspend_init(void);
55 int enterprise_edp_init(void);
56 void enterprise_bpc_mgmt_init(void);
57
58 /* Invensense MPU Definitions */
59 #define MPU_TYPE_MPU3050        1
60 #define MPU_TYPE_MPU6050        2
61 #define MPU_GYRO_TYPE           MPU_TYPE_MPU3050
62 #define MPU_GYRO_IRQ_GPIO       TEGRA_GPIO_PH4
63 #define MPU_GYRO_ADDR           0x68
64 #define MPU_GYRO_BUS_NUM        0
65 #define MPU_GYRO_ORIENTATION    { -1, 0, 0, 0, -1, 0, 0, 0, 1 }
66 #define MPU_ACCEL_NAME          "kxtf9"
67 #define MPU_ACCEL_IRQ_GPIO      0 /* DISABLE ACCELIRQ:  TEGRA_GPIO_PJ2 */
68 #define MPU_ACCEL_ADDR          0x0F
69 #define MPU_ACCEL_BUS_NUM       0
70 #define MPU_ACCEL_ORIENTATION   { 0, 1, 0, -1, 0, 0, 0, 0, 1 }
71 #define MPU_COMPASS_NAME        "ak8975"
72 #define MPU_COMPASS_IRQ_GPIO    0
73 #define MPU_COMPASS_ADDR        0x0C
74 #define MPU_COMPASS_BUS_NUM     0
75 #define MPU_COMPASS_ORIENTATION { 0, 1, 0, -1, 0, 0, 0, 0, 1 }
76
77 /* PCA954x I2C bus expander bus addresses */
78 #define PCA954x_I2C_BUS_BASE    6
79 #define PCA954x_I2C_BUS0        (PCA954x_I2C_BUS_BASE + 0)
80 #define PCA954x_I2C_BUS1        (PCA954x_I2C_BUS_BASE + 1)
81 #define PCA954x_I2C_BUS2        (PCA954x_I2C_BUS_BASE + 2)
82 #define PCA954x_I2C_BUS3        (PCA954x_I2C_BUS_BASE + 3)
83
84 /*****************External GPIO tables ******************/
85 /* External peripheral gpio base. */
86 #define ENT_TPS80031_GPIO_BASE     TEGRA_NR_GPIOS
87 #define ENT_TPS80031_GPIO_REGEN1 (ENT_TPS80031_GPIO_BASE + TPS80031_GPIO_REGEN1)
88 #define ENT_TPS80031_GPIO_REGEN2 (ENT_TPS80031_GPIO_BASE + TPS80031_GPIO_REGEN2)
89 #define ENT_TPS80031_GPIO_SYSEN  (ENT_TPS80031_GPIO_BASE + TPS80031_GPIO_SYSEN)
90 #define ENT_TPS80031_GPIO_END   (ENT_TPS80031_GPIO_BASE + TPS80031_GPIO_NR)
91
92 /*****************External Interrupt tables ******************/
93 /* External peripheral irq base */
94 #define ENT_TPS80031_IRQ_BASE   TEGRA_NR_IRQS
95 #define ENT_TPS80031_IRQ_END  (ENT_TPS80031_IRQ_BASE + TPS80031_INT_NR)
96
97 /* AIC326X IRQs */
98 /* Assuming TPS is the PMIC on Ent */
99 #define AIC3262_CODEC_IRQ_BASE ENT_TPS80031_IRQ_END
100 #define AIC3262_CODEC_IRQ_END  (AIC3262_CODEC_IRQ_BASE + 6)
101
102 /*****************Camera GPIOs ******************/
103 #define CAM_CSI_MUX_SEL_GPIO    TEGRA_GPIO_PM3
104 #define CAM_CSI_MUX_SEL_REAR    1
105 #define CAM_CSI_MUX_SEL_FRONT   0
106
107 #define CAM1_RST_L_GPIO         TEGRA_GPIO_PM5 /*REAR RIGHT*/
108 #define CAM2_RST_L_GPIO         TEGRA_GPIO_PF4 /*REAR LEFT*/
109 #define CAM3_RST_L_GPIO         TEGRA_GPIO_PM2 /*FRONT*/
110 #define CAM3_RST_L_TRUE         0
111 #define CAM3_RST_L_FALSE        1
112 #define CAM3_PWDN_GPIO          TEGRA_GPIO_PN4 /*FRONT*/
113 #define CAM3_PWDN_TRUE          1
114 #define CAM3_PWDN_FALSE         0
115 #define CAM_FLASH_EN_GPIO       TEGRA_GPIO_PBB3
116 #define CAM_FLASH_MAX_TORCH_AMP 7
117 #define CAM_FLASH_MAX_FLASH_AMP 7
118 #define CAM_I2C_MUX_RST_EXP     TEGRA_GPIO_PF3 /*I2C Mux Reset*/
119
120 /* Audio-related GPIOs */
121 #define TEGRA_GPIO_HP_DET       TEGRA_GPIO_PW3
122 #define TEGRA_GPIO_CODEC_RST    TEGRA_GPIO_PX0
123
124 /* Baseband GPIO addresses */
125
126 #define GPIO_BB_RESET           TEGRA_GPIO_PE1
127 #define GPIO_BB_PWRON           TEGRA_GPIO_PE0
128 #define GPIO_BB_APACK           TEGRA_GPIO_PE3
129 #define GPIO_BB_APACK2          TEGRA_GPIO_PE2
130 #define GPIO_BB_CPACK           TEGRA_GPIO_PU5
131 #define GPIO_BB_CPACK2          TEGRA_GPIO_PV0
132 #define GPIO_BB_RSVD1           TEGRA_GPIO_PV1
133 #define GPIO_BB_RSVD2           TEGRA_GPIO_PU4
134
135 #define BB_GPIO_MDM_PWRON_AP2BB         TEGRA_GPIO_PE0 /* LCD_D0 */
136 #define BB_GPIO_RESET_AP2BB             TEGRA_GPIO_PE1 /* LCD_D1 */
137 #define BB_GPIO_LCD_PWR1                TEGRA_GPIO_PC1
138 #define BB_GPIO_LCD_PWR2                TEGRA_GPIO_PC6
139 #define BB_GPIO_HS1_AP2BB               TEGRA_GPIO_PE3 /* LCD_D3 */
140 #define BB_GPIO_HS1_BB2AP               TEGRA_GPIO_PU5
141
142 #define XMM_GPIO_BB_ON                  BB_GPIO_MDM_PWRON_AP2BB
143 #define XMM_GPIO_BB_RST                 BB_GPIO_RESET_AP2BB
144 #define XMM_GPIO_IPC_HSIC_ACTIVE        BB_GPIO_LCD_PWR1
145 #define XMM_GPIO_IPC_HSIC_SUS_REQ       BB_GPIO_LCD_PWR2
146 #define XMM_GPIO_IPC_BB_WAKE            BB_GPIO_HS1_AP2BB
147 #define XMM_GPIO_IPC_AP_WAKE            BB_GPIO_HS1_BB2AP
148
149 #define TDIODE_OFFSET   (9000)  /* in millicelsius */
150
151 /* Battery Peak Current Management */
152 #define TEGRA_BPC_TRIGGER               TEGRA_GPIO_PR3
153 #define TEGRA_BPC_TIMEOUT               100 /* ms */
154 #define TEGRA_BPC_CPU_PWR_LIMIT 0 /* in mW, (0 disables) */
155
156 #define TEGRA_CUR_MON_THRESHOLD         -2000
157 #define TEGRA_CUR_MON_RESISTOR          20
158 #define TEGRA_CUR_MON_MIN_CORES         2
159
160 /* Baseband IDs */
161
162 enum tegra_bb_type {
163         TEGRA_BB_PH450 = 1,
164         TEGRA_BB_XMM6260,
165         TEGRA_BB_M7400,
166 };
167
168 /* Indicate the pwm of backlight, DC pwm or external pwm3. */
169 /* External pwm is used for TAI (E1239) but do not set this compiler switch */
170 #define IS_EXTERNAL_PWM         0
171
172 #endif /*_MACH_TEGRA_BOARD_ENTERPRISE_H */