ARM: tegra: loki: fix build error due to warning
[linux-3.10.git] / arch / arm / mach-tegra / board.h
1 /*
2  * arch/arm/mach-tegra/board.h
3  *
4  * Copyright (C) 2010 Google, Inc.
5  * Copyright (c) 2011-2013, NVIDIA CORPORATION.  All rights reserved.
6  *
7  * Author:
8  *      Colin Cross <ccross@google.com>
9  *      Erik Gilling <konkers@google.com>
10  *
11  * This program is free software; you can redistribute it and/or modify it
12  * under the terms and conditions of the GNU General Public License,
13  * version 2, as published by the Free Software Foundation.
14  *
15  * This program is distributed in the hope it will be useful, but WITHOUT
16  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
18  * more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22  */
23
24 #ifndef __MACH_TEGRA_BOARD_H
25 #define __MACH_TEGRA_BOARD_H
26
27 #include <linux/types.h>
28 #include <linux/errno.h>
29 #include <linux/power_supply.h>
30 #include <linux/memory.h>
31
32 #include <mach/tegra_smmu.h>
33
34 #ifdef CONFIG_TEGRA_NVDUMPER
35 #define NVDUMPER_RESERVED_SIZE 4096UL
36 #endif
37
38 #define ADD_FIXED_VOLTAGE_REG(_name)    (&_name##_fixed_voltage_device)
39
40 /* Macro for defining fixed voltage regulator */
41 #define FIXED_VOLTAGE_REG_INIT(_id, _name, _microvolts, _gpio,          \
42                 _startup_delay, _enable_high, _enabled_at_boot,         \
43                 _valid_ops_mask, _always_on)                            \
44         static struct regulator_init_data _name##_initdata = {          \
45                 .consumer_supplies = _name##_consumer_supply,           \
46                 .num_consumer_supplies =                                \
47                                 ARRAY_SIZE(_name##_consumer_supply),    \
48                 .constraints = {                                        \
49                         .valid_ops_mask = _valid_ops_mask ,             \
50                         .always_on = _always_on,                        \
51                 },                                                      \
52         };                                                              \
53         static struct fixed_voltage_config _name##_config = {           \
54                 .supply_name            = #_name,                       \
55                 .microvolts             = _microvolts,                  \
56                 .gpio                   = _gpio,                        \
57                 .startup_delay          = _startup_delay,               \
58                 .enable_high            = _enable_high,                 \
59                 .enabled_at_boot        = _enabled_at_boot,             \
60                 .init_data              = &_name##_initdata,            \
61         };                                                              \
62         static struct platform_device _name##_fixed_voltage_device = {  \
63                 .name                   = "reg-fixed-voltage",          \
64                 .id                     = _id,                          \
65                 .dev                    = {                             \
66                         .platform_data  = &_name##_config,              \
67                 },                                                      \
68         }
69
70 #if defined(CONFIG_TEGRA_NVMAP)
71 #define NVMAP_HEAP_CARVEOUT_IRAM_INIT   \
72         {       .name           = "iram",                                       \
73                 .usage_mask     = NVMAP_HEAP_CARVEOUT_IRAM,                     \
74                 .base           = TEGRA_IRAM_BASE + TEGRA_RESET_HANDLER_SIZE,   \
75                 .size           = TEGRA_IRAM_SIZE - TEGRA_RESET_HANDLER_SIZE,   \
76                 .buddy_size     = 0, /* no buddy allocation for IRAM */         \
77         }
78 #endif
79
80 /* This information is passed by bootloader */
81 #define COMMCHIP_DEFAULT                0
82 #define COMMCHIP_NOCHIP                 1
83 #define COMMCHIP_BROADCOM_BCM4329       2
84 #define COMMCHIP_BROADCOM_BCM4330       3
85 #define COMMCHIP_MARVELL_SD8797         4
86 #define COMMCHIP_TI_WL18XX              5
87 #define COMMCHIP_BROADCOM_BCM43241      6
88
89 struct memory_accessor;
90
91 void tegra_assert_system_reset(char mode, const char *cmd);
92
93 void __init tegra20_init_early(void);
94 void __init tegra30_init_early(void);
95 void __init tegra11x_init_early(void);
96 void __init tegra12x_init_early(void);
97 void __init tegra14x_init_early(void);
98 void __init tegra_map_common_io(void);
99 void __init tegra_dt_init_irq(void);
100 void __init tegra_reserve(unsigned long carveout_size, unsigned long fb_size,
101         unsigned long fb2_size);
102 int __init tegra_release_bootloader_fb(void);
103 void __init tegra_protected_aperture_init(unsigned long aperture);
104 int  __init tegra_init_board_info(void);
105 void __tegra_move_framebuffer(struct platform_device *pdev,
106                               phys_addr_t to, phys_addr_t from,
107                               size_t size);
108 static inline void tegra_move_framebuffer(phys_addr_t to, phys_addr_t from,
109                                           size_t size)
110 {
111         __tegra_move_framebuffer(NULL, to, from, size);
112 }
113 void __tegra_clear_framebuffer(struct platform_device *pdev,
114                                unsigned long to, unsigned long size);
115 static inline void tegra_clear_framebuffer(unsigned long to, unsigned long size)
116 {
117         __tegra_clear_framebuffer(NULL, to, size);
118 }
119 bool is_tegra_debug_uartport_hs(void);
120 int get_tegra_uart_debug_port_id(void);
121 int __init tegra_register_fuse(void);
122
123 #ifdef CONFIG_PSTORE_RAM
124 void __init tegra_ram_console_debug_reserve(unsigned long ram_console_size);
125 #else
126 static inline void __init tegra_ram_console_debug_reserve(unsigned long ram_console_size)
127 {}
128 #endif
129
130 extern phys_addr_t tegra_bootloader_fb_start;
131 extern phys_addr_t tegra_bootloader_fb_size;
132 extern phys_addr_t tegra_bootloader_fb2_start;
133 extern phys_addr_t tegra_bootloader_fb2_size;
134 extern phys_addr_t tegra_fb_start;
135 extern phys_addr_t tegra_fb_size;
136 extern phys_addr_t tegra_fb2_start;
137 extern phys_addr_t tegra_fb2_size;
138 extern phys_addr_t tegra_carveout_start;
139 extern phys_addr_t tegra_carveout_size;
140 extern phys_addr_t tegra_vpr_start;
141 extern phys_addr_t tegra_vpr_size;
142 extern phys_addr_t tegra_lp0_vec_start;
143 extern phys_addr_t tegra_lp0_vec_size;
144 #if defined(CONFIG_ARCH_TEGRA_14x_SOC)
145 extern phys_addr_t tegra_wb0_params_address;
146 extern phys_addr_t tegra_wb0_params_instances;
147 extern phys_addr_t tegra_wb0_params_block_size;
148 #endif
149 #ifdef CONFIG_TEGRA_NVDUMPER
150 extern unsigned long nvdumper_reserved;
151 #endif
152 extern bool tegra_lp0_vec_relocate;
153 extern unsigned long tegra_grhost_aperture;
154 #ifdef CONFIG_TEGRA_USE_NCT
155 /* info for NCK(NCT for Kernel) carveout area */
156 extern unsigned long tegra_nck_start;
157 extern unsigned long tegra_nck_size;
158 #endif
159
160 #ifdef CONFIG_TEGRA_IOMMU_SMMU
161 void tegra_fb_linear_set(struct iommu_linear_map *map);
162 #else
163 static inline void tegra_fb_linear_set(struct iommu_linear_map *map) {}
164 #endif
165
166 void tegra_init_late(void);
167
168 #ifdef CONFIG_DEBUG_FS
169 int tegra_clk_debugfs_init(void);
170 #else
171 static inline int tegra_clk_debugfs_init(void) { return 0; }
172 #endif
173
174 #if defined(CONFIG_DEBUG_FS)
175 int __init tegra_powergate_debugfs_init(void);
176 #else
177 static inline int tegra_powergate_debugfs_init(void) { return 0; }
178 #endif
179
180 int __init harmony_regulator_init(void);
181 #ifdef CONFIG_TEGRA_PCI
182 int __init harmony_pcie_init(void);
183 #else
184 static inline int harmony_pcie_init(void) { return 0; }
185 #endif
186
187 void __init tegra_paz00_wifikill_init(void);
188
189 extern void tegra_init_timer(void);
190
191 enum board_fab {
192         BOARD_FAB_A = 0,
193         BOARD_FAB_B,
194         BOARD_FAB_C,
195         BOARD_FAB_D,
196 };
197
198 struct board_info {
199         u16 board_id;
200         u16 sku;
201         u8  fab;
202         u8  major_revision;
203         u8  minor_revision;
204 };
205
206 enum panel_type {
207         panel_type_lvds = 0,
208         panel_type_dsi,
209 };
210
211 enum touch_type {
212         RAYDIUM_TOUCH  = 0,
213         SYNAPTIC_TOUCH = 1,
214 };
215
216 enum audio_codec_type {
217         audio_codec_none,
218         audio_codec_wm8903,
219 };
220
221 enum image_type {
222         system_image = 0,
223         rck_image,
224 };
225
226 void tegra_get_board_info(struct board_info *);
227 void tegra_get_pmu_board_info(struct board_info *bi);
228 void tegra_get_display_board_info(struct board_info *bi);
229 void tegra_get_camera_board_info(struct board_info *bi);
230 void tegra_get_io_board_info(struct board_info *bi);
231 void tegra_get_button_board_info(struct board_info *bi);
232 void tegra_get_joystick_board_info(struct board_info *bi);
233 void tegra_get_rightspeaker_board_info(struct board_info *bi);
234 void tegra_get_leftspeaker_board_info(struct board_info *bi);
235 int tegra_get_board_panel_id(void);
236 int tegra_get_touch_vendor_id(void);
237 int tegra_get_touch_panel_id(void);
238
239 int get_core_edp(void);
240 enum panel_type get_panel_type(void);
241 int tegra_get_usb_port_owner_info(void);
242 int tegra_get_lane_owner_info(void);
243 int tegra_get_modem_id(void);
244 int tegra_get_commchip_id(void);
245 u8 get_power_config(void);
246 u8 get_display_config(void);
247 enum power_supply_type get_power_supply_type(void);
248 enum audio_codec_type get_audio_codec_type(void);
249 int get_maximum_cpu_current_supported(void);
250 int get_maximum_core_current_supported(void);
251 int get_emc_max_dvfs(void);
252 int tegra_get_memory_type(void);
253 void tegra_enable_pinmux(void);
254 enum image_type get_tegra_image_type(void);
255 int tegra_get_cvb_alignment_uV(void);
256 int tegra_soc_device_init(const char *machine);
257 int get_pwr_i2c_clk_rate(void);
258 bool is_pmic_wdt_disabled_at_boot(void);
259
260 extern void tegra_set_usb_vbus_internal_wake(bool enable);
261 extern void tegra_set_usb_id_internal_wake(bool enable);
262 #endif