|
@@ -28,6 +28,7 @@
|
|
|
#include <plat/common.h>
|
|
|
#include <plat/gpmc.h>
|
|
|
#include <plat/usb.h>
|
|
|
+#include <plat/display.h>
|
|
|
|
|
|
#include "mux.h"
|
|
|
#include "hsmmc.h"
|
|
@@ -38,6 +39,7 @@
|
|
|
#define IGEP2_GPIO_LED0_RED 26
|
|
|
#define IGEP2_GPIO_LED0_GREEN 27
|
|
|
#define IGEP2_GPIO_LED1_RED 28
|
|
|
+#define IGEP2_GPIO_DVI_PUP 170
|
|
|
|
|
|
#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
|
|
|
|
|
@@ -164,6 +166,76 @@ static struct twl4030_usb_data igep2_usb_data = {
|
|
|
.usb_mode = T2_USB_MODE_ULPI,
|
|
|
};
|
|
|
|
|
|
+static int igep2_enable_dvi(struct omap_dss_device *dssdev)
|
|
|
+{
|
|
|
+ gpio_direction_output(IGEP2_GPIO_DVI_PUP, 1);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static void igep2_disable_dvi(struct omap_dss_device *dssdev)
|
|
|
+{
|
|
|
+ gpio_direction_output(IGEP2_GPIO_DVI_PUP, 0);
|
|
|
+}
|
|
|
+
|
|
|
+static struct omap_dss_device igep2_dvi_device = {
|
|
|
+ .type = OMAP_DISPLAY_TYPE_DPI,
|
|
|
+ .name = "dvi",
|
|
|
+ .driver_name = "generic_panel",
|
|
|
+ .phy.dpi.data_lines = 24,
|
|
|
+ .platform_enable = igep2_enable_dvi,
|
|
|
+ .platform_disable = igep2_disable_dvi,
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_dss_device *igep2_dss_devices[] = {
|
|
|
+ &igep2_dvi_device
|
|
|
+};
|
|
|
+
|
|
|
+static struct omap_dss_board_info igep2_dss_data = {
|
|
|
+ .num_devices = ARRAY_SIZE(igep2_dss_devices),
|
|
|
+ .devices = igep2_dss_devices,
|
|
|
+ .default_device = &igep2_dvi_device,
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device igep2_dss_device = {
|
|
|
+ .name = "omapdss",
|
|
|
+ .id = -1,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &igep2_dss_data,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_consumer_supply igep2_vpll2_supply = {
|
|
|
+ .supply = "vdds_dsi",
|
|
|
+ .dev = &igep2_dss_device.dev,
|
|
|
+};
|
|
|
+
|
|
|
+static struct regulator_init_data igep2_vpll2 = {
|
|
|
+ .constraints = {
|
|
|
+ .name = "VDVI",
|
|
|
+ .min_uV = 1800000,
|
|
|
+ .max_uV = 1800000,
|
|
|
+ .apply_uV = true,
|
|
|
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
|
|
|
+ | REGULATOR_MODE_STANDBY,
|
|
|
+ .valid_ops_mask = REGULATOR_CHANGE_MODE
|
|
|
+ | REGULATOR_CHANGE_STATUS,
|
|
|
+ },
|
|
|
+ .num_consumer_supplies = 1,
|
|
|
+ .consumer_supplies = &igep2_vpll2_supply,
|
|
|
+};
|
|
|
+
|
|
|
+static void __init igep2_display_init(void)
|
|
|
+{
|
|
|
+ if (gpio_request(IGEP2_GPIO_DVI_PUP, "GPIO_DVI_PUP") &&
|
|
|
+ gpio_direction_output(IGEP2_GPIO_DVI_PUP, 1))
|
|
|
+ pr_err("IGEP v2: Could not obtain gpio GPIO_DVI_PUP\n");
|
|
|
+}
|
|
|
+
|
|
|
+static struct platform_device *igep2_devices[] __initdata = {
|
|
|
+ &igep2_dss_device,
|
|
|
+};
|
|
|
+
|
|
|
static void __init igep2_init_irq(void)
|
|
|
{
|
|
|
omap_board_config = igep2_config;
|
|
@@ -191,6 +263,7 @@ static struct twl4030_platform_data igep2_twldata = {
|
|
|
.codec = &igep2_codec_data,
|
|
|
.gpio = &igep2_gpio_data,
|
|
|
.vmmc1 = &igep2_vmmc1,
|
|
|
+ .vpll2 = &igep2_vpll2,
|
|
|
|
|
|
};
|
|
|
|
|
@@ -236,10 +309,12 @@ static void __init igep2_init(void)
|
|
|
{
|
|
|
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
|
|
|
igep2_i2c_init();
|
|
|
+ platform_add_devices(igep2_devices, ARRAY_SIZE(igep2_devices));
|
|
|
omap_serial_init();
|
|
|
usb_musb_init();
|
|
|
usb_ehci_init(&ehci_pdata);
|
|
|
|
|
|
+ igep2_display_init();
|
|
|
igep2_init_smsc911x();
|
|
|
|
|
|
/* GPIO userspace leds */
|