1. 26 11月, 2015 1 次提交
  2. 19 11月, 2015 1 次提交
    • M
      ASoC: Change the PCM runtime array to a list · 1a497983
      Mengdong Lin 提交于
      Currently the number of DAI links is statically defined by the machine
      driver at build time using an array. This makes it difficult to shrink/
      grow the number of DAI links at runtime in order to reflect any changes
      in topology.
      
      We can change the DAI link array in the core to a list so that PCMs and
      FE DAI links can be added and deleted at runtime to reflect changes in
      use case and DSP topology. The machine driver can still register DAI links
      as an array.
      
      As the 1st step, this patch change the PCM runtime array to a list. A new
      PCM runtime is added to the list when a DAI link is bound successfully.
      
      Later patches will further implement the DAI link list.
      
      More:
      - define snd_soc_new/free_pcm_runtime() to create/free a runtime.
      - define soc_add_pcm_runtime() to add a runtime to the rtd list.
      - define soc_remove_pcm_runtimes() to clean up the runtime list.
      
      - traverse the rtd list to probe the link components and dais.
      
      - Add a field "num" to PCM runtime struct, used to specify the device
        number when creating the pcm device, and for a soc card to access
        its dai_props array.
      
      - The following 3rd party machine/platform drivers iterate the rtd list
        to check the runtimes:
        sound/soc/intel/atom/sst-mfld-platform-pcm.c
        sound/soc/intel/boards/cht_bsw_rt5645.c
        sound/soc/intel/boards/cht_bsw_rt5672.c
        sound/soc/intel/boards/cht_bsw_max98090_ti.c
      Signed-off-by: NMengdong Lin <mengdong.lin@linux.intel.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      1a497983
  3. 22 10月, 2015 1 次提交
  4. 17 9月, 2015 2 次提交
  5. 29 8月, 2015 1 次提交
  6. 17 7月, 2015 1 次提交
  7. 16 7月, 2015 2 次提交
  8. 09 7月, 2015 3 次提交
  9. 08 7月, 2015 1 次提交
    • S
      ASoC: core: Don't probe the component which is dummy · 6e78108b
      Shengjiu Wang 提交于
      Dummy dai can be used by multiple sound card. But it only belong to one
      card's dapm list. If another card use it, there will be dapm_assert_locked
      warning.
      
      [   20.015782] WARNING: CPU: 1 PID: 661 at sound/soc/soc-dapm.c:124 dapm_assert_locked.isra.36+0x4c/0x58()
      [   20.025249] Modules linked in:
      [   20.028349] CPU: 1 PID: 661 Comm: aplay Not tainted 4.1.0-rc6-next-20150605-00004-gaee05d8-dirty #92
      [   20.037528] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
      [   20.044110] Backtrace:
      [   20.046614] [<80012e00>] (dump_backtrace) from [<80012fa0>] (show_stack+0x18/0x1c)
      [   20.054229]  r6:809e8060 r5:00000000 r4:00000000 r3:00000000
      [   20.060002] [<80012f88>] (show_stack) from [<807a0f74>] (dump_stack+0x80/0x9c)
      [   20.067293] [<807a0ef4>] (dump_stack) from [<8002b144>] (warn_slowpath_common+0x7c/0xb4)
      [   20.075427]  r5:0000007c r4:00000000
      [   20.079065] [<8002b0c8>] (warn_slowpath_common) from [<8002b1a0>] (warn_slowpath_null+0x24/0x2c)
      [   20.087898]  r8:00000001 r7:88007c28 r6:ed94a680 r5:809e83e4 r4:ed83d6c0
      [   20.094747] [<8002b17c>] (warn_slowpath_null) from [<8058403c>] (dapm_assert_locked.isra.36+0x4c/0x58)
      [   20.104101] [<80583ff0>] (dapm_assert_locked.isra.36) from [<805842ec>] (dapm_mark_dirty+0x64/0xa4)
      [   20.113165] [<80584288>] (dapm_mark_dirty) from [<805853a8>] (soc_dapm_dai_stream_event.isra.42+0x30/0xc8)
      [   20.122863]  r8:ed9b5dbc r7:00000000 r6:00000001 r5:00000001 r4:ed83d6c0
      [   20.129706] [<80585378>] (soc_dapm_dai_stream_event.isra.42) from [<80587e28>] (snd_soc_dapm_stream_event+0x78/0xa0)
      [   20.140264]  r5:ee2ee62c r4:00000001
      [   20.143918] [<80587db0>] (snd_soc_dapm_stream_event) from [<8058957c>] (soc_pcm_prepare+0x138/0x21c)
      [   20.153058]  r8:ed8d9480 r7:00000000 r6:ed9b0e00 r5:00000001 r4:ee2ee62c r3:00000000
      ...
      
      This patch is to not probe the dummy component in soc_probe_component. Then
      there is no widget created for dummy DAI, and also don't need to check the
      dummy dai in dapm_connect_dai_link_widgets().
      Signed-off-by: NShengjiu Wang <shengjiu.wang@freescale.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      6e78108b
  10. 07 7月, 2015 1 次提交
  11. 04 6月, 2015 1 次提交
    • L
      ASoC: topology: Add topology core · 8a978234
      Liam Girdwood 提交于
      The topology core parses the FW topology file for known block types and
      instanciates any common ALSA/ASoC objects that it discovers. The core
      also passes any block that is does not understand to client component
      drivers for enumeration.
      
      The core exports some APIs to client drivers in order to load and unload
      firmware topology data as use case require.
      
      Currently the core deals with the following object types :-
      
       o kcontrols. This includes TLV, enumerated and bytes controls.
       o DAPM widgets. All types with any associated kcontrol.
       o DAPM graph.
       o FE PCM. FE PCM capabilities and configuration can be defined.
       o BE DAI Link. BE DAI link capabilities and configuration can be defined.
       o Codec <-> codec style links capabilities and configuration.
      Signed-off-by: NLiam Girdwood <liam.r.girdwood@linux.intel.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      8a978234
  12. 03 6月, 2015 1 次提交
  13. 26 5月, 2015 1 次提交
  14. 22 5月, 2015 1 次提交
    • S
      ASoC: skip legacy dai naming if dai driver has all the information · 9e498089
      Srinivas Kandagatla 提交于
      Original issue is that the id field in the dai is not same as the id
      in dai_driver when dai driver count == 1. This is due to the legacy
      dai naming check, which could possibly cause issues if the audio drivers
      written in assumption that dai->id would be always equal to dai_driver->id.
      This assumption is true only if the dai driver count is greater than 1,
      and false if dai driver count is 1. On Qcom Lpass driver we hit such
      issue while adding support to apq8016.
      
      The code path which falls back to legacy naming for cases where num_dai
      == 1 does not check if there is any valid information in the dai_driver.
      This patch fixes that by checking if the dai_driver has valid id and
      name before falling back to legacy dai naming
      Although the drivers can work around this issue by only using
      dai->driver->id, but this patch attempts to fix the actual issue.
      Suggested-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
      Acked-by: NKenneth Westfield <kwestfie@codeaurora.org>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      9e498089
  15. 15 5月, 2015 1 次提交
  16. 10 4月, 2015 1 次提交
  17. 09 4月, 2015 3 次提交
  18. 02 4月, 2015 1 次提交
  19. 25 3月, 2015 1 次提交
  20. 18 3月, 2015 1 次提交
  21. 09 3月, 2015 2 次提交
  22. 07 3月, 2015 1 次提交
  23. 24 2月, 2015 1 次提交
    • N
      ASoC: core: Add extra dapm properties for Device Tree · f23e860e
      Nicolin Chen 提交于
      The current helper functions, snd_soc_of_parse_audio_simple_widgets()
      and snd_soc_of_parse_audio_routing(), set dapm_widgets and dapm_routes
      without caring if they are already set by using build-in widgets and
      routes in the card driver. So there could be one of them, build-in one
      or Device Tree one, overrided by the other depending on which one was
      assigned later.
      
      This patch adds an extra pair of dapm_widgets and dapm_routes for DT
      use only so as to prevent unexpected overriding.
      Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      f23e860e
  24. 08 2月, 2015 1 次提交
  25. 03 2月, 2015 1 次提交
  26. 15 1月, 2015 1 次提交
  27. 09 1月, 2015 1 次提交
  28. 08 1月, 2015 1 次提交
  29. 22 12月, 2014 1 次提交
    • L
      ASoC: dapm: Simplify fully route card handling · 86d75003
      Lars-Peter Clausen 提交于
      For legacy reasons the ASoC framework assumes that a CODEC INPUT or OUTPUT
      widget that is not explicitly connected to a external source or sink is
      potentially connected to a source or a sink and hence the framework treats
      the widget itself as source (for INPUT) or sink (for OUTPUT). For this
      reason a INPUT or OUTPUT widget that is really not connected needs to be
      explicitly marked as so.
      
      Setting the card's fully_routed flag will cause the ASoC core, once that all
      widgets and routes have been registered, to go through the list of all
      widgets and mark all INPUT and OUTPUT that are not externally connected as
      non-connected. This essentially negates the default behaviour of treating
      INPUT or OUTPUT widgets without external routes as sources or sinks.
      
      This patch takes a different approach while getting the same result. Instead
      of first marking INPUT and OUTPUT widgets as sinks/sources and then later
      marking them as non-connected, just never mark them as a sink or a source if
      the fully_routed flag is set on a card.
      
      This requires a lot less code and also results in a slightly faster card
      initialization since there is no need to iterate over all widgets and check
      whether the INPUT and OUTPUT widgets are connected or not.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      86d75003
  30. 19 12月, 2014 1 次提交
  31. 05 12月, 2014 1 次提交
  32. 26 11月, 2014 1 次提交
  33. 25 11月, 2014 1 次提交