rk2928-phonepad-sdk: add ap321xx l/p sensor and byd693x tp support
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-rk2928 / include / mach / board.h
1 #ifndef __MACH_BOARD_H
2 #define __MACH_BOARD_H
3
4 #include <linux/device.h>
5 #include <linux/platform_device.h>
6 #include <linux/i2c.h>
7 #include <linux/types.h>
8 #include <linux/timer.h>
9 #include <linux/notifier.h>
10 #include <asm/setup.h>
11 #include <plat/board.h>
12 #include <mach/sram.h>
13 #include <linux/i2c-gpio.h>
14
15 extern struct rk29_sdmmc_platform_data default_sdmmc0_data;
16 extern struct rk29_sdmmc_platform_data default_sdmmc1_data;
17
18 extern struct i2c_gpio_platform_data default_i2c_gpio_data; 
19
20 void __init rk2928_map_common_io(void);
21 void __init rk2928_init_irq(void);
22 void __init rk2928_map_io(void);
23 struct machine_desc;
24 void __init rk2928_fixup(struct machine_desc *desc, struct tag *tags, char **cmdline, struct meminfo *mi);
25 void __init rk2928_clock_data_init(unsigned long gpll,unsigned long cpll,u32 flags);
26 void __init board_clock_init(void);
27 void __init rk2928_iomux_init(void);
28 void board_gpio_suspend(void);
29 void board_gpio_resume(void);
30 void __sramfunc board_pmu_suspend(void);
31 void __sramfunc board_pmu_resume(void);
32
33 extern struct sys_timer rk2928_timer;
34
35 #ifdef CONFIG_BATTERY_RK30_ADC_FAC
36 /* adc battery */
37 struct rk30_adc_battery_platform_data {
38         int (*io_init)(void);
39         int (*io_deinit)(void);
40
41         int dc_det_pin;
42         int batt_low_pin;
43         int charge_ok_pin;
44         int charge_set_pin;
45
46 //        int adc_channel;
47
48         int dc_det_level;
49         int batt_low_level;
50         int charge_ok_level;
51         int charge_set_level;
52 };
53 #endif
54
55 #ifndef _LINUX_WLAN_PLAT_H_
56 struct wifi_platform_data {
57         int (*set_power)(int val);
58         int (*set_reset)(int val);
59         int (*set_carddetect)(int val);
60         void *(*mem_prealloc)(int section, unsigned long size);
61         int (*get_mac_addr)(unsigned char *buf);
62 };
63 #endif
64 #if defined (CONFIG_EETI_EGALAX)
65 struct eeti_egalax_platform_data{
66         u16     model;
67
68     int     (*get_pendown_state)(void);
69     int     (*init_platform_hw)(void);
70     int     (*eeti_egalax_platform_sleep)(void);
71     int     (*eeti_egalax_platform_wakeup)(void);
72     void    (*exit_platform_hw)(void);
73     int     standby_pin;
74     int     standby_value;
75     int     disp_on_pin;
76     int     disp_on_value;
77  
78 };
79 #endif
80 #if defined (CONFIG_TOUCHSCREEN_SITRONIX_A720)
81 struct ft5x0x_platform_data{
82           u16     model;
83     int     (*get_pendown_state)(void);
84     int     (*init_platform_hw)(void);
85     int     (*ft5x0x_platform_sleep)(void);
86     int     (*ft5x0x_platform_wakeup)(void);
87     void    (*exit_platform_hw)(void);
88 };
89 #endif
90
91 #if defined (CONFIG_TOUCHSCREEN_I30)
92 struct ft5306_platform_data {
93     int rest_pin;
94     int irq_pin ;
95     int     (*get_pendown_state)(void);
96     int     (*init_platform_hw)(void);
97     int     (*platform_sleep)(void);
98     int     (*platform_wakeup)(void);
99     void    (*exit_platform_hw)(void);
100 };
101 #endif
102 #if defined(CONFIG_TOUCHSCREEN_BYD693X)
103 struct byd_platform_data {
104         u16     model;
105         int     pwr_pin;
106         int       int_pin;
107         int     rst_pin;
108         int             pwr_on_value;
109         int     *tp_flag;
110
111         uint16_t screen_max_x;
112         uint16_t screen_max_y;
113         u8 swap_xy :1;
114         u8 xpol :1;
115         u8 ypol :1;     
116 };
117 #endif
118
119
120 #if defined (CONFIG_GPIOEXP_AW9523B)
121 struct gpio_exp_platform_data {
122     int     (*init_platform_hw)(void);
123     void    (*exit_platform_hw)(void);
124 };
125 #endif
126
127 #ifdef CONFIG_INPUT_AP321XX
128 struct ap321xx_platform_data {
129         int (*init_platform_hw)(void);
130         void (*exit_platform_hw)(void);
131 };
132 #endif
133
134 enum _periph_pll {
135         periph_pll_1485mhz = 148500000,
136         periph_pll_297mhz = 297000000,
137         periph_pll_300mhz = 300000000,
138         periph_pll_1188mhz = 1188000000, /* for box*/
139 };
140 enum _codec_pll {
141         codec_pll_360mhz = 360000000, /* for HDMI */
142         codec_pll_408mhz = 408000000,
143         codec_pll_456mhz = 456000000,
144         codec_pll_504mhz = 504000000,
145         codec_pll_552mhz = 552000000, /* for HDMI */
146         codec_pll_600mhz = 600000000,
147         codec_pll_742_5khz = 742500000,
148         codec_pll_798mhz = 798000000,
149         codec_pll_1064mhz = 1064000000,
150         codec_pll_1188mhz = 1188000000,
151 };
152
153 //max i2s rate
154 #define CLK_FLG_MAX_I2S_12288KHZ        (1<<1)
155 #define CLK_FLG_MAX_I2S_22579_2KHZ      (1<<2)
156 #define CLK_FLG_MAX_I2S_24576KHZ        (1<<3)
157 #define CLK_FLG_MAX_I2S_49152KHZ        (1<<4)
158
159 #define RK30_CLOCKS_DEFAULT_FLAGS (CLK_FLG_MAX_I2S_12288KHZ/*|CLK_FLG_EXT_27MHZ*/)
160 #define periph_pll_default periph_pll_297mhz
161 #define codec_pll_default codec_pll_798mhz
162 //#define codec_pll_default codec_pll_1064mhz
163
164
165 #endif