On Tue, Apr 21, 2015 at 06:46:28PM +0200, Lars-Peter Clausen wrote:
On 04/21/2015 06:35 PM, Mark Brown wrote:
The trouble with the ABI version information is that it tells new kernels how to handle old tables but old kernels will have no idea what to do with new firmwares.
What I did for the SigmaDSP firmware format (which can hopefully be superseded by this) is to have a header which a block type and the block length for each block for exactly this reason. It allows fully backward and forward compatibility between kernel versions and does not require a change in the ABI each time a new type of block is added. It also keeps the parser simple since it does not have to know the size and also makes support for vendor blocks quite easy, since the processing of those can be offloaded to some vendor callbacks without the core having to be informed what the content or size of those vendor blocks is.
Yes, that's what the ex-Wolfson stuff does too (it also has ABI versioning but most things shouldn't need it).