From 6265d503687da50baefd1b8364abd7194a5826e8 Mon Sep 17 00:00:00 2001 From: Matt Wagner Date: Wed, 30 May 2012 18:03:39 -0700 Subject: video: tegra: nvsd: Fix Phase In Issue with Aggressiveness Change to correct behavior for changing settings while phase_in_adjustments is set. Manual K values should not be overridden in the case where DIDIM was on and aggressiveness was changed. They should maintain state to avoid flickering. Bug 992995 Change-Id: Ic35c32a0fd5c6caaeee147dff114649ea25770c5 Signed-off-by: Matt Wagner Reviewed-on: http://git-master/r/105523 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Jon Mayo --- drivers/video/tegra/dc/nvsd.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'drivers/video/tegra/dc') diff --git a/drivers/video/tegra/dc/nvsd.c b/drivers/video/tegra/dc/nvsd.c index 65d518759243..860dd8dab1fd 100644 --- a/drivers/video/tegra/dc/nvsd.c +++ b/drivers/video/tegra/dc/nvsd.c @@ -378,7 +378,10 @@ void nvsd_init(struct tegra_dc *dc, struct tegra_dc_sd_settings *settings) val = tegra_dc_readl(dc, DC_DISP_SD_CONTROL); if (val & SD_ENABLE_NORMAL) - i = tegra_dc_readl(dc, DC_DISP_SD_HW_K_VALUES); + if (settings->phase_in_adjustments) + i = tegra_dc_readl(dc, DC_DISP_SD_MAN_K_VALUES); + else + i = tegra_dc_readl(dc, DC_DISP_SD_HW_K_VALUES); else i = 0; /* 0 values for RGB = 1.0, i.e. non-affected */ -- cgit v1.2.3 From de263f6e253976d8371da7e7b7089f1d9b79e92b Mon Sep 17 00:00:00 2001 From: Kevin Huang Date: Thu, 31 May 2012 16:55:15 -0700 Subject: video: tegra: dc: Export dispay feature table. Bug 992947 Change-Id: I0d1ecc9f8f042956cbe631779260a38573936616 Signed-off-by: Kevin Huang Reviewed-on: http://git-master/r/105776 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Jon Mayo --- drivers/video/tegra/dc/dc_config.h | 6 +++--- drivers/video/tegra/dc/ext/dev.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) (limited to 'drivers/video/tegra/dc') diff --git a/drivers/video/tegra/dc/dc_config.h b/drivers/video/tegra/dc/dc_config.h index f513cd06dc45..314cd11e77f9 100644 --- a/drivers/video/tegra/dc/dc_config.h +++ b/drivers/video/tegra/dc/dc_config.h @@ -129,13 +129,13 @@ enum tegra_dc_feature_option { }; struct tegra_dc_feature_entry { - int window_index; - enum tegra_dc_feature_option option; + u32 window_index; + u32 option; long arg[ENTRY_SIZE]; }; struct tegra_dc_feature { - unsigned num_entries; + u32 num_entries; struct tegra_dc_feature_entry *entries; }; diff --git a/drivers/video/tegra/dc/ext/dev.c b/drivers/video/tegra/dc/ext/dev.c index c349a4720d2e..a8de7a7a26e0 100644 --- a/drivers/video/tegra/dc/ext/dev.c +++ b/drivers/video/tegra/dc/ext/dev.c @@ -708,6 +708,21 @@ static int tegra_dc_ext_get_status(struct tegra_dc_ext_user *user, return 0; } +static int tegra_dc_ext_get_feature(struct tegra_dc_ext_user *user, + struct tegra_dc_ext_feature *feature) +{ + struct tegra_dc *dc = user->ext->dc; + struct tegra_dc_feature *table = dc->feature; + + if (dc->enabled && feature->entries) { + feature->length = table->num_entries; + memcpy(feature->entries, table->entries, table->num_entries * + sizeof(struct tegra_dc_feature_entry)); + } + + return 0; +} + static long tegra_dc_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { @@ -805,6 +820,22 @@ static long tegra_dc_ioctl(struct file *filp, unsigned int cmd, return tegra_dc_ext_set_lut(user, &args); } + case TEGRA_DC_EXT_GET_FEATURES: + { + struct tegra_dc_ext_feature args; + int ret; + + if (copy_from_user(&args, user_arg, sizeof(args))) + return -EFAULT; + + ret = tegra_dc_ext_get_feature(user, &args); + + if (copy_to_user(user_arg, &args, sizeof(args))) + return -EFAULT; + + return ret; + } + default: return -EINVAL; } -- cgit v1.2.3 From 1d7ae6b9c9c408639c4ca50b79525a826de126dc Mon Sep 17 00:00:00 2001 From: Jon Mayo Date: Fri, 1 Jun 2012 19:59:57 -0700 Subject: video: tegra: dsi: remove build warnings Added void to function prototypes and initialized some variables. Change-Id: I69250f5e17560f900fffddec9697e496af6ad4d2 Signed-off-by: Jon Mayo Reviewed-on: http://git-master/r/106073 Reviewed-by: Automatic_Commit_Validation_User --- drivers/video/tegra/dc/dsi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'drivers/video/tegra/dc') diff --git a/drivers/video/tegra/dc/dsi.c b/drivers/video/tegra/dc/dsi.c index e402c416b779..6624a8e8f52c 100644 --- a/drivers/video/tegra/dc/dsi.c +++ b/drivers/video/tegra/dc/dsi.c @@ -1625,7 +1625,7 @@ static void tegra_dsi_pad_calibration(struct tegra_dc_dsi_data *dsi) tegra_vi_csi_writel(val, CSI_CIL_PAD_CONFIG); } -static void tegra_dsi_panelB_enable() +static void tegra_dsi_panelB_enable(void) { unsigned int val; @@ -2751,8 +2751,8 @@ static int tegra_dc_dsi_cp_info(struct tegra_dc_dsi_data *dsi, struct tegra_dsi_out *p_dsi) { struct tegra_dsi_cmd *p_init_cmd; - struct tegra_dsi_cmd *p_early_suspend_cmd; - struct tegra_dsi_cmd *p_late_resume_cmd; + struct tegra_dsi_cmd *p_early_suspend_cmd = NULL; + struct tegra_dsi_cmd *p_late_resume_cmd = NULL; struct tegra_dsi_cmd *p_suspend_cmd; int err; -- cgit v1.2.3 From f61bdbde09605793cfa05f7c59545c62b5e08aa6 Mon Sep 17 00:00:00 2001 From: Jon Mayo Date: Fri, 1 Jun 2012 13:24:24 -0700 Subject: video: tegra: dc: remove tegra_dc_host_trigger The function tegra_dc_host_trigger() is no longer used, removing it. Change-Id: I929450bdf0224779910e8569bc8d1b3edb93f12d Signed-off-by: Jon Mayo Reviewed-on: http://git-master/r/106075 Reviewed-by: Simone Willett Tested-by: Simone Willett --- drivers/video/tegra/dc/dc.c | 17 ----------------- 1 file changed, 17 deletions(-) (limited to 'drivers/video/tegra/dc') diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c index 935f18bc8cfd..d5d0602838e7 100644 --- a/drivers/video/tegra/dc/dc.c +++ b/drivers/video/tegra/dc/dc.c @@ -2146,23 +2146,6 @@ static void tegra_dc_vblank(struct work_struct *work) } } -/* Must acquire dc lock and dc one-shot lock before invoking this function. - * Acquire dc one-shot lock first and then dc lock. */ -void tegra_dc_host_trigger(struct tegra_dc *dc) -{ - /* We release the lock here to prevent deadlock between - * cancel_delayed_work_sync and one-shot work. */ - mutex_unlock(&dc->lock); - - cancel_delayed_work_sync(&dc->one_shot_work); - mutex_lock(&dc->lock); - - schedule_delayed_work(&dc->one_shot_work, - msecs_to_jiffies(dc->one_shot_delay_ms)); - tegra_dc_program_bandwidth(dc); - tegra_dc_writel(dc, NC_HOST_TRIG, DC_CMD_STATE_CONTROL); -} - static void tegra_dc_one_shot_worker(struct work_struct *work) { struct tegra_dc *dc = container_of( -- cgit v1.2.3