summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King2014-02-07 20:52:33 +0100
committerRussell King2014-06-26 12:03:25 +0200
commit92fbdfcd7d6b9db6b0a738c5bd85a4a9d731629d (patch)
tree78ca1e767c6045558514455d3a7bbb0475a99887
parentdrm/i2c: tda998x: faster polling for edid (diff)
downloadkernel-qcow2-linux-92fbdfcd7d6b9db6b0a738c5bd85a4a9d731629d.tar.gz
kernel-qcow2-linux-92fbdfcd7d6b9db6b0a738c5bd85a4a9d731629d.tar.xz
kernel-qcow2-linux-92fbdfcd7d6b9db6b0a738c5bd85a4a9d731629d.zip
drm/i2c: tda998x: add some basic mode validation
The TDA998x can't handle modes with clocks above 150MHz, or resolutions larger than 8192x2048. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--drivers/gpu/drm/i2c/tda998x_drv.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index 3ff7d0713bfb..5a738ad0c241 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -810,6 +810,12 @@ static int
tda998x_encoder_mode_valid(struct drm_encoder *encoder,
struct drm_display_mode *mode)
{
+ if (mode->clock > 150000)
+ return MODE_CLOCK_HIGH;
+ if (mode->htotal >= BIT(13))
+ return MODE_BAD_HVALUE;
+ if (mode->vtotal >= BIT(11))
+ return MODE_BAD_VVALUE;
return MODE_OK;
}