|
@@ -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[] = {
|