forked from M-Labs/artiq
ad9154: retry DAC initialization on STPL or PRBS failure
Works around #1127
This commit is contained in:
parent
66e33a66d6
commit
5c3e834c4d
|
@ -653,12 +653,25 @@ fn dac_cfg(dacno: u8) -> Result<(), &'static str> {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dac_cfg_retry(dacno: u8) -> Result<(), &'static str> {
|
fn dac_cfg_and_test(dacno: u8) -> Result<(), &'static str> {
|
||||||
|
dac_cfg(dacno)?;
|
||||||
|
dac_prbs(dacno)?;
|
||||||
|
dac_stpl(dacno, 4, 2)?;
|
||||||
|
dac_cfg(dacno)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* work around for:
|
||||||
|
* https://github.com/m-labs/artiq/issues/727
|
||||||
|
* https://github.com/m-labs/artiq/issues/1127
|
||||||
|
*/
|
||||||
|
fn dac_cfg_and_test_retry(dacno: u8) -> Result<(), &'static str> {
|
||||||
let mut attempt = 0;
|
let mut attempt = 0;
|
||||||
loop {
|
loop {
|
||||||
attempt += 1;
|
attempt += 1;
|
||||||
dac_reset(dacno);
|
dac_reset(dacno);
|
||||||
let outcome = dac_cfg(dacno);
|
let outcome = dac_cfg_and_test(dacno);
|
||||||
match outcome {
|
match outcome {
|
||||||
Ok(_) => return outcome,
|
Ok(_) => return outcome,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -695,16 +708,9 @@ pub fn dac_sync(dacno: u8) -> Result<bool, &'static str> {
|
||||||
|
|
||||||
fn init_dac(dacno: u8) -> Result<(), &'static str> {
|
fn init_dac(dacno: u8) -> Result<(), &'static str> {
|
||||||
let dacno = dacno as u8;
|
let dacno = dacno as u8;
|
||||||
|
|
||||||
dac_reset(dacno);
|
dac_reset(dacno);
|
||||||
dac_detect(dacno)?;
|
dac_detect(dacno)?;
|
||||||
dac_cfg_retry(dacno)?;
|
dac_cfg_and_test_retry(dacno)?;
|
||||||
|
|
||||||
dac_prbs(dacno)?;
|
|
||||||
dac_stpl(dacno, 4, 2)?;
|
|
||||||
|
|
||||||
dac_cfg_retry(dacno)?;
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue