summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>2012-12-17 15:52:00 +0100
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2012-12-17 15:52:00 +0100
commit8ff26794f73da3caf815f348a03509f533b32ec2 (patch)
tree48f7088c32180bcb9adddf2820c248ace461a1fe
parentf6417beb8f7bbfcbb9e047b582a22f4feaee3124 (diff)
tegra: colibri_t20: add more video modesT20_LinuxImageV2.0Beta1_20121218
Add the following tested (e.g. framebuffer console and X) video modes: - 1280x1024@60 - 1600x1200@60 - 1680x1050@60 - 1920x1080p - 1920x1200 And the following portrait modes: - 480x640 - 540x960 - 720x1280 The define TEGRA_FB_VGA in board-colibri_t20.h can be used to switch between VGA and 800x480. While at it fix rename of CAMERA_INTERFACE to COLIBRI_T20_VI as well.
-rw-r--r--arch/arm/mach-tegra/board-colibri_t20-panel.c138
1 files changed, 131 insertions, 7 deletions
diff --git a/arch/arm/mach-tegra/board-colibri_t20-panel.c b/arch/arm/mach-tegra/board-colibri_t20-panel.c
index ef612b1ac5f5..6d7ec83bceb7 100644
--- a/arch/arm/mach-tegra/board-colibri_t20-panel.c
+++ b/arch/arm/mach-tegra/board-colibri_t20-panel.c
@@ -41,7 +41,7 @@
#include "gpio-names.h"
#include "tegra2_host1x_devices.h"
-#ifndef CAMERA_INTERFACE
+#ifndef COLIBRI_T20_VI
#define colibri_t20_bl_enb TEGRA_GPIO_PT4 /* BL_ON */
#endif
#define colibri_t20_hdmi_hpd TEGRA_GPIO_PN7 /* HOTPLUG_DETECT */
@@ -54,7 +54,7 @@ static struct regulator *colibri_t20_hdmi_reg = NULL;
static struct regulator *colibri_t20_hdmi_pll = NULL;
#endif
-#ifndef CAMERA_INTERFACE
+#ifndef COLIBRI_T20_VI
static int colibri_t20_backlight_init(struct device *dev) {
int ret;
@@ -111,7 +111,7 @@ static struct platform_device colibri_t20_backlight_device = {
.platform_data = &colibri_t20_backlight_data,
},
};
-#endif /* !CAMERA_INTERFACE */
+#endif /* !COLIBRI_T20_VI */
#ifdef CONFIG_TEGRA_DC
static int colibri_t20_panel_enable(void)
@@ -290,6 +290,22 @@ static struct tegra_dc_mode colibri_t20_panel_modes[] = {
.v_active = 720,
.h_front_porch = 110,
.v_front_porch = 5,
+//high active sync polarities
+ },
+ {
+ /* 1280x1024@60 */
+ .pclk = 108000000,
+// .h_ref_to_sync = 1,
+// .v_ref_to_sync = 1,
+ .h_sync_width = 144,
+ .v_sync_width = 3,
+ .h_back_porch = 248,
+ .v_back_porch = 38,
+ .h_active = 1280,
+ .v_active = 1024,
+ .h_front_porch = 16,
+ .v_front_porch = 1,
+//high active sync polarities
},
{
/* 1366x768@60 */
@@ -305,6 +321,114 @@ static struct tegra_dc_mode colibri_t20_panel_modes[] = {
.h_front_porch = 58,
.v_front_porch = 4,
},
+ {
+ /* 1600x1200@60 */
+ .pclk = 144000000,
+//[ 1.423072] tegradc tegradc.0: can't divide 216000000 clock to 162000000 -1/+9% 144000000 160380000 176580000
+// .pclk = 162000000,
+// .h_ref_to_sync = 1,
+// .v_ref_to_sync = 1,
+ .h_sync_width = 192,
+ .v_sync_width = 3,
+ .h_back_porch = 304,
+ .v_back_porch = 46,
+ .h_active = 1600,
+ .v_active = 1200,
+ .h_front_porch = 64,
+ .v_front_porch = 1,
+//high active sync polarities
+ },
+ {
+ /* 1680x1050@60 */
+ .pclk = 144000000,
+//[ 1.423139] tegradc tegradc.0: can't divide 216000000 clock to 147140000 -1/+9% 144000000 145668600 160382600
+// .pclk = 147140000,
+// .h_ref_to_sync = 1,
+// .v_ref_to_sync = 1,
+ .h_sync_width = 184,
+ .v_sync_width = 3,
+ .h_back_porch = 288,
+ .v_back_porch = 33,
+ .h_active = 1680,
+ .v_active = 1050,
+ .h_front_porch = 104,
+ .v_front_porch = 1,
+//high active vertical sync polarity
+ },
+ {
+ /* 1920x1080p 59.94/60hz EIA/CEA-861-B Format 16 */
+ .pclk = 144000000,
+//[ 3.361002] tegradc tegradc.0: can't divide 216000000 clock to 148500000 -1/+9% 144000000 147015000 161865000
+// .pclk = 148500000,
+ .h_ref_to_sync = 11,
+ .v_ref_to_sync = 1,
+ .h_sync_width = 44,
+ .v_sync_width = 5,
+ .h_back_porch = 148,
+ .v_back_porch = 36,
+ .h_active = 1920,
+ .v_active = 1080,
+ .h_front_porch = 88,
+ .v_front_porch = 4,
+//high active sync polarities
+ },
+ {
+ .pclk = 144000000,
+//[ 3.371657] tegradc tegradc.0: can't divide 216000000 clock to 154000000 -1/+9% 144000000 152460000 167860000
+// .pclk = 154000000,
+ .h_ref_to_sync = 11,
+ .v_ref_to_sync = 1,
+ .h_sync_width = 32,
+ .v_sync_width = 6,
+ .h_back_porch = 80,
+ .v_back_porch = 26,
+ .h_active = 1920,
+ .v_active = 1200,
+ .h_front_porch = 48,
+ .v_front_porch = 3,
+ },
+
+ /* portrait modes */
+
+ {
+ .pclk = 18000000,
+ .h_ref_to_sync = 8,
+ .v_ref_to_sync = 2,
+ .h_sync_width = 4,
+ .v_sync_width = 1,
+ .h_back_porch = 20,
+ .v_back_porch = 7,
+ .h_active = 480,
+ .v_active = 640,
+ .h_front_porch = 8,
+ .v_front_porch = 8,
+ },
+ {
+ .pclk = 10000000,
+ .h_ref_to_sync = 4,
+ .v_ref_to_sync = 1,
+ .h_sync_width = 16,
+ .v_sync_width = 1,
+ .h_back_porch = 32,
+ .v_back_porch = 1,
+ .h_active = 540,
+ .v_active = 960,
+ .h_front_porch = 32,
+ .v_front_porch = 2,
+ },
+ {
+ .pclk = 61417000,
+ .h_ref_to_sync = 2,
+ .v_ref_to_sync = 2,
+ .h_sync_width = 4,
+ .v_sync_width = 4,
+ .h_back_porch = 100,
+ .v_back_porch = 14,
+ .h_active = 720,
+ .v_active = 1280,
+ .h_front_porch = 4,
+ .v_front_porch = 4,
+ },
#endif /* TEGRA_FB_VGA */
};
@@ -410,12 +534,12 @@ static struct nvhost_device colibri_t20_disp1_device = {
},
};
-#ifndef CAMERA_INTERFACE
+#ifndef COLIBRI_T20_VI
static int colibri_t20_disp1_check_fb(struct device *dev, struct fb_info *info)
{
return info->device == &colibri_t20_disp1_device.dev;
}
-#endif /* !CAMERA_INTERFACE */
+#endif /* !COLIBRI_T20_VI */
static struct nvhost_device colibri_t20_disp2_device = {
.name = "tegradc",
@@ -461,14 +585,14 @@ static struct platform_device *colibri_t20_gfx_devices[] __initdata = {
#if defined(CONFIG_TEGRA_NVMAP)
&colibri_t20_nvmap_device,
#endif
-#ifndef CAMERA_INTERFACE
+#ifndef COLIBRI_T20_VI
#ifndef MECS_TELLURIUM
&tegra_pwfm0_device,
#else
&tegra_pwfm2_device,
#endif
&colibri_t20_backlight_device,
-#endif /* !CAMERA_INTERFACE */
+#endif /* !COLIBRI_T20_VI */
};
#ifdef CONFIG_HAS_EARLYSUSPEND