void __init omap4_espresso10_input_init(void)
{
	u32 boardtype = omap4_espresso10_get_board_type();

	if (boardtype == SEC_MACHINE_ESPRESSO10_WIFI)
		espresso10_ts_pdata.model_name = "P5110";
	else if (boardtype == SEC_MACHINE_ESPRESSO10_USA_BBY)
		espresso10_ts_pdata.model_name = "P5113";
	else
		espresso10_ts_pdata.model_name = "P5100";

	if (system_rev >= 7)
		espresso10_ts_panel_setup();
	espresso10_gpio_keypad_gpio_init();
	espresso10_tsp_gpio_init();

	i2c_register_board_info(3, espresso_i2c3_boardinfo,
				ARRAY_SIZE(espresso_i2c3_boardinfo));

	espresso_create_sec_key_dev();
#ifdef CONFIG_SEC_DEBUG
	if (sec_debug_get_level()) {
		espresso_gpio_keypad_keys_info_high.flags |= GPIOEDF_PRINT_KEYS;
		espresso_gpio_keypad_keys_info_low.flags |= GPIOEDF_PRINT_KEYS;
	}
#endif
	platform_device_register(&espresso_gpio_keypad_device);
}
int __init omap4_espresso10_irled_init(void)
{
	int ret = 0;
	int i;
	unsigned int boardtype = omap4_espresso10_get_board_type();

	if (system_rev > 6 && boardtype != SEC_MACHINE_ESPRESSO10_USA_BBY) {
		for (i = 0; i < ARRAY_SIZE(irled_gpios); i++) {
			irled_gpios[i].gpio =
			omap_muxtbl_get_gpio_by_name(irled_gpios[i].label);
			omap_mux_set_gpio(
				OMAP_PIN_INPUT_PULLDOWN | OMAP_MUX_MODE7,
				irled_gpios[i].gpio);
		}

		return 0;
	}

	for (i = 0; i < ARRAY_SIZE(irled_gpios); i++)
		irled_gpios[i].gpio =
		    omap_muxtbl_get_gpio_by_name(irled_gpios[i].label);
	gpio_request_array(irled_gpios, ARRAY_SIZE(irled_gpios));

	ret = irled_init();
	if (ret < 0) {
		pr_err("irled: irled_init failed\n");
		for (i = 0; i < ARRAY_SIZE(irled_gpios); i++)
			gpio_free(irled_gpios[i].gpio);
	}

	return ret;
}
void __init omap4_espresso10_none_modem_init(void)
{
	unsigned int board_type = omap4_espresso10_get_board_type();

	if (board_type == SEC_MACHINE_ESPRESSO10_WIFI ||
	    board_type == SEC_MACHINE_ESPRESSO10_USA_BBY)
		none_modem_cfg_mux();
}
static int __init init_modem(void)
{
	unsigned int board_type = omap4_espresso10_get_board_type();

	if (board_type == SEC_MACHINE_ESPRESSO10_WIFI ||
	    board_type == SEC_MACHINE_ESPRESSO10_USA_BBY)
		return 0;

	umts_modem_cfg_gpio();
	platform_device_register(&umts_modem);

	mif_info("board init_modem done\n");
	return 0;
}
void __init omap4_espresso10_pmic_init(void)
{
	unsigned int board_type = omap4_espresso10_get_board_type();
	unsigned int gpio_sys_drm_msec =
		omap_muxtbl_get_gpio_by_name("SYS_DRM_MSEC");

	/* Update oscillator information */
	omap_pm_set_osc_lp_time(15000, 1);

	/*
	 * This will allow unused regulator to be shutdown. This flag
	 * should be set in the board file. Before regulators are registered.
	 */
	regulator_has_full_constraints();

	espresso10_audio_init();

	platform_add_devices(espresso10_pmic_devices,
			     ARRAY_SIZE(espresso10_pmic_devices));

	/*
	 * PMIC is change from twl6030 to twl6032 from rev0.2.
	 * Espresso10 rev0.2 board have 5 as system_rev.
	 * ldo4 is used for VAP_IO_2.8V and ldo is nc from rev0.3
	 * Espresso10 rev0.3 board have 6 as system_rev.
	 */
	if (system_rev >= 6)
		i2c_register_board_info(1,
			espresso10_twl6032_i2c1_board_info_rev03,
			ARRAY_SIZE(espresso10_twl6032_i2c1_board_info_rev03));
	else if (system_rev == 5)
		i2c_register_board_info(1,
			espresso10_twl6032_i2c1_board_info_rev02,
			ARRAY_SIZE(espresso10_twl6032_i2c1_board_info_rev02));
	else
		i2c_register_board_info(1,
			espresso10_twl6030_i2c1_board_info,
			ARRAY_SIZE(espresso10_twl6030_i2c1_board_info));

	/*
	 * Use external ldo for tflash from rev0.3
	 * Register fixed regulator to control ldo which is used by tflash.
	 */
	if (system_rev >= 6) {
		espresso10_vmmc_config.gpio =
		omap_muxtbl_get_gpio_by_name("TF_EN");
		platform_device_register(&espresso10_vmmc_device);
	}

	/*
	 * only best buy Wi-Fi verstion support MHL from rev0.4
	 * Set lodln regulator as VDAC regulator which is used by MHL.
	 */
	if (board_type == SEC_MACHINE_ESPRESSO10_USA_BBY && system_rev >= 7)
		espresso10_twl6032_pdata_rev03.ldoln = &espresso10_vdac;

	/*
	 * Drive MSECURE high for TWL6030 write access.
	 */
	gpio_request(gpio_sys_drm_msec, "SYS_DRM_MSEC");
	gpio_direction_output(gpio_sys_drm_msec, 1);

	if (enable_sr)
		omap_enable_smartreflex_on_init();

	/*enable off-mode*/
	omap_pm_enable_off_mode();
}
void __init omap4_espresso10_display_init(void)
{
	struct ltn101al03_panel_data *panel;
	int ret, i;
	u8 board_type;

	/* Default setting vlaue for SEC panel*/
	int platform_brightness[] = {
		BRIGHTNESS_OFF, BRIGHTNESS_DIM, BRIGHTNESS_MIN,
		BRIGHTNESS_25, BRIGHTNESS_DEFAULT, BRIGHTNESS_MAX};
	int kernel_brightness[] = {0, 3, 3, 8, 47, 81};

	if (espresso10_panel_data.panel_id == PANEL_BOE) {
		kernel_brightness[4] = 47;
		kernel_brightness[5] = 81;
	}

#ifdef CONFIG_FB_OMAP_BOOTLOADER_INIT
	dss_ick = clk_get(NULL, "ick");
	if (IS_ERR(dss_ick)) {
		pr_err("Could not get dss interface clock\n");
		/* return -ENOENT; */
	 }

	dss_sys_fclk = omap_clk_get_by_name("dss_sys_clk");
	if (IS_ERR(dss_sys_fclk)) {
		pr_err("Could not get dss system clock\n");
		/* return -ENOENT; */
	}
	clk_enable(dss_sys_fclk);
	dss_dss_fclk = omap_clk_get_by_name("dss_dss_clk");
	if (IS_ERR(dss_dss_fclk)) {
		pr_err("Could not get dss functional clock\n");
		/* return -ENOENT; */
	 }
#endif
	espresso10_panel_data.lvds_nshdn_gpio =
	    omap_muxtbl_get_gpio_by_name("LVDS_nSHDN");
	espresso10_panel_data.lcd_en_gpio =
	    omap_muxtbl_get_gpio_by_name("LCD_EN");
	espresso10_panel_data.led_backlight_reset_gpio =
	    omap_muxtbl_get_gpio_by_name("LED_BACKLIGHT_RESET");
	espresso10_panel_data.backlight_gptimer_num = 10;
	espresso10_panel_data.set_power = espresso10_lcd_set_power;
	espresso10_panel_data.set_gptimer_idle =
		espresso10_lcd_set_gptimer_idle;

	for (i = 0 ; i < NUM_BRIGHTNESS_LEVEL ; i++) {
		espresso10_panel_data.brightness_table.platform_value[i] =
			platform_brightness[i];
		espresso10_panel_data.brightness_table.kernel_value[i] =
			kernel_brightness[i];
	}

	ret = gpio_request(espresso10_panel_data.lcd_en_gpio, "lcd_en");
	if (ret < 0)
		pr_err("(%s): gpio_request %d failed!\n", __func__,
		       espresso10_panel_data.lcd_en_gpio);

	gpio_direction_output(espresso10_panel_data.lcd_en_gpio, 1);

	panel = &espresso10_panel_data;

	espresso10_lcd_device.data = panel;

	board_type = omap4_espresso10_get_board_type();
	if (board_type == SEC_MACHINE_ESPRESSO10_USA_BBY) {
		/* Two DSS devices: LCD & HDMI */
		espresso10_dss_data.num_devices = 2;
		espresso10_hdmi_device.hpd_gpio =
			omap_muxtbl_get_gpio_by_name("HDMI_HPD");
		espresso10_hdmi_mux_init();
	} else
		/* LCD only */
		espresso10_dss_data.num_devices = 1;

	omapfb_set_platform_data(&espresso10_fb_pdata);
	omap_display_init(&espresso10_dss_data);
}