1. 10 3月, 2014 1 次提交
  2. 06 3月, 2014 5 次提交
  3. 01 3月, 2014 3 次提交
    • L
      ASoC: Add macros for defining virtual enums · b948837a
      Lars-Peter Clausen 提交于
      With the upcoming consolidation of normal MUXs and virtual MUXs we need to be
      able to distinguish between enums with and without a backing register at the
      enum level. Use the same approach as used for virtual mixer controls by setting
      the reg field of the enum to SND_SOC_NOPM for enums without a backing register.
      This patch adds a set of helper macros that can be used to define such enums.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      b948837a
    • L
      ASoC: Consolidate enum and value enum controls · 29ae2fa5
      Lars-Peter Clausen 提交于
      The implementations for enum and value enum controls are almost identical. The
      only difference is that the value enum uses an additional look-up table to map
      the control value to the register value, while the enum control uses a direct
      mapping. Enums and value enums can easily be distinguished at runtime, for value
      enums the values field of the snd_soc_enum struct contains the look-up table,
      while for enums it is NULL. This patch adds two new small helper functions
      called snd_soc_enum_item_to_val() and snd_soc_enum_val_to_item() which map
      between register value and control item. If the items field of the snd_soc_enum
      struct is NULL the function will do a direct mapping otherwise they'll use the
      look-up table to do the mapping. Using these small helper functions it is
      possible to use the same kcontrol handlers for both enums and value enums. The
      functions are added a inline functions in soc.h so they can also be used by the
      DAPM code to accomplish similar consolidation.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      29ae2fa5
    • L
      8303d769
  4. 23 2月, 2014 1 次提交
    • X
      ASoC: core: add TDM slot parsing from DT supports · 89c67857
      Xiubo Li 提交于
      For some CPU/CODEC DAI devices the TDM slot infomation maybe needed. This
      patch adds the slot parsing from DT supports.
      
      TDM slot properties:
          dai-tdm-slot-num : Number of slots in use.
          dai-tdm-slot-width :  Width in bits for each slot.
      
      For instance:
          dai-tdm-slot-num = <2>;
          dai-tdm-slot-width = <8>;
      
      And for each spcified driver, there could be one .of_xlate_tdm_slot_mask()
      to specify a explicit mapping of the channels and the slots. If it's absent
      the default snd_soc_of_xlate_tdm_slot_mask() will be used to generating the
      tx and rx masks.
      
      For snd_soc_of_xlate_tdm_slot_mask(), the tx and rx masks will use a 1 bit
      for an active slot as default, and the default active bits are at the LSB of
      the masks.
      Signed-off-by: NXiubo Li <Li.Xiubo@freescale.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      89c67857
  5. 20 2月, 2014 3 次提交
  6. 10 2月, 2014 1 次提交
    • X
      ASoC: add snd_soc_of_parse_audio_simple_widgets for DT · 9a6d4860
      Xiubo Li 提交于
      This patch adds snd_soc_of_parse_audio_simple_widgets() and supports
      below style of widgets name on DT:
      
      	"template-wname", "user supplied wname"
      
      For instance:
      	simple-audio-widgets =
      		"Microphone", "Microphone Jack",
      		"Line", "Line In Jack",
      		"Line", "Line Out Jack",
      		"Headphone", "Headphone Jack",
      		"Speaker", "Speaker External";
      
      The "template-wname" currently includes: "Microphone", "Line", "Headphone"
      and "Speaker".
      Signed-off-by: NXiubo Li <Li.Xiubo@freescale.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      9a6d4860
  7. 03 2月, 2014 2 次提交
  8. 18 1月, 2014 1 次提交
  9. 08 1月, 2014 1 次提交
  10. 26 11月, 2013 1 次提交
  11. 24 11月, 2013 1 次提交
    • N
      ASoC: soc-pcm: add symmetry for channels and sample bits · 3635bf09
      Nicolin Chen 提交于
      Some SoCs can only work in mono or stereo mode at one time. So if
      we let them capture a mono stream while playing a stereo stream,
      there might be a problem occur to one of these two streams: double
      paced or slowed down.
      
      In soc-pcm.c, we have soc_pcm_apply_symmetry() to apply the rate
      symmetry. But we don't have one for channels.
      
      Likewise, we can treat symmetric_rate as a solution for those SoCs
      or CODECs which can not handle asymmetrical LRCLK. But it's also
      impossible for them to handle asymmetrical BCLK. And accodring to
      BCLK = LRCLK * channel number * slot size(fixed or sample bits),
      sample bits might also be a problem if they are not using a fixed
      slot size.
      
      Thus, this patch applys symmetry for channels and sample bits.
      
      Meanwhile, there might be a race between two substreams if starting
      simultaneously. Previously, we only added warning to compalin but
      still using conservative way to let it carry on. However, this patch
      rejects the second stream with any unmatched parameter to make sure
      the first existing stream won't be broken.
      Signed-off-by: NNicolin Chen <b42378@freescale.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      3635bf09
  12. 18 10月, 2013 1 次提交
  13. 07 10月, 2013 1 次提交
  14. 17 9月, 2013 9 次提交
  15. 01 9月, 2013 1 次提交
  16. 31 8月, 2013 3 次提交
  17. 20 8月, 2013 1 次提交
  18. 11 8月, 2013 2 次提交
  19. 05 8月, 2013 1 次提交
    • L
      ASoC: dapm: Implement mixer input auto-disable · 57295073
      Lars-Peter Clausen 提交于
      Some devices have the problem that if a internal audio signal source is disabled
      the output of the source becomes undefined or goes to a undesired state (E.g.
      DAC output goes to ground instead of VMID). In this case it is necessary, in
      order to avoid unwanted clicks and pops, to disable any mixer input the signal
      feeds into or to active a mute control along the path to the output. Often it is
      still desirable to expose the same mixer input control to userspace, so cerain
      paths can sill be disabled manually. This means we can not use conventional DAPM
      to manage the mixer input control. This patch implements a method for letting
      DAPM overwrite the state of a userspace visible control. I.e. DAPM will disable
      the control if the path on which the control sits becomes inactive. Userspace
      will then only see a cached copy of the controls state. Once DAPM powers the
      path up again it will sync the userspace setting with the hardware and give
      control back to userspace.
      
      To implement this a new widget type is introduced. One widget of this type will
      be created for each DAPM kcontrol which has the auto-disable feature enabled.
      For each path that is controlled by the kcontrol the widget will be connected to
      the source of that path. The new widget type behaves like a supply widget,
      which means it will power up if one of its sinks are powered up and will only
      power down if all of its sinks are powered down. In order to only have the mixer
      input enabled when the source signal is valid the new widget type will be
      disabled before all other widget types and only be enabled after all other
      widget types.
      
      E.g. consider the following simplified example. A DAC is connected to a mixer
      and the mixer has a control to enable or disable the signal from the DAC.
      
                           +-------+
        +-----+            |       |
        | DAC |-----[Ctrl]-| Mixer |
        +-----+       :    |       |
           |          :    +-------+
           |          :
          +-------------+
          | Ctrl widget |
          +-------------+
      
      If the control has the auto-disable feature enabled we'll create a widget for
      the control. This widget is connected to the DAC as it is the source for the
      mixer input. If the DAC powers up the control widget powers up and if the DAC
      powers down the control widget is powered down. As long as the control widget
      is powered down the hardware input control is kept disabled and if it is enabled
      userspace can freely change the control's state.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      57295073
  20. 30 7月, 2013 1 次提交