4 #include <linux/types.h>
5 #include <linux/init.h>
6 #include <linux/device.h>
7 #include <linux/rk_screen.h>
17 struct rk30_i2c_platform_data {
20 #define I2C_RK29_ADAP 0
21 #define I2C_RK30_ADAP 1
26 int (*io_deinit)(void);
27 int (*check_idle)(int);
34 unsigned int cs_iomux_mode;
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;
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 */
59 unsigned long io_addr;
61 unsigned long disable;
68 PMIC_TYPE_TPS65910 =2,
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)
77 struct rk29_fb_setting_info {
88 enum rk_disp_prop prop; //display device property,like PRMRY,EXTEND
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 );
98 struct rksdmmc_iomux {
99 char *name; //set the MACRO of gpio
104 struct rksdmmc_gpio {
105 int io; //set the address of gpio
107 int enable; // disable = !enable //set the default value,i.e,GPIO_HIGH or GPIO_LOW
108 struct rksdmmc_iomux iomux;
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;
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;
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;
137 struct rk29_sdmmc_platform_data {
138 unsigned int host_caps;
139 unsigned int host_ocr_avail;
140 unsigned int use_dma:1;
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);
148 int insert_card_level;
149 int enable_sd_wakeup;
151 unsigned int sdio_INT_gpio; //add gpio INT for sdio interrupt.Modifed by xbw at 2012-08-09
154 struct gsensor_platform_data {
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);
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);
174 struct akm8975_platform_data {
175 short m_layout[4][3][3];
176 char project_name[64];
180 struct sensor_platform_data {
185 int irq_enable; //if irq_enable=1 then use irq else use polling
186 int poll_delay_ms; //polling
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);
201 /* Platform data for the board id */
202 struct board_id_platform_data {
205 int (*init_platform_hw)(void);
206 int (*exit_platform_hw)(void);
207 int (*init_parameter)(int id);
212 struct goodix_platform_data {
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);
223 struct ct360_platform_data {
227 void (*hw_init)(void);
228 void (*shutdown)(int);
232 struct cm3217_platform_data {
235 int (*init_platform_hw)(void);
236 void (*exit_platform_hw)(void);
241 int (*iomux_init)(void);
242 int (*iomux_deinit)(void);
243 int (*irda_pwr_ctl)(int en);
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
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);
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);
271 /* for USB detection */
272 #ifdef CONFIG_USB_GADGET
273 int __init board_usb_detect_init(unsigned gpio);
275 static int inline board_usb_detect_init(unsigned gpio) { return 0; }
278 #ifdef CONFIG_RK_EARLY_PRINTK
279 void __init rk29_setup_early_printk(void);
281 static void inline rk29_setup_early_printk(void) {}
284 /* for wakeup Android */
285 void rk28_send_wakeup_key(void);
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);