1. 15 1月, 2015 2 次提交
  2. 13 12月, 2014 1 次提交
  3. 05 12月, 2014 2 次提交
    • J
      ASoC: fsl_ssi: fix error path in probe · 4c9a8845
      Jiada Wang 提交于
      SSI component isn't unregistered if fsl_ssi_debugfs_create() fails
      in probe phase.
      
      To fix it, this commit replaces label error_asoc_register with
      error_irq.
      Signed-off-by: NJiada Wang <jiada_wang@mentor.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      4c9a8845
    • F
      ASoC: fsl_ssi: Fix module unbound · 2ffa5310
      Fabio Estevam 提交于
      Trying to remove the snd-soc-fsl-ssi module leads to the following warning:
      
      [   31.515336] ------------[ cut here ]------------
      [   31.520091] WARNING: CPU: 2 PID: 434 at fs/proc/generic.c:521 remove_proc_entry+0x14c/0x16c()
      [   31.528708] remove_proc_entry: removing non-empty directory 'irq/79', leaking at least '202c000.ss'
      [   31.537911] Modules linked in: snd_soc_wm8962 snd_soc_imx_wm8962 snd_soc_fsl_ssi(-) evbug
      [   31.546249] CPU: 2 PID: 434 Comm: rmmod Not tainted 3.18.0-rc6-00028-g3314bf6b-dirty #1
      [   31.554235] Backtrace:
      [   31.556816] [<80011ea8>] (dump_backtrace) from [<80012044>] (show_stack+0x18/0x1c)
      [   31.564416]  r6:80142c88 r5:00000000 r4:00000000 r3:00000000
      [   31.570267] [<8001202c>] (show_stack) from [<806980ec>] (dump_stack+0x88/0xa4)
      [   31.577588] [<80698064>] (dump_stack) from [<80029d78>] (warn_slowpath_common+0x70/0x94)
      [   31.585711]  r5:00000009 r4:bb61fd90
      [   31.589423] [<80029d08>] (warn_slowpath_common) from [<80029e40>] (warn_slowpath_fmt+0x38/0x40)
      [   31.598187]  r8:bb61fdfe r7:be05d76d r6:be05d9a8 r5:00000002 r4:be05d700
      [   31.605054] [<80029e0c>] (warn_slowpath_fmt) from [<80142c88>] (remove_proc_entry+0x14c/0x16c)
      [   31.613709]  r3:806a79c0 r2:808229a0
      [   31.617371] [<80142b3c>] (remove_proc_entry) from [<80070380>] (unregister_irq_proc+0x94/0xb8)
      [   31.625989]  r10:00000000 r8:8000ede4 r7:80955f2c r6:0000004f r5:8118e738 r4:be00af00
      [   31.633952] [<800702ec>] (unregister_irq_proc) from [<80069dac>] (free_desc+0x2c/0x64)
      [   31.641898]  r6:0000004f r5:80955f38 r4:be00af00
      [   31.646604] [<80069d80>] (free_desc) from [<80069e68>] (irq_free_descs+0x4c/0x8c)
      [   31.654092]  r7:00000081 r6:00000001 r5:0000004f r4:00000001
      [   31.659863] [<80069e1c>] (irq_free_descs) from [<8006fc3c>] (irq_dispose_mapping+0x40/0x5c)
      [   31.668247]  r6:be17b844 r5:be17b800 r4:0000004f r3:802c5ec0
      [   31.673998] [<8006fbfc>] (irq_dispose_mapping) from [<7f004ea4>] (fsl_ssi_remove+0x58/0x70 [snd_so)
      [   31.683948]  r4:bb5bba10 r3:00000001
      [   31.687618] [<7f004e4c>] (fsl_ssi_remove [snd_soc_fsl_ssi]) from [<803720a0>] (platform_drv_remove)
      [   31.697564]  r5:7f0064f8 r4:be17b810
      [   31.701195] [<80372080>] (platform_drv_remove) from [<80370494>] (__device_release_driver+0x78/0xc)
      [   31.710361]  r5:7f0064f8 r4:be17b810
      [   31.713987] [<8037041c>] (__device_release_driver) from [<80370d20>] (driver_detach+0xbc/0xc0)
      [   31.722631]  r5:7f0064f8 r4:be17b810
      [   31.726259] [<80370c64>] (driver_detach) from [<80370304>] (bus_remove_driver+0x54/0x98)
      [   31.734382]  r6:00000800 r5:00000000 r4:7f0064f8 r3:bb67f500
      [   31.740149] [<803702b0>] (bus_remove_driver) from [<80371398>] (driver_unregister+0x30/0x50)
      [   31.748617]  r4:7f0064f8 r3:bd9f7080
      [   31.752245] [<80371368>] (driver_unregister) from [<80371f3c>] (platform_driver_unregister+0x14/0x)
      [   31.761498]  r4:7f00655c r3:7f005a70
      [   31.765130] [<80371f28>] (platform_driver_unregister) from [<7f005a84>] (fsl_ssi_driver_exit+0x14/)
      [   31.776147] [<7f005a70>] (fsl_ssi_driver_exit [snd_soc_fsl_ssi]) from [<8008ed80>] (SyS_delete_mod)
      [   31.786553] [<8008ec64>] (SyS_delete_module) from [<8000ec20>] (ret_fast_syscall+0x0/0x48)
      [   31.794824]  r6:00c46d18 r5:00000800 r4:00c46d18
      [   31.799530] ---[ end trace 954e8a3a15379e52 ]---
      
      The cause of problem and solution are well explained by Lars-Peter:
      
      "The driver creates the mapping by calling irq_of_parse_and_map(), so it also
      has to dispose the mapping. But the easy way out is to simply use
      platform_get_irq() instead of irq_of_parse_map(). In this case the mapping is
      not managed by the device but by the of core, so the device has not to dispose
      the mapping."
      
      Tested on a imx6q-sabresd board.
      Reported-by: NJiada Wang <jiada_wang@mentor.com>
      Suggested-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NFabio Estevam <fabio.estevam@freescale.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      2ffa5310
  4. 25 11月, 2014 2 次提交
  5. 18 11月, 2014 4 次提交
  6. 10 11月, 2014 1 次提交
    • T
      ALSA: pcm: Add snd_pcm_stop_xrun() helper · 1fb8510c
      Takashi Iwai 提交于
      Add a new helper function snd_pcm_stop_xrun() to the standard sequnce
      lock/snd_pcm_stop(XRUN)/unlock by a single call, and replace the
      existing open codes with this helper.
      
      The function checks the PCM running state to prevent setting the wrong
      state, too, for more safety.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      1fb8510c
  7. 29 10月, 2014 1 次提交
  8. 28 10月, 2014 1 次提交
    • N
      ASoC: fsl_asrc: Add reg_defaults for regmap to fix kernel dump · 86a570c5
      Nicolin Chen 提交于
      Kernel dump (WARN_ON) ocurred during system boot-up inside regmap_write():
      
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 47 at kernel/locking/lockdep.c:2744 lockdep_trace_alloc+0xe8/0x108()
      DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags))
      Modules linked in:
      CPU: 0 PID: 47 Comm: kworker/u2:2 Not tainted 3.18.0-rc1-10245-gb75d289-dirty #56
      Workqueue: deferwq deferred_probe_work_func
      Backtrace:
      [<80012294>] (dump_backtrace) from [<80012578>] (show_stack+0x18/0x1c)
       r6:8097c73c r5:8097c73c r4:00000000 r3:be33ba80
      [<80012560>] (show_stack) from [<806aac48>] (dump_stack+0x8c/0xa4)
      [<806aabbc>] (dump_stack) from [<8002a694>] (warn_slowpath_common+0x70/0x94)
       r6:80062838 r5:00000009 r4:bd827b30 r3:be33ba80
      [<8002a624>] (warn_slowpath_common) from [<8002a6f0>] (warn_slowpath_fmt+0x38/0x40)
       r8:00000004 r7:00000001 r6:000080d0 r5:60000193 r4:bd826010
      [<8002a6bc>] (warn_slowpath_fmt) from [<80062838>] (lockdep_trace_alloc+0xe8/0x108)
       r3:80831590 r2:8082e160
      [<80062750>] (lockdep_trace_alloc) from [<800ea5dc>] (kmem_cache_alloc+0x28/0x134)
       r5:000080d0 r4:be001f00
      [<800ea5b4>] (kmem_cache_alloc) from [<8038d72c>] (regcache_rbtree_write+0x15c/0x648)
       r10:00000000 r9:0000001c r8:00000004 r7:00000001 r6:00000000 r5:bd819a00
       r4:00000000 r3:811aea88
      [<8038d5d0>] (regcache_rbtree_write) from [<8038c4d8>] (regcache_write+0x5c/0x64)
       r10:be3f9f88 r9:00000000 r8:00000004 r7:00000001 r6:00000000 r5:00000001
       r4:bd819a00
      [<8038c47c>] (regcache_write) from [<8038b0dc>] (_regmap_raw_write+0x134/0x5f4)
       r6:be3f9f84 r5:00000001 r4:bd819a00 r3:00000001
      [<8038afa8>] (_regmap_raw_write) from [<8038b610>] (_regmap_bus_raw_write+0x74/0x94)
       r10:00000000 r9:00000001 r8:be3fb080 r7:bd819a00 r6:00000001 r5:00000000
       r4:bd819a00
      [<8038b59c>] (_regmap_bus_raw_write) from [<8038a8b4>] (_regmap_write+0x60/0x9c)
       r6:00000001 r5:00000000 r4:bd819a00 r3:8038b59c
      [<8038a854>] (_regmap_write) from [<8038ba24>] (regmap_write+0x48/0x68)
       r7:bd81ad80 r6:00000001 r5:00000000 r4:bd819a00
      [<8038b9dc>] (regmap_write) from [<80528f30>] (fsl_asrc_dai_probe+0x34/0x104)
       r6:bd888628 r5:be3fb080 r4:be3b4410 r3:be3b442c
      ------------[ dump end ]------------
      
      =============================================================================
      2741         /*
      2742          * Oi! Can't be having __GFP_FS allocations with IRQs disabled.
      2743          */
      2744         if (DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags)))
      2745                 return;
      =============================================================================
      
      By looking at 2744 line, we can get that it's because regcache_rbtree_write()
      would call kmalloc() with GFP flag if it couldn't find an existing block to
      insert nodes while this kmalloc() call is inside a spin_lock_irq_save pair,
      i.e. IRQs disabled.
      
      Even though this may be a bug that should be fixed, I still try to send this
      patch as a quick fix (work around) since it does no harm to assign default
      values of every registers when using regcache.
      Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      86a570c5
  9. 22 10月, 2014 1 次提交
  10. 20 10月, 2014 6 次提交
  11. 08 10月, 2014 2 次提交
  12. 04 10月, 2014 1 次提交
  13. 02 10月, 2014 1 次提交
  14. 30 9月, 2014 1 次提交
  15. 23 9月, 2014 1 次提交
  16. 18 9月, 2014 1 次提交
  17. 01 9月, 2014 1 次提交
    • X
      ASoC: fsl-sai: using 'lsb-first' property instead of 'big-endian-data'. · eadb0019
      Xiubo Li 提交于
      The 'big-endian-data' property is originally used to indicate whether the
      LSB firstly or MSB firstly will be transmitted to the CODEC or received
      from the CODEC, and there has nothing relation to the memory data.
      
      Generally, if the audio data in big endian format, which will be using the
      bytes reversion, Here this can only be used to bits reversion.
      
      So using the 'lsb-first' instead of 'big-endian-data' can make the code
      to be readable easier and more easy to understand what this property is
      used to do.
      
      This property used for configuring whether the LSB or the MSB is transmitted
      first for the fifo data.
      Signed-off-by: NXiubo Li <Li.Xiubo@freescale.com>
      Acked-by: NNicolin Chen <nicoleotsuka@gmail.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      eadb0019
  18. 28 8月, 2014 4 次提交
  19. 20 8月, 2014 1 次提交
  20. 19 8月, 2014 1 次提交
  21. 18 8月, 2014 2 次提交
    • S
      ASoC: fsl: fsl-asoc-card: Select SND_SOC_IMX_AUDMUX · 499898d6
      Shengjiu Wang 提交于
      Building kernel with SND_SOC_IMX_AUDMUX=n leads to the following error:
      
         sound/built-in.o: In function `fsl_asoc_card_probe':
      >> fsl-asoc-card.c:(.text+0x1467b5): undefined reference to `imx_audmux_v2_configure_port'
      >> fsl-asoc-card.c:(.text+0x1467d0): undefined reference to `imx_audmux_v2_configure_port'
      >> fsl-asoc-card.c:(.text+0x1467ed): undefined reference to `imx_audmux_v2_configure_port'
      >> fsl-asoc-card.c:(.text+0x146807): undefined reference to `imx_audmux_v2_configure_port'
      
      Update Kconfig to select SND_SOC_IMX_AUDMUX when SND_SOC_FSL_ASOC_CARD=y.
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: NShengjiu Wang <shengjiu.wang@freescale.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      499898d6
    • S
      ASoC: fsl-asoc-card: Fix build warning for maybe-uninitialized · 5f37671e
      Shengjiu Wang 提交于
      When build fsl-asoc-card as module, there is following error:
      
      sound/soc/fsl/fsl-asoc-card.c: In function 'fsl_asoc_card_probe':
      >> sound/soc/fsl/fsl-asoc-card.c:547:13: warning: 'asrc_np' may be used uninitialized in this function [-Wmaybe-uninitialized]
           of_node_put(asrc_np);
                      ^
      
      vim +/asrc_np +547 sound/soc/fsl/fsl-asoc-card.c
      
         531                  if (width == 24)
         532                          priv->asrc_format = SNDRV_PCM_FORMAT_S24_LE;
         533                  else
         534                          priv->asrc_format = SNDRV_PCM_FORMAT_S16_LE;
         535          }
         536
         537          /* Finish card registering */
         538          platform_set_drvdata(pdev, priv);
         539          snd_soc_card_set_drvdata(&priv->card, priv);
         540
         541          ret = devm_snd_soc_register_card(&pdev->dev, &priv->card);
         542          if (ret)
         543                  dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ret);
         544
         545  fail:
         546          of_node_put(codec_np);
       > 547          of_node_put(asrc_np);
         548          of_node_put(cpu_np);
         549
         550          return ret;
         551  }
         552
         553  static const struct of_device_id fsl_asoc_card_dt_ids[] = {
         554          { .compatible = "fsl,imx-audio-cs42888", },
         555          { .compatible = "fsl,imx-audio-sgtl5000", },
      
      Add 'asrc_fail' branch for error jump after asrc_np initialized.
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: NShengjiu Wang <shengjiu.wang@freescale.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      5f37671e
  22. 17 8月, 2014 3 次提交