diff options
author | Marvin Zhang <mzhang@nvidia.com> | 2012-06-13 18:02:33 -0700 |
---|---|---|
committer | Ryan Wong <ryanw@nvidia.com> | 2012-06-14 13:28:17 -0700 |
commit | 64655badec17cea1c3ad43a5fff4ed92ad862aed (patch) | |
tree | e2b044fdf86d46c1593a94bb62b4971dae301b7b /drivers | |
parent | dadd7b60d43d97d088c40f3fc7019219bc74a057 (diff) |
Revert "video: tegra: dc: Set default videomode"
This reverts commit dfd813141283891e397d73958aabad38eddfe350.
It causes HDMI HDCP test to fail.
bug 991805
Conflicts:
drivers/video/tegra/dc/dc.c
Change-Id: I6c5d9049a2bd53b12b6da9f8578f9e2e901f8f9a
Reviewed-on: http://git-master/r/108724
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Marvin Zhang <mzhang@nvidia.com>
Tested-by: Marvin Zhang <mzhang@nvidia.com>
Reviewed-by: Ryan Wong <ryanw@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/tegra/dc/dc.c | 69 | ||||
-rw-r--r-- | drivers/video/tegra/dc/hdmi.c | 10 |
2 files changed, 22 insertions, 57 deletions
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c index 935f18bc8cfd..7df507ffad3b 100644 --- a/drivers/video/tegra/dc/dc.c +++ b/drivers/video/tegra/dc/dc.c @@ -33,7 +33,6 @@ #include <linux/debugfs.h> #include <linux/seq_file.h> #include <linux/backlight.h> -#include <linux/gpio.h> #include <video/tegrafb.h> #include <drm/drm_fixed.h> #ifdef CONFIG_SWITCH @@ -66,20 +65,6 @@ #endif static int no_vsync; -static struct fb_videomode tegra_dc_hdmi_fallback_mode = { - .refresh = 60, - .xres = 640, - .yres = 480, - .pixclock = KHZ2PICOS(25200), - .hsync_len = 96, /* h_sync_width */ - .vsync_len = 2, /* v_sync_width */ - .left_margin = 48, /* h_back_porch */ - .upper_margin = 33, /* v_back_porch */ - .right_margin = 16, /* h_front_porch */ - .lower_margin = 10, /* v_front_porch */ - .vmode = 0, - .sync = 0, -}; static void _tegra_dc_controller_disable(struct tegra_dc *dc); @@ -636,20 +621,6 @@ bool tegra_dc_get_connected(struct tegra_dc *dc) } EXPORT_SYMBOL(tegra_dc_get_connected); -bool tegra_dc_hpd(struct tegra_dc *dc) -{ - int sense; - int level; - - level = gpio_get_value(dc->out->hotplug_gpio); - - sense = dc->out->flags & TEGRA_DC_OUT_HOTPLUG_MASK; - - return (sense == TEGRA_DC_OUT_HOTPLUG_HIGH && level) || - (sense == TEGRA_DC_OUT_HOTPLUG_LOW && !level); -} -EXPORT_SYMBOL(tegra_dc_hpd); - static u32 blend_topwin(u32 flags) { if (flags & TEGRA_WIN_FLAG_BLEND_COVERAGE) @@ -2666,35 +2637,10 @@ static bool _tegra_dc_controller_reset_enable(struct tegra_dc *dc) } #endif -static int _tegra_dc_set_default_videomode(struct tegra_dc *dc) -{ - return tegra_dc_set_fb_mode(dc, &tegra_dc_hdmi_fallback_mode, 0); -} - static bool _tegra_dc_enable(struct tegra_dc *dc) { - if (dc->mode.pclk == 0) { - switch (dc->out->type) { - case TEGRA_DC_OUT_HDMI: - /* DC enable called but no videomode is loaded. - Check if HDMI is connected, then set fallback mdoe */ - if (tegra_dc_hpd(dc)) { - if (_tegra_dc_set_default_videomode(dc)) - return false; - } else - return false; - - break; - - /* Do nothing for other outputs for now */ - case TEGRA_DC_OUT_RGB: - - case TEGRA_DC_OUT_DSI: - - default: - return false; - } - } + if (dc->mode.pclk == 0) + return false; if (!dc->out) return false; @@ -3009,6 +2955,9 @@ static int tegra_dc_probe(struct nvhost_device *ndev, */ dc->emc_clk_rate = 0; + if (dc->pdata->flags & TEGRA_DC_FLAG_ENABLED) + dc->enabled = true; + mutex_init(&dc->lock); mutex_init(&dc->one_shot_lock); init_completion(&dc->frame_end_complete); @@ -3075,6 +3024,14 @@ static int tegra_dc_probe(struct nvhost_device *ndev, goto err_put_emc_clk; } + /* hack to balance enable_irq calls in _tegra_dc_enable() */ + disable_dc_irq(dc->irq); + + mutex_lock(&dc->lock); + if (dc->enabled) + _tegra_dc_enable(dc); + mutex_unlock(&dc->lock); + tegra_dc_create_debugfs(dc); dev_info(&ndev->dev, "probed\n"); diff --git a/drivers/video/tegra/dc/hdmi.c b/drivers/video/tegra/dc/hdmi.c index 59b9afcec0e4..eb670c38bacc 100644 --- a/drivers/video/tegra/dc/hdmi.c +++ b/drivers/video/tegra/dc/hdmi.c @@ -1344,7 +1344,15 @@ static bool tegra_dc_hdmi_mode_filter(const struct tegra_dc *dc, static bool tegra_dc_hdmi_hpd(struct tegra_dc *dc) { - return tegra_dc_hpd(dc); + int sense; + int level; + + level = gpio_get_value(dc->out->hotplug_gpio); + + sense = dc->out->flags & TEGRA_DC_OUT_HOTPLUG_MASK; + + return (sense == TEGRA_DC_OUT_HOTPLUG_HIGH && level) || + (sense == TEGRA_DC_OUT_HOTPLUG_LOW && !level); } |