diff options
author | Jian Cao <jian.cao@amlogic.com> | 2019-04-02 10:51:31 +0800 |
---|---|---|
committer | Dongjin Kim <tobetter@gmail.com> | 2020-02-10 22:49:50 +0900 |
commit | af167d0d2dadae7a30f88de6fa35b53e9f88480e (patch) | |
tree | 08fef87c4006d265a255f136e0d87e7bfa39dfa4 /drivers | |
parent | e2dc7f88a580f15551c56316c24bb1e7016631ea (diff) | |
download | u-boot-odroid-c1-af167d0d2dadae7a30f88de6fa35b53e9f88480e.tar.gz |
osd: tm2: modify osd matrix [1/2]
PD#SWPL-6558
Problem:
osd color is incorrect
Solution:
modify osd matrix
Verify:
verified on TM2 skt board
Signed-off-by: Jian Cao <jian.cao@amlogic.com>
Signed-off-by: Luan Yuan <luan.yuan@amlogic.com>
Change-Id: I380724cab0720a0940da8413dc4454cea720cd3a
Signed-off-by: Luan Yuan <luan.yuan@amlogic.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/vpp/aml_vpp.c | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/drivers/vpp/aml_vpp.c b/drivers/vpp/aml_vpp.c index db041fd5e3..8600ef23a2 100644 --- a/drivers/vpp/aml_vpp.c +++ b/drivers/vpp/aml_vpp.c @@ -976,6 +976,18 @@ void set_vpp_lut( } } +int is_osd_high_version(void) +{ + u32 family_id = get_cpu_id().family_id; + + if ((family_id == MESON_CPU_MAJOR_ID_G12A) || + (family_id == MESON_CPU_MAJOR_ID_G12B) || + (family_id >= MESON_CPU_MAJOR_ID_SM1)) + return 1; + else + return 0; +} + /* for G12A, set osd2 matrix(10bit) RGB2YUV */ @@ -983,8 +995,7 @@ for G12A, set osd2 matrix(10bit) RGB2YUV { int *m = NULL; - if ((get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12A) || - (get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12B)){ + if (is_osd_high_version()) { /* RGB -> 709 limit */ m = RGB709_to_YUV709l_coeff; @@ -1044,8 +1055,7 @@ static void set_osd2_rgb2yuv(bool on) { int *m = NULL; - if ((get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12A) || - (get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12B)){ + if (is_osd_high_version()) { /* RGB -> 709 limit */ m = RGB709_to_YUV709l_coeff; @@ -1083,8 +1093,7 @@ static void set_osd3_rgb2yuv(bool on) { int *m = NULL; - if ((get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12A) || - (get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12B)){ + if (is_osd_high_version()) { /* RGB -> 709 limit */ m = RGB709_to_YUV709l_coeff; @@ -1132,8 +1141,7 @@ static void set_vpp_bitdepth(void) vpp_reg_setb(VPP_DAT_CONV_PARA1, 0, 0, 14); #else #endif - } else if ((get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12A) || - (get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12B)){ + } else if (is_osd_high_version()) { /*after this step vd1 output data is U12,*/ vpp_reg_write(DOLBY_PATH_CTRL, 0xf); } @@ -1489,26 +1497,20 @@ void vpp_init(void) set_osd1_rgb2yuv(1); /* set vpp data path to u10 */ set_vpp_bitdepth(); - } else if (get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12A) { + } else if (is_osd_high_version()) { /* osd1: rgb->yuv limit,osd2: rgb2yuv limit,osd3: rgb2yuv limit*/ set_osd1_rgb2yuv(1); set_osd2_rgb2yuv(1); - set_osd3_rgb2yuv(1); - - /* set vpp data path to u12 */ - set_vpp_bitdepth(); - hdr_func(OSD1_HDR, HDR_BYPASS); - } else if (get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12B) { - /* osd1: rgb->yuv limit,osd2: rgb2yuv limit,osd3: rgb2yuv limit*/ - set_osd1_rgb2yuv(1); - set_osd2_rgb2yuv(1); - set_osd3_rgb2yuv(1); + if ((get_cpu_id().family_id != MESON_CPU_MAJOR_ID_TL1)) + set_osd3_rgb2yuv(1); /* set vpp data path to u12 */ set_vpp_bitdepth(); - hdr_func(OSD1_HDR, HDR_BYPASS); + if ((get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12A) || + (get_cpu_id().family_id == MESON_CPU_MAJOR_ID_G12B)) + hdr_func(OSD1_HDR, HDR_BYPASS); } else { /* set dummy data default YUV black */ vpp_reg_write(VPP_DUMMY_DATA1, 0x108080); |