From b3bc2ffbf012d0ef789bed408b42076b3ae3f013 Mon Sep 17 00:00:00 2001 From: IanSB Date: Sun, 20 Sep 2020 02:30:51 +0100 Subject: [PATCH] Add separate 24Mhz profile folder support --- src/cpld_rgb.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++ src/cpld_rgb.h | 3 ++- src/rgb_to_hdmi.c | 12 ++++++++++-- 3 files changed, 62 insertions(+), 3 deletions(-) diff --git a/src/cpld_rgb.c b/src/cpld_rgb.c index 70e87c8d..6ff5c4e8 100644 --- a/src/cpld_rgb.c +++ b/src/cpld_rgb.c @@ -1554,6 +1554,30 @@ cpld_t cpld_rgb_ttl = { .show_cal_raw = cpld_show_cal_raw }; +cpld_t cpld_rgb_ttl_24mhz = { + .name = "6-12_BIT_RGB_24Mhz", + .default_profile = "Master_128_24MHz_Even", + .init = cpld_init_rgb_ttl, + .get_version = cpld_get_version, + .calibrate = cpld_calibrate, + .set_mode = cpld_set_mode, + .set_vsync_psync = cpld_set_vsync_psync, + .analyse = cpld_analyse, + .old_firmware_support = cpld_old_firmware_support, + .frontend_info = cpld_frontend_info_rgb_ttl, + .set_frontend = cpld_set_frontend, + .get_divider = cpld_get_divider, + .get_delay = cpld_get_delay, + .get_sync_edge = cpld_get_sync_edge, + .update_capture_info = cpld_update_capture_info, + .get_params = cpld_get_params, + .get_value = cpld_get_value, + .get_value_string = cpld_get_value_string, + .set_value = cpld_set_value, + .show_cal_summary = cpld_show_cal_summary, + .show_cal_details = cpld_show_cal_details, + .show_cal_raw = cpld_show_cal_raw +}; // ============================================================= // RGB_Analog Driver Specific @@ -1601,3 +1625,29 @@ cpld_t cpld_rgb_analog = { .show_cal_details = cpld_show_cal_details, .show_cal_raw = cpld_show_cal_raw }; + + +cpld_t cpld_rgb_analog_24mhz = { + .name = "6-12_BIT_RGB_24Mhz", + .default_profile = "Master_128_24MHz_Even", + .init = cpld_init_rgb_analog, + .get_version = cpld_get_version, + .calibrate = cpld_calibrate, + .set_mode = cpld_set_mode, + .set_vsync_psync = cpld_set_vsync_psync, + .analyse = cpld_analyse, + .old_firmware_support = cpld_old_firmware_support, + .frontend_info = cpld_frontend_info_rgb_analog, + .set_frontend = cpld_set_frontend_rgb_analog, + .get_divider = cpld_get_divider, + .get_delay = cpld_get_delay, + .get_sync_edge = cpld_get_sync_edge, + .update_capture_info = cpld_update_capture_info, + .get_params = cpld_get_params, + .get_value = cpld_get_value, + .get_value_string = cpld_get_value_string, + .set_value = cpld_set_value, + .show_cal_summary = cpld_show_cal_summary, + .show_cal_details = cpld_show_cal_details, + .show_cal_raw = cpld_show_cal_raw +}; \ No newline at end of file diff --git a/src/cpld_rgb.h b/src/cpld_rgb.h index fa71717e..5c05e11d 100644 --- a/src/cpld_rgb.h +++ b/src/cpld_rgb.h @@ -10,5 +10,6 @@ extern cpld_t cpld_bbcv24; extern cpld_t cpld_bbcv30v62; extern cpld_t cpld_rgb_ttl; extern cpld_t cpld_rgb_analog; - +extern cpld_t cpld_rgb_ttl_24mhz; +extern cpld_t cpld_rgb_analog_24mhz; #endif diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index 3455db80..2403f029 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -1499,11 +1499,19 @@ static void cpld_init() { cpld = &cpld_null_6bit; cpld_fail_state = CPLD_WRONG; } else { - cpld = &cpld_rgb_ttl; + if ((cpld_version_id & 0xff) >= 0x75 && (cpld_version_id & 0xff) < 0x80) { + cpld = &cpld_rgb_ttl_24mhz; + } else { + cpld = &cpld_rgb_ttl; + } } RPI_SetGpioPinFunction(STROBE_PIN, FS_INPUT); // set STROBE PIN back to an input as P19 will be an ouput when VERSION_PIN set back to 1 } else if ((cpld_version_id >> VERSION_DESIGN_BIT) == DESIGN_RGB_ANALOG) { - cpld = &cpld_rgb_analog; + if ((cpld_version_id & 0xff) >= 0x75 && (cpld_version_id & 0xff) < 0x80) { + cpld = &cpld_rgb_analog_24mhz; + } else { + cpld = &cpld_rgb_analog; + } } else if ((cpld_version_id >> VERSION_DESIGN_BIT) == DESIGN_SIMPLE) { cpld = &cpld_simple; } else {