summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDongfang Shi <dshi@nvidia.com>2012-07-27 15:58:50 +0530
committerSimone Willett <swillett@nvidia.com>2012-08-13 10:46:24 -0700
commitfae91d4c905dba57d68fac90f7700e60af1e3bb9 (patch)
tree5c95e70d766de2384a7a08e87691b238a4c4b3d9
parentb548449f736bab9aef88a237841bf576e23040ad (diff)
E1853 BRINGUP: HDMI bringup
- Register HDMI device. - Panel init also registers HOST1x. - HDMI is fully functional - Hotplug detect GPIO, DDC bus works fine. bug 966833 bug 1018258 Change-Id: Ia04fbfb9b9ddcf81cef241f3cd1187cdc87d159d Reviewed-on: http://git-master/r/119118 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Raymond Rees <rrees@nvidia.com> Tested-by: Dongfang Shi <dshi@nvidia.com> (cherry picked from commit c62d307b84a034bae31afce67b8755d500170f58) Reviewed-on: http://git-master/r/119743 Reviewed-by: Bob Johnston <bjohnston@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/board-e1853-panel.c74
-rw-r--r--arch/arm/mach-tegra/board-e1853.c4
2 files changed, 67 insertions, 11 deletions
diff --git a/arch/arm/mach-tegra/board-e1853-panel.c b/arch/arm/mach-tegra/board-e1853-panel.c
index 1e6c7ab60907..a4d6bc66f4e7 100644
--- a/arch/arm/mach-tegra/board-e1853-panel.c
+++ b/arch/arm/mach-tegra/board-e1853-panel.c
@@ -30,6 +30,9 @@
#include "board.h"
#include "devices.h"
#include "tegra3_host1x_devices.h"
+#include "gpio-names.h"
+
+#define E1853_HDMI_HPD TEGRA_GPIO_PB2
static int e1853_panel_enable(void)
{
@@ -82,6 +85,47 @@ static struct tegra_dc_platform_data e1853_disp1_pdata = {
.fb = &e1853_fb_data,
};
+static int e1853_hdmi_enable(void)
+{
+ return 0;
+}
+
+static int e1853_hdmi_disable(void)
+{
+ return 0;
+}
+
+static struct tegra_fb_data e1853_hdmi_fb_data = {
+ .win = 0,
+ .xres = 800,
+ .yres = 480,
+ .bits_per_pixel = 32,
+ .flags = TEGRA_FB_FLIP_ON_PROBE,
+};
+
+static struct tegra_dc_out e1853_hdmi_out = {
+ .align = TEGRA_DC_ALIGN_MSB,
+ .order = TEGRA_DC_ORDER_RED_BLUE,
+ .parent_clk = "pll_d2_out0",
+ .type = TEGRA_DC_OUT_HDMI,
+ .flags = TEGRA_DC_OUT_HOTPLUG_LOW |
+ TEGRA_DC_OUT_NVHDCP_POLICY_ON_DEMAND,
+ .max_pixclock = KHZ2PICOS(148500),
+ /* XXX: Check the GPIO */
+ .hotplug_gpio = E1853_HDMI_HPD,
+ .enable = e1853_hdmi_enable,
+ .disable = e1853_hdmi_disable,
+ /* XXX: Check the I2C instance */
+ .dcc_bus = 3,
+};
+
+static struct tegra_dc_platform_data e1853_hdmi_pdata = {
+ .flags = 0,
+ .default_out = &e1853_hdmi_out,
+ .emc_clk_rate = 300000000,
+ .fb = &e1853_hdmi_fb_data,
+};
+
static struct nvmap_platform_carveout e1853_carveouts[] = {
[0] = {
.name = "iram",
@@ -117,15 +161,7 @@ int __init e1853_panel_init(void)
e1853_carveouts[1].size = tegra_carveout_size;
tegra_nvmap_device.dev.platform_data = &e1853_nvmap_data;
tegra_disp1_device.dev.platform_data = &e1853_disp1_pdata;
-
- res = nvhost_get_resource_byname(&tegra_disp1_device,
- IORESOURCE_MEM, "fbmem");
- if (!res) {
- pr_err("No memory resources\n");
- return -ENODEV;
- }
- res->start = tegra_fb_start;
- res->end = tegra_fb_start + tegra_fb_size - 1;
+ tegra_disp2_device.dev.platform_data = &e1853_hdmi_pdata;
#ifdef CONFIG_TEGRA_GRHOST
err = tegra3_register_host1x_devices();
@@ -135,9 +171,29 @@ int __init e1853_panel_init(void)
err = platform_add_devices(e1853_gfx_devices,
ARRAY_SIZE(e1853_gfx_devices));
+
+#if defined(CONFIG_TEGRA_GRHOST) && defined(CONFIG_TEGRA_DC)
+ res = nvhost_get_resource_byname(&tegra_disp1_device,
+ IORESOURCE_MEM, "fbmem");
+ if (res) {
+ res->start = tegra_fb_start;
+ res->end = tegra_fb_start + tegra_fb_size - 1;
+ }
+
if (!err)
err = nvhost_device_register(&tegra_disp1_device);
+ res = nvhost_get_resource_byname(&tegra_disp2_device,
+ IORESOURCE_MEM, "fbmem");
+ if (res) {
+ res->start = tegra_fb2_start;
+ res->end = tegra_fb2_start + tegra_fb2_size - 1;
+ }
+
+ if (!err)
+ err = nvhost_device_register(&tegra_disp2_device);
+#endif
+
#if defined(CONFIG_TEGRA_GRHOST) && defined(CONFIG_TEGRA_NVAVP)
if (!err)
err = nvhost_device_register(&nvavp_device);
diff --git a/arch/arm/mach-tegra/board-e1853.c b/arch/arm/mach-tegra/board-e1853.c
index 9379ec3b3f18..cec5667fb95b 100644
--- a/arch/arm/mach-tegra/board-e1853.c
+++ b/arch/arm/mach-tegra/board-e1853.c
@@ -374,9 +374,9 @@ static void __init tegra_e1853_init(void)
static void __init tegra_e1853_reserve(void)
{
#if defined(CONFIG_NVMAP_CONVERT_CARVEOUT_TO_IOVMM)
- tegra_reserve(0, SZ_8M, 0);
+ tegra_reserve(0, SZ_8M, SZ_8M);
#else
- tegra_reserve(SZ_128M, SZ_8M, 0);
+ tegra_reserve(SZ_128M, SZ_8M, SZ_8M);
#endif
}