|
@@ -199,17 +199,14 @@ static const uint16_t adv7511_csc_ycbcr_to_rgb[] = {
|
|
|
|
|
|
static void adv7511_set_config_csc(struct adv7511 *adv7511,
|
|
|
struct drm_connector *connector,
|
|
|
- bool rgb)
|
|
|
+ bool rgb, bool hdmi_mode)
|
|
|
{
|
|
|
struct adv7511_video_config config;
|
|
|
bool output_format_422, output_format_ycbcr;
|
|
|
unsigned int mode;
|
|
|
uint8_t infoframe[17];
|
|
|
|
|
|
- if (adv7511->edid)
|
|
|
- config.hdmi_mode = drm_detect_hdmi_monitor(adv7511->edid);
|
|
|
- else
|
|
|
- config.hdmi_mode = false;
|
|
|
+ config.hdmi_mode = hdmi_mode;
|
|
|
|
|
|
hdmi_avi_infoframe_init(&config.avi_infoframe);
|
|
|
|
|
@@ -589,13 +586,14 @@ static int adv7511_get_modes(struct adv7511 *adv7511,
|
|
|
if (!adv7511->powered)
|
|
|
__adv7511_power_off(adv7511);
|
|
|
|
|
|
- kfree(adv7511->edid);
|
|
|
- adv7511->edid = edid;
|
|
|
|
|
|
drm_mode_connector_update_edid_property(connector, edid);
|
|
|
count = drm_add_edid_modes(connector, edid);
|
|
|
|
|
|
- adv7511_set_config_csc(adv7511, connector, adv7511->rgb);
|
|
|
+ adv7511_set_config_csc(adv7511, connector, adv7511->rgb,
|
|
|
+ drm_detect_hdmi_monitor(edid));
|
|
|
+
|
|
|
+ kfree(edid);
|
|
|
|
|
|
return count;
|
|
|
}
|
|
@@ -1156,8 +1154,6 @@ static int adv7511_remove(struct i2c_client *i2c)
|
|
|
|
|
|
i2c_unregister_device(adv7511->i2c_edid);
|
|
|
|
|
|
- kfree(adv7511->edid);
|
|
|
-
|
|
|
return 0;
|
|
|
}
|
|
|
|