diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_common/hdmi_parameters.c b/drivers/amlogic/media/vout/hdmitx/hdmi_common/hdmi_parameters.c index 244e303ca0c0..911bead4e31c 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_common/hdmi_parameters.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_common/hdmi_parameters.c @@ -2704,6 +2704,24 @@ struct vinfo_s *hdmi_get_valid_vinfo(char *mode) /* the string of mode contains char NF */ memset(mode_, 0, sizeof(mode_)); strncpy(mode_, mode, sizeof(mode_)); + + /* skip "f", 1080fp60hz -> 1080p60hz for 3d */ + mode_[31] = '\0'; + if (strstr(mode_, "fp")) { + int i = 0; + + for (; mode_[i]; i++) { + if ((mode_[i] == 'f') && + (mode_[i + 1] == 'p')) { + do { + mode_[i] = mode_[i + 1]; + i++; + } while (mode_[i]); + break; + } + } + } + for (i = 0; i < sizeof(mode_); i++) if (mode_[i] == 10) mode_[i] = 0; diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c index 70a2827e3ead..c79eba69ee63 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c @@ -3527,6 +3527,16 @@ static enum vmode_e hdmitx_validate_vmode(char *mode) if (info) { hdmitx_vinfo = info; + hdmitx_vinfo->info_3d = NON_3D; + if (hdmitx_device.flag_3dfp) + hdmitx_vinfo->info_3d = FP_3D; + + if (hdmitx_device.flag_3dtb) + hdmitx_vinfo->info_3d = TB_3D; + + if (hdmitx_device.flag_3dss) + hdmitx_vinfo->info_3d = SS_3D; + hdmitx_vinfo->vout_device = &hdmitx_vdev; return VMODE_HDMI; } @@ -4303,6 +4313,10 @@ static int amhdmitx_device_init(struct hdmitx_dev *hdmi_dev) */ hdmitx_device.hpdmode = 1; + hdmitx_device.flag_3dfp = 0; + hdmitx_device.flag_3dss = 0; + hdmitx_device.flag_3dtb = 0; + if ((init_flag&INIT_FLAG_POWERDOWN) && (hdmitx_device.hpdmode == 2)) hdmitx_device.mux_hpd_if_pin_high_flag = 0; else diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/enc_cfg_hw.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/enc_cfg_hw.c index 15585215b175..4bdaa219c015 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/enc_cfg_hw.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hw/enc_cfg_hw.c @@ -1218,7 +1218,7 @@ static const struct reg_s tvregs_3dfp_1080p60[] = { {P_ENCP_VIDEO_MODE, 0x4040,}, {P_ENCP_VIDEO_MODE_ADV, 0x18,}, - {P_ENCP_VIDEO_MAX_PXCNT, 0x897,}, + {P_ENCP_VIDEO_MAX_PXCNT, 0xABD,}, {P_ENCP_VIDEO_MAX_LNCNT, 0x8C9,}, {P_ENCP_VIDEO_HAVON_BEGIN, 0xC0,}, {P_ENCP_VIDEO_HAVON_END, 0x83F,}, @@ -1298,7 +1298,7 @@ static const struct reg_s tvregs_3dfp_1080p50[] = { {P_ENCP_VIDEO_MODE, 0x4040,}, {P_ENCP_VIDEO_MODE_ADV, 0x18,}, - {P_ENCP_VIDEO_MAX_PXCNT, 0xA4F,}, + {P_ENCP_VIDEO_MAX_PXCNT, 0xABD,}, {P_ENCP_VIDEO_MAX_LNCNT, 0x8C9,}, {P_ENCP_VIDEO_HAVON_BEGIN, 0xC0,}, {P_ENCP_VIDEO_HAVON_END, 0x83F,}, diff --git a/drivers/amlogic/media/vout/vout_serve/vout_serve.c b/drivers/amlogic/media/vout/vout_serve/vout_serve.c index 369b5ca6157f..778c9b7d9fe5 100644 --- a/drivers/amlogic/media/vout/vout_serve/vout_serve.c +++ b/drivers/amlogic/media/vout/vout_serve/vout_serve.c @@ -519,14 +519,16 @@ static ssize_t vout_vinfo_show(struct class *class, " fr_adj_type: %d\n" " video_clk: %d\n" " viu_color_fmt: %d\n" - " viu_mux: %d\n\n", + " viu_mux: %d\n" + " 3d_info: %d\n\n", info->name, info->mode, info->width, info->height, info->field_height, info->aspect_ratio_num, info->aspect_ratio_den, info->sync_duration_num, info->sync_duration_den, info->screen_real_width, info->screen_real_height, info->htotal, info->vtotal, info->fr_adj_type, - info->video_clk, info->viu_color_fmt, info->viu_mux); + info->video_clk, info->viu_color_fmt, info->viu_mux, + info->info_3d); len += sprintf(buf+len, "master_display_info:\n" " present_flag %d\n" " features 0x%x\n" @@ -577,6 +579,7 @@ static ssize_t vout_vinfo_show(struct class *class, info->hdr_info.hdr10plus_info.ieeeoui); len += sprintf(buf+len, " application_version: %x\n", info->hdr_info.hdr10plus_info.application_version); + return len; } diff --git a/include/linux/amlogic/media/vout/vinfo.h b/include/linux/amlogic/media/vout/vinfo.h index 96bdc05f2e3e..7fff36da4ff2 100644 --- a/include/linux/amlogic/media/vout/vinfo.h +++ b/include/linux/amlogic/media/vout/vinfo.h @@ -53,6 +53,13 @@ enum vout_fr_adj_type_e { VOUT_FR_ADJ_MAX, }; +enum vinfo_3d_e { + NON_3D = 0, + SS_3D, + FP_3D, + TB_3D, +}; + /*emp : extended metadata type*/ #define VENDOR_SPECIFIC_EM_DATA 0x0 #define COMPRESS_VIDEO_TRAMSPORT 0x1