The c program works as long as a seek is not involved. Either pread or read with a seek beforehand returns all zeros.
If I read the whole beginning of the file (I am reading the unique id as a test at offset 0x40), I get the correct 8 bytes, but seek'ing returna all zeros.
This is such a great exact science (not!) with all the articles saying fuses are not supported, then the drivers support read/write, then the drivers dropped write only to allegedly have write added back in. There is more to this and I would love to hear an authority on the nvmem driver to this layman (like the author Peng Fan)... But I hope too much.
Thanks for the help, and I an assuming that the original question about SCFW API can only be accessed from kernel space (which is no help).
I guess I will have to go with my silly idea of using uboot scripts which in our case is not the most efficient way.
P.S.
"Crucible" works great on the imx8mp for reading/writing fuses in Linux, but unfortunately does not support imx8 Quad Max (I guess because of security model).