firmware: move wait for write completion to read()

This commit is contained in:
Robert Jördens 2018-03-01 11:37:33 +01:00
parent a6ae08d8b8
commit a04a36ee36
3 changed files with 4 additions and 5 deletions

View File

@ -22,13 +22,13 @@ fn write(addr: u16, data: u8) {
while csr::converter_spi::writable_read() == 0 {}
csr::converter_spi::data_write(
((addr as u32) << 16) | ((data as u32) << 8));
while csr::converter_spi::writable_read() == 0 {}
}
}
fn read(addr: u16) -> u8 {
unsafe {
write((1 << 15) | addr, 0);
while csr::converter_spi::writable_read() == 0 {}
csr::converter_spi::data_read() as u8
}
}

View File

@ -78,7 +78,6 @@ mod hmc830 {
unsafe {
while csr::converter_spi::writable_read() == 0 {}
csr::converter_spi::data_write(val << 1); // last clk cycle loads data
while csr::converter_spi::writable_read() == 0 {}
}
}
@ -88,6 +87,7 @@ mod hmc830 {
// the SPI round trip delay and stick with CPHA=0
write((1 << 6) | addr, 0);
unsafe {
while csr::converter_spi::writable_read() == 0 {}
csr::converter_spi::data_read() & 0xffffff
}
}
@ -173,7 +173,6 @@ mod hmc7043 {
unsafe {
while csr::converter_spi::writable_read() == 0 {}
csr::converter_spi::data_write(val << 8);
while csr::converter_spi::writable_read() == 0 {}
}
}

View File

@ -7,7 +7,7 @@ mod imp {
return Err(())
}
unsafe {
while csr::converter_spi::idle_read() == 0 {}
while csr::converter_spi::writable_read() == 0 {}
csr::converter_spi::offline_write(flags >> 0 & 1);
csr::converter_spi::end_write(flags >> 1 & 1);
// input (in RTIO): flags >> 2 & 1
@ -38,7 +38,6 @@ mod imp {
unsafe {
while csr::converter_spi::writable_read() == 0 {}
csr::converter_spi::data_write(data);
while csr::converter_spi::writable_read() == 0 {}
}
Ok(())
}
@ -48,6 +47,7 @@ mod imp {
return Err(())
}
Ok(unsafe {
while csr::converter_spi::writable_read() == 0 {}
csr::converter_spi::data_read()
})
}