si549 fw: del stb = 0&move nack after while loop
This commit is contained in:
parent
8d76696b27
commit
b4424476b9
|
@ -284,8 +284,6 @@ pub fn helper_setup(timer: &mut GlobalTimer, settings: &FrequencySetting) -> Res
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// set adpll using gateware i2c
|
|
||||||
/// Note: disable main/helper i2c bitbang before using this function
|
|
||||||
fn set_adpll(dcxo: i2c::DCXO, adpll: i32) -> Result<(), &'static str> {
|
fn set_adpll(dcxo: i2c::DCXO, adpll: i32) -> Result<(), &'static str> {
|
||||||
if adpll.abs() > ADPLL_MAX {
|
if adpll.abs() > ADPLL_MAX {
|
||||||
return Err("adpll is too large");
|
return Err("adpll is too large");
|
||||||
|
@ -298,15 +296,14 @@ fn set_adpll(dcxo: i2c::DCXO, adpll: i32) -> Result<(), &'static str> {
|
||||||
}
|
}
|
||||||
|
|
||||||
while csr::wrpll::main_dcxo_adpll_busy_read() == 1 {}
|
while csr::wrpll::main_dcxo_adpll_busy_read() == 1 {}
|
||||||
|
if csr::wrpll::main_dcxo_nack_read() == 1 {
|
||||||
|
return Err("Main si549 failed to ack adpll write");
|
||||||
|
}
|
||||||
|
|
||||||
csr::wrpll::main_dcxo_i2c_address_write(ADDRESS);
|
csr::wrpll::main_dcxo_i2c_address_write(ADDRESS);
|
||||||
csr::wrpll::main_dcxo_adpll_write(adpll as u32);
|
csr::wrpll::main_dcxo_adpll_write(adpll as u32);
|
||||||
|
|
||||||
csr::wrpll::main_dcxo_adpll_stb_write(1);
|
csr::wrpll::main_dcxo_adpll_stb_write(1);
|
||||||
csr::wrpll::main_dcxo_adpll_stb_write(0);
|
|
||||||
|
|
||||||
if csr::wrpll::main_dcxo_nack_read() == 1 {
|
|
||||||
return Err("Main si549 failed to ack adpll write");
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
i2c::DCXO::Helper => unsafe {
|
i2c::DCXO::Helper => unsafe {
|
||||||
if csr::wrpll::helper_dcxo_bitbang_enable_read() == 1 {
|
if csr::wrpll::helper_dcxo_bitbang_enable_read() == 1 {
|
||||||
|
@ -314,15 +311,14 @@ fn set_adpll(dcxo: i2c::DCXO, adpll: i32) -> Result<(), &'static str> {
|
||||||
}
|
}
|
||||||
|
|
||||||
while csr::wrpll::helper_dcxo_adpll_busy_read() == 1 {}
|
while csr::wrpll::helper_dcxo_adpll_busy_read() == 1 {}
|
||||||
|
if csr::wrpll::helper_dcxo_nack_read() == 1 {
|
||||||
|
return Err("Helper si549 failed to ack adpll write");
|
||||||
|
}
|
||||||
|
|
||||||
csr::wrpll::helper_dcxo_i2c_address_write(ADDRESS);
|
csr::wrpll::helper_dcxo_i2c_address_write(ADDRESS);
|
||||||
csr::wrpll::helper_dcxo_adpll_write(adpll as u32);
|
csr::wrpll::helper_dcxo_adpll_write(adpll as u32);
|
||||||
|
|
||||||
csr::wrpll::helper_dcxo_adpll_stb_write(1);
|
csr::wrpll::helper_dcxo_adpll_stb_write(1);
|
||||||
csr::wrpll::helper_dcxo_adpll_stb_write(0);
|
|
||||||
|
|
||||||
if csr::wrpll::helper_dcxo_nack_read() == 1 {
|
|
||||||
return Err("Helper si549 failed to ack adpll write");
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue