rk30:add goodix touch screen support
[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
8 /*spi*/
9 struct spi_cs_gpio {
10         const char *name;
11         unsigned int cs_gpio;
12         char *cs_iomux_name;
13         unsigned int cs_iomux_mode;
14 };
15
16 struct rk29xx_spi_platform_data {
17         int (*io_init)(struct spi_cs_gpio*, int);
18         int (*io_deinit)(struct spi_cs_gpio*, int);
19         int (*io_fix_leakage_bug)(void);
20         int (*io_resume_leakage_bug)(void);
21         struct spi_cs_gpio *chipselect_gpios;
22         u16 num_chipselect;
23 };
24
25 struct rk29_bl_info {
26         u32 pwm_id;
27         u32 bl_ref;
28         int (*io_init)(void);
29         int (*io_deinit)(void);
30         int (*pwm_suspend)(void);
31         int (*pwm_resume)(void);
32         int min_brightness;     /* 0 ~ 255 */
33         unsigned int delay_ms;  /* in milliseconds */
34 };
35
36 struct rk29lcd_info {
37         u32 lcd_id;
38         u32 txd_pin;
39         u32 clk_pin;
40         u32 cs_pin;
41         int (*io_init)(void);
42         int (*io_deinit)(void);
43 };
44
45 struct rk29_fb_setting_info {
46         u8 data_num;
47         u8 vsync_en;
48         u8 den_en;
49         u8 mcu_fmk_en;
50         u8 disp_on_en;
51         u8 standby_en;
52 };
53
54 struct rk29fb_info {
55         u32 fb_id;
56         u32 mcu_fmk_pin;
57         struct rk29lcd_info *lcd_info;
58         int (*io_init)(struct rk29_fb_setting_info *fb_setting);
59         int (*io_deinit)(void);
60         int (*io_enable)(void);
61         int (*io_disable)(void);
62 };
63
64 struct rk29_sdmmc_platform_data {
65         unsigned int host_caps;
66         unsigned int host_ocr_avail;
67         unsigned int use_dma:1;
68         char dma_name[8];
69         int (*io_init)(void);
70         int (*io_deinit)(void);
71         void (*set_iomux)(int device_id, unsigned int bus_width);//added by xbw at 2011-10-13
72         int (*status)(struct device *);
73         int (*register_status_notify)(void (*callback)(int card_present, void *dev_id), void *dev_id);
74         int detect_irq;
75         int enable_sd_wakeup;
76         int write_prt;
77 };
78
79 struct mma8452_platform_data {
80         u16     model;
81         u16     swap_xy;
82         u16     swap_xyz;
83         signed char orientation[9];
84         int     (*get_pendown_state)(void);
85         int     (*init_platform_hw)(void);
86         int     (*mma8452_platform_sleep)(void);
87         int     (*mma8452_platform_wakeup)(void);
88         void    (*exit_platform_hw)(void);
89 };
90
91 struct akm8975_platform_data {
92         short m_layout[4][3][3];
93         char project_name[64];
94         int gpio_DRDY;
95 };
96
97 struct goodix_platform_data {
98         int model ;
99         int rest_pin;
100         int irq_pin ;
101     int     (*get_pendown_state)(void);
102     int     (*init_platform_hw)(void);
103     int     (*platform_sleep)(void);
104     int     (*platform_wakeup)(void);
105     void    (*exit_platform_hw)(void);
106 };
107
108
109
110 #define BOOT_MODE_NORMAL                0
111 #define BOOT_MODE_FACTORY2              1
112 #define BOOT_MODE_RECOVERY              2
113 #define BOOT_MODE_CHARGE                3
114 #define BOOT_MODE_POWER_TEST            4
115 #define BOOT_MODE_OFFMODE_CHARGING      5
116 #define BOOT_MODE_REBOOT                6
117 #define BOOT_MODE_PANIC                 7
118 int board_boot_mode(void);
119
120 /* for USB detection */
121 #ifdef CONFIG_USB_GADGET
122 int board_usb_detect_init(unsigned gpio);
123 #else
124 static int inline board_usb_detect_init(unsigned gpio) { return 0; }
125 #endif
126
127 #ifdef CONFIG_RK_EARLY_PRINTK
128 void __init rk29_setup_early_printk(void);
129 #else
130 static void inline rk29_setup_early_printk(void) {}
131 #endif
132
133 /* for wakeup Android */
134 void rk28_send_wakeup_key(void);
135
136 /* for reserved memory 
137  * function: board_mem_reserve_add 
138  * return value: start address of reserved memory */
139 phys_addr_t __init board_mem_reserve_add(char *name, size_t size);
140 void __init board_mem_reserved(void);
141
142 #endif