aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/sh_mobile_hdmi.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2011-01-06 04:27:34 -0500
committerPaul Mundt <lethal@linux-sh.org>2011-01-06 04:27:34 -0500
commit1928e87bcf185f56008d0746f887b691c1cb8c4a (patch)
treebc8db9e9cb40b73742d05e2e68189bd647687249 /drivers/video/sh_mobile_hdmi.c
parentca9c20ce2b383032b71bdae9ec0b468d428ca8d4 (diff)
parent3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5 (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: drivers/video/sh_mobile_lcdcfb.c Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'drivers/video/sh_mobile_hdmi.c')
-rw-r--r--drivers/video/sh_mobile_hdmi.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/video/sh_mobile_hdmi.c b/drivers/video/sh_mobile_hdmi.c
index 76f9fac9020f..8c59cc8c5a9c 100644
--- a/drivers/video/sh_mobile_hdmi.c
+++ b/drivers/video/sh_mobile_hdmi.c
@@ -845,6 +845,9 @@ static int sh_hdmi_read_edid(struct sh_hdmi *hdmi, unsigned long *hdmi_rate,
845 found_rate_error = rate_error; 845 found_rate_error = rate_error;
846 } 846 }
847 847
848 hdmi->var.width = hdmi->monspec.max_x * 10;
849 hdmi->var.height = hdmi->monspec.max_y * 10;
850
848 /* 851 /*
849 * TODO 1: if no ->info is present, postpone running the config until 852 * TODO 1: if no ->info is present, postpone running the config until
850 * after ->info first gets registered. 853 * after ->info first gets registered.
@@ -1031,8 +1034,12 @@ static bool sh_hdmi_must_reconfigure(struct sh_hdmi *hdmi)
1031 dev_dbg(info->dev, "Old %ux%u, new %ux%u\n", 1034 dev_dbg(info->dev, "Old %ux%u, new %ux%u\n",
1032 mode1.xres, mode1.yres, mode2.xres, mode2.yres); 1035 mode1.xres, mode1.yres, mode2.xres, mode2.yres);
1033 1036
1034 if (fb_mode_is_equal(&mode1, &mode2)) 1037 if (fb_mode_is_equal(&mode1, &mode2)) {
1038 /* It can be a different monitor with an equal video-mode */
1039 old_var->width = new_var->width;
1040 old_var->height = new_var->height;
1035 return false; 1041 return false;
1042 }
1036 1043
1037 dev_dbg(info->dev, "Switching %u -> %u lines\n", 1044 dev_dbg(info->dev, "Switching %u -> %u lines\n",
1038 mode1.yres, mode2.yres); 1045 mode1.yres, mode2.yres);
@@ -1129,8 +1136,11 @@ static void sh_hdmi_edid_work_fn(struct work_struct *work)
1129 * on, if we run a resume here, the logo disappears 1136 * on, if we run a resume here, the logo disappears
1130 */ 1137 */
1131 if (lock_fb_info(hdmi->info)) { 1138 if (lock_fb_info(hdmi->info)) {
1132 sh_hdmi_display_on(hdmi, hdmi->info); 1139 struct fb_info *info = hdmi->info;
1133 unlock_fb_info(hdmi->info); 1140 info->var.width = hdmi->var.width;
1141 info->var.height = hdmi->var.height;
1142 sh_hdmi_display_on(hdmi, info);
1143 unlock_fb_info(info);
1134 } 1144 }
1135 } else { 1145 } else {
1136 /* New monitor or have to wake up */ 1146 /* New monitor or have to wake up */