4 #include <linux/types.h>
5 #include <linux/init.h>
6 #include <linux/device.h>
7 #include <linux/rk_screen.h>
10 struct adc_platform_data {
13 int (*get_base_volt)(void);
22 struct akm8963_platform_data {
29 struct rk30_i2c_platform_data {
32 #define I2C_RK29_ADAP 0
33 #define I2C_RK30_ADAP 1
40 int (*io_deinit)(void);
47 unsigned int cs_iomux_mode;
50 struct rk29xx_spi_platform_data {
51 int (*io_init)(struct spi_cs_gpio*, int);
52 int (*io_deinit)(struct spi_cs_gpio*, int);
53 int (*io_fix_leakage_bug)(void);
54 int (*io_resume_leakage_bug)(void);
55 struct spi_cs_gpio *chipselect_gpios;
60 BRIGHTNESS_MODE_LINE=0,
61 BRIGHTNESS_MODE_CONIC =1,
69 int (*io_deinit)(void);
70 int (*pwm_suspend)(void);
71 int (*pwm_resume)(void);
72 int min_brightness; /* 0 ~ 255 */
73 int max_brightness; /* 0 ~ 255 */
75 unsigned int delay_ms; /* in milliseconds */
80 unsigned long io_addr;
82 unsigned long disable;
89 PMIC_TYPE_TPS65910 =2,
93 PMIC_TYPE_RICOH619 =5,
97 extern __sramdata int g_pmic_type;
98 #define pmic_is_wm8326() (g_pmic_type == PMIC_TYPE_WM8326)
99 #define pmic_is_tps65910() (g_pmic_type == PMIC_TYPE_TPS65910)
100 #define pmic_is_act8931() (g_pmic_type == PMIC_TYPE_ACT8931)
101 #define pmic_is_act8846() (g_pmic_type == PMIC_TYPE_ACT8846)
102 #define pmic_is_rk808() (g_pmic_type == PMIC_TYPE_RK808)
103 #define pmic_is_ricoh619() (g_pmic_type == PMIC_TYPE_RICOH619)
104 #define pmic_is_rt5025() (g_pmic_type == PMIC_TYPE_RT5025)
114 struct rksdmmc_iomux {
115 char *name; //set the MACRO of gpio
120 struct rksdmmc_gpio {
121 int io; //set the address of gpio
123 int enable; // disable = !enable //set the default value,i.e,GPIO_HIGH or GPIO_LOW
124 struct rksdmmc_iomux iomux;
128 struct rksdmmc_gpio_board {
129 struct rksdmmc_gpio clk_gpio;
130 struct rksdmmc_gpio cmd_gpio;
131 struct rksdmmc_gpio data0_gpio;
132 struct rksdmmc_gpio data1_gpio;
133 struct rksdmmc_gpio data2_gpio;
134 struct rksdmmc_gpio data3_gpio;
136 struct rksdmmc_gpio detect_irq;
137 struct rksdmmc_gpio power_en_gpio;
138 struct rksdmmc_gpio write_prt;
139 struct rksdmmc_gpio sdio_irq_gpio;
143 struct rksdmmc_gpio_wifi_moudle {
144 struct rksdmmc_gpio power_n; //PMU_EN
145 struct rksdmmc_gpio reset_n; //SYSRET_B, DAIRST
146 struct rksdmmc_gpio vddio; //power source
147 struct rksdmmc_gpio bgf_int_b;
148 struct rksdmmc_gpio wifi_int_b;
149 struct rksdmmc_gpio gps_sync;
150 struct rksdmmc_gpio ANTSEL2; //pin5--ANTSEL2
151 struct rksdmmc_gpio ANTSEL3; //pin6--ANTSEL3
152 struct rksdmmc_gpio GPS_LAN; //pin33--GPS_LAN
156 struct rk29_sdmmc_platform_data {
157 unsigned int host_caps;
158 unsigned int host_ocr_avail;
159 unsigned int use_dma:1;
161 int (*io_init)(void);
162 int (*io_deinit)(void);
163 void (*set_iomux)(int device_id, unsigned int bus_width);//added by xbw at 2011-10-13
164 int (*status)(struct device *);
165 int (*register_status_notify)(void (*callback)(int card_present, void *dev_id), void *dev_id);
167 int insert_card_level;
170 int enable_sd_wakeup;
172 int write_prt_enalbe_level;
173 unsigned int sdio_INT_gpio;
175 #define USE_SDIO_INT_LEVEL /*In order to be compatible with old project, those who do not define the member sdio_INT_level */
176 struct rksdmmc_gpio det_pin_info;
177 int (*sd_vcc_reset)(void);
180 struct gsensor_platform_data {
184 signed char orientation[9];
185 int (*get_pendown_state)(void);
186 int (*init_platform_hw)(void);
187 int (*gsensor_platform_sleep)(void);
188 int (*gsensor_platform_wakeup)(void);
189 void (*exit_platform_hw)(void);
192 struct akm8975_platform_data {
193 short m_layout[4][3][3];
194 char project_name[64];
198 struct akm_platform_data {
199 short m_layout[4][3][3];
200 char project_name[64];
208 struct sensor_platform_data {
214 int irq_enable; //if irq_enable=1 then use irq else use polling
215 int poll_delay_ms; //polling
221 unsigned char address;
222 signed char orientation[9];
223 short m_layout[4][3][3];
224 char project_name[64];
225 int (*init_platform_hw)(void);
226 void (*exit_platform_hw)(void);
227 int (*power_on)(void);
228 int (*power_off)(void);
231 /* Platform data for the board id */
232 struct board_id_platform_data {
236 int (*init_platform_hw)(void);
237 int (*exit_platform_hw)(void);
238 struct board_device_table *device_table;
239 int device_table_size;
240 int (*init_parameter)(int id);
243 struct ft5506_platform_data {
244 int (*get_pendown_state)(void);
245 int (*init_platform_hw)(void);
246 int (*platform_sleep)(void);
247 int (*platform_wakeup)(void);
248 void (*exit_platform_hw)(void);
250 struct cm3217_platform_data {
253 int (*init_platform_hw)(void);
254 void (*exit_platform_hw)(void);
259 int (*iomux_init)(void);
260 int (*iomux_deinit)(void);
261 int (*irda_pwr_ctl)(int en);
264 struct rk29_gpio_expander_info {
265 unsigned int gpio_num;
266 unsigned int pin_type; //GPIO_IN or GPIO_OUT
267 unsigned int pin_value; //GPIO_HIGH or GPIO_LOW
271 struct rk29_vmac_platform_data {
272 int (*vmac_register_set)(void);
273 int (*rmii_io_init)(void);
274 int (*rmii_io_deinit)(void);
275 int (*rmii_power_control)(int enable);
276 int(*rmii_speed_switch)(int speed);
279 #define LCDC_ON 0x0001
280 #define BACKLIGHT_ON 0x0002
281 struct rk30_adc_battery_platform_data {
282 int (*io_init)(void);
283 int (*io_deinit)(void);
284 int (*is_dc_charging)(void);
285 int (*charging_ok)(void);
287 int (*is_usb_charging)(void);
288 int spport_usb_charging ;
289 int (*control_usb_charging)(int);
298 int ctrl_charge_led_pin;
299 int ctrl_charge_enable;
300 void (*ctrl_charge_led)(int);
305 int charge_set_level;
310 int dc_det_pin_pull; //pull up/down enable/disbale
311 int batt_low_pin_pull;
312 int charge_ok_pin_pull;
313 int charge_set_pin_pull;
315 int low_voltage_protection; // low voltage protection
317 int charging_sleep; // don't have lock,if chargeing_sleep = 0;else have lock
319 int is_reboot_charging;
320 int save_capacity; //save capacity to /data/bat_last_capacity.dat, suggested use
322 int reference_voltage; // the rK2928 is 3300;RK3066 and rk29 are 2500;rk3066B is 1800;
323 int pull_up_res; //divider resistance , pull-up resistor
324 int pull_down_res; //divider resistance , pull-down resistor
326 int time_down_discharge; //the time of capactiy drop 1% --discharge
327 int time_up_charge; //the time of capacity up 1% ---charging
331 int *discharge_table;
334 int *board_batt_table;
336 int dischargeArray[11];
341 #ifndef _LINUX_WLAN_PLAT_H_
342 struct wifi_platform_data {
343 int (*set_power)(int val);
344 int (*set_reset)(int val);
345 int (*set_carddetect)(int val);
346 void *(*mem_prealloc)(int section, unsigned long size);
347 int (*get_mac_addr)(unsigned char *buf);
351 struct goodix_platform_data {
355 int (*get_pendown_state)(void);
356 int (*init_platform_hw)(void);
357 int (*platform_sleep)(void);
358 int (*platform_wakeup)(void);
359 void (*exit_platform_hw)(void);
362 struct tp_platform_data {
369 int (*get_pendown_state)(void);
370 int (*init_platform_hw)(void);
371 int (*platform_sleep)(void);
372 int (*platform_wakeup)(void);
373 void (*exit_platform_hw)(void);
377 struct codec_platform_data {
382 struct ac_usb_switch_platform_data {
386 struct ct360_platform_data {
390 void (*hw_init)(void);
391 void (*shutdown)(int);
394 struct ft5606_platform_data {
395 int (*get_pendown_state)(void);
396 int (*init_platform_hw)(void);
397 int (*platform_sleep)(void);
398 int (*platform_wakeup)(void);
399 void (*exit_platform_hw)(void);
402 #if defined(CONFIG_TOUCHSCREEN_FT5306) || defined(CONFIG_TOUCHSCREEN_FT5306_WPX2)
403 struct ft5x0x_platform_data{
412 int (*get_pendown_state)(void);
413 int (*init_platform_hw)(void);
414 int (*ft5x0x_platform_sleep)(void);
415 int (*ft5x0x_platform_wakeup)(void);
416 void (*exit_platform_hw)(void);
420 #if defined (CONFIG_TOUCHSCREEN_SITRONIX_A720)
421 struct ft5x0x_platform_data{
423 int (*get_pendown_state)(void);
424 int (*init_platform_hw)(void);
425 int (*ft5x0x_platform_sleep)(void);
426 int (*ft5x0x_platform_wakeup)(void);
427 void (*exit_platform_hw)(void);
428 int (*direction_otation)(int *x ,int *y );
432 #if defined (CONFIG_TOUCHSCREEN_I30)
433 struct ft5306_platform_data {
436 int (*get_pendown_state)(void);
437 int (*init_platform_hw)(void);
438 int (*platform_sleep)(void);
439 int (*platform_wakeup)(void);
440 void (*exit_platform_hw)(void);
444 #if defined (CONFIG_EETI_EGALAX)
445 struct eeti_egalax_platform_data {
447 int (*get_pendown_state)(void);
448 int (*init_platform_hw)(void);
449 int (*eeti_egalax_platform_sleep)(void);
450 int (*eeti_egalax_platform_wakeup)(void);
451 void (*exit_platform_hw)(void);
462 int (*init_platform_hw)(void);
465 #if defined(CONFIG_TOUCHSCREEN_BYD693X)
466 struct byd_platform_data {
474 uint16_t screen_max_x;
475 uint16_t screen_max_y;
482 struct codec_io_info {
487 struct rt3261_platform_data {
488 unsigned int codec_en_gpio;
489 struct codec_io_info codec_en_gpio_info;
490 int (*io_init)(int, char *, int);
491 unsigned int spk_num;
492 unsigned int modem_input_mode;
493 unsigned int lout_to_modem_mode;
494 unsigned int spk_amplify;
495 unsigned int playback_if1_data_control;
496 unsigned int playback_if2_data_control;
499 struct rk610_codec_platform_data {
500 unsigned int spk_ctl_io;
501 int (*io_init)(void);
502 int boot_depop;//if found boot pop,set boot_depop 1 test
504 Some amplifiers enable a longer time.
505 config after pa_enable_io delay pa_enable_time(ms)
506 default = 0,preferably not more than 1000ms
507 so value range is 0 - 1000.
509 unsigned int pa_enable_time;
512 struct rk_hdmi_platform_data {
513 int (*io_init)(void);
515 #define BOOT_MODE_NORMAL 0
516 #define BOOT_MODE_FACTORY2 1
517 #define BOOT_MODE_RECOVERY 2
518 #define BOOT_MODE_CHARGE 3
519 #define BOOT_MODE_POWER_TEST 4
520 #define BOOT_MODE_OFFMODE_CHARGING 5
521 #define BOOT_MODE_REBOOT 6
522 #define BOOT_MODE_PANIC 7
523 #define BOOT_MODE_WATCHDOG 8
524 int board_boot_mode(void);
526 static inline const char *boot_mode_name(u32 mode)
529 case BOOT_MODE_NORMAL: return "NORMAL";
530 case BOOT_MODE_FACTORY2: return "FACTORY2";
531 case BOOT_MODE_RECOVERY: return "RECOVERY";
532 case BOOT_MODE_CHARGE: return "CHARGE";
533 case BOOT_MODE_POWER_TEST: return "POWER_TEST";
534 case BOOT_MODE_OFFMODE_CHARGING: return "OFFMODE_CHARGING";
535 case BOOT_MODE_REBOOT: return "REBOOT";
536 case BOOT_MODE_PANIC: return "PANIC";
537 case BOOT_MODE_WATCHDOG: return "WATCHDOG";
542 /* for USB detection */
543 #if defined(CONFIG_USB_GADGET) && !defined(CONFIG_RK_USB_DETECT_BY_OTG_BVALID)
544 int __init board_usb_detect_init(unsigned gpio);
546 static int inline board_usb_detect_init(unsigned gpio) { return 0; }
549 #ifdef CONFIG_RK_EARLY_PRINTK
550 void __init rk29_setup_early_printk(void);
552 static void inline rk29_setup_early_printk(void) {}
555 /* for wakeup Android */
556 void rk28_send_wakeup_key(void);
558 /* for reserved memory
559 * function: board_mem_reserve_add
560 * return value: start address of reserved memory */
561 phys_addr_t __init board_mem_reserve_add(char *name, size_t size);
562 void __init board_mem_reserved(void);
564 extern struct rk29_sdmmc_platform_data default_sdmmc0_data;
565 extern struct rk29_sdmmc_platform_data default_sdmmc1_data;
567 extern struct i2c_gpio_platform_data default_i2c_gpio_data;
568 extern struct rk29_vmac_platform_data board_vmac_data;
570 void __init board_clock_init(void);
571 void board_gpio_suspend(void);
572 void board_gpio_resume(void);
573 void __sramfunc board_pmu_suspend(void);
574 void __sramfunc board_pmu_resume(void);
577 * For DDR frequency scaling setup. Board code something like this:
579 * This array _must_ be sorted in ascending frequency (without DDR_FREQ_*) order.
580 * static struct cpufreq_frequency_table dvfs_ddr_table[] = {
581 * {.frequency = 200 * 1000 + DDR_FREQ_IDLE, .index = xxxx * 1000},
582 * {.frequency = 300 * 1000 + DDR_FREQ_VIDEO, .index = xxxx * 1000},
583 * {.frequency = 400 * 1000 + DDR_FREQ_NORMAL, .index = xxxx * 1000},
584 * {.frequency = CPUFREQ_TABLE_END},
588 DDR_FREQ_SUSPEND=(0x1<<0), // when early suspend
589 DDR_FREQ_VIDEO=(0x1<<1), // when video is playing
590 DDR_FREQ_VIDEO_LOW=(0x1<<2), // when video is playing low
591 DDR_FREQ_DUALVIEW=(0x1<<3), // when dual view,lcdc0 and lcdc1 open at the same time
592 DDR_FREQ_IDLE=(0x1<<4), // when screen is idle
593 DDR_FREQ_NORMAL=(0x1<<8), // default