summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2022-06-10 05:49:54 +0000
committerAndroid Partner Code Review <android-gerrit-partner@google.com>2022-06-10 05:49:54 +0000
commitc8b4d58f54c7183a4331adda792a0b7171ca0a4c (patch)
tree3fe8cad032a5647bd2dd3afd822fdcc4b6ada547
parentb68bea20813dc782764eff7118118ae9c6fde4e9 (diff)
parentdf867e1cb8db19e08d449abdd1001e65ab8be9df (diff)
downloadarm64-c8b4d58f54c7183a4331adda792a0b7171ca0a4c.tar.gz
Merge "Android T: green screen issue [1/1]" into android-tv-deadpool-4.9-android12android-tv-13.0.0_r0.4android-tv-13.0.0_r0.3
-rw-r--r--drivers/amlogic/media/enhancement/amvecm/amcsc.c62
-rw-r--r--drivers/amlogic/media/enhancement/amvecm/amcsc_pip.c2
-rw-r--r--drivers/amlogic/media/enhancement/amvecm/amve.c16
-rw-r--r--drivers/amlogic/media/enhancement/amvecm/amvecm.c16
-rw-r--r--include/linux/amlogic/media/amvecm/amvecm.h1
5 files changed, 52 insertions, 45 deletions
diff --git a/drivers/amlogic/media/enhancement/amvecm/amcsc.c b/drivers/amlogic/media/enhancement/amvecm/amcsc.c
index 6df29fc6df48..3f2af0789746 100644
--- a/drivers/amlogic/media/enhancement/amvecm/amcsc.c
+++ b/drivers/amlogic/media/enhancement/amvecm/amcsc.c
@@ -3640,7 +3640,7 @@ static int src_timing_outputmode_changed(struct vframe_s *vf,
{
unsigned int width, height;
- if (vinfo->viu_color_fmt == COLOR_FMT_RGB444)
+ if (vinfo_lcd_support())
return 0;
width = (vf->type & VIDTYPE_COMPRESS) ?
@@ -4837,7 +4837,7 @@ static void vpp_lut_curve_set(enum vpp_lut_sel_e lut_sel,
{
if (lut_sel == VPP_LUT_EOTF) {
/* eotf lut 2048 */
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444) {
+ if (!vinfo_lcd_support()) {
if (video_lut_swtich == 1)
/*350nit alpha_low = 0.12; */
set_vpp_lut(VPP_LUT_EOTF,
@@ -4882,7 +4882,7 @@ static void vpp_lut_curve_set(enum vpp_lut_sel_e lut_sel,
CSC_ON);
} else if (lut_sel == VPP_LUT_OETF) {
/* oetf lut bypass */
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444) {
+ if (!vinfo_lcd_support()) {
if (video_lut_swtich == 1)
set_vpp_lut(VPP_LUT_OETF,
oetf_289_gamma22_mapping_level1_box,
@@ -5158,7 +5158,7 @@ static int hdr_process(
vpp_lut_curve_set(VPP_LUT_OETF, vinfo);
/* xvyccc matrix3: bypass */
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444)
+ if (!vinfo_lcd_support())
set_vpp_matrix(VPP_MATRIX_XVYCC,
RGB709_to_YUV709l_coeff,
CSC_ON);
@@ -5179,7 +5179,7 @@ static int hdr_process(
/* xvyccc matrix3: RGB to YUV */
/* other cases */
/* xvyccc matrix3: bypass */
- if ((vinfo->viu_color_fmt != COLOR_FMT_RGB444) &&
+ if ((!vinfo_lcd_support()) &&
(get_cpu_type() == MESON_CPU_MAJOR_ID_GXTVBB))
vpp_set_matrix3(CSC_ON, VPP_MATRIX_RGB_YUV709);
else
@@ -5438,7 +5438,7 @@ static int hlg_process(
CSC_ON);
/* xvyccc matrix3: bypass */
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444)
+ if (!vinfo_lcd_support())
set_vpp_matrix(VPP_MATRIX_XVYCC,
RGB709_to_YUV709l_coeff,
CSC_ON);
@@ -5459,7 +5459,7 @@ static int hlg_process(
/* xvyccc matrix3: RGB to YUV */
/* other cases */
/* xvyccc matrix3: bypass */
- if ((vinfo->viu_color_fmt != COLOR_FMT_RGB444) &&
+ if ((!vinfo_lcd_support()) &&
(get_cpu_type() == MESON_CPU_MAJOR_ID_GXTVBB))
vpp_set_matrix3(CSC_ON, VPP_MATRIX_RGB_YUV709);
else
@@ -5532,7 +5532,7 @@ static void bypass_hdr_process(
if ((csc_type == VPP_MATRIX_BT2020YUV_BT2020RGB) &&
((sink_hdr_support(vinfo) &
(HDR_SUPPORT | HLG_SUPPORT)) &&
- (vinfo->viu_color_fmt != COLOR_FMT_RGB444))) {
+ (!vinfo_lcd_support()))) {
if (get_hdr_type() & HLG_FLAG)
hdr_func(OSD1_HDR,
SDR_HLG | hdr_ex, vinfo, NULL);
@@ -5555,7 +5555,7 @@ static void bypass_hdr_process(
/*(VIU_OSD1_BLK0_CFG_W0,0, 7, 1);*/
if ((csc_type == VPP_MATRIX_BT2020YUV_BT2020RGB) &&
((sink_hdr_support(vinfo) & HDR_SUPPORT) &&
- (vinfo->viu_color_fmt != COLOR_FMT_RGB444))) {
+ (!vinfo_lcd_support()))) {
/* OSD convert to HDR to match HDR video */
/* osd eotf lut 709 */
if (get_hdr_type() & HLG_FLAG) {
@@ -5703,7 +5703,7 @@ static void bypass_hdr_process(
bypass_coeff,
CSC_OFF); /* limit->limit range */
else {
- if (vinfo->viu_color_fmt == COLOR_FMT_RGB444) {
+ if (vinfo_lcd_support()) {
if (signal_range == 0) {/* limit range */
if (csc_type == VPP_MATRIX_YUV601_RGB)
set_vpp_matrix(VPP_MATRIX_VD1,
@@ -5751,7 +5751,7 @@ static void bypass_hdr_process(
}
/* post matrix bypass */
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444)
+ if (!vinfo_lcd_support())
/* yuv2rgb for eye protect mode */
set_vpp_matrix(VPP_MATRIX_POST,
bypass_coeff,
@@ -5803,7 +5803,7 @@ static void bypass_hdr_process(
CSC_OFF);
/* xvycc matrix full2limit or bypass */
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444) {
+ if (!vinfo_lcd_support()) {
if (csc_type == VPP_MATRIX_BT2020YUV_BT2020RGB)
set_vpp_matrix(VPP_MATRIX_XVYCC,
bypass_coeff,
@@ -5857,7 +5857,7 @@ static void bypass_hdr_process(
/* xvyccc matrix3: RGB to YUV */
/* other cases */
/* xvyccc matrix3: bypass */
- if ((vinfo->viu_color_fmt != COLOR_FMT_RGB444) &&
+ if ((!vinfo_lcd_support()) &&
(get_cpu_type() == MESON_CPU_MAJOR_ID_GXTVBB))
vpp_set_matrix3(CSC_ON, VPP_MATRIX_RGB_YUV709);
else
@@ -5905,7 +5905,7 @@ static void set_bt2020csc_process(
/*(VIU_OSD1_BLK0_CFG_W0,0, 7, 1);*/
if ((csc_type == VPP_MATRIX_BT2020YUV_BT2020RGB) &&
((sink_hdr_support(vinfo) & HDR_SUPPORT) &&
- (vinfo->viu_color_fmt != COLOR_FMT_RGB444))) {
+ (!vinfo_lcd_support()))) {
/* OSD convert to HDR to match HDR video */
/* osd eotf lut 709 */
if (get_hdr_type() & HLG_FLAG)
@@ -6010,7 +6010,7 @@ static void set_bt2020csc_process(
bypass_coeff,
CSC_OFF); /* limit->limit range */
else {
- if (vinfo->viu_color_fmt == COLOR_FMT_RGB444) {
+ if (vinfo_lcd_support()) {
if (signal_range == 0) {/* limit range */
if (csc_type == VPP_MATRIX_YUV601_RGB)
set_vpp_matrix(VPP_MATRIX_VD1,
@@ -6058,7 +6058,7 @@ static void set_bt2020csc_process(
}
/* post matrix bypass */
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444)
+ if (!vinfo_lcd_support())
/* yuv2rgb for eye protect mode */
set_vpp_matrix(VPP_MATRIX_POST,
YUV709l_to_YUV2020_coeff,
@@ -6110,7 +6110,7 @@ static void set_bt2020csc_process(
CSC_OFF);
/* xvycc matrix full2limit or bypass */
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444) {
+ if (!vinfo_lcd_support()) {
if (csc_type == VPP_MATRIX_BT2020YUV_BT2020RGB)
set_vpp_matrix(VPP_MATRIX_XVYCC,
bypass_coeff,
@@ -6158,7 +6158,7 @@ static void set_bt2020csc_process(
/* xvyccc matrix3: RGB to YUV */
/* other cases */
/* xvyccc matrix3: bypass */
- if ((vinfo->viu_color_fmt != COLOR_FMT_RGB444) &&
+ if ((!vinfo_lcd_support()) &&
(get_cpu_type() == MESON_CPU_MAJOR_ID_GXTVBB))
vpp_set_matrix3(CSC_ON, VPP_MATRIX_RGB_YUV709);
else
@@ -6215,7 +6215,7 @@ static void hlg_hdr_process(
/* 0, 7, 1); */
if ((csc_type == VPP_MATRIX_BT2020YUV_BT2020RGB) &&
((sink_hdr_support(vinfo) & HDR_SUPPORT) &&
- (vinfo->viu_color_fmt != COLOR_FMT_RGB444))) {
+ (!vinfo_lcd_support()))) {
/* OSD convert to HDR to match HDR video */
/* osd eotf lut 709 */
if (get_hdr_type() & HLG_FLAG)
@@ -6341,7 +6341,7 @@ static void hlg_hdr_process(
CSC_ON);
/* post matrix bypass */
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444)
+ if (!vinfo_lcd_support())
/* yuv2rgb for eye protect mode */
set_vpp_matrix(VPP_MATRIX_POST,
YUV2020l_to_RGB2020_coeff,
@@ -6371,7 +6371,7 @@ static void hlg_hdr_process(
CSC_ON);
/* xvycc matrix full2limit or bypass */
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444) {
+ if (!vinfo_lcd_support()) {
if (csc_type == VPP_MATRIX_BT2020YUV_BT2020RGB)
set_vpp_matrix(VPP_MATRIX_XVYCC,
RGB2020_to_YUV2020l_coeff,
@@ -6425,7 +6425,7 @@ static void hlg_hdr_process(
/* xvyccc matrix3: RGB to YUV */
/* other cases */
/* xvyccc matrix3: bypass */
- if ((vinfo->viu_color_fmt != COLOR_FMT_RGB444) &&
+ if ((!vinfo_lcd_support()) &&
(get_cpu_type() == MESON_CPU_MAJOR_ID_GXTVBB))
vpp_set_matrix3(CSC_ON, VPP_MATRIX_RGB_YUV709);
else
@@ -6442,7 +6442,7 @@ static void sdr_hdr_process(
enum vd_path_e vd_path,
enum hdr_type_e *source_type)
{
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444) {
+ if (!vinfo_lcd_support()) {
if (get_cpu_type() >= MESON_CPU_MAJOR_ID_G12A) {
if (vd_path == VD1_PATH)
hdr_func(VD1_HDR,
@@ -6560,7 +6560,7 @@ static int vpp_eye_protection_process(
sdr_process_mode[vd_path])
return 0;
- if (vinfo->viu_color_fmt == COLOR_FMT_RGB444)
+ if (vinfo_lcd_support())
return 0;
/* post matrix bypass */
@@ -6667,10 +6667,10 @@ static void hdr_support_process(struct vinfo_s *vinfo, enum vd_path_e vd_path)
if (sdr_mode == 2) { /* auto */
if ((sink_hdr_support(vinfo) & HDR_SUPPORT) &&
((cpu_after_eq(MESON_CPU_MAJOR_ID_GXL)) &&
- (vinfo->viu_color_fmt != COLOR_FMT_RGB444)))
+ (!vinfo_lcd_support())))
/*box sdr->hdr*/
sdr_process_mode[vd_path] = PROC_SDR_TO_HDR;
- else if ((vinfo->viu_color_fmt == COLOR_FMT_RGB444) &&
+ else if ((vinfo_lcd_support()) &&
((get_cpu_type() == MESON_CPU_MAJOR_ID_GXTVBB) ||
(get_cpu_type() == MESON_CPU_MAJOR_ID_TXL)))
/*tv sdr->hdr*/
@@ -6707,7 +6707,7 @@ static int sink_support_hlg(const struct vinfo_s *vinfo)
static int sink_support_hdr10_plus(const struct vinfo_s *vinfo)
{
/* panel output and TL1 and TM2 */
- if ((vinfo->viu_color_fmt == COLOR_FMT_RGB444) &&
+ if ((vinfo_lcd_support()) &&
((get_cpu_type() == MESON_CPU_MAJOR_ID_TL1) ||
(get_cpu_type() == MESON_CPU_MAJOR_ID_TM2)))
return 1;
@@ -7025,7 +7025,7 @@ static void hdr_tx_pkt_cb(
if (vinfo->vout_device)
vdev = vinfo->vout_device;
- if ((vinfo->viu_color_fmt != COLOR_FMT_RGB444) &&
+ if ((!vinfo_lcd_support()) &&
((sink_hdr_support(vinfo) &
(HDR_SUPPORT | HLG_SUPPORT)) ||
(signal_change_flag & SIG_HDR_SUPPORT) ||
@@ -7457,7 +7457,7 @@ static void video_process(
}
if (get_cpu_type() >= MESON_CPU_MAJOR_ID_G12A) {
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444)
+ if (!vinfo_lcd_support())
mtx_setting(POST2_MTX, MATRIX_NULL, MTX_OFF);
else {
if (vf && vf->type & VIDTYPE_RGB_444 &&
@@ -8011,7 +8011,7 @@ int amvecm_matrix_process(
/* gxl handle sdr_mode change bug fix. */
if ((sink_hdr_support(vinfo) & HDR_SUPPORT) &&
!cpu_after_eq(MESON_CPU_MAJOR_ID_G12A) &&
- vinfo->viu_color_fmt != COLOR_FMT_RGB444) {
+ !vinfo_lcd_support()) {
if (sdr_mode != cur_sdr_mode) {
force_fake = true;
cur_sdr_mode = sdr_mode;
@@ -8024,7 +8024,7 @@ int amvecm_matrix_process(
if (is_video_layer_on(vd_path) &&
(sink_hdr_support(vinfo) & HDR_SUPPORT) &&
((cpu_after_eq(MESON_CPU_MAJOR_ID_GXL)) &&
- (vinfo->viu_color_fmt != COLOR_FMT_RGB444))) {
+ (!vinfo_lcd_support()))) {
if (cpu_after_eq(MESON_CPU_MAJOR_ID_G12A)) {
if (sdr_mode != cur_sdr_mode) {
null_vf_cnt[vd_path] = 0;
diff --git a/drivers/amlogic/media/enhancement/amvecm/amcsc_pip.c b/drivers/amlogic/media/enhancement/amvecm/amcsc_pip.c
index 2bacec42f32a..386e94e57553 100644
--- a/drivers/amlogic/media/enhancement/amvecm/amcsc_pip.c
+++ b/drivers/amlogic/media/enhancement/amvecm/amcsc_pip.c
@@ -1358,7 +1358,7 @@ void video_post_process(
}
if (get_cpu_type() >= MESON_CPU_MAJOR_ID_G12A) {
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444) {
+ if (!vinfo_lcd_support()) {
mtx_setting(POST2_MTX, MATRIX_NULL, MTX_OFF);
} else {
if ((vf && vf->type & VIDTYPE_RGB_444) &&
diff --git a/drivers/amlogic/media/enhancement/amvecm/amve.c b/drivers/amlogic/media/enhancement/amvecm/amve.c
index 6bd65671675f..541fdeab9172 100644
--- a/drivers/amlogic/media/enhancement/amvecm/amve.c
+++ b/drivers/amlogic/media/enhancement/amvecm/amve.c
@@ -189,7 +189,6 @@ void ve_dnlp_load_reg(void)
int i;
int offset = 0;
int dnlp_reg = 0;
- struct vinfo_s *vinfo = get_current_vinfo();
if (cpu_after_eq(MESON_CPU_MAJOR_ID_TM2)) {
if (is_meson_rev_a() && is_meson_tm2_cpu())
@@ -205,7 +204,7 @@ void ve_dnlp_load_reg(void)
WRITE_VPP_REG(SRSHARP1_DNLP_00 + i,
ve_dnlp_reg[i]);
} else if (cpu_after_eq(MESON_CPU_MAJOR_ID_TL1)) {
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444)
+ if (!vinfo_lcd_support())
dnlp_reg = SHARP0_DNLP_00 + offset;
else
dnlp_reg = SHARP1_DNLP_00 + offset;
@@ -232,7 +231,6 @@ static void ve_dnlp_load_def_reg(void)
int i;
int offset = 0;
int dnlp_reg = 0;
- struct vinfo_s *vinfo = get_current_vinfo();
if (cpu_after_eq(MESON_CPU_MAJOR_ID_TM2)) {
if (is_meson_rev_a() && is_meson_tm2_cpu())
@@ -248,7 +246,7 @@ static void ve_dnlp_load_def_reg(void)
WRITE_VPP_REG(SRSHARP1_DNLP_00 + i,
ve_dnlp_reg[i]);
} else if (cpu_after_eq(MESON_CPU_MAJOR_ID_TL1)) {
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444)
+ if (!vinfo_lcd_support())
dnlp_reg = SHARP0_DNLP_00 + offset;
else
dnlp_reg = SHARP1_DNLP_00 + offset;
@@ -530,7 +528,7 @@ void vpp_set_rgb_ogo(struct tcon_rgb_ogo_s *p)
{
int m[24];
int i;
- struct vinfo_s *vinfo = get_current_vinfo();
+
/* write to registers */
if (video_rgb_ogo_xvy_mtx) {
if (video_rgb_ogo_xvy_mtx_latch & MTX_BYPASS_RGB_OGO) {
@@ -552,7 +550,7 @@ void vpp_set_rgb_ogo(struct tcon_rgb_ogo_s *p)
m[10] = p->g_gain * m[10] / COEFF_NORM(1.0);
m[11] = p->b_gain * m[11] / COEFF_NORM(1.0);
- if (vinfo->viu_color_fmt == COLOR_FMT_RGB444) {
+ if (vinfo_lcd_support()) {
m[18] = (p->r_pre_offset + m[18] + 1024)
* p->r_gain / COEFF_NORM(1.0)
- p->r_gain + p->r_post_offset;
@@ -707,14 +705,13 @@ void vpp_set_rgb_ogo(struct tcon_rgb_ogo_s *p)
void ve_enable_dnlp(void)
{
- struct vinfo_s *vinfo = get_current_vinfo();
ve_en = 1;
if (dnlp_sel == NEW_DNLP_IN_SHARPNESS) {
if (is_meson_gxlx_cpu() || is_meson_txlx_cpu()) {
WRITE_VPP_REG_BITS(SRSHARP1_DNLP_EN, 1, 0, 1);
} else if (cpu_after_eq(MESON_CPU_MAJOR_ID_TL1)) {
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444)
+ if (!vinfo_lcd_support())
WRITE_VPP_REG_BITS(
SRSHARP0_DNLP_EN + sr_offset[0],
1, 0, 1);
@@ -733,14 +730,13 @@ void ve_enable_dnlp(void)
void ve_disable_dnlp(void)
{
- struct vinfo_s *vinfo = get_current_vinfo();
ve_en = 0;
if (dnlp_sel == NEW_DNLP_IN_SHARPNESS) {
if (is_meson_gxlx_cpu() || is_meson_txlx_cpu()) {
WRITE_VPP_REG_BITS(SRSHARP1_DNLP_EN, 0, 0, 1);
} else if (cpu_after_eq(MESON_CPU_MAJOR_ID_TL1)) {
- if (vinfo->viu_color_fmt != COLOR_FMT_RGB444)
+ if (!vinfo_lcd_support())
WRITE_VPP_REG_BITS(
SRSHARP0_DNLP_EN + sr_offset[0],
0, 0, 1);
diff --git a/drivers/amlogic/media/enhancement/amvecm/amvecm.c b/drivers/amlogic/media/enhancement/amvecm/amvecm.c
index 12071d68cbc0..c24799250678 100644
--- a/drivers/amlogic/media/enhancement/amvecm/amvecm.c
+++ b/drivers/amlogic/media/enhancement/amvecm/amvecm.c
@@ -7357,14 +7357,24 @@ void init_pq_control(unsigned int enable)
sizeof(struct pq_ctrl_s));
}
}
-/* #if (MESON_CPU_TYPE == MESON_CPU_TYPE_MESONG9TV) */
-void init_pq_setting(void)
+
+int vinfo_lcd_support(void)
{
struct vinfo_s *vinfo = get_current_vinfo();
+ if (vinfo->mode == VMODE_LCD ||
+ vinfo->mode == VMODE_DUMMY_ENCP)
+ return 1;
+ else
+ return 0;
+}
+
+/* #if (MESON_CPU_TYPE == MESON_CPU_TYPE_MESONG9TV) */
+void init_pq_setting(void)
+{
int bitdepth;
- if (vinfo->viu_color_fmt == COLOR_FMT_RGB444)
+ if (vinfo_lcd_support())
init_pq_control(PQ_TV);
else
init_pq_control(PQ_BOX);
diff --git a/include/linux/amlogic/media/amvecm/amvecm.h b/include/linux/amlogic/media/amvecm/amvecm.h
index 1be65ddac3bf..ca1c1634dadf 100644
--- a/include/linux/amlogic/media/amvecm/amvecm.h
+++ b/include/linux/amlogic/media/amvecm/amvecm.h
@@ -597,6 +597,7 @@ extern int am_meson_ctm_disable(void);
extern void enable_osd1_mtx(unsigned int en);
void set_cur_hdr_policy(uint policy);
u32 hdr_set(u32 module_sel, u32 hdr_process_select);
+int vinfo_lcd_support(void);
int dv_pq_ctl(enum dv_pq_ctl_e ctl);
#endif /* AMVECM_H */