summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>2014-01-24 16:58:56 +0100
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2014-01-24 16:58:56 +0100
commit3a6fc5303b9e798295caa01d2cfe75b05fdccf55 (patch)
tree3df4b7a3d8cb0c09ed26380b96ba03dfc2f5c374
parent139f77a7efd40d2eb2a4a8b2d8041b80dd3965b8 (diff)
video: tegra: fb: apalis/colibri_t30: hack avoid 24 Hz mode
Hack to avoid 24 Hz mode in X resulting in no display at all. This has been encountered using e.g. a Samsung SyncMaster F2380 if connected by HDMI. root@apalis-t30:~# xrandr Screen 0: minimum 256 x 128, current 1920 x 1080, maximum 2048 x 2048 LVDS-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm 1920x1080 58.6*+ HDMI-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 160mm x 90mm 1920x1080 60.0*+ 1680x1050 59.9 1280x1024 75.0 60.0 1440x900 75.0 59.9 1280x960 60.0 1280x800 59.9 1152x864 75.0 1280x720 60.0 50.0 1024x768 75.0 70.1 60.0 832x624 74.6 800x600 72.2 75.0 60.3 56.2 720x576 50.0 720x480 59.9 640x480 75.0 72.8 66.7 59.9 720x400 70.1 This is basically a revamp of the following commit which got scrapped by the modedb changes: 8174d21e5fe0d086cb5824161c58eb065f412281
-rw-r--r--drivers/video/tegra/fb.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/video/tegra/fb.c b/drivers/video/tegra/fb.c
index b687382d1dd4..a4f21c54dde6 100644
--- a/drivers/video/tegra/fb.c
+++ b/drivers/video/tegra/fb.c
@@ -72,10 +72,16 @@ static int tegra_fb_check_var(struct fb_var_screeninfo *var,
info->screen_size)
return -EINVAL;
+ fb_var_to_videomode(&mode, var);
+
+#if defined(CONFIG_MACH_APALIS_T30) || defined(CONFIG_MACH_COLIBRI_T30)
+ /* Hack: avoid 24 Hz mode in X resulting in no display at all */
+ if (mode.refresh < 50)
+ return -EINVAL;
+#endif /* CONFIG_MACH_APALIS_T30 | CONFIG_MACH_COLIBRI_T30 */
+
/* Apply mode filter for HDMI only -LVDS supports only fix mode */
if (ops && ops->mode_filter) {
-
- fb_var_to_videomode(&mode, var);
if (!ops->mode_filter(dc, &mode))
return -EINVAL;