First patch is to add file-backed implementation to allow users to assign an OTP image file to machine. Users can assign the property, "otp-file", to machine to enable it. File-backed feature is set to "NULL" string in default. Any filename other than "NULL" is used as OTP image file.
For example, '-M sifive_u,otp-file="otp.img"' To keep data up-to-date due to an unexpected crash or CTRL+a-x exit, every read/write command to OTP memory involves file open, mmap and close operation to the image file. Second patch is to add 'write-once' feature to block second write to the OTP memory. Only keep the 'written' state for non-control register range from 0x38 to 16KB. Tested on sifive_u for both qemu and u-boot. Green Wan (2): hw/riscv: sifive_u: Add file-backed OTP. hw/riscv: sifive_u: Add write-once protection. hw/riscv/sifive_u.c | 26 ++++++++ hw/riscv/sifive_u_otp.c | 103 ++++++++++++++++++++++++++++++++ include/hw/riscv/sifive_u.h | 2 + include/hw/riscv/sifive_u_otp.h | 2 + 4 files changed, 133 insertions(+) -- 2.17.1