1. 22 Mar, 2010 1 commit
    • Peter Ujfalusi's avatar
      ASoC: TWL4030: PM fix for output amplifiers · c96907f2
      Peter Ujfalusi authored
      Gain controls on outputs affect the power consumption
      when the gain is set to non 0 value.
      
      Outputs with amps have one register to configure the
      routing and the gain:
      PREDL_CTL (0x25):
      bit 0: Voice enable
      bit 1: Audio L1 enable
      bit 2: Audio L2 enable
      bit 3: Audio R2 enable
      bit 4-5: Gain (0x0 - power down, 0x1 - 6dB, 0x2 - 0dB, 0x3 - -6dB)
      
      bit 0 - 3: is handled in DAPM domain (DAPM_MIXER)
      bit 4 - 5: has simple volume control
      
      If there is no audio activity (BIAS_STANDBY), and
      user changes the volume, than the output amplifier will
      be enabled.
      If the user changes the routing (but the codec remains in
      BIAS_STANDBY), than the cached gain value also be written
      to the register, which enables the amplifier.
      
      The existing workaround for this is to have virtual
      PGAs associated with the outputs, and whit DAPM PMD
      the gain on the output will be forced to 0 (off) by
      bypassing the regcache.
      This failed to disable the amplifiers in several
      scenario (as mentioned above).
      
      Also if the codec is in BIAS_ON state, and user modifies
      a volume control, which path is actually not enabled, than
      that amplifier will be enabled as well, but it will
      be not turned off, since there is no DAPM path, which
      would make mute it.
      
      To prevent amps being enabled, when they are not
      needed, introduce the following workaround:
      Track the state of each of this type of output.
      In twl4030_write only allow actual write, when the
      given output is enabled, otherwise only update
      the reg_cache.
      The PGA event handlers on power up will write the cached
      value to the chip (restoring gain, routing selection).
      On power down 0 is written to the register (disabling
      the amp, and also just in case clearing the routing).
      Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@nokia.com>
      Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      c96907f2
  2. 19 Mar, 2010 15 commits
  3. 18 Mar, 2010 4 commits
  4. 17 Mar, 2010 5 commits
  5. 16 Mar, 2010 8 commits
  6. 15 Mar, 2010 1 commit
  7. 12 Mar, 2010 6 commits