Merge pull request #956 from bernd-herzog/boot_improvements

removed need for cpld mode setup for QFP100
This commit is contained in:
gullradriel 2023-05-05 15:37:58 +02:00 committed by GitHub
commit 31031edbd1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 8 deletions

View File

@ -489,10 +489,13 @@ bool init() {
chThdSleepMilliseconds(10); chThdSleepMilliseconds(10);
if( !portapack::cpld::update_if_necessary(portapack_cpld_config()) ) { portapack::cpld::CpldUpdateStatus result = portapack::cpld::update_if_necessary(portapack_cpld_config());
if ( result == portapack::cpld::CpldUpdateStatus::Program_failed ) {
chThdSleepMilliseconds(10); chThdSleepMilliseconds(10);
// If using a "2021/12 QFP100", press and hold the left button while booting. Should only need to do once. // Mode left (R1) and right (R2,H2,H2+) bypass going into hackrf mode after failing CPLD update
if (load_config() != 3 && load_config() != 4){ // Mode center (autodetect), up (R1) and down (R2,H2,H2+) will go into hackrf mode after failing CPLD update
if (load_config() != 3 /* left */ && load_config() != 4 /* right */){
shutdown_base(); shutdown_base();
return false; return false;
} }

View File

@ -33,7 +33,7 @@
namespace portapack { namespace portapack {
namespace cpld { namespace cpld {
bool update_if_necessary( CpldUpdateStatus update_if_necessary(
const Config config const Config config
) { ) {
jtag::GPIOTarget target { jtag::GPIOTarget target {
@ -51,7 +51,7 @@ bool update_if_necessary(
/* Run-Test/Idle */ /* Run-Test/Idle */
if( !cpld.idcode_ok() ) { if( !cpld.idcode_ok() ) {
return false; return CpldUpdateStatus::Idcode_check_failed;
} }
cpld.sample(); cpld.sample();
@ -62,7 +62,7 @@ bool update_if_necessary(
* in passive state. * in passive state.
*/ */
if( !cpld.silicon_id_ok() ) { if( !cpld.silicon_id_ok() ) {
return false; return CpldUpdateStatus::Silicon_id_check_failed;
} }
/* Verify CPLD contents against current bitstream. */ /* Verify CPLD contents against current bitstream. */
@ -86,7 +86,7 @@ bool update_if_necessary(
cpld.disable(); cpld.disable();
} }
return ok; return ok ? CpldUpdateStatus::Success : CpldUpdateStatus::Program_failed;
} }
} /* namespace cpld */ } /* namespace cpld */

View File

@ -27,7 +27,14 @@
namespace portapack { namespace portapack {
namespace cpld { namespace cpld {
bool update_if_necessary( enum class CpldUpdateStatus {
Success = 0,
Idcode_check_failed = 1,
Silicon_id_check_failed = 2,
Program_failed = 3
};
CpldUpdateStatus update_if_necessary(
const Config config const Config config
); );