1. 23 4月, 2014 1 次提交
    • N
      ASoC: core: Don't break component searching if both id and num_dai are 0 · 3dcba280
      Nicolin Chen 提交于
      The commit e41975ed (ASoC: core: Fix the DAI name getting) added a break
      within the "if (id < 0 || id >= pos->num_dai)" while the original design
      of the search didn't break the loop if that condition contented but only
      mark the ret error and let it go on to search the next component.
      
      In a case like dmaengine which's not a dai but as a component sharing an
      identical name with a dai, both the id and pos->num_dai here could be 0.
      If we break the search, we may never find the dai we want as it might be
      placed behind its dmaengine in the component list.
      
      So this patch fixes the issue above by following the original design to
      let the search carry on.
      Signed-off-by: NNicolin Chen <Guangyu.Chen@freescale.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      3dcba280
  2. 19 4月, 2014 1 次提交
  3. 15 4月, 2014 8 次提交
  4. 25 3月, 2014 2 次提交
  5. 12 3月, 2014 1 次提交
  6. 11 3月, 2014 2 次提交
  7. 10 3月, 2014 3 次提交
    • L
      ASoC: Add a per component dai list · 1438c2f6
      Lars-Peter Clausen 提交于
      Now that every DAI has a component we can track the DAIs on a per component
      basis. This simplifies the DAI lookup when we are only interested in DAIs of a
      specific component and also makes it possible to have multiple components with
      the same parent device and also register DAIs.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      1438c2f6
    • L
      ASoC: Pass CODEC to snd_soc_register_dais() · 6cc240f3
      Lars-Peter Clausen 提交于
      snd_soc_register_dais() looks up the CODEC that is registering the DAIs by
      looping over all registered CODECs. This patch updates the code to
      simply pass the CODEC that registers the DAIs to snd_soc_register_dais() thus
      avoiding the lookup.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      6cc240f3
    • L
      ASoC: Consolidate snd_soc_register_dai() and snd_soc_register_dais() · 32c9ba54
      Lars-Peter Clausen 提交于
      snd_soc_register_dais() has basically the same code as snd_soc_register_dai(),
      but running in a loop. The only difference is that snd_soc_register_dai() calls
      fmt_single_name() to generate the DAIs name and snd_soc_register_dais() calls
      fmt_multiple_name(). This patch pushes the check in __snd_soc_register_component()
      which decides whether to call snd_soc_register_dai() or snd_soc_register_dais()
      to snd_soc_register_dais() to decide which naming scheme to use. This allows us
      to remove snd_soc_register_dai().
      
      The patch also updates snd_soc_register_dais() to unregister every DAI it finds
      for the component rather than trying to unregister one DAI for each DAI that was
      registered. Both have the same result since there won't be more DAIs than what
      have been registered, but the former is easier to implement.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      32c9ba54
  8. 06 3月, 2014 3 次提交
  9. 04 3月, 2014 2 次提交
  10. 01 3月, 2014 1 次提交
    • 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
  11. 28 2月, 2014 1 次提交
    • X
      ASoC: core: Set the default I/O up try regmap. · fe2265e4
      Xiubo Li 提交于
      For most CODEC drivers which the REGMAP is used, the soc_probe_codec()
      will do the stuff work of snd_soc_codec_set_cache_io(), which the CODEC
      drivers' ASoC probe will do too, and almost at the same time.
      
      This patch set the default I/O up try regmap, and then the CODEC drivers'
      stuff work of snd_soc_codec_set_cache_io() will be redundant, while if one
      CODEC driver needed to set it's own I/O, then it can rewrite the default ones.
      Then could we just discard the snd_soc_codec_set_cache_io() from the CODEC
      drivers' ASoC probe to simplify the code.
      Signed-off-by: NXiubo Li <Li.Xiubo@freescale.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      fe2265e4
  12. 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
  13. 20 2月, 2014 1 次提交
  14. 14 2月, 2014 1 次提交
  15. 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
  16. 03 2月, 2014 1 次提交
    • M
      ASoC: core: Add signed register volume control logic · f227b88f
      Markus Pargmann 提交于
      Some codecs use signed volume control representation with non standard
      register sizes, e.g. 6 or 7 bit signed integers.
      
      This patch adds generic signed register volume control logic to
      soc-core. Instead of a fixed width signed register control, this
      implementation uses a 'min' value and the signed bit location to translate
      it to an absolute volume. Using the 'sign_bit' we can calculate a
      correct mask for the register values and translate it back into signed
      integers of standard size.
      Signed-off-by: NMarkus Pargmann <mpa@pengutronix.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      f227b88f
  17. 24 1月, 2014 1 次提交
  18. 16 1月, 2014 1 次提交
  19. 08 1月, 2014 1 次提交
  20. 01 1月, 2014 1 次提交
  21. 29 11月, 2013 1 次提交
  22. 05 11月, 2013 1 次提交
    • N
      ASoC: Add pinctrl PM to components of active DAIs · 988e8cc4
      Nicolin Chen 提交于
      It's quite popular that more drivers are using pinctrl PM, for example:
      (Documentation/devicetree/bindings/arm/primecell.txt). Just like what
      runtime PM does, it would deactivate and activate pin group depending
      on whether it's being used or not.
      
      And this pinctrl PM might be also beneficial to cpu dai drivers because
      they might have actual pinctrl so as to sleep their pins and wake them
      up as needed.
      
      To achieve this goal, this patch sets pins to the default state during
      resume or startup; While during suspend and shutdown, it would set pins
      to the sleep state.
      
      As pinctrl PM would return zero if there is no such pinctrl sleep state
      settings, this patch would not break current ASoC subsystem directly.
      
      [ However, there is still an exception that the patch can not handle,
      that is, when cpu dai driver does not have pinctrl property but another
      device has it. (The AUDMUX <-> SSI on Freescale i.MX6 series for example.
      SSI as a cpu dai doesn't contain pinctrl property while AUDMUX, an Audio
      Multiplexer, has it). In this case, this kind of cpu dai driver needs to
      find a way to obtain the pinctrl property as its own, by moving property
      from AUDMUX to SSI, or creating a pins link/dependency between these two
      devices, or using a more decent way after we figure it out. ]
      Signed-off-by: NNicolin Chen <b42378@freescale.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      988e8cc4
  23. 01 11月, 2013 1 次提交
  24. 18 10月, 2013 1 次提交
  25. 17 9月, 2013 2 次提交
    • K
      ASoC: add .of_xlate_dai_name on snd_soc_component_driver · cb470087
      Kuninori Morimoto 提交于
      ASoC sound driver requires CPU/CODEC drivers for probing,
      and each CPU/CODEC has some DAI on it.
      Then, "dai name matching" have been used to identify
      CPU-CODEC DAI pair on ASoC.
      
      But, the "dai port number matching" is now required from DeviceTree.
      The solution of this issue is to replace
      the dai port number into dai name.
      Now, CPU/CODEC are based on struct snd_soc_component,
      and it can care above as common issue.
      
      This patch adds .of_xlate_dai_name callback interface
      on struct snd_soc_component_driver,
      and snd_soc_of_get_dai_name() which is using .of_xlate_dai_name.
      
      Then, #sound-dai-cells which enables DAI specifier is required
      on CPU/CODEC device tree properties.
      Signed-off-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      cb470087
    • K
      ASoC: snd_soc_codec includes snd_soc_component · d191bd8d
      Kuninori Morimoto 提交于
      Codec includes component by this patch,
      and component moved to upside of codec
      to avoid extra declaration.
      Codec dai will be registered via component
      by this patch.
      
      Current component register function
      is used for cpu, and it is using
      dai/dais functions properly to keep
      existing cpu dai name.
      
      And now, it will be used from codec also.
      But codec driver had been used dais function only
      even though it was single dai.
      This patch adds new flag which can selects
      dai/dais function on component register
      function to keep existing codec dai name.
      Signed-off-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      d191bd8d