diff options
Diffstat (limited to 'drivers/gpu/drm/i2c')
| -rw-r--r-- | drivers/gpu/drm/i2c/adv7511.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i2c/tda998x_drv.c | 27 | 
2 files changed, 16 insertions, 13 deletions
| diff --git a/drivers/gpu/drm/i2c/adv7511.c b/drivers/gpu/drm/i2c/adv7511.c index b728523e194f..2aaa3c88999e 100644 --- a/drivers/gpu/drm/i2c/adv7511.c +++ b/drivers/gpu/drm/i2c/adv7511.c @@ -438,7 +438,7 @@ static int adv7511_irq_process(struct adv7511 *adv7511)  	regmap_write(adv7511->regmap, ADV7511_REG_INT(0), irq0);  	regmap_write(adv7511->regmap, ADV7511_REG_INT(1), irq1); -	if (irq0 & ADV7511_INT0_HDP) +	if (irq0 & ADV7511_INT0_HDP && adv7511->encoder)  		drm_helper_hpd_irq_event(adv7511->encoder->dev);  	if (irq0 & ADV7511_INT0_EDID_READY || irq1 & ADV7511_INT1_DDC_ERROR) { diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c index 5febffdb027d..fe1599d75f14 100644 --- a/drivers/gpu/drm/i2c/tda998x_drv.c +++ b/drivers/gpu/drm/i2c/tda998x_drv.c @@ -634,19 +634,22 @@ tda998x_write_aif(struct tda998x_priv *priv, struct tda998x_encoder_params *p)  static void  tda998x_write_avi(struct tda998x_priv *priv, struct drm_display_mode *mode)  { -	u8 buf[PB(HDMI_AVI_INFOFRAME_SIZE) + 1]; +	struct hdmi_avi_infoframe frame; +	u8 buf[HDMI_INFOFRAME_HEADER_SIZE + HDMI_AVI_INFOFRAME_SIZE]; +	ssize_t len; -	memset(buf, 0, sizeof(buf)); -	buf[HB(0)] = HDMI_INFOFRAME_TYPE_AVI; -	buf[HB(1)] = 0x02; -	buf[HB(2)] = HDMI_AVI_INFOFRAME_SIZE; -	buf[PB(1)] = HDMI_SCAN_MODE_UNDERSCAN; -	buf[PB(2)] = HDMI_ACTIVE_ASPECT_PICTURE; -	buf[PB(3)] = HDMI_QUANTIZATION_RANGE_FULL << 2; -	buf[PB(4)] = drm_match_cea_mode(mode); - -	tda998x_write_if(priv, DIP_IF_FLAGS_IF2, REG_IF2_HB0, buf, -			 sizeof(buf)); +	drm_hdmi_avi_infoframe_from_display_mode(&frame, mode); + +	frame.quantization_range = HDMI_QUANTIZATION_RANGE_FULL; + +	len = hdmi_avi_infoframe_pack(&frame, buf, sizeof(buf)); +	if (len < 0) { +		dev_err(&priv->hdmi->dev, +			"hdmi_avi_infoframe_pack() failed: %zd\n", len); +		return; +	} + +	tda998x_write_if(priv, DIP_IF_FLAGS_IF2, REG_IF2_HB0, buf, len);  }  static void tda998x_audio_mute(struct tda998x_priv *priv, bool on) | 
