1. 23 11月, 2011 2 次提交
    • E
      ASoC: skip resume of soc-audio devices without codecs · 5ff1ddf2
      Eric Miao 提交于
      There are cases where there is no working codec on the soc-audio devices,
      and snd_soc_suspend() will skip such device when suspending. Yet its
      counterpart snd_soc_resume() does not check this, causing complaints
      about spinlock lockup:
      
      [  176.726087] BUG: spinlock lockup on CPU#0, kworker/0:2/1067, d8ab82a8
      [  176.732539] [<80014a14>] (unwind_backtrace+0x0/0xec) from [<805b3fc8>] (dump_stack+0x20/0x24)
      [  176.741082] [<805b3fc8>] (dump_stack+0x20/0x24) from [<80322208>] (do_raw_spin_lock+0x118/0x158)
      [  176.749882] [<80322208>] (do_raw_spin_lock+0x118/0x158) from [<805b7874>] (_raw_spin_lock_irqsave+0x5c/0x68)
      [  176.759723] [<805b7874>] (_raw_spin_lock_irqsave+0x5c/0x68) from [<8002a020>] (__wake_up+0x2c/0x5c)
      [  176.768781] [<8002a020>] (__wake_up+0x2c/0x5c) from [<804a6de8>] (soc_resume_deferred+0x3c/0x2b0)
      [  176.777666] [<804a6de8>] (soc_resume_deferred+0x3c/0x2b0) from [<8004ee20>] (process_one_work+0x2e8/0x50c)
      [  176.787334] [<8004ee20>] (process_one_work+0x2e8/0x50c) from [<8004fd08>] (worker_thread+0x1c8/0x2e0)
      [  176.796566] [<8004fd08>] (worker_thread+0x1c8/0x2e0) from [<80053ec8>] (kthread+0xa4/0xb0)
      [  176.804843] [<80053ec8>] (kthread+0xa4/0xb0) from [<8000ea70>] (kernel_thread_exit+0x0/0x8)
      Signed-off-by: NEric Miao <eric.miao@linaro.org>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      5ff1ddf2
    • L
      ASoC: Constify snd_soc_dai_ops structs · 85e7652d
      Lars-Peter Clausen 提交于
      Commit 1ee46ebd("ASoC: Make the DAI ops constant in the DAI structure")
      introduced the possibility to have constant DAI ops structures, yet this is
      barley used in both existing drivers and also new drivers being submitted,
      although none of them modifies its DAI ops structure. The later is not
      surprising since existing drivers are often used as templates for new drivers.
      So this patch just constifies all existing snd_soc_dai_ops structs to eliminate
      the issue altogether.
      
      The patch was generated with the following coccinelle semantic patch:
      // <smpl>
      @@
      identifier ops;
      @@
      -struct snd_soc_dai_ops ops =
      +const struct snd_soc_dai_ops ops =
      { ... };
      // </smpl>
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      85e7652d
  2. 18 10月, 2011 1 次提交
  3. 12 10月, 2011 1 次提交
  4. 09 10月, 2011 1 次提交
  5. 08 10月, 2011 1 次提交
  6. 06 10月, 2011 3 次提交
  7. 04 10月, 2011 2 次提交
  8. 28 9月, 2011 1 次提交
    • M
      ASoC: Allow DAI formats to be specified in the dai_link · 75d9ac46
      Mark Brown 提交于
      For almost all machines the DAI format is a constant, always set to the
      same thing. This means that not only should we normally set it on init
      rather than in hw_params() (where it has been for historical reasons) we
      should also allow users to configure this by setting a variable in the
      dai_link structure. The combination of these two will make many machine
      drivers even more data driven.
      
      Implement a new dai_fmt field in the dai_link doing just that. Since 0 is
      a valid value for many format flags and we need to be able to tell if the
      field is actually set also add one to all the values used to configure
      formats.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      75d9ac46
  9. 21 9月, 2011 1 次提交
  10. 09 9月, 2011 1 次提交
  11. 31 8月, 2011 3 次提交
  12. 23 8月, 2011 2 次提交
  13. 01 8月, 2011 1 次提交
  14. 26 7月, 2011 1 次提交
  15. 19 7月, 2011 2 次提交
  16. 06 7月, 2011 4 次提交
  17. 05 7月, 2011 2 次提交
  18. 03 7月, 2011 1 次提交
  19. 10 6月, 2011 1 次提交
    • L
      ASoC: core - PCM mutex per rtd · b8c0dab9
      Liam Girdwood 提交于
      In preparation for the new ASoC Dynamic PCM support (AKA DSP support).
      
      The new ASoC Dynamic PCM core allows DAIs to be dynamically re-routed
      at runtime between the PCM device end (or Frontend - FE) and the physical DAI
      (Backend - BE) using regular kcontrols (just like a hardware CODEC routes
      audio in the analog domain). The Dynamic PCM core therefore must be
      able to call PCM operations for both the Frontend and Backend(s) DAIs at
      the same time.
      
      Currently we have a global pcm_mutex that is used to serialise
      the ASoC PCM operations. This patch removes the global mutex
      and adds a mutex per RTD allowing the PCM operations to be reentrant and
      allow control of more than one DAI at at time. e.g. a frontend PCM hw_params()
      could configure multiple backend DAI hw_params() with similar or different
      hw parameters at the same time.
      Signed-off-by: NLiam Girdwood <lrg@ti.com>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      b8c0dab9
  20. 09 6月, 2011 1 次提交
  21. 08 6月, 2011 2 次提交
  22. 06 6月, 2011 1 次提交
  23. 26 5月, 2011 1 次提交
    • S
      ASoC: core: Don't schedule deferred_resume_work twice · 82e14e8b
      Stephen Warren 提交于
      For cards that have two or more DAIs, snd_soc_resume's loop over all
      DAIs ends up calling schedule_work(deferred_resume_work) once per DAI.
      Since this is the same work item each time, the 2nd and subsequent
      calls return 0 (work item already queued), and trigger the dev_err
      message below stating that a work item may have been lost.
      
      Solve this by adjusting the loop to simply calculate whether to run the
      resume work immediately or defer it, and then call schedule work (or not)
      one time based on that.
      
      Note: This has not been tested in mainline, but only in chromeos-2.6.38;
      mainline doesn't support suspend/resume on Tegra, nor does the mainline
      Tegra ASoC driver contain multiple DAIs. It has been compile-checked in
      mainline.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Acked-by: NLiam Girdwood <lrg@ti.com>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      82e14e8b
  24. 25 5月, 2011 1 次提交
  25. 24 5月, 2011 1 次提交
  26. 22 5月, 2011 1 次提交
  27. 17 5月, 2011 1 次提交
    • S
      ASoC: Silence DEBUG_STRICT_USER_COPY_CHECKS=y warning · 34e268d8
      Stephen Boyd 提交于
      Enabling DEBUG_STRICT_USER_COPY_CHECKS causes the following
      warning:
      
      In file included from arch/x86/include/asm/uaccess.h:573,
                       from include/linux/poll.h:14,
                       from include/sound/pcm.h:29,
                       from include/sound/ac97_codec.h:31,
                       from sound/soc/soc-core.c:34:
      In function 'copy_from_user',
          inlined from 'codec_reg_write_file' at
          sound/soc/soc-core.c:252:
      arch/x86/include/asm/uaccess_64.h:65:
      warning: call to 'copy_from_user_overflow' declared with
      attribute warning: copy_from_user() buffer size is not provably
      correct
      
      presumably due to buf_size being signed causing GCC to fail to
      see that buf_size can't become negative.
      Acked-by: NLiam Girdwood <lrg@ti.com>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      34e268d8