Skip to content

Commit d808e62

Browse files
committed
Merge branch 'tda998x-fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-cubox
mode fixes for tda998x. * 'tda998x-fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-cubox: drm/i2c: tda998x: add some basic mode validation drm/i2c: tda998x: faster polling for edid drm/i2c: tda998x: move drm_i2c_encoder_destroy call
2 parents e1a08b8 + 92fbdfc commit d808e62

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

drivers/gpu/drm/i2c/tda998x_drv.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,12 @@ static int
810810
tda998x_encoder_mode_valid(struct drm_encoder *encoder,
811811
struct drm_display_mode *mode)
812812
{
813+
if (mode->clock > 150000)
814+
return MODE_CLOCK_HIGH;
815+
if (mode->htotal >= BIT(13))
816+
return MODE_BAD_HVALUE;
817+
if (mode->vtotal >= BIT(11))
818+
return MODE_BAD_VVALUE;
813819
return MODE_OK;
814820
}
815821

@@ -1048,8 +1054,8 @@ read_edid_block(struct drm_encoder *encoder, uint8_t *buf, int blk)
10481054
return i;
10491055
}
10501056
} else {
1051-
for (i = 10; i > 0; i--) {
1052-
msleep(10);
1057+
for (i = 100; i > 0; i--) {
1058+
msleep(1);
10531059
ret = reg_read(priv, REG_INT_FLAGS_2);
10541060
if (ret < 0)
10551061
return ret;
@@ -1183,7 +1189,6 @@ static void
11831189
tda998x_encoder_destroy(struct drm_encoder *encoder)
11841190
{
11851191
struct tda998x_priv *priv = to_tda998x_priv(encoder);
1186-
drm_i2c_encoder_destroy(encoder);
11871192

11881193
/* disable all IRQs and free the IRQ handler */
11891194
cec_write(priv, REG_CEC_RXSHPDINTENA, 0);
@@ -1193,6 +1198,7 @@ tda998x_encoder_destroy(struct drm_encoder *encoder)
11931198

11941199
if (priv->cec)
11951200
i2c_unregister_device(priv->cec);
1201+
drm_i2c_encoder_destroy(encoder);
11961202
kfree(priv);
11971203
}
11981204

0 commit comments

Comments
 (0)