]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge tag 'omap-for-v3.8/board-v2-signed' of git://git.kernel.org/pub/scm/linux/kerne...
authorArnd Bergmann <arnd@arndb.de>
Thu, 15 Nov 2012 16:16:20 +0000 (17:16 +0100)
committerArnd Bergmann <arnd@arndb.de>
Thu, 15 Nov 2012 16:16:20 +0000 (17:16 +0100)
From Tony Lindgren <tony@atomide.com>:

Board updates for omaps mostly to deal with enabling
display support with device tree until the bindings
are ready.

* tag 'omap-for-v3.8/board-v2-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP1: use BUG_ON where possible
  OMAP: board-generic: enable DSS for panda & sdp boards
  OMAP: omap4sdp: move display init from board file to dss-common.c
  OMAP: panda: move display init from board file to dss-common.c
  ARM: OMAP2+: Nokia N9/N900/N950 -- mention product names

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
13 files changed:
arch/arm/mach-omap1/board-fsample.c
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-perseus2.c
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-generic.c
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/board-rm680.c
arch/arm/mach-omap2/board-rx51.c
arch/arm/mach-omap2/dss-common.c [new file with mode: 0644]
arch/arm/mach-omap2/dss-common.h [new file with mode: 0644]

index 4b6de70c47a686576795c1a59db319590a53efb8..756872e9c337a9558aefa5052cc6496745e8f299 100644 (file)
@@ -307,8 +307,7 @@ static void __init omap_fsample_init(void)
 
        fsample_init_smc91x();
 
-       if (gpio_request(FSAMPLE_NAND_RB_GPIO_PIN, "NAND ready") < 0)
-               BUG();
+       BUG_ON(gpio_request(FSAMPLE_NAND_RB_GPIO_PIN, "NAND ready") < 0);
        gpio_direction_input(FSAMPLE_NAND_RB_GPIO_PIN);
 
        omap_cfg_reg(L3_1610_FLASH_CS2B_OE);
index 376f7f29ef77391fc8de34c9cb8bb6264abdef09..9d533ee7aee0d10c5ce236c0d7922c109f031834 100644 (file)
@@ -411,8 +411,7 @@ static void __init h2_init(void)
 
        h2_nand_resource.end = h2_nand_resource.start = OMAP_CS2B_PHYS;
        h2_nand_resource.end += SZ_4K - 1;
-       if (gpio_request(H2_NAND_RB_GPIO_PIN, "NAND ready") < 0)
-               BUG();
+       BUG_ON(gpio_request(H2_NAND_RB_GPIO_PIN, "NAND ready") < 0);
        gpio_direction_input(H2_NAND_RB_GPIO_PIN);
 
        omap_cfg_reg(L3_1610_FLASH_CS2B_OE);
index ededdb7ef28c021aa2f43ed4dcacbb8fe1c6e723..be60862945a3c56ac981463e1eddea4c01717a22 100644 (file)
@@ -406,8 +406,7 @@ static void __init h3_init(void)
 
        nand_resource.end = nand_resource.start = OMAP_CS2B_PHYS;
        nand_resource.end += SZ_4K - 1;
-       if (gpio_request(H3_NAND_RB_GPIO_PIN, "NAND ready") < 0)
-               BUG();
+       BUG_ON(gpio_request(H3_NAND_RB_GPIO_PIN, "NAND ready") < 0);
        gpio_direction_input(H3_NAND_RB_GPIO_PIN);
 
        /* GPIO10 Func_MUX_CTRL reg bit 29:27, Configure V2 to mode1 as GPIO */
index 198b05417bfcd49a6c9194e182743b3e5ebf7464..327ffcf6e9a4258deda8f15e4fd013af7b4bfdfc 100644 (file)
@@ -275,8 +275,7 @@ static void __init omap_perseus2_init(void)
 
        perseus2_init_smc91x();
 
-       if (gpio_request(P2_NAND_RB_GPIO_PIN, "NAND ready") < 0)
-               BUG();
+       BUG_ON(gpio_request(P2_NAND_RB_GPIO_PIN, "NAND ready") < 0);
        gpio_direction_input(P2_NAND_RB_GPIO_PIN);
 
        omap_cfg_reg(L3_1610_FLASH_CS2B_OE);
