diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-24 17:16:31 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-24 17:16:31 -0800 |
commit | b788769e0641daf90a8d7e800081285f8ca80bd9 (patch) | |
tree | d2cb6a926c55f4ea0ffc6089d54fb3768d82d7aa /drivers/video/omap2/dss/hdmi4.c | |
parent | Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux (diff) | |
parent | Merge branches '3.14/fbdev', '3.14/dss-misc' and '3.14/dss-fclk' into for-next (diff) | |
download | linux-dev-b788769e0641daf90a8d7e800081285f8ca80bd9.tar.xz linux-dev-b788769e0641daf90a8d7e800081285f8ca80bd9.zip |
Merge tag 'fbdev-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux
Pull fbdev changes from Tomi Valkeinen:
"This is a rather boring pull request. There is one new fb driver,
OpenCores VGA/LCD, but other than that it's just minor cleanups and
fixes"
* tag 'fbdev-3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux: (51 commits)
i810: delete useless variable
video: add OpenCores VGA/LCD framebuffer driver
video/logo: Remove MIPS-specific include section
tgafb: potential NULL dereference in init
video: mmp: Using plain integer as NULL pointer
video: mmp: delete a stray mutex_unlock()
video: amba-clcd: Make CLCD driver available on more platforms
video: Replace local macro with PCI standard macro
fbmem: really support wildcard video=options for all fbdev drivers
video: vgacon: Don't build on arm64
video: mx3fb: Allow blocking during framebuffer allocation
fbcon: Fix memory leak in fbcon_exit().
fbcon: trivial optimization for fbcon_exit
video: pxa168fb: Cleanup pxa168fb.h file
video: pxa: Cleanup video-pxafb.h header
video: msm: Cleanup video-msm_fb.h header
video: ep93xx: Cleanup video-ep93xx.h header
video: mxsfb: fix broken videomode selection
video: mxsfb: convert pr_debug()/dev_dbg() to pr_err()/dev_err() for error messages
video: vmlfb: remove unnecessary pci_set_drvdata()
...
Diffstat (limited to 'drivers/video/omap2/dss/hdmi4.c')
-rw-r--r-- | drivers/video/omap2/dss/hdmi4.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/drivers/video/omap2/dss/hdmi4.c b/drivers/video/omap2/dss/hdmi4.c index e14009614338..4a74538f9ea5 100644 --- a/drivers/video/omap2/dss/hdmi4.c +++ b/drivers/video/omap2/dss/hdmi4.c @@ -95,7 +95,8 @@ static int hdmi_init_regulator(void) reg = devm_regulator_get(&hdmi.pdev->dev, "VDAC"); if (IS_ERR(reg)) { - DSSERR("can't get VDDA_HDMI_DAC regulator\n"); + if (PTR_ERR(reg) != -EPROBE_DEFER) + DSSERR("can't get VDDA_HDMI_DAC regulator\n"); return PTR_ERR(reg); } @@ -148,8 +149,6 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev) if (r) return r; - dss_mgr_disable(mgr); - p = &hdmi.cfg.timings; DSSDBG("hdmi_power_on x_res= %d y_res = %d\n", p->x_res, p->y_res); @@ -158,8 +157,6 @@ static int hdmi_power_on_full(struct omap_dss_device *dssdev) hdmi_pll_compute(&hdmi.pll, clk_get_rate(hdmi.sys_clk), phy); - hdmi_wp_video_stop(&hdmi.wp); - /* config the PLL and PHY hdmi_set_pll_pwrfirst */ r = hdmi_pll_enable(&hdmi.pll, &hdmi.wp); if (r) { @@ -218,14 +215,12 @@ static void hdmi_power_off_full(struct omap_dss_device *dssdev) static int hdmi_display_check_timing(struct omap_dss_device *dssdev, struct omap_video_timings *timings) { - struct hdmi_cm cm; + struct omap_dss_device *out = &hdmi.output; - cm = hdmi_get_code(timings); - if (cm.code == -1) + if (!dispc_mgr_timings_ok(out->dispc_channel, timings)) return -EINVAL; return 0; - } static void hdmi_display_set_timing(struct omap_dss_device *dssdev, @@ -244,8 +239,17 @@ static void hdmi_display_set_timing(struct omap_dss_device *dssdev, hdmi.cfg = *t; dispc_set_tv_pclk(t->timings.pixel_clock * 1000); + } else { + hdmi.cfg.timings = *timings; + hdmi.cfg.cm.code = 0; + hdmi.cfg.cm.mode = HDMI_DVI; + + dispc_set_tv_pclk(timings->pixel_clock * 1000); } + DSSDBG("using mode: %s, code %d\n", hdmi.cfg.cm.mode == HDMI_DVI ? + "DVI" : "HDMI", hdmi.cfg.cm.code); + mutex_unlock(&hdmi.lock); } |