|  | @@ -134,3 +134,119 @@ static struct omap_smsc911x_platform_data smsc911x2_cfg = {
 | 
	
		
			
				|  |  |  	.flags		= SMSC911X_USE_32BIT,
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +static void __init overo_init_smsc911x(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	gpmc_smsc911x_init(&smsc911x_cfg);
 | 
	
		
			
				|  |  | +	gpmc_smsc911x_init(&smsc911x2_cfg);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#else
 | 
	
		
			
				|  |  | +static inline void __init overo_init_smsc911x(void) { return; }
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* DSS */
 | 
	
		
			
				|  |  | +static int lcd_enabled;
 | 
	
		
			
				|  |  | +static int dvi_enabled;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define OVERO_GPIO_LCD_EN 144
 | 
	
		
			
				|  |  | +#define OVERO_GPIO_LCD_BL 145
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct gpio overo_dss_gpios[] __initdata = {
 | 
	
		
			
				|  |  | +	{ OVERO_GPIO_LCD_EN, GPIOF_OUT_INIT_HIGH, "OVERO_GPIO_LCD_EN" },
 | 
	
		
			
				|  |  | +	{ OVERO_GPIO_LCD_BL, GPIOF_OUT_INIT_HIGH, "OVERO_GPIO_LCD_BL" },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static void __init overo_display_init(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	if (gpio_request_array(overo_dss_gpios, ARRAY_SIZE(overo_dss_gpios))) {
 | 
	
		
			
				|  |  | +		printk(KERN_ERR "could not obtain DSS control GPIOs\n");
 | 
	
		
			
				|  |  | +		return;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	gpio_export(OVERO_GPIO_LCD_EN, 0);
 | 
	
		
			
				|  |  | +	gpio_export(OVERO_GPIO_LCD_BL, 0);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct tfp410_platform_data dvi_panel = {
 | 
	
		
			
				|  |  | +	.i2c_bus_num		= 3,
 | 
	
		
			
				|  |  | +	.power_down_gpio	= -1,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_dss_device overo_dvi_device = {
 | 
	
		
			
				|  |  | +	.name			= "dvi",
 | 
	
		
			
				|  |  | +	.type			= OMAP_DISPLAY_TYPE_DPI,
 | 
	
		
			
				|  |  | +	.driver_name		= "tfp410",
 | 
	
		
			
				|  |  | +	.data			= &dvi_panel,
 | 
	
		
			
				|  |  | +	.phy.dpi.data_lines	= 24,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_dss_device overo_tv_device = {
 | 
	
		
			
				|  |  | +	.name = "tv",
 | 
	
		
			
				|  |  | +	.driver_name = "venc",
 | 
	
		
			
				|  |  | +	.type = OMAP_DISPLAY_TYPE_VENC,
 | 
	
		
			
				|  |  | +	.phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static int overo_panel_enable_lcd(struct omap_dss_device *dssdev)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	if (dvi_enabled) {
 | 
	
		
			
				|  |  | +		printk(KERN_ERR "cannot enable LCD, DVI is enabled\n");
 | 
	
		
			
				|  |  | +		return -EINVAL;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	gpio_set_value(OVERO_GPIO_LCD_EN, 1);
 | 
	
		
			
				|  |  | +	gpio_set_value(OVERO_GPIO_LCD_BL, 1);
 | 
	
		
			
				|  |  | +	lcd_enabled = 1;
 | 
	
		
			
				|  |  | +	return 0;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static void overo_panel_disable_lcd(struct omap_dss_device *dssdev)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	gpio_set_value(OVERO_GPIO_LCD_EN, 0);
 | 
	
		
			
				|  |  | +	gpio_set_value(OVERO_GPIO_LCD_BL, 0);
 | 
	
		
			
				|  |  | +	lcd_enabled = 0;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct panel_generic_dpi_data lcd43_panel = {
 | 
	
		
			
				|  |  | +	.name			= "samsung_lte430wq_f0c",
 | 
	
		
			
				|  |  | +	.platform_enable	= overo_panel_enable_lcd,
 | 
	
		
			
				|  |  | +	.platform_disable	= overo_panel_disable_lcd,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_dss_device overo_lcd43_device = {
 | 
	
		
			
				|  |  | +	.name			= "lcd43",
 | 
	
		
			
				|  |  | +	.type			= OMAP_DISPLAY_TYPE_DPI,
 | 
	
		
			
				|  |  | +	.driver_name		= "generic_dpi_panel",
 | 
	
		
			
				|  |  | +	.data			= &lcd43_panel,
 | 
	
		
			
				|  |  | +	.phy.dpi.data_lines	= 24,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \
 | 
	
		
			
				|  |  | +	defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE)
 | 
	
		
			
				|  |  | +static struct omap_dss_device overo_lcd35_device = {
 | 
	
		
			
				|  |  | +	.type			= OMAP_DISPLAY_TYPE_DPI,
 | 
	
		
			
				|  |  | +	.name			= "lcd35",
 | 
	
		
			
				|  |  | +	.driver_name		= "lgphilips_lb035q02_panel",
 | 
	
		
			
				|  |  | +	.phy.dpi.data_lines	= 24,
 | 
	
		
			
				|  |  | +	.platform_enable	= overo_panel_enable_lcd,
 | 
	
		
			
				|  |  | +	.platform_disable	= overo_panel_disable_lcd,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_dss_device *overo_dss_devices[] = {
 | 
	
		
			
				|  |  | +	&overo_dvi_device,
 | 
	
		
			
				|  |  | +	&overo_tv_device,
 | 
	
		
			
				|  |  | +#if defined(CONFIG_PANEL_LGPHILIPS_LB035Q02) || \
 | 
	
		
			
				|  |  | +	defined(CONFIG_PANEL_LGPHILIPS_LB035Q02_MODULE)
 | 
	
		
			
				|  |  | +	&overo_lcd35_device,
 | 
	
		
			
				|  |  | +#endif
 | 
	
		
			
				|  |  | +	&overo_lcd43_device,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct omap_dss_board_info overo_dss_data = {
 | 
	
		
			
				|  |  | +	.num_devices	= ARRAY_SIZE(overo_dss_devices),
 | 
	
		
			
				|  |  | +	.devices	= overo_dss_devices,
 | 
	
		
			
				|  |  | +	.default_device	= &overo_dvi_device,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct mtd_partition overo_nand_partitions[] = {
 |