Add sync loss detection and warning

pull/85/head
IanSB 2019-04-09 19:52:01 +01:00
rodzic 098f0cd043
commit 78da6a9041
3 zmienionych plików z 36 dodań i 10 usunięć

Wyświetl plik

@ -29,6 +29,7 @@
.global hsync_comparison_lo
.global hsync_comparison_hi
.global linecountmod10
.global sync_detected
.global capture_line_mode7_4bpp_table
.global capture_line_normal_4bpp_table
@ -446,6 +447,17 @@ process_line_loop:
pop {r11}
mov r0, r3
and r0, #BIT_MODE7
orr r0, #RET_SYNC_TIMING_CHANGED
ldr r8, last_sync_detected
ldr r9, sync_detected
str r9, last_sync_detected
cmp r8, #0
cmpeq r9, #1
beq exit
tst r3, #BIT_NO_AUTOSWITCH | BIT_OSD | BIT_CALIBRATE | BIT_PROBE
bne skip_sync_time_test
@ -454,10 +466,6 @@ process_line_loop:
strpl r8, frame_countdown
bpl skip_sync_time_test
mov r0, r3
and r0, #BIT_MODE7
orr r0, #RET_SYNC_TIMING_CHANGED
ldr r6, hsync_period
cmp r6, #0
rsbmi r6, r6, #0
@ -733,6 +741,7 @@ vsync_loop:
subs r8, r8, r10
rsbmi r8, r8, #0
cmp r8, #FRAME_TIMEOUT
movgt r10, #0
bgt abort_vsync
// Wait for the falling edge of csync
WAIT_FOR_CSYNC_0
@ -762,7 +771,9 @@ seen_short:
cmp r9, #1
// No, so look back for the next pulse
bne vsync_loop
mov r10, #1
abort_vsync:
str r10, sync_detected
ldr r8, last_vsync_time
str r6, last_vsync_time
subs r8, r6, r8
@ -778,12 +789,14 @@ separate_syncs:
biceq r3, r3, #PSYNC_MASK
orrne r3, r3, #PSYNC_MASK
READ_CYCLE_COUNTER r14
mov r10, #1
waitPSA:
READ_CYCLE_COUNTER r8
subs r8, r8, r14
rsbmi r8, r8, #0
cmp r8, #FRAME_TIMEOUT
eorgt r3, #PSYNC_MASK //inverting selection forces tests to exit
movgt r10, #0
// Read the GPLEV0
ldr r8, [r4]
eor r8, r3
@ -810,6 +823,7 @@ waitPSB:
rsbmi r8, r8, #0
cmp r8, #FRAME_TIMEOUT
eorgt r3, #PSYNC_MASK //inverting selection forces tests to exit
movgt r10, #0
// Read the GPLEV0
ldr r8, [r4]
eor r8, r3
@ -831,7 +845,7 @@ waitPSB:
READ_CYCLE_COUNTER r6
mov r7, r6 // make all fields look the same
SWITCH_VSYNC_TO_PSYNC
str r10, sync_detected
ldr r8, last_vsync_time
str r6, last_vsync_time
subs r8, r6, r8
@ -1130,6 +1144,12 @@ hsync_comparison_hi:
frame_countdown:
.word 0
sync_detected:
.word 0
last_sync_detected:
.word 0
.ltorg
customPalette:

Wyświetl plik

@ -55,7 +55,7 @@ extern int hsync_comparison_lo;
extern int vsync_comparison_lo;
extern int hsync_comparison_hi;
extern int vsync_comparison_hi;
extern int sync_detected;
int recalculate_hdmi_clock_line_locked_update();

Wyświetl plik

@ -1734,10 +1734,16 @@ void rgb_to_hdmi_main() {
osd_set(1, 0, status);
status[0] = 0;
} else {
if (vlock_limited && (vlockmode != HDMI_ORIGINAL) && !reboot_required) {
sprintf(osdline, "V Lock disabled: Src=%dHz, Disp=%dHz", source_vsync_freq_hz, display_vsync_freq_hz);
osd_set(1, 0, osdline);
}
if (!reboot_required) {
if (sync_detected) {
if (vlock_limited && (vlockmode != HDMI_ORIGINAL)) {
sprintf(osdline, "V Lock disabled: Src=%dHz, Disp=%dHz", source_vsync_freq_hz, display_vsync_freq_hz);
osd_set(1, 0, osdline);
}
} else {
osd_set(1, 0, "No sync detected");
}
}
}
}
}