@@ -82,19 +82,19 @@ uint32_t pclk_phase_default[2][VIDEO_SOURCE_NUM] = {
8282 },
8383 {
8484 // GOGGLE_VER_2
85- 0x00000001 ,
85+ 0x00000004 ,
8686 0x00000004 , // VIDEO_SOURCE_MENU_UI
87- 0x00000000 , // VIDEO_SOURCE_HDZERO_IN_720P60_50
88- 0x00000000 , // VIDEO_SOURCE_HDZERO_IN_720P90
89- 0x00000000 , // VIDEO_SOURCE_HDZERO_IN_1080P30
90- 0x00000000 , // VIDEO_SOURCE_AV_IN
91- 0x00000000 , // VIDEO_SOURCE_HDMI_IN_1080P50
92- 0x00000000 , // VIDEO_SOURCE_HDMI_IN_1080P60
93- 0x00000000 , // VIDEO_SOURCE_HDMI_IN_1080POTHER
94- 0x00000000 , // VIDEO_SOURCE_HDMI_IN_720P50
95- 0x00000000 , // VIDEO_SOURCE_HDMI_IN_720P60
96- 0x00000000 , // VIDEO_SOURCE_HDMI_IN_720P100
97- 0x00000000 , // VIDEO_SOURCE_TP2825_EX, DO NOT USE
87+ 0x00000004 , // VIDEO_SOURCE_HDZERO_IN_720P60_50
88+ 0x00000004 , // VIDEO_SOURCE_HDZERO_IN_720P90
89+ 0x00000004 , // VIDEO_SOURCE_HDZERO_IN_1080P30
90+ 0x00000004 , // VIDEO_SOURCE_AV_IN
91+ 0x00000004 , // VIDEO_SOURCE_HDMI_IN_1080P50
92+ 0x00000004 , // VIDEO_SOURCE_HDMI_IN_1080P60
93+ 0x00000004 , // VIDEO_SOURCE_HDMI_IN_1080POTHER
94+ 0x00000004 , // VIDEO_SOURCE_HDMI_IN_720P50
95+ 0x00000004 , // VIDEO_SOURCE_HDMI_IN_720P60
96+ 0x00000004 , // VIDEO_SOURCE_HDMI_IN_720P100
97+ 0x00000004 , // VIDEO_SOURCE_TP2825_EX, DO NOT USE
9898 },
9999};
100100
@@ -536,13 +536,21 @@ void csic_pclk_invert_set(uint8_t is_invert) {
536536void pclk_phase_set (video_source_t source ) {
537537 LOGI ("pclk_phase_set %d" , pclk_phase [source ]);
538538 // bit[0] hdmi in
539- IT66021_Set_Pclk ((pclk_phase [source ] >> 0 ) & 1 );
539+ if (source == VIDEO_SOURCE_HDMI_IN_1080P50 || source == VIDEO_SOURCE_HDMI_IN_1080P60 || source == VIDEO_SOURCE_HDMI_IN_1080POTHER ) {
540+ IT66021_Set_Pclk ((pclk_phase [source ] >> 0 ) & 1 );
541+ } else {
542+ IT66021_Set_Pclk ((pclk_phase [source ] >> 0 ) & 1 );
543+ }
540544
541545 // bit[1] analog in
542546 TP2825_Set_Pclk ((pclk_phase [source ] >> 1 ) & 1 );
543547
544548 // bit[2] osd
545- vdpo_sync_ctrl_set ((pclk_phase [source ] >> 2 ) & 1 , 0 , 0 );
549+ if (source == VIDEO_SOURCE_AV_IN ) {
550+ vdpo_sync_ctrl_set ((pclk_phase [source ] >> 2 ) & 1 , 1 , 0 );
551+ } else {
552+ vdpo_sync_ctrl_set ((pclk_phase [source ] >> 2 ) & 1 , 0 , 0 );
553+ }
546554
547555 // bit[3] dvr
548556 csic_pclk_invert_set ((pclk_phase [source ] >> 3 ) & 1 );
@@ -711,6 +719,37 @@ void Display_1080P30_t(int mode) {
711719 system_exec ("aww 0x06542018 0x00000044" ); // disable horizontal chroma FIR filter.
712720}
713721
722+ void Display_1080P24_t (int mode ) {
723+ OLED_display (0 );
724+ I2C_Write (ADDR_FPGA , 0x8C , 0x00 );
725+
726+ system_exec ("dispw -s vdpo 1080p60" );
727+ g_hw_stat .vdpo_tmg = VDPO_TMG_1080P60 ;
728+ vclk_phase_set (VIDEO_SOURCE_HDZERO_IN_1080P30 , 0 );
729+ pclk_phase_set (VIDEO_SOURCE_HDZERO_IN_1080P30 );
730+
731+ I2C_Write (ADDR_FPGA , 0x80 , 0x84 );
732+ // I2C_Write(ADDR_FPGA, 0x84, 0x00); // close OSD
733+
734+ DM5680_SetFPS (mode );
735+ MFPGA_Set1080P30 ();
736+
737+ if (GOGGLE_VER_2 == 0 )
738+ OLED_SetTMG (2 );
739+ else
740+ OLED_SetTMG (0 );
741+
742+ if (GOGGLE_VER_2 )
743+ I2C_Write (ADDR_FPGA , 0xa7 , 0x00 );
744+
745+ I2C_Write (ADDR_FPGA , 0x8C , 0x01 );
746+
747+ g_hw_stat .source_mode = SOURCE_MODE_HDZERO ;
748+ Display_VO_SWITCH (1 );
749+ OLED_display (1 );
750+ system_exec ("aww 0x06542018 0x00000044" ); // disable horizontal chroma FIR filter.
751+ }
752+
714753void Display_720P60_50 (int mode , uint8_t is_43 ) {
715754 pthread_mutex_lock (& hardware_mutex );
716755 Display_720P60_50_t (mode , is_43 );
@@ -723,6 +762,12 @@ void Display_720P90(int mode) {
723762 pthread_mutex_unlock (& hardware_mutex );
724763}
725764
765+ void Display_1080P24 (int mode ) {
766+ pthread_mutex_lock (& hardware_mutex );
767+ Display_1080P24_t (mode );
768+ pthread_mutex_unlock (& hardware_mutex );
769+ }
770+
726771void Display_1080P30 (int mode ) {
727772 pthread_mutex_lock (& hardware_mutex );
728773 Display_1080P30_t (mode );
@@ -782,16 +827,18 @@ int HDZERO_detect() // return = 1: vtmg to V536 changed
782827 break ;
783828 case VR_1080P30 :
784829 Display_1080P30_t (CAM_MODE );
785-
830+ break ;
831+ case VR_1080P24 :
832+ Display_1080P24_t (CAM_MODE );
786833 break ;
787834 default :
788835 LOGW ("cam_mode =%d not suppored!!\n " , CAM_MODE );
789836 break ;
790837 }
791838
792- if (CAM_MODE == VR_1080P30 )
839+ if (CAM_MODE == VR_1080P30 || CAM_MODE == VR_1080P24 )
793840 fhd_req = 1 ;
794- else if (cam_mode_last == VR_1080P30 )
841+ else if (cam_mode_last == VR_1080P30 || cam_mode_last == VR_1080P24 )
795842 fhd_req = -1 ;
796843 dvr_update_vi_conf (CAM_MODE );
797844 system_script (REC_STOP_LIVE );
@@ -825,6 +872,7 @@ void AV_Mode_Switch_fpga(int is_pal) {
825872 }
826873 I2C_Write (ADDR_FPGA , 0x06 , 0x0F );
827874 system_exec ("aww 0x06542018 0x00000044" ); // disable horizontal chroma FIR filter.
875+ vdpo_sync_ctrl_set ((pclk_phase [VIDEO_SOURCE_AV_IN ] >> 2 ) & 1 , 1 , 0 );
828876}
829877
830878void AV_Mode_Switch (int is_pal ) {
@@ -937,8 +985,9 @@ int AV_in_detect() // return = 1: vtmg to V536 changed
937985 g_hw_stat .av_pal_w = g_hw_stat .av_pal_w ? 0 : 1 ;
938986
939987 TP2825_Switch_Mode (g_hw_stat .av_pal_w );
940- if (GOGGLE_VER_2 )
988+ if (GOGGLE_VER_2 ) {
941989 AV_Mode_Switch (g_hw_stat .av_pal_w );
990+ }
942991 // LOGI("Switch mode:%d", g_hw_stat.av_pal_w);
943992
944993 if (g_hw_stat .av_pal_w )
0 commit comments