index d669e227e00c18ac1c9783fd4e370d6f3b9e51e6..2265e5826883da639bc6da0416b37264816845c0 100644 (file)
@@ -270,14 +270,14 @@ config MACH_NOKIA_N8X0
        select OMAP_PACKAGE_ZAC
 
 config MACH_NOKIA_RM680
-       bool "Nokia RM-680/696 board"
+       bool "Nokia N950 (RM-680) / N9 (RM-696) phones"
        depends on ARCH_OMAP3
        default y
        select MACH_NOKIA_RM696
        select OMAP_PACKAGE_CBB
 
 config MACH_NOKIA_RX51
-       bool "Nokia RX-51 board"
+       bool "Nokia N900 (RX-51) phone"
        depends on ARCH_OMAP3
        default y
        select OMAP_PACKAGE_CBB
index fe40d9e488c96cdf1c68ba1d6dd7acc9631b360b..fb38a9b24b0c9a96b3d20fa65af73b068bacb46b 100644 (file)
@@ -279,4 +279,4 @@ endif
 emac-$(CONFIG_TI_DAVINCI_EMAC)         := am35xx-emac.o
 obj-y                                  += $(emac-m) $(emac-y)
 
-obj-y                                  += common-board-devices.o twl-common.o
+obj-y                                  += common-board-devices.o twl-common.o dss-common.o
index 3669c120c7e8a7b29628273ea4dbf2d3bfac39b7..8ce98ae765ab9a10c04d7adbafe2db89a73c6869 100644 (file)
@@ -37,9 +37,6 @@
 #include <plat/usb.h>
 #include <plat/mmc.h>
 #include "omap4-keypad.h"
-#include <video/omapdss.h>
-#include <video/omap-panel-nokia-dsi.h>
-#include <video/omap-panel-picodlp.h>
 #include <linux/wl12xx.h>
 #include <linux/platform_data/omap-abe-twl6040.h>
 
 #include "hsmmc.h"
 #include "control.h"
 #include "common-board-devices.h"
+#include "dss-common.h"
 
 #define ETH_KS8851_IRQ                 34
 #define ETH_KS8851_POWER_ON            48
 #define ETH_KS8851_QUART               138
 #define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO       184
 #define OMAP4_SFH7741_ENABLE_GPIO              188
-#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
-#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
-#define HDMI_GPIO_HPD  63 /* Hotplug detect */
-#define DISPLAY_SEL_GPIO       59      /* LCD2/PicoDLP switch */
-#define DLP_POWER_ON_GPIO      40
 
 #define GPIO_WIFI_PMENA                54
 #define GPIO_WIFI_IRQ          53
@@ -607,154 +600,6 @@ static void __init omap_sfh7741prox_init(void)
                        __func__, OMAP4_SFH7741_ENABLE_GPIO, error);
 }
 
