Cirrus Logic Arizona class audio SoCs

These devices are audio SoCs with extensive digital capabilities and a range
of analogue I/O.

This document lists sound specific bindings, see the primary binding
document:
  ../mfd/arizona.txt

Optional properties:

  - wlf,inmode : A list of INn_MODE register values, where n is the number
    of input signals. Valid values are 0 (Differential), 1 (Single-ended) and
    2 (Digital Microphone). If absent, INn_MODE registers set to 0 by default.
    If present, values must be specified less than or equal to the number of
    input signals. If values less than the number of input signals, elements
    that have not been specified are set to 0 by default. Entries are:
    <IN1, IN2, IN3, IN4> (wm5102, wm5110, wm8280, wm8997)
    <IN1A, IN2A, IN1B, IN2B> (wm8998, wm1814)
  - wlf,out-mono : A list of boolean values indicating whether each output is
    mono or stereo. Position within the list indicates the output affected
    (eg. First entry in the list corresponds to output 1). A non-zero value
    indicates a mono output. If present, the number of values should be less
    than or equal to the number of outputs, if less values are supplied the
    additional outputs will be treated as stereo.

  - wlf,dmic-ref : DMIC reference voltage source for each input, can be
    selected from either MICVDD or one of the MICBIAS's, defines
    (ARIZONA_DMIC_xxxx) are provided in <dt-bindings/mfd/arizona.txt>. If
    present, the number of values should be less than or equal to the
    number of inputs, unspecified inputs will use the chip default.

  - wlf,max-channels-clocked : The maximum number of channels to be clocked on
    each AIF, useful for I2S systems with multiple data lines being mastered.
    Specify one cell for each AIF to be configured, specify zero for AIFs that
    should be handled normally.
    If present, number of cells must be less than or equal to the number of
    AIFs. If less than the number of AIFs, for cells that have not been
    specified the corresponding AIFs will be treated as default setting.

  - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6).
    See the datasheet for values.
    The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997,
      wm8998, wm1814)

  - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6).
    See the datasheet for values.
    The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997,
    wm8998, wm1814)

  - wlf,out-volume-limit : The volume limit value that should be applied to each
    output channel. See the datasheet for exact values. Channels are specified
    in the order OUT1L, OUT1R, OUT2L, OUT2R, etc.
