omap2+: Minimize board specific init_early calls
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-omap2 / board-cm-t35.c
index 486a3de5f4018c9eb17aaf9c6f073d62e7dbb660..27bea540ccbb9a679bd6b079dcb88adb2c6fb54f 100644 (file)
@@ -46,6 +46,7 @@
 #include <plat/gpmc.h>
 #include <plat/usb.h>
 #include <plat/display.h>
+#include <plat/panel-generic-dpi.h>
 #include <plat/mcspi.h>
 
 #include <mach/hardware.h>
@@ -351,22 +352,32 @@ static void cm_t35_panel_disable_tv(struct omap_dss_device *dssdev)
 {
 }
 
+static struct panel_generic_dpi_data lcd_panel = {
+       .name                   = "toppoly_tdo35s",
+       .platform_enable        = cm_t35_panel_enable_lcd,
+       .platform_disable       = cm_t35_panel_disable_lcd,
+};
+
 static struct omap_dss_device cm_t35_lcd_device = {
        .name                   = "lcd",
-       .driver_name            = "toppoly_tdo35s_panel",
        .type                   = OMAP_DISPLAY_TYPE_DPI,
+       .driver_name            = "generic_dpi_panel",
+       .data                   = &lcd_panel,
        .phy.dpi.data_lines     = 18,
-       .platform_enable        = cm_t35_panel_enable_lcd,
-       .platform_disable       = cm_t35_panel_disable_lcd,
+};
+
+static struct panel_generic_dpi_data dvi_panel = {
+       .name                   = "generic",
+       .platform_enable        = cm_t35_panel_enable_dvi,
+       .platform_disable       = cm_t35_panel_disable_dvi,
 };
 
 static struct omap_dss_device cm_t35_dvi_device = {
        .name                   = "dvi",
-       .driver_name            = "generic_panel",
        .type                   = OMAP_DISPLAY_TYPE_DPI,
+       .driver_name            = "generic_dpi_panel",
+       .data                   = &dvi_panel,
        .phy.dpi.data_lines     = 24,
-       .platform_enable        = cm_t35_panel_enable_dvi,
-       .platform_disable       = cm_t35_panel_disable_dvi,
 };
 
 static struct omap_dss_device cm_t35_tv_device = {
@@ -390,14 +401,6 @@ static struct omap_dss_board_info cm_t35_dss_data = {
        .default_device = &cm_t35_dvi_device,
 };
 
-static struct platform_device cm_t35_dss_device = {
-       .name           = "omapdss",
-       .id             = -1,
-       .dev            = {
-               .platform_data = &cm_t35_dss_data,
-       },
-};
-
 static struct omap2_mcspi_device_config tdo24m_mcspi_config = {
        .turbo_mode     = 0,
        .single_channel = 1,    /* 0: slave, 1: master */
@@ -457,7 +460,7 @@ static void __init cm_t35_init_display(void)
        msleep(50);
        gpio_set_value(lcd_en_gpio, 1);
 
-       err = platform_device_register(&cm_t35_dss_device);
+       err = omap_display_init(&cm_t35_dss_data);
        if (err) {
                pr_err("CM-T35: failed to register DSS device\n");
                goto err_dev_reg;
@@ -484,15 +487,11 @@ static struct regulator_consumer_supply cm_t35_vsim_supply = {
        .supply                 = "vmmc_aux",
 };
 
-static struct regulator_consumer_supply cm_t35_vdac_supply = {
-       .supply         = "vdda_dac",
-       .dev            = &cm_t35_dss_device.dev,
-};
+static struct regulator_consumer_supply cm_t35_vdac_supply =
+       REGULATOR_SUPPLY("vdda_dac", "omapdss");
 
-static struct regulator_consumer_supply cm_t35_vdvi_supply = {
-       .supply         = "vdvi",
-       .dev            = &cm_t35_dss_device.dev,
-};
+static struct regulator_consumer_supply cm_t35_vdvi_supply =
+       REGULATOR_SUPPLY("vdvi", "omapdss");
 
 /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
 static struct regulator_init_data cm_t35_vmmc1 = {
@@ -669,18 +668,11 @@ static void __init cm_t35_init_i2c(void)
                              ARRAY_SIZE(cm_t35_i2c_boardinfo));
 }
 
-static struct omap_board_config_kernel cm_t35_config[] __initdata = {
-};
-
-static void __init cm_t35_init_irq(void)
+static void __init cm_t35_init_early(void)
 {
-       omap_board_config = cm_t35_config;
-       omap_board_config_size = ARRAY_SIZE(cm_t35_config);
-
        omap2_init_common_infrastructure();
        omap2_init_common_devices(mt46h32m32lf6_sdrc_params,
                             mt46h32m32lf6_sdrc_params);
-       omap_init_irq();
 }
 
 static struct omap_board_mux board_mux[] __initdata = {
@@ -787,8 +779,13 @@ static struct omap_musb_board_data musb_board_data = {
        .power                  = 100,
 };
 
+static struct omap_board_config_kernel cm_t35_config[] __initdata = {
+};
+
 static void __init cm_t35_init(void)
 {
+       omap_board_config = cm_t35_config;
+       omap_board_config_size = ARRAY_SIZE(cm_t35_config);
        omap3_mux_init(board_mux, OMAP_PACKAGE_CUS);
        omap_serial_init();
        cm_t35_init_i2c();
@@ -804,9 +801,10 @@ static void __init cm_t35_init(void)
 
 MACHINE_START(CM_T35, "Compulab CM-T35")
        .boot_params    = 0x80000100,
-       .map_io         = omap3_map_io,
        .reserve        = omap_reserve,
-       .init_irq       = cm_t35_init_irq,
+       .map_io         = omap3_map_io,
+       .init_early     = cm_t35_init_early,
+       .init_irq       = omap_init_irq,
        .init_machine   = cm_t35_init,
        .timer          = &omap_timer,
 MACHINE_END