388c1d0ce60ff839cd16fc636f959b84f53cd05a
[firefly-linux-kernel-4.4.55.git] / arch / arm / plat-rk / include / plat / board.h
1 #ifndef __PLAT_BOARD_H
2 #define __PLAT_BOARD_H
3
4 #include <linux/types.h>
5 #include <linux/init.h>
6 #include <linux/device.h>
7 #include <linux/rk_screen.h>
8
9 enum {
10         I2C_IDLE = 0,
11         I2C_SDA_LOW,
12         I2C_SCL_LOW,
13         BOTH_LOW,
14 };
15 struct rk30_i2c_platform_data {
16         char *name;
17         int bus_num;
18 #define I2C_RK29_ADAP   0
19 #define I2C_RK30_ADAP   1
20         int adap_type;
21         int is_div_from_arm;
22         u32 flags;
23         int (*io_init)(void);
24         int (*io_deinit)(void);
25         int (*check_idle)(int);
26 };
27
28 struct spi_cs_gpio {
29         const char *name;
30         unsigned int cs_gpio;
31         char *cs_iomux_name;
32         unsigned int cs_iomux_mode;
33 };
34
35 struct rk29xx_spi_platform_data {
36         int (*io_init)(struct spi_cs_gpio*, int);
37         int (*io_deinit)(struct spi_cs_gpio*, int);
38         int (*io_fix_leakage_bug)(void);
39         int (*io_resume_leakage_bug)(void);
40         struct spi_cs_gpio *chipselect_gpios;
41         u16 num_chipselect;
42 };
43
44 struct rk29_bl_info {
45         u32 pwm_id;
46         u32 bl_ref;
47         int (*io_init)(void);
48         int (*io_deinit)(void);
49         int (*pwm_suspend)(void);
50         int (*pwm_resume)(void);
51         int min_brightness;     /* 0 ~ 255 */
52         unsigned int delay_ms;  /* in milliseconds */
53         int pre_div;
54 };
55
56 struct rk29_io_t {
57     unsigned long io_addr;
58     unsigned long enable;
59     unsigned long disable;
60     int (*io_init)(void);
61 };
62
63
64
65 struct rk29_fb_setting_info {
66         u8 data_num;
67         u8 vsync_en;
68         u8 den_en;
69         u8 mcu_fmk_en;
70         u8 disp_on_en;
71         u8 standby_en;
72 };
73
74 struct rk29fb_info {
75         u32 fb_id;
76         enum rk_disp_prop prop;         //display device property,like PRMRY,EXTEND
77         u32 mcu_fmk_pin;
78         struct rk29lcd_info *lcd_info;
79         int (*io_init)(struct rk29_fb_setting_info *fb_setting);
80         int (*io_deinit)(void);
81         int (*io_enable)(void);
82         int (*io_disable)(void);
83         void (*set_screen_info)(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info );
84 };
85
86 struct rksdmmc_iomux {
87     char    *name;  //set the MACRO of gpio
88     int     fgpio;
89     int     fmux;
90 };
91
92 struct rksdmmc_gpio {
93     int     io;                             //set the address of gpio
94     char    name[64];   //
95     int     enable;  // disable = !enable   //set the default value,i.e,GPIO_HIGH or GPIO_LOW
96     struct rksdmmc_iomux  iomux;
97 };
98
99
100 struct rksdmmc_gpio_board {
101     struct rksdmmc_gpio   clk_gpio;
102     struct rksdmmc_gpio   cmd_gpio;
103     struct rksdmmc_gpio   data0_gpio;
104     struct rksdmmc_gpio   data1_gpio;    
105     struct rksdmmc_gpio   data2_gpio;
106     struct rksdmmc_gpio   data3_gpio;
107    
108     struct rksdmmc_gpio   detect_irq;    
109     struct rksdmmc_gpio   power_en_gpio;   
110     struct rksdmmc_gpio   write_prt;
111     struct rksdmmc_gpio   sdio_irq_gpio;
112 };
113
114
115 struct rksdmmc_gpio_wifi_moudle {
116     struct rksdmmc_gpio   power_n;    
117     struct rksdmmc_gpio   reset_n;   
118     struct rksdmmc_gpio   vddio;
119     struct rksdmmc_gpio   bgf_int_b;
120     struct rksdmmc_gpio   wifi_int_b;
121     struct rksdmmc_gpio   gps_sync;
122 };
123
124
125 struct rk29_sdmmc_platform_data {
126         unsigned int host_caps;
127         unsigned int host_ocr_avail;
128         unsigned int use_dma:1;
129         char dma_name[8];
130         int (*io_init)(void);
131         int (*io_deinit)(void);
132         void (*set_iomux)(int device_id, unsigned int bus_width);//added by xbw at 2011-10-13
133         int (*status)(struct device *);
134         int (*register_status_notify)(void (*callback)(int card_present, void *dev_id), void *dev_id);
135         int detect_irq;
136         int insert_card_level;
137         int enable_sd_wakeup;
138         int write_prt;
139         unsigned int sdio_INT_gpio; //add gpio INT for sdio interrupt.Modifed by xbw at 2012-08-09
140 };
141
142 struct gsensor_platform_data {
143         u16 model;
144         u16 swap_xy;
145         u16 swap_xyz;
146         signed char orientation[9];
147         int (*get_pendown_state)(void);
148         int (*init_platform_hw)(void);
149         int (*gsensor_platform_sleep)(void);
150         int (*gsensor_platform_wakeup)(void);
151         void (*exit_platform_hw)(void);
152 };
153
154 struct ft5606_platform_data {
155     int     (*get_pendown_state)(void);
156     int     (*init_platform_hw)(void);
157     int     (*platform_sleep)(void);
158     int     (*platform_wakeup)(void);
159     void    (*exit_platform_hw)(void);
160 };
161
162 struct akm8975_platform_data {
163         short m_layout[4][3][3];
164         char project_name[64];
165         int gpio_DRDY;
166 };
167
168 struct sensor_platform_data {
169         int type;
170         int irq;
171         int power_pin;
172         int reset_pin;
173         int irq_enable;         //if irq_enable=1 then use irq else use polling  
174         int poll_delay_ms;      //polling
175         int x_min;              //filter
176         int y_min;
177         int z_min;
178         int factory;
179         unsigned char address;
180         signed char orientation[9];
181         short m_layout[4][3][3];
182         char project_name[64];
183         int (*init_platform_hw)(void);
184         void (*exit_platform_hw)(void);
185         int (*power_on)(void);
186         int (*power_off)(void);
187 };
188
189 /* Platform data for the board id */
190 struct board_id_platform_data {
191         int gpio_pin[32];
192         int num_gpio;
193         int (*init_platform_hw)(void);  
194         int (*exit_platform_hw)(void);
195         int (*init_parameter)(int id);  
196 };
197
198
199
200 struct goodix_platform_data {
201         int model ;
202         int rest_pin;
203         int irq_pin ;
204         int (*get_pendown_state)(void);
205         int (*init_platform_hw)(void);
206         int (*platform_sleep)(void);
207         int (*platform_wakeup)(void);
208         void (*exit_platform_hw)(void);
209 };
210
211 struct ct360_platform_data {
212         u16             model;
213         u16             x_max;
214         u16             y_max;
215         void    (*hw_init)(void);
216         void    (*shutdown)(int);
217 };
218
219
220 struct cm3217_platform_data {
221         int irq_pin;
222         int power_pin;
223         int (*init_platform_hw)(void);
224         void (*exit_platform_hw)(void);
225 };
226
227 struct irda_info {
228         u32 intr_pin;
229         int (*iomux_init)(void);
230         int (*iomux_deinit)(void);
231         int (*irda_pwr_ctl)(int en);
232 };
233
234 struct rk29_gpio_expander_info {
235         unsigned int gpio_num;
236         unsigned int pin_type;  //GPIO_IN or GPIO_OUT
237         unsigned int pin_value; //GPIO_HIGH or GPIO_LOW
238 };
239
240 /*vmac*/
241 struct rk29_vmac_platform_data {
242         int (*vmac_register_set)(void);
243         int (*rmii_io_init)(void);
244         int (*rmii_io_deinit)(void);
245         int (*rmii_power_control)(int enable);
246         int(*rmii_speed_switch)(int speed);
247 };
248
249 #define BOOT_MODE_NORMAL                0
250 #define BOOT_MODE_FACTORY2              1
251 #define BOOT_MODE_RECOVERY              2
252 #define BOOT_MODE_CHARGE                3
253 #define BOOT_MODE_POWER_TEST            4
254 #define BOOT_MODE_OFFMODE_CHARGING      5
255 #define BOOT_MODE_REBOOT                6
256 #define BOOT_MODE_PANIC                 7
257 int board_boot_mode(void);
258
259 /* for USB detection */
260 #ifdef CONFIG_USB_GADGET
261 int __init board_usb_detect_init(unsigned gpio);
262 #else
263 static int inline board_usb_detect_init(unsigned gpio) { return 0; }
264 #endif
265
266 #ifdef CONFIG_RK_EARLY_PRINTK
267 void __init rk29_setup_early_printk(void);
268 #else
269 static void inline rk29_setup_early_printk(void) {}
270 #endif
271
272 /* for wakeup Android */
273 void rk28_send_wakeup_key(void);
274
275 /* for reserved memory 
276  * function: board_mem_reserve_add 
277  * return value: start address of reserved memory */
278 phys_addr_t __init board_mem_reserve_add(char *name, size_t size);
279 void __init board_mem_reserved(void);
280
281 #endif