-static struct nokia_dsi_panel_data dsi1_panel = {
-               .name           = "taal",
-               .reset_gpio     = 102,
-               .use_ext_te     = false,
-               .ext_te_gpio    = 101,
-               .esd_interval   = 0,
-               .pin_config = {
-                       .num_pins       = 6,
-                       .pins           = { 0, 1, 2, 3, 4, 5 },
-               },
-};
-
-static struct omap_dss_device sdp4430_lcd_device = {
-       .name                   = "lcd",
-       .driver_name            = "taal",
-       .type                   = OMAP_DISPLAY_TYPE_DSI,
-       .data                   = &dsi1_panel,
-       .phy.dsi                = {
-               .module         = 0,
-       },
-       .channel                = OMAP_DSS_CHANNEL_LCD,
-};
-
-static struct nokia_dsi_panel_data dsi2_panel = {
-               .name           = "taal",
-               .reset_gpio     = 104,
-               .use_ext_te     = false,
-               .ext_te_gpio    = 103,
-               .esd_interval   = 0,
-               .pin_config = {
-                       .num_pins       = 6,
-                       .pins           = { 0, 1, 2, 3, 4, 5 },
-               },
-};
-
-static struct omap_dss_device sdp4430_lcd2_device = {
-       .name                   = "lcd2",
-       .driver_name            = "taal",
-       .type                   = OMAP_DISPLAY_TYPE_DSI,
-       .data                   = &dsi2_panel,
-       .phy.dsi                = {
-
-               .module         = 1,
-       },
-       .channel                = OMAP_DSS_CHANNEL_LCD2,
-};
-
-static struct omap_dss_hdmi_data sdp4430_hdmi_data = {
-       .ct_cp_hpd_gpio = HDMI_GPIO_CT_CP_HPD,
-       .ls_oe_gpio = HDMI_GPIO_LS_OE,
-       .hpd_gpio = HDMI_GPIO_HPD,
-};
-
-static struct omap_dss_device sdp4430_hdmi_device = {
-       .name = "hdmi",
-       .driver_name = "hdmi_panel",
-       .type = OMAP_DISPLAY_TYPE_HDMI,
-       .channel = OMAP_DSS_CHANNEL_DIGIT,
-       .data = &sdp4430_hdmi_data,
-};
-
-static struct picodlp_panel_data sdp4430_picodlp_pdata = {
-       .picodlp_adapter_id     = 2,
-       .emu_done_gpio          = 44,
-       .pwrgood_gpio           = 45,
-};
-
-static void sdp4430_picodlp_init(void)
-{
-       int r;
-       const struct gpio picodlp_gpios[] = {
-               {DLP_POWER_ON_GPIO, GPIOF_OUT_INIT_LOW,
-                       "DLP POWER ON"},
-               {sdp4430_picodlp_pdata.emu_done_gpio, GPIOF_IN,
-                       "DLP EMU DONE"},
-               {sdp4430_picodlp_pdata.pwrgood_gpio, GPIOF_OUT_INIT_LOW,
-                       "DLP PWRGOOD"},
-       };
-
-       r = gpio_request_array(picodlp_gpios, ARRAY_SIZE(picodlp_gpios));
-       if (r)
-               pr_err("Cannot request PicoDLP GPIOs, error %d\n", r);
-}
-
-static int sdp4430_panel_enable_picodlp(struct omap_dss_device *dssdev)
-{
-       gpio_set_value(DISPLAY_SEL_GPIO, 0);
-       gpio_set_value(DLP_POWER_ON_GPIO, 1);
-
-       return 0;
-}
-
-static void sdp4430_panel_disable_picodlp(struct omap_dss_device *dssdev)
-{
-       gpio_set_value(DLP_POWER_ON_GPIO, 0);
-       gpio_set_value(DISPLAY_SEL_GPIO, 1);
-}
-
-static struct omap_dss_device sdp4430_picodlp_device = {
-       .name                   = "picodlp",
-       .driver_name            = "picodlp_panel",
-       .type                   = OMAP_DISPLAY_TYPE_DPI,
-       .phy.dpi.data_lines     = 24,
-       .channel                = OMAP_DSS_CHANNEL_LCD2,
-       .platform_enable        = sdp4430_panel_enable_picodlp,
-       .platform_disable       = sdp4430_panel_disable_picodlp,
-       .data                   = &sdp4430_picodlp_pdata,
-};
-
-static struct omap_dss_device *sdp4430_dss_devices[] = {
-       &sdp4430_lcd_device,
-       &sdp4430_lcd2_device,
-       &sdp4430_hdmi_device,
-       &sdp4430_picodlp_device,
-};
-
-static struct omap_dss_board_info sdp4430_dss_data = {
-       .num_devices    = ARRAY_SIZE(sdp4430_dss_devices),
-       .devices        = sdp4430_dss_devices,
-       .default_device = &sdp4430_lcd_device,
-};
-
-static void __init omap_4430sdp_display_init(void)
-{
-       int r;
-
-       /* Enable LCD2 by default (instead of Pico DLP) */
-       r = gpio_request_one(DISPLAY_SEL_GPIO, GPIOF_OUT_INIT_HIGH,
-                       "display_sel");
-       if (r)
-               pr_err("%s: Could not get display_sel GPIO\n", __func__);
-
-       sdp4430_picodlp_init();
-       omap_display_init(&sdp4430_dss_data);
-       /*
-        * OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and
-        * later have external pull up on the HDMI I2C lines
-        */
-       if (cpu_is_omap446x() || omap_rev() > OMAP4430_REV_ES2_2)
-               omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
-       else
-               omap_hdmi_init(0);
-
-       omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
-       omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
-       omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
-}
-
 #ifdef CONFIG_OMAP_MUX
 static struct omap_board_mux board_mux[] __initdata = {
        OMAP4_MUX(USBB2_ULPITLL_CLK, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
index 601ecdfb1cf9b88217caf49a3d8a9eedc34e6411..8f5f21c94e7c28804d5bf92ce7bafabf0e7c3f73 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "common.h"
 #include "common-board-devices.h"
+#include "dss-common.h"
 
 #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
 #define intc_of_init   NULL
@@ -40,6 +41,15 @@ static void __init omap_generic_init(void)
        omap_sdrc_init(NULL, NULL);
 
        of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
+
+       /*
+        * HACK: call display setup code for selected boards to enable omapdss.
+        * This will be removed when omapdss supports DT.
+        */
+       if (of_machine_is_compatible("ti,omap4-panda"))
+               omap4_panda_display_init_of();
+       else if (of_machine_is_compatible("ti,omap4-sdp"))
+               omap_4430sdp_display_init_of();
 }
 
 #ifdef CONFIG_SOC_OMAP2420
index bfcd397e233c8750ee2d92f85b025d70c02c0699..ab505a21f703e30ce1e6b5a21af8c8efe2af634c 100644 (file)
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
-#include <video/omapdss.h>
 
 #include "common.h"
 #include <plat/usb.h>
 #include <plat/mmc.h>
-#include <video/omap-panel-tfp410.h>
 
 #include "soc.h"
 #include "hsmmc.h"
 #include "control.h"
 #include "mux.h"
 #include "common-board-devices.h"
+#include "dss-common.h"
 
 #define GPIO_HUB_POWER         1
 #define GPIO_HUB_NRESET                62
 #define GPIO_WIFI_PMENA                43
 #define GPIO_WIFI_IRQ          53
-#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
-#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
-#define HDMI_GPIO_HPD  63 /* Hotplug detect */
 
 /* wl127x BT, FM, GPS connectivity chip */
 static struct ti_st_plat_data wilink_platform_data = {
@@ -409,68 +405,6 @@ static struct omap_board_mux board_mux[] __initdata = {
 #define board_mux      NULL
 #endif
 
-/* Display DVI */
-#define PANDA_DVI_TFP410_POWER_DOWN_GPIO       0
-
-/* Using generic display panel */
-static struct tfp410_platform_data omap4_dvi_panel = {
-       .i2c_bus_num            = 3,
-       .power_down_gpio        = PANDA_DVI_TFP410_POWER_DOWN_GPIO,
-};
-
-static struct omap_dss_device omap4_panda_dvi_device = {
-       .type                   = OMAP_DISPLAY_TYPE_DPI,
-       .name                   = "dvi",
-       .driver_name            = "tfp410",
-       .data                   = &omap4_dvi_panel,
-       .phy.dpi.data_lines     = 24,
-       .reset_gpio             = PANDA_DVI_TFP410_POWER_DOWN_GPIO,
-       .channel                = OMAP_DSS_CHANNEL_LCD2,
-};
-
-static struct omap_dss_hdmi_data omap4_panda_hdmi_data = {
-       .ct_cp_hpd_gpio = HDMI_GPIO_CT_CP_HPD,
-       .ls_oe_gpio = HDMI_GPIO_LS_OE,
-       .hpd_gpio = HDMI_GPIO_HPD,
-};
-
-static struct omap_dss_device  omap4_panda_hdmi_device = {
-       .name = "hdmi",
-       .driver_name = "hdmi_panel",
-       .type = OMAP_DISPLAY_TYPE_HDMI,
-       .channel = OMAP_DSS_CHANNEL_DIGIT,
-       .data = &omap4_panda_hdmi_data,
-};
-
-static struct omap_dss_device *omap4_panda_dss_devices[] = {
-       &omap4_panda_dvi_device,
-       &omap4_panda_hdmi_device,
-};
-
-static struct omap_dss_board_info omap4_panda_dss_data = {
-       .num_devices    = ARRAY_SIZE(omap4_panda_dss_devices),
-       .devices        = omap4_panda_dss_devices,
-       .default_device = &omap4_panda_dvi_device,
-};
-
-static void __init omap4_panda_display_init(void)
-{
-
-       omap_display_init(&omap4_panda_dss_data);
-
-       /*
-        * OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and
-        * later have external pull up on the HDMI I2C lines
-        */
-       if (cpu_is_omap446x() || omap_rev() > OMAP4430_REV_ES2_2)
-               omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
-       else
-               omap_hdmi_init(0);
-
-       omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
-       omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
-       omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
-}
 
 static void omap4_panda_init_rev(void)
 {
index 45997bfbcbd2e8b14eb94930eb9e227180a3b286..42ac9d3f2a59656a8a93059653ad59648c52329b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Board support file for Nokia RM-680/696.
+ * Board support file for Nokia N950 (RM-680) / N9 (RM-696).
  *
  * Copyright (C) 2010 Nokia
  *
index 7bbb05d9689b806534b6b83bed6b1a2c6e1dd9cb..e5af1197a4b51e52d884ac2478dc2f185220a320 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * linux/arch/arm/mach-omap2/board-rx51.c
+ * Board support file for Nokia N900 (aka RX-51).
  *
  * Copyright (C) 2007, 2008 Nokia
  *
diff --git a/arch/arm/mach-omap2/dss-common.c b/arch/arm/mach-omap2/dss-common.c
new file mode 100644 (file)
index 0000000..679a047
--- /dev/null
@@ -0,0 +1,276 @@
+/*
+ * Copyright (C) 2012 Texas Instruments, Inc..
+ * Author: Tomi Valkeinen <tomi.valkeinen@ti.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+/*
+ * NOTE: this is a transitional file to help with DT adaptation.
+ * This file will be removed when DSS supports DT.
+ */
+
+#include <linux/kernel.h>
+#include <linux/gpio.h>
+
+#include <video/omapdss.h>
+#include <video/omap-panel-tfp410.h>
+#include <video/omap-panel-nokia-dsi.h>
+#include <video/omap-panel-picodlp.h>
+
+#include <plat/cpu.h>
+
+#include "dss-common.h"
+#include "mux.h"
+
+#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
+#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
+#define HDMI_GPIO_HPD  63 /* Hotplug detect */
+
+/* Display DVI */
+#define PANDA_DVI_TFP410_POWER_DOWN_GPIO       0
+
+/* Using generic display panel */
+static struct tfp410_platform_data omap4_dvi_panel = {
+       .i2c_bus_num            = 3,
+       .power_down_gpio        = PANDA_DVI_TFP410_POWER_DOWN_GPIO,
+};
+
+static struct omap_dss_device omap4_panda_dvi_device = {
+       .type                   = OMAP_DISPLAY_TYPE_DPI,
+       .name                   = "dvi",
+       .driver_name            = "tfp410",
+       .data                   = &omap4_dvi_panel,
+       .phy.dpi.data_lines     = 24,
+       .reset_gpio             = PANDA_DVI_TFP410_POWER_DOWN_GPIO,
+       .channel                = OMAP_DSS_CHANNEL_LCD2,
+};
+
+static struct omap_dss_hdmi_data omap4_panda_hdmi_data = {
+       .ct_cp_hpd_gpio = HDMI_GPIO_CT_CP_HPD,
+       .ls_oe_gpio = HDMI_GPIO_LS_OE,
+       .hpd_gpio = HDMI_GPIO_HPD,
+};
+
+static struct omap_dss_device  omap4_panda_hdmi_device = {
+       .name = "hdmi",
+       .driver_name = "hdmi_panel",
+       .type = OMAP_DISPLAY_TYPE_HDMI,
+       .channel = OMAP_DSS_CHANNEL_DIGIT,
+       .data = &omap4_panda_hdmi_data,
+};
+
+static struct omap_dss_device *omap4_panda_dss_devices[] = {
+       &omap4_panda_dvi_device,
+       &omap4_panda_hdmi_device,
+};
+
+static struct omap_dss_board_info omap4_panda_dss_data = {
+       .num_devices    = ARRAY_SIZE(omap4_panda_dss_devices),
+       .devices        = omap4_panda_dss_devices,
+       .default_device = &omap4_panda_dvi_device,
+};
+
+void __init omap4_panda_display_init(void)
+{
+       omap_display_init(&omap4_panda_dss_data);
+
+       /*
+        * OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and
+        * later have external pull up on the HDMI I2C lines
+        */
+       if (cpu_is_omap446x() || omap_rev() > OMAP4430_REV_ES2_2)
+               omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
+       else
+               omap_hdmi_init(0);
+
+       omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
+       omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
+       omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
+}
+
+void __init omap4_panda_display_init_of(void)
+{
+       omap_display_init(&omap4_panda_dss_data);
+}
+
+
+/* OMAP4 Blaze display data */
+
+#define DISPLAY_SEL_GPIO       59      /* LCD2/PicoDLP switch */
+#define DLP_POWER_ON_GPIO      40
+
+static struct nokia_dsi_panel_data dsi1_panel = {
+               .name           = "taal",
+               .reset_gpio     = 102,
+               .use_ext_te     = false,
+               .ext_te_gpio    = 101,
+               .esd_interval   = 0,
+               .pin_config = {
+                       .num_pins       = 6,
+                       .pins           = { 0, 1, 2, 3, 4, 5 },
+               },
+};
+
+static struct omap_dss_device sdp4430_lcd_device = {
+       .name                   = "lcd",
+       .driver_name            = "taal",
+       .type                   = OMAP_DISPLAY_TYPE_DSI,
+       .data                   = &dsi1_panel,
+       .phy.dsi                = {
+               .module         = 0,
+       },
+       .channel                = OMAP_DSS_CHANNEL_LCD,
+};
+
+static struct nokia_dsi_panel_data dsi2_panel = {
+               .name           = "taal",
+               .reset_gpio     = 104,
+               .use_ext_te     = false,
+               .ext_te_gpio    = 103,
+               .esd_interval   = 0,
+               .pin_config = {
+                       .num_pins       = 6,
+                       .pins           = { 0, 1, 2, 3, 4, 5 },
+               },
+};
+
+static struct omap_dss_device sdp4430_lcd2_device = {
+       .name                   = "lcd2",
+       .driver_name            = "taal",
+       .type                   = OMAP_DISPLAY_TYPE_DSI,
+       .data                   = &dsi2_panel,
+       .phy.dsi                = {
+
+               .module         = 1,
+       },
+       .channel                = OMAP_DSS_CHANNEL_LCD2,
+};
+
+static struct omap_dss_hdmi_data sdp4430_hdmi_data = {
+       .ct_cp_hpd_gpio = HDMI_GPIO_CT_CP_HPD,
+       .ls_oe_gpio = HDMI_GPIO_LS_OE,
+       .hpd_gpio = HDMI_GPIO_HPD,
+};
+
+static struct omap_dss_device sdp4430_hdmi_device = {
+       .name = "hdmi",
+       .driver_name = "hdmi_panel",
+       .type = OMAP_DISPLAY_TYPE_HDMI,
+       .channel = OMAP_DSS_CHANNEL_DIGIT,
+       .data = &sdp4430_hdmi_data,
+};
+
+static struct picodlp_panel_data sdp4430_picodlp_pdata = {
+       .picodlp_adapter_id     = 2,
+       .emu_done_gpio          = 44,
+       .pwrgood_gpio           = 45,
+};
+
+static void sdp4430_picodlp_init(void)
+{
+       int r;
+       const struct gpio picodlp_gpios[] = {
+               {DLP_POWER_ON_GPIO, GPIOF_OUT_INIT_LOW,
+                       "DLP POWER ON"},
+               {sdp4430_picodlp_pdata.emu_done_gpio, GPIOF_IN,
+                       "DLP EMU DONE"},
+               {sdp4430_picodlp_pdata.pwrgood_gpio, GPIOF_OUT_INIT_LOW,
+                       "DLP PWRGOOD"},
+       };
+
+       r = gpio_request_array(picodlp_gpios, ARRAY_SIZE(picodlp_gpios));
+       if (r)
+               pr_err("Cannot request PicoDLP GPIOs, error %d\n", r);
+}
+
+static int sdp4430_panel_enable_picodlp(struct omap_dss_device *dssdev)
+{
+       gpio_set_value(DISPLAY_SEL_GPIO, 0);
+       gpio_set_value(DLP_POWER_ON_GPIO, 1);
+
+       return 0;
+}
+
+static void sdp4430_panel_disable_picodlp(struct omap_dss_device *dssdev)
+{
+       gpio_set_value(DLP_POWER_ON_GPIO, 0);
+       gpio_set_value(DISPLAY_SEL_GPIO, 1);
+}
+
+static struct omap_dss_device sdp4430_picodlp_device = {
+       .name                   = "picodlp",
+       .driver_name            = "picodlp_panel",
+       .type                   = OMAP_DISPLAY_TYPE_DPI,
+       .phy.dpi.data_lines     = 24,
+       .channel                = OMAP_DSS_CHANNEL_LCD2,
+       .platform_enable        = sdp4430_panel_enable_picodlp,
+       .platform_disable       = sdp4430_panel_disable_picodlp,
+       .data                   = &sdp4430_picodlp_pdata,
+};
+
+static struct omap_dss_device *sdp4430_dss_devices[] = {
+       &sdp4430_lcd_device,
+       &sdp4430_lcd2_device,
+       &sdp4430_hdmi_device,
+       &sdp4430_picodlp_device,
+};
+
+static struct omap_dss_board_info sdp4430_dss_data = {
+       .num_devices    = ARRAY_SIZE(sdp4430_dss_devices),
+       .devices        = sdp4430_dss_devices,
+       .default_device = &sdp4430_lcd_device,
+};
+
+void __init omap_4430sdp_display_init(void)
+{
+       int r;
+
+       /* Enable LCD2 by default (instead of Pico DLP) */
+       r = gpio_request_one(DISPLAY_SEL_GPIO, GPIOF_OUT_INIT_HIGH,
+                       "display_sel");
+       if (r)
+               pr_err("%s: Could not get display_sel GPIO\n", __func__);
+
+       sdp4430_picodlp_init();
+       omap_display_init(&sdp4430_dss_data);
+       /*
+        * OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and
+        * later have external pull up on the HDMI I2C lines
+        */
+       if (cpu_is_omap446x() || omap_rev() > OMAP4430_REV_ES2_2)
+               omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
+       else
+               omap_hdmi_init(0);
+
+       omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
+       omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
+       omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
+}
+
+void __init omap_4430sdp_display_init_of(void)
+{
+       int r;
+
+       /* Enable LCD2 by default (instead of Pico DLP) */
+       r = gpio_request_one(DISPLAY_SEL_GPIO, GPIOF_OUT_INIT_HIGH,
+                       "display_sel");
+       if (r)
+               pr_err("%s: Could not get display_sel GPIO\n", __func__);
+
+       sdp4430_picodlp_init();
+       omap_display_init(&sdp4430_dss_data);
+}
diff --git a/arch/arm/mach-omap2/dss-common.h b/arch/arm/mach-omap2/dss-common.h
new file mode 100644 (file)
index 0000000..915f6ff
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef __OMAP_DSS_COMMON__
+#define __OMAP_DSS_COMMON__
+
+/*
+ * NOTE: this is a transitional file to help with DT adaptation.
+ * This file will be removed when DSS supports DT.
+ */
+
+void __init omap4_panda_display_init(void);
+void __init omap4_panda_display_init_of(void);
+void __init omap_4430sdp_display_init(void);
+void __init omap_4430sdp_display_init_of(void);
+
+#endif