@@ -810,6 +810,12 @@ static int
810
810
tda998x_encoder_mode_valid (struct drm_encoder * encoder ,
811
811
struct drm_display_mode * mode )
812
812
{
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 ;
813
819
return MODE_OK ;
814
820
}
815
821
@@ -1048,8 +1054,8 @@ read_edid_block(struct drm_encoder *encoder, uint8_t *buf, int blk)
1048
1054
return i ;
1049
1055
}
1050
1056
} else {
1051
- for (i = 10 ; i > 0 ; i -- ) {
1052
- msleep (10 );
1057
+ for (i = 100 ; i > 0 ; i -- ) {
1058
+ msleep (1 );
1053
1059
ret = reg_read (priv , REG_INT_FLAGS_2 );
1054
1060
if (ret < 0 )
1055
1061
return ret ;
@@ -1183,7 +1189,6 @@ static void
1183
1189
tda998x_encoder_destroy (struct drm_encoder * encoder )
1184
1190
{
1185
1191
struct tda998x_priv * priv = to_tda998x_priv (encoder );
1186
- drm_i2c_encoder_destroy (encoder );
1187
1192
1188
1193
/* disable all IRQs and free the IRQ handler */
1189
1194
cec_write (priv , REG_CEC_RXSHPDINTENA , 0 );
@@ -1193,6 +1198,7 @@ tda998x_encoder_destroy(struct drm_encoder *encoder)
1193
1198
1194
1199
if (priv -> cec )
1195
1200
i2c_unregister_device (priv -> cec );
1201
+ drm_i2c_encoder_destroy (encoder );
1196
1202
kfree (priv );
1197
1203
}
1198
1204
0 commit comments