1. 15 1月, 2015 1 次提交
  2. 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
  3. 18 11月, 2014 2 次提交
  4. 20 10月, 2014 1 次提交
  5. 30 9月, 2014 1 次提交
  6. 23 9月, 2014 1 次提交
  7. 18 9月, 2014 1 次提交
  8. 08 8月, 2014 1 次提交
  9. 01 8月, 2014 1 次提交
  10. 17 6月, 2014 1 次提交
    • T
      ASoC: fsl-ssi: fix do_div build warning in fsl_ssi_set_bclk() · acf2c60a
      Timur Tabi 提交于
      do_div() requires that the first parameter is a 64-bit integer,
      which but clkrate was defined as an unsigned long.  This caused
      the following warnings:
      
       CC      sound/soc/fsl/fsl_ssi.o
      sound/soc/fsl/fsl_ssi.c: In function 'fsl_ssi_set_bclk':
      sound/soc/fsl/fsl_ssi.c:593:3: warning: comparison of distinct pointer types lacks a cast
      sound/soc/fsl/fsl_ssi.c:593:3: warning: right shift count >= width of type
      sound/soc/fsl/fsl_ssi.c:593:3: warning: passing argument 1 of '__div64_32' from incompatible pointer type
      include/asm-generic/div64.h:35:17: note: expected 'uint64_t *' but argument is of type 'long unsigned int *'
      Signed-off-by: NTimur Tabi <timur@tabi.org>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      acf2c60a
  11. 01 6月, 2014 8 次提交
  12. 26 5月, 2014 1 次提交
    • F
      ASoC: fsl_ssi: Add suspend/resume support · b20e53a8
      Fabio Estevam 提交于
      Doing a suspend/resume sequence while playing an audio track in the backgroung
      causes broken audio right after resume:
      
      root@freescale /$ aplay clarinet.wav &
      
      root@freescale /home$ Playing WAVE 'clarinet.wav' : Signed 16 bit Little Endian,
       Rate 44100 Hz, Mono
      
      root@freescale /home$ echo mem > /sys/power/state
      PM: Syncing filesystems ... done.
      Freezing user space processes ... (elapsed 0.002 seconds) done.
      Freezing remaining freezable tasks ... (elapsed 0.002 seconds) done.
      Suspending console(s) (use no_console_suspend to debug)
      PM: suspend of devices complete after 37.082 msecs
      PM: suspend devices took 0.040 seconds
      PM: late suspend of devices complete after 4.234 msecs
      PM: noirq suspend of devices complete after 4.618 msecs
      Disabling non-boot CPUs ...
      PM: noirq resume of devices complete after 4.013 msecs
      PM: early resume of devices complete after 4.000 msecs
      PM: resume of devices complete after 68.907 msecs
      PM: resume devices took 0.070 seconds
      Restarting tasks ... Suspended. Trying resume. Failed. Restarting stream. Done.
      Suspended. Trying resume. Failed. Restarting stream. Done.
      Suspended. Trying resume. Failed. Restarting stream. Done.
      Suspended. Trying resume. Failed. Restarting stream. Done.
      Suspended. Trying resume. Failed. Restarting stream. Done.
      Suspended. Trying resume. Failed. Restarting stream. Done.
      Suspended. Trying resume. Failed. Restarting stream. Done.
      ....
      
      Add SNDRV_PCM_TRIGGER_RESUME/SUSPEND cases so that we can gracefully handle
      system suspend/resume.
      Signed-off-by: NFabio Estevam <fabio.estevam@freescale.com>
      Acked-by: NShawn Guo <shawn.guo@freescale.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      b20e53a8
  13. 21 5月, 2014 9 次提交
  14. 15 4月, 2014 3 次提交
  15. 22 1月, 2014 2 次提交
  16. 15 1月, 2014 1 次提交
  17. 10 1月, 2014 2 次提交
  18. 09 1月, 2014 2 次提交