From 3b2a66af702462ede6bc724a2f4067f7c0ea985e Mon Sep 17 00:00:00 2001 From: IanSB Date: Sat, 4 Jan 2020 15:30:53 +0000 Subject: [PATCH] Changes to support V1 and V2 profiles --- src/cpld_rgb.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/cpld_rgb.h | 2 ++ src/rgb_to_hdmi.c | 6 +++++- 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/src/cpld_rgb.c b/src/cpld_rgb.c index ba8ef61f..55f9ff42 100644 --- a/src/cpld_rgb.c +++ b/src/cpld_rgb.c @@ -987,6 +987,53 @@ cpld_t cpld_bbc = { .show_cal_raw = cpld_show_cal_raw }; +cpld_t cpld_bbcv1 = { + .name = "BBCV1", + .default_profile = "BBC_Micro", + .init = cpld_init_bbc, + .get_version = cpld_get_version, + .calibrate = cpld_calibrate, + .set_mode = cpld_set_mode, + .analyse = cpld_analyse, + .old_firmware_support = cpld_old_firmware_support, + .frontend_info = cpld_frontend_info_bbc, + .set_frontend = cpld_set_frontend, + .get_divider = cpld_get_divider, + .get_delay = cpld_get_delay, + .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 +}; + +cpld_t cpld_bbcv2 = { + .name = "BBCV2", + .default_profile = "BBC_Micro", + .init = cpld_init_bbc, + .get_version = cpld_get_version, + .calibrate = cpld_calibrate, + .set_mode = cpld_set_mode, + .analyse = cpld_analyse, + .old_firmware_support = cpld_old_firmware_support, + .frontend_info = cpld_frontend_info_bbc, + .set_frontend = cpld_set_frontend, + .get_divider = cpld_get_divider, + .get_delay = cpld_get_delay, + .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_TTL Driver Specific // ============================================================= diff --git a/src/cpld_rgb.h b/src/cpld_rgb.h index 38946050..75e251d3 100644 --- a/src/cpld_rgb.h +++ b/src/cpld_rgb.h @@ -4,6 +4,8 @@ #include "cpld.h" extern cpld_t cpld_bbc; +extern cpld_t cpld_bbcv1; +extern cpld_t cpld_bbcv2; extern cpld_t cpld_rgb_ttl; extern cpld_t cpld_rgb_analog; diff --git a/src/rgb_to_hdmi.c b/src/rgb_to_hdmi.c index ad64dbe2..5016a446 100644 --- a/src/rgb_to_hdmi.c +++ b/src/rgb_to_hdmi.c @@ -1118,8 +1118,12 @@ static void cpld_init() { RPI_SetGpioValue(VERSION_PIN, 1); // Set the appropriate cpld "driver" based on the version - if ((cpld_version_id >> VERSION_DESIGN_BIT) == DESIGN_BBC) { + if ((cpld_version_id >> VERSION_DESIGN_BIT) == DESIGN_BBC && ((cpld_version_id >> VERSION_MAJOR_BIT) & 0x0f) > 2) { cpld = &cpld_bbc; + } else if ((cpld_version_id >> VERSION_DESIGN_BIT) == DESIGN_BBC && ((cpld_version_id >> VERSION_MAJOR_BIT) & 0x0f) == 2) { + cpld = &cpld_bbcv2; + } else if ((cpld_version_id >> VERSION_DESIGN_BIT) == DESIGN_BBC && ((cpld_version_id >> VERSION_MAJOR_BIT) & 0x0f) <= 1) { + cpld = &cpld_bbcv1; } else if ((cpld_version_id >> VERSION_DESIGN_BIT) == DESIGN_ATOM) { cpld = &cpld_atom; } else if ((cpld_version_id >> VERSION_DESIGN_BIT) == DESIGN_YUV) {