Driver implementing the fuse API for Freescale's IC Identification Module (IIM)

This IP can be found on the following SoCs:
 - MPC512x,
 - i.MX25,
 - i.MX27,
 - i.MX31,
 - i.MX35,
 - i.MX51,
 - i.MX53.

The section numbers in this file refer to the i.MX25 Reference Manual.

A fuse word contains 8 fuse bit slots, as explained in 30.4.2.2.1.

A bank contains 256 fuse word slots, as shown by the memory map in 30.3.1.

Some fuse bit or word slots may not have the corresponding fuses actually
implemented in the fusebox.

See the README files of the SoCs using this driver in order to know the
conventions used by U-Boot to store some specific data in the fuses, e.g. MAC
addresses.

Fuse operations:

   Read
      Read operations are implemented as read accesses to the shadow registers,
      using "Word y of Bank x" from the register summary in 30.3.2. This is
      explained in detail in 30.4.5.1.

   Sense
      Sense operations are implemented as explained in 30.4.5.2.

   Program
      Program operations are implemented as explained in 30.4.5.3. Following
      this operation, the shadow registers are reloaded by the hardware (not
      immediately, but this does not make any difference for a user reading
      these registers).

   Override
      Override operations are implemented as write accesses to the shadow
      registers, as explained in 30.4.5.4.

Configuration:

   CONFIG_FSL_IIM
      Define this to enable the fsl_iim driver.
