From 2014c63a9e2fbd9523babc0063635253529f2293 Mon Sep 17 00:00:00 2001 From: Zheng Yang Date: Fri, 29 Aug 2014 14:31:38 +0800 Subject: [PATCH] =?utf8?q?rk312x=20tve:=20improve=20electrical=20character?= =?utf8?q?istics:=20K=20factor=E3=80=81=20=09=20=20=20=20luminance=20nonli?= =?utf8?q?nearity=20and=20multiburst.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- drivers/video/rockchip/tve/rk3036/rk3036_tve.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/video/rockchip/tve/rk3036/rk3036_tve.c b/drivers/video/rockchip/tve/rk3036/rk3036_tve.c index d93ba520feb4..473b9d05c680 100644 --- a/drivers/video/rockchip/tve/rk3036/rk3036_tve.c +++ b/drivers/video/rockchip/tve/rk3036/rk3036_tve.c @@ -51,7 +51,7 @@ static void dac_enable(bool enable) if (enable) { mask = m_VBG_EN | m_DAC_EN | m_DAC_GAIN; if (rk3036_tve->soctype == SOC_RK312X) { - val = m_VBG_EN | m_DAC_EN | v_DAC_GAIN(0x3b); + val = m_VBG_EN | m_DAC_EN | v_DAC_GAIN(0x3a); grfreg = RK312X_GRF_TVE_CON; } else if (rk3036_tve->soctype == SOC_RK3036) { @@ -112,8 +112,8 @@ static void tve_set_mode(int mode) tve_writel(TV_BW_CTRL, v_CHROMA_BW(BP_FILTER_PAL) | v_COLOR_DIFF_BW(COLOR_DIFF_FILTER_BW_1_3)); if (rk3036_tve->soctype == SOC_RK312X) { - tve_writel(TV_SATURATION, /*0x00325c40*/ 0x00386440); - tve_writel(TV_BRIGHTNESS_CONTRAST, 0x00008a00); + tve_writel(TV_SATURATION, /*0x00325c40*/ 0x002b4d3c); + tve_writel(TV_BRIGHTNESS_CONTRAST, 0x00008a0a); } else { tve_writel(TV_SATURATION, /*0x00325c40*/ 0x00386346); tve_writel(TV_BRIGHTNESS_CONTRAST, 0x00008b00); @@ -124,8 +124,12 @@ static void tve_set_mode(int mode) tve_writel(TV_ADJ_TIMING, (0xc << 28) | 0x06c00800 | 0x80); tve_writel(TV_ACT_ST, 0x001500F6); tve_writel(TV_ACT_TIMING, 0x0694011D | (1 << 12) | (2 << 28)); - if (rk3036_tve->soctype == SOC_RK312X) - tve_writel(TV_ADJ_TIMING, (0x9<< 28) | 0x06c00800 | 0x80); + if (rk3036_tve->soctype == SOC_RK312X){ + tve_writel(TV_ADJ_TIMING, (0xa<< 28) | 0x06c00800 | 0x80); + udelay(100); + tve_writel(TV_ADJ_TIMING, (0xa<< 28) | 0x06c00800 | 0x80); + tve_writel(TV_ACT_TIMING, 0x0694011D | (1 << 12) | (2 << 28)); + } else tve_writel(TV_ADJ_TIMING, (0xa<< 28) | 0x06c00800 | 0x80); } @@ -405,9 +409,9 @@ static void __exit rk3036_tve_exit(void) platform_driver_unregister(&rk3036_tve_driver); } -module_init(rk3036_tve_init); +late_initcall(rk3036_tve_init); module_exit(rk3036_tve_exit); /* Module information */ MODULE_DESCRIPTION("ROCKCHIP RK3036 TV Encoder "); -MODULE_LICENSE("GPL"); \ No newline at end of file +MODULE_LICENSE("GPL"); -- 2.34.1