This patch adds a header file of register definitions for CirrusLogic "Madera" class codecs. These codecs are all based off a commonset of hardware IP so have a common register map (with a few minordevice-to-device variations).

The registers.h file is tool-generated directly from the hardware designbut has been manually stripped down to reduce size (full registermap is >44000 lines). All names are kept the same as datasheet namesso that they can be cross-referenced between source and datasheet withoutconfusion.

The register map layout is kept fully-defined rather than factored intomacros and/or block-indexing code. The major reasons for this are:

- #1 is that it makes the source highly greppable, which is important. "What does the driver do with register bits XYZ" or "Where does it use register bits XYZ" are commonly types of questions. These can be quickly answered by a grep. Squashing definitions into generator macros or block- indexing code is a way of defeating grep.

- most of the register definitions are used in tables, so a constant value is required. Using generator macros make the table definition clunky and obscure.

- the code is clearer when it's there in the source exactly what register and field it is using

- it is easier to diff the register map of a new (unsupported) codec against what is already supported and merge in differences

- it makes the register map available in source for maintenance/debugging instead of having to refer back to the datasheet for a register map