libtrellis: Store and re-use ctrl0 when unpacking/repacking Signed-off-by: Jens Andersen <jens.andersen@gmail.com>
diff --git a/libtrellis/include/Chip.hpp b/libtrellis/include/Chip.hpp index 6d2e800..1c12c3b 100644 --- a/libtrellis/include/Chip.hpp +++ b/libtrellis/include/Chip.hpp
@@ -132,6 +132,7 @@ // Miscellaneous information uint32_t usercode = 0x0; + uint32_t ctrl0 = 0x40000000; vector<string> metadata; // Get max row and column
diff --git a/libtrellis/src/Bitstream.cpp b/libtrellis/src/Bitstream.cpp index 0bc5bcf..f8100ab 100644 --- a/libtrellis/src/Bitstream.cpp +++ b/libtrellis/src/Bitstream.cpp
@@ -269,6 +269,7 @@ case BitstreamCommand::LSC_PROG_CNTRL0: { rd.skip_bytes(3); uint32_t cfg = rd.get_uint32(); + chip->ctrl0 = cfg; BITSTREAM_DEBUG("set control reg 0 to 0x" << hex << setw(8) << setfill('0') << cfg); } break; @@ -423,7 +424,7 @@ // Set control reg 0 to 0x40000000 wr.write_byte(uint8_t(BitstreamCommand::LSC_PROG_CNTRL0)); wr.insert_zeros(3); - uint32_t ctrl0 = 0x40000000; + uint32_t ctrl0 = chip.ctrl0; if (options.count("freq")) { auto freq = find_if(frequencies.begin(), frequencies.end(), [&](const pair<string, uint8_t> &fp){ return fp.first == options.at("freq");