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