hdmitx: update hdmi phsycial size during hotplug [1/1]

PD#163001: update hdmi phsycial size during hotplug

Change-Id: I71e863c56abbe5ae8dd151de481b1465317cebf1
Signed-off-by: shuze.ma <shuze.ma@amlogic.com>
This commit is contained in:
shuze.ma
2018-05-15 18:52:28 +08:00
committed by Yixun Lan
parent b65a914943
commit 00a2de0827

View File

@@ -355,27 +355,32 @@ static void recalc_vinfo_sync_duration(struct vinfo_s *info, unsigned int frac)
info->sync_duration_num, info->sync_duration_den);
}
static void hdmi_physcial_size_update(struct vinfo_s *info,
struct hdmitx_dev *hdev)
static void hdmi_physcial_size_update(struct hdmitx_dev *hdev)
{
unsigned int width, height;
struct vinfo_s *info = NULL;
if (info == NULL) {
info = hdmitx_get_current_vinfo();
if ((info == NULL) || (info->name == NULL)) {
pr_info(SYS "cann't get valid mode\n");
return;
}
width = hdev->RXCap.physcial_weight;
height = hdev->RXCap.physcial_height;
if ((width == 0) || (height == 0)) {
info->screen_real_width = info->aspect_ratio_num;
info->screen_real_height = info->aspect_ratio_den;
} else {
info->screen_real_width = width * 10; /* transfer mm */
info->screen_real_height = height * 10; /* transfer mm */
if (info->mode == VMODE_HDMI) {
width = hdev->RXCap.physcial_weight;
height = hdev->RXCap.physcial_height;
if ((width == 0) || (height == 0)) {
info->screen_real_width = info->aspect_ratio_num;
info->screen_real_height = info->aspect_ratio_den;
} else {
/* transfer mm */
info->screen_real_width = width * 10;
info->screen_real_height = height * 10;
}
pr_info(SYS "update physcial size: %d %d\n",
info->screen_real_width, info->screen_real_height);
}
pr_info(SYS "update physcial size: %d %d\n",
info->screen_real_width, info->screen_real_height);
}
static int set_disp_mode_auto(void)
@@ -415,7 +420,7 @@ static int set_disp_mode_auto(void)
pr_info(SYS "update rx hdr info %x\n",
info->hdr_info.hdr_support);
}
hdmi_physcial_size_update(info, hdev);
hdmi_physcial_size_update(hdev);
/* If info->name equals to cvbs, then set mode to I mode to hdmi
*/
@@ -2970,6 +2975,7 @@ static void hdmitx_hpd_plugin_handler(struct work_struct *work)
if (hdev->repeater_tx)
rx_repeat_hpd_state(1);
hdmitx_get_edid(hdev);
hdmi_physcial_size_update(hdev);
mutex_lock(&getedid_mutex);
hdev->HWOp.CntlMisc(hdev, MISC_I2C_REACTIVE, 0);
mutex_unlock(&getedid_mutex);
@@ -3050,6 +3056,7 @@ static void hdmitx_hpd_plugout_handler(struct work_struct *work)
hdev->HWOp.CntlMisc(hdev, MISC_ESM_RESET, 0);
clear_hdr_info(hdev);
hdmitx_edid_clear(hdev);
hdmi_physcial_size_update(hdev);
hdmitx_edid_ram_buffer_clear(hdev);
hdev->hpd_state = 0;
hdmitx_notify_hpd(hdev->hpd_state);