[rom] Reading resistor straps should differentiate weak versus strong pulls
If the ROM only performs a single read operation on the resistor strapping pins, then it will not be able to tell the difference between weak (e.g. 1M) and strong (e.g. 5.1k) pull resistors. This effectively eliminates the possibility of using the weak pulls values for the owner firmware if that aliases to a known ROM bootstrap combination.
https://github.com/lowRISC/opentitan/blob/2714197f3235f1737937ad20421a3f32ff4a7030/sw/device/silicon_creator/rom/bootstrap.c#L46
Right now there are 2 resistor straps combinations on IOC0, ICOC1, and ICO2:
SW_STRAP_BOOTSTRAP: Strong PUp, Strong PUp, Strong PUp
and
SW_STRAP_RMA_ENTRY: Strong PDown, Strong PUp, Strong PUp
However if Owner Firmware wants to use Weak PUp, Weak PUp, Weak PUp, then the ROM will incorrectly think that the SW_STRAP_BOOTSTRAP combination is getting triggered.
With 3 pins that should be able to detect 4 states, we should have a total of 4 ^ 3 = 64 available strapping combinations. If the ROM doesn't differentiate between strong and weak pulls, then the 2 out of 64 values it tries to reserve actually turn into to 16 out of the 64 that are unusable by the owner firmware.
It is entirely possible that I misread the code and this isn't a problem, but I definitely wanted to double check there won't be any conflicts between ROM strap values and our Owner Firmware strap values.