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>
24 #include <plat/board.h>
26 struct led_newton_pwm {
31 unsigned int pwm_iomux_pwm;
32 unsigned int pwm_iomux_gpio;
33 unsigned int freq;/**/
34 unsigned int period;/*1-100*/
37 struct led_newton_pwm_platform_data {
39 struct led_newton_pwm* leds;
42 struct hdmi_platform_data {
46 int (*io_deinit)(void);
50 struct rk29_adc_battery_platform_data {
52 int (*io_deinit)(void);
66 struct rk29_button_light_info{
70 int (*io_deinit)(void);
74 struct rk29_vmac_platform_data {
75 int (*vmac_register_set)(void);
76 int (*rmii_io_init)(void);
77 int (*rmii_io_deinit)(void);
78 int (*rmii_power_control)(int enable);
81 #define INVALID_GPIO -1
84 #ifndef _LINUX_WLAN_PLAT_H_
85 struct wifi_platform_data {
86 int (*set_power)(int val);
87 int (*set_reset)(int val);
88 int (*set_carddetect)(int val);
89 void *(*mem_prealloc)(int section, unsigned long size);
90 int (*get_mac_addr)(unsigned char *buf);
94 struct rk29_i2c_platform_data {
97 unsigned int slave_addr;
98 unsigned long scl_rate;
99 #define I2C_MODE_IRQ 0
100 #define I2C_MODE_POLL 1
102 int (*io_init)(void);
103 int (*io_deinit)(void);
106 struct bq27510_platform_data {
107 int (*init_dc_check_pin)(void);
108 unsigned int dc_check_pin;
109 unsigned int bat_num;
112 struct bq27541_platform_data {
113 int (*init_dc_check_pin)(void);
114 unsigned int dc_check_pin;
115 unsigned int bat_check_pin;
116 unsigned int chgok_check_pin;
117 unsigned int bat_num;
121 struct rk29_i2s_platform_data {
122 int (*io_init)(void);
123 int (*io_deinit)(void);
127 struct p1003_platform_data {
130 int (*get_pendown_state)(void);
131 int (*init_platform_hw)(void);
132 int (*p1003_platform_sleep)(void);
133 int (*p1003_platform_wakeup)(void);
134 void (*exit_platform_hw)(void);
136 struct eeti_egalax_platform_data{
139 int (*get_pendown_state)(void);
140 int (*init_platform_hw)(void);
141 int (*eeti_egalax_platform_sleep)(void);
142 int (*eeti_egalax_platform_wakeup)(void);
143 void (*exit_platform_hw)(void);
151 struct atmel_1386_platform_data {
152 u8 numtouch; /* Number of touches to report */
153 int (*init_platform_hw)(struct device *dev);
154 void (*exit_platform_hw)(struct device *dev);
155 int max_x; /* The default reported X range */
156 int max_y; /* The default reported Y range */
157 u8 (*valid_interrupt) (void);
158 u8 (*read_chg) (void);
162 struct sintek_platform_data {
165 int (*get_pendown_state)(void);
166 int (*init_platform_hw)(void);
167 int (*sintek_platform_sleep)(void);
168 int (*sintek_platform_wakeup)(void);
169 void (*exit_platform_hw)(void);
173 struct synaptics_platform_data {
176 int (*get_pendown_state)(void);
177 int (*init_platform_hw)(void);
178 int (*sintek_platform_sleep)(void);
179 int (*sintek_platform_wakeup)(void);
180 void (*exit_platform_hw)(void);
184 struct bma023_platform_data {
188 signed char orientation[9];
189 int (*get_pendown_state)(void);
190 int (*init_platform_hw)(void);
191 int (*mma8452_platform_sleep)(void);
192 int (*mma8452_platform_wakeup)(void);
193 void (*exit_platform_hw)(void);
196 struct cm3202_platform_data {
199 int (*init_platform_hw)(void);
200 void (*exit_platform_hw)(void);
204 struct it7260_platform_data {
205 int (*get_pendown_state)(void);
206 int (*init_platform_hw)(void);
207 int (*it7260_platform_sleep)(void);
208 int (*it7260_platform_wakeup)(void);
209 void (*exit_platform_hw)(void);
212 struct ft5406_platform_data {
213 int (*get_pendown_state)(void);
214 int (*init_platform_hw)(void);
215 int (*platform_sleep)(void);
216 int (*platform_wakeup)(void);
217 void (*exit_platform_hw)(void);
221 struct cs42l52_platform_data {
222 int (*get_pendown_state)(void);
223 int (*init_platform_hw)(void);
224 int (*platform_sleep)(void);
225 int (*platform_wakeup)(void);
226 void (*exit_platform_hw)(void);
231 struct nas_platform_data {
234 int (*get_pendown_state)(void);
235 int (*init_platform_hw)(void);
236 int (*nas_platform_sleep)(void);
237 int (*nas_platform_wakeup)(void);
238 void (*exit_platform_hw)(void);
242 struct laibao_platform_data {
245 int (*get_pendown_state)(void);
246 int (*init_platform_hw)(void);
247 int (*laibao_platform_sleep)(void);
248 int (*laibao_platform_wakeup)(void);
249 void (*exit_platform_hw)(void);
256 struct rk29_newton_data {
259 struct tca6424_platform_data {
260 /* the first extern gpio number in all of gpio groups */
261 unsigned int gpio_base;
262 unsigned int gpio_pin_num;
263 /* the first gpio irq number in all of irq source */
265 unsigned int gpio_irq_start;
266 unsigned int irq_pin_num; //number of interrupt
267 unsigned int tca6424_irq_pin; //rk29 gpio
268 unsigned int expand_port_group;
269 unsigned int expand_port_pinnum;
270 unsigned int rk_irq_mode;
271 unsigned int rk_irq_gpio_pull_up_down;
273 /* initial polarity inversion setting */
275 struct rk29_gpio_expander_info *settinginfo;
277 void *context; /* param to setup/teardown */
279 int (*setup)(struct i2c_client *client,unsigned gpio, unsigned ngpio,void *context);
280 int (*teardown)(struct i2c_client *client,unsigned gpio, unsigned ngpio,void *context);
282 void (*reseti2cpin)(void);
285 void __init rk29_setup_early_printk(void);
286 void __init rk29_map_common_io(void);
287 void __init board_power_init(void);
290 periph_pll_96mhz = 96000000, /* save more power */
291 periph_pll_144mhz = 144000000,
292 periph_pll_288mhz = 288000000, /* for USB 1.1 */
293 periph_pll_300mhz = 300000000, /* for Ethernet */
294 #if defined(CONFIG_RK29_VMAC) && defined(CONFIG_USB20_HOST_EN)
295 periph_pll_default = periph_pll_300mhz,
297 periph_pll_default = periph_pll_288mhz,
302 codec_pll_297mhz = 297000000, /* for HDMI */
303 codec_pll_300mhz = 300000000,
304 codec_pll_504mhz = 504000000,
305 codec_pll_552mhz = 552000000,
306 codec_pll_594mhz = 594000000, /* for HDMI */
307 codec_pll_600mhz = 600000000,
310 void __init rk29_clock_init(enum periph_pll ppll_rate); /* codec pll is 297MHz, has xin27m */
311 void __init rk29_clock_init2(enum periph_pll ppll_rate, enum codec_pll cpll_rate, bool has_xin27m);