@@ -179,7 +179,6 @@ struct sii902x {
179179 struct drm_connector connector ;
180180 struct gpio_desc * reset_gpio ;
181181 struct i2c_mux_core * i2cmux ;
182- bool sink_is_hdmi ;
183182 u32 bus_width ;
184183
185184 /*
@@ -315,8 +314,6 @@ static int sii902x_get_modes(struct drm_connector *connector)
315314 drm_edid_free (drm_edid );
316315 }
317316
318- sii902x -> sink_is_hdmi = connector -> display_info .is_hdmi ;
319-
320317 return num ;
321318}
322319
@@ -342,9 +339,17 @@ static void sii902x_bridge_atomic_enable(struct drm_bridge *bridge,
342339 struct drm_atomic_state * state )
343340{
344341 struct sii902x * sii902x = bridge_to_sii902x (bridge );
342+ struct drm_connector * connector ;
343+ u8 output_mode = SII902X_SYS_CTRL_OUTPUT_DVI ;
344+
345+ connector = drm_atomic_get_new_connector_for_encoder (state , bridge -> encoder );
346+ if (connector && connector -> display_info .is_hdmi )
347+ output_mode = SII902X_SYS_CTRL_OUTPUT_HDMI ;
345348
346349 mutex_lock (& sii902x -> mutex );
347350
351+ regmap_update_bits (sii902x -> regmap , SII902X_SYS_CTRL_DATA ,
352+ SII902X_SYS_CTRL_OUTPUT_MODE , output_mode );
348353 regmap_update_bits (sii902x -> regmap , SII902X_PWR_STATE_CTRL ,
349354 SII902X_AVI_POWER_STATE_MSK ,
350355 SII902X_AVI_POWER_STATE_D (0 ));
@@ -359,16 +364,12 @@ static void sii902x_bridge_mode_set(struct drm_bridge *bridge,
359364 const struct drm_display_mode * adj )
360365{
361366 struct sii902x * sii902x = bridge_to_sii902x (bridge );
362- u8 output_mode = SII902X_SYS_CTRL_OUTPUT_DVI ;
363367 struct regmap * regmap = sii902x -> regmap ;
364368 u8 buf [HDMI_INFOFRAME_SIZE (AVI )];
365369 struct hdmi_avi_infoframe frame ;
366370 u16 pixel_clock_10kHz = adj -> clock / 10 ;
367371 int ret ;
368372
369- if (sii902x -> sink_is_hdmi )
370- output_mode = SII902X_SYS_CTRL_OUTPUT_HDMI ;
371-
372373 buf [0 ] = pixel_clock_10kHz & 0xff ;
373374 buf [1 ] = pixel_clock_10kHz >> 8 ;
374375 buf [2 ] = drm_mode_vrefresh (adj );
@@ -384,11 +385,6 @@ static void sii902x_bridge_mode_set(struct drm_bridge *bridge,
384385
385386 mutex_lock (& sii902x -> mutex );
386387
387- ret = regmap_update_bits (sii902x -> regmap , SII902X_SYS_CTRL_DATA ,
388- SII902X_SYS_CTRL_OUTPUT_MODE , output_mode );
389- if (ret )
390- goto out ;
391-
392388 ret = regmap_bulk_write (regmap , SII902X_TPI_VIDEO_DATA , buf , 10 );
393389 if (ret )
394390 goto out ;
0 commit comments