1 /* arch/arm/mach-rk29/include/mach/board.h
3 * Copyright (C) 2010 ROCKCHIP, Inc.
5 * This software is licensed under the terms of the GNU General Public
6 * License version 2, as published by the Free Software Foundation, and
7 * may be copied, distributed, and modified under those terms.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
15 #ifndef __ASM_ARCH_RK29_BOARD_H
16 #define __ASM_ARCH_RK29_BOARD_H
18 #include <linux/device.h>
19 #include <linux/platform_device.h>
20 #include <linux/i2c.h>
21 #include <linux/types.h>
22 #include <linux/timer.h>
23 #include <linux/notifier.h>
30 unsigned int cs_iomux_mode;
33 struct rk29xx_spi_platform_data {
34 int (*io_init)(struct spi_cs_gpio*, int);
35 int (*io_deinit)(struct spi_cs_gpio*, int);
36 int (*io_fix_leakage_bug)(void);
37 int (*io_resume_leakage_bug)(void);
38 struct spi_cs_gpio *chipselect_gpios;
43 struct rk29_vmac_platform_data {
44 int (*vmac_register_set)(void);
45 int (*rmii_io_init)(void);
46 int (*rmii_io_deinit)(void);
47 int (*rmii_power_control)(int enable);
50 #define INVALID_GPIO -1
58 int (*io_deinit)(void);
61 struct rk29_fb_setting_info{
73 struct rk29lcd_info *lcd_info;
74 int (*io_init)(struct rk29_fb_setting_info *fb_setting);
75 int (*io_deinit)(void);
76 int (*io_enable)(void);
77 int (*io_disable)(void);
84 int (*io_deinit)(void);
85 int (*pwm_suspend)(void);
86 int (*pwm_resume)(void);
87 int min_brightness; /* 0 ~ 255 */
88 unsigned int delay_ms; /* in milliseconds */
91 struct wifi_platform_data {
92 int (*set_power)(int val);
93 int (*set_reset)(int val);
94 int (*set_carddetect)(int val);
95 void *(*mem_prealloc)(int section, unsigned long size);
96 int (*get_mac_addr)(unsigned char *buf);
99 struct rk29_sdmmc_platform_data {
100 unsigned int host_caps;
101 unsigned int host_ocr_avail;
102 unsigned int use_dma:1;
104 int (*io_init)(void);
105 int (*io_deinit)(void);
106 int (*status)(struct device *);
107 int (*register_status_notify)(void (*callback)(int card_present, void *dev_id), void *dev_id);
109 int enable_sd_wakeup;
111 struct rk29_i2c_platform_data {
114 unsigned int slave_addr;
115 unsigned long scl_rate;
116 #define I2C_MODE_IRQ 0
117 #define I2C_MODE_POLL 1
119 int (*io_init)(void);
120 int (*io_deinit)(void);
123 struct bq27510_platform_data {
124 int (*init_dc_check_pin)(void);
125 unsigned int dc_check_pin;
126 unsigned int bat_num;
130 struct rk29_i2s_platform_data {
131 int (*io_init)(void);
132 int (*io_deinit)(void);
136 struct p1003_platform_data {
139 int (*get_pendown_state)(void);
140 int (*init_platform_hw)(void);
141 int (*p1003_platform_sleep)(void);
142 int (*p1003_platform_wakeup)(void);
143 void (*exit_platform_hw)(void);
145 struct eeti_egalax_platform_data{
148 int (*get_pendown_state)(void);
149 int (*init_platform_hw)(void);
150 int (*eeti_egalax_platform_sleep)(void);
151 int (*eeti_egalax_platform_wakeup)(void);
152 void (*exit_platform_hw)(void);
161 struct sintek_platform_data {
164 int (*get_pendown_state)(void);
165 int (*init_platform_hw)(void);
166 int (*sintek_platform_sleep)(void);
167 int (*sintek_platform_wakeup)(void);
168 void (*exit_platform_hw)(void);
172 struct synaptics_platform_data {
175 int (*get_pendown_state)(void);
176 int (*init_platform_hw)(void);
177 int (*sintek_platform_sleep)(void);
178 int (*sintek_platform_wakeup)(void);
179 void (*exit_platform_hw)(void);
182 struct mma8452_platform_data {
186 signed char orientation[9];
187 int (*get_pendown_state)(void);
188 int (*init_platform_hw)(void);
189 int (*mma8452_platform_sleep)(void);
190 int (*mma8452_platform_wakeup)(void);
191 void (*exit_platform_hw)(void);
194 struct cm3202_platform_data {
197 int (*init_platform_hw)(void);
198 void (*exit_platform_hw)(void);
202 struct it7260_platform_data {
203 int (*get_pendown_state)(void);
204 int (*init_platform_hw)(void);
205 int (*it7260_platform_sleep)(void);
206 int (*it7260_platform_wakeup)(void);
207 void (*exit_platform_hw)(void);
210 struct akm8975_platform_data {
212 char project_name[64];
216 struct rk29_gpio_expander_info {
217 unsigned int gpio_num;
218 unsigned int pin_type;//GPIO_IN or GPIO_OUT
219 unsigned int pin_value;//GPIO_HIGH or GPIO_LOW
222 struct tca6424_platform_data {
223 /* the first extern gpio number in all of gpio groups */
224 unsigned int gpio_base;
225 unsigned int gpio_pin_num;
226 /* the first gpio irq number in all of irq source */
228 unsigned int gpio_irq_start;
229 unsigned int irq_pin_num; //number of interrupt
230 unsigned int tca6424_irq_pin; //rk29 gpio
231 unsigned int expand_port_group;
232 unsigned int expand_port_pinnum;
233 unsigned int rk_irq_mode;
234 unsigned int rk_irq_gpio_pull_up_down;
236 /* initial polarity inversion setting */
238 struct rk29_gpio_expander_info *settinginfo;
240 void *context; /* param to setup/teardown */
242 int (*setup)(struct i2c_client *client,unsigned gpio, unsigned ngpio,void *context);
243 int (*teardown)(struct i2c_client *client,unsigned gpio, unsigned ngpio,void *context);
245 void (*reseti2cpin)(void);
248 void __init rk29_setup_early_printk(void);
249 void __init rk29_map_common_io(void);
250 void __init board_power_init(void);
252 #define BOOT_MODE_NORMAL 0
253 #define BOOT_MODE_FACTORY2 1
254 #define BOOT_MODE_RECOVERY 2
255 #define BOOT_MODE_CHARGE 3
256 #define BOOT_MODE_POWER_TEST 4
257 #define BOOT_MODE_OFFMODE_CHARGING 5
258 int board_boot_mode(void);
261 periph_pll_96mhz = 96000000,
262 periph_pll_144mhz = 144000000,
263 periph_pll_288mhz = 288000000,
264 periph_pll_300mhz = 300000000,
266 void __init rk29_clock_init(enum periph_pll ppll_rate);
268 /* for USB detection */
269 #ifdef CONFIG_USB_GADGET
270 int board_usb_detect_init(unsigned gpio);
272 static int inline board_usb_detect_init(unsigned gpio) { return 0; }
275 /* for wakeup Android */
276 void rk28_send_wakeup_key(void);