Atmel have done a nice job confusing their customers in the serial flash business: Atmel > Adesto > Dialog Semiconductor > Renesas within 10 years, with the last two acquisitions happening within just a 2-year space.
Along the way, they have also made a brilliant version change to the AT25SF081, replacing it with the AT25SF081B. Both are largely standard SPI serial flash chips, but with three extra "Security Register" pages of 256 bytes each. I use them in an FPGA design to be compatible with the "TinyProg" open source in-system programming solution; TinyProg puts board and configuration meta-data into the security pages.
- When Adesto replaced the AT25SF081 with the updated AT25SF081B, they decided to keep the device ID unchanged, but make the chip incompatible. (The security registers are addressed differently now, with addresses shifted by 4 bit.)
- They also released an application note which mentions that the SFDP Table (Serial Flash Discoverable Parameters) is an option to distinguish the two versions -- but does not document what the SFDP table for the B version actually looks like, or what to expect from the non-B version (which does not support SFDP at all). Neither do the datasheets -- "contact Adesto".

Has anyone, by any chance, found a simple and reliable way to distinguish these two chips in software? I could start fiddling around, but don't feel comfortable relying on undocumented behavior: Which aspects are stable, which ones might change from batch to batch? (Response of the older chip to an invalid command; response of the newer chip with some unknown data structure -- which may contain parts that are always the same and parts which are batch-specific?)
Thanks for any pointers you might have!