1. 29 1月, 2015 1 次提交
    • A
      ASoC: rt5677: fix SPI dependency · 4c121129
      Arnd Bergmann 提交于
      The rt5677 codec has gained code that requires SPI to work correctly,
      but there is no provision in Kconfig to prevent the driver from
      being used when SPI is disabled or a loadable module, resulting
      in this build error:
      
      sound/built-in.o: In function `rt5677_spi_write':
      :(.text+0xa7ba0): undefined reference to `spi_sync'
      sound/built-in.o: In function `rt5677_spi_driver_init':
      :(.init.text+0x253c): undefined reference to `spi_register_driver'
      
      ERROR: "spi_sync" [sound/soc/codecs/snd-soc-rt5677-spi.ko] undefined!
      ERROR: "spi_register_driver" [sound/soc/codecs/snd-soc-rt5677-spi.ko] undefined!
      
      This makes the SPI portion of the driver depend on the SPI subsystem,
      and disables the function that uses SPI for firmware download if SPI
      is disabled. The latter may not be the correct solution, but I could
      not come up with a better one.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Fixes: af48f1d0 ("ASoC: rt5677: Support DSP function for VAD application")
      Signed-off-by: NMark Brown <broonie@kernel.org>
      4c121129
  2. 15 1月, 2015 2 次提交
  3. 09 1月, 2015 1 次提交
  4. 24 12月, 2014 3 次提交
  5. 19 12月, 2014 1 次提交
  6. 16 12月, 2014 2 次提交
  7. 13 12月, 2014 1 次提交
  8. 12 12月, 2014 1 次提交
  9. 10 12月, 2014 1 次提交
  10. 09 12月, 2014 2 次提交
    • S
      ASoC: samsung: i2s: Add missing assignment of variant_regs · 7e5d8706
      Sylwester Nawrocki 提交于
      Add assignment of the variant_regs field which is missing in commit
      a5a56871 ("ASoC: samsung: add support
      for exynos7 I2S controller"). Without this attempting to probe the
      secondary DAI fails with an error like:
      
      [    1.763026] Unable to handle kernel NULL pointer dereference at virtual address 0000000c
      [    1.780895] pgd = c0004000
      [    1.783606] [0000000c] *pgd=00000000
      [    1.838255] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
      [    1.843514] Modules linked in:
      [    1.846558] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.18.0-rc1-00009-g5dcb01e-dirty #1521
      [    1.854887] task: ee00a800 ti: ee088000 task.ti: ee088000
      [    1.860284] PC is at i2s_txctrl+0x40/0x2d4
      [    1.864350] LR is at i2s_txctrl+0x28/0x2d4
      [    1.868428] pc : [<c036ffd4>]    lr : [<c036ffbc>]    psr: 60000153
      [    1.868428] sp : ee089dc0  ip : 00000000  fp : ee21f000
      [    1.879883] r10: 00000000  r9 : ee21fb00  r8 : c06406c4
      [    1.885091] r7 : ee21fb00  r6 : 00000000  r5 : f00f6000  r4 : ed943410
      [    1.891601] r3 : 0000016c  r2 : c0464550  r1 : c055cef8  r0 : ed943610
      [    1.898113] Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
      [    1.905490] Control: 10c5387d  Table: 4000404a  DAC: 00000015
      [    1.911218] Process swapper/0 (pid: 1, stack limit = 0xee088240)
      [    1.917208] Stack: (0xee089dc0 to 0xee08a000)
      ...
      [    2.068431] [<c036ffd4>] (i2s_txctrl) from [<c03719fc>] (samsung_i2s_dai_probe+0xb8/0x450)
      [    2.076676] [<c03719fc>] (samsung_i2s_dai_probe) from [<c03607e0>] (snd_soc_register_card+0xd98/0x1348)
      [    2.086044] [<c03607e0>] (snd_soc_register_card) from [<c03726e4>] (odroidx2_audio_probe+0xa8/0x11c)
      [    2.095160] [<c03726e4>] (odroidx2_audio_probe) from [<c0249dd0>] (platform_drv_probe+0x48/0xa4)
      [    2.103922] [<c0249dd0>] (platform_drv_probe) from [<c0248988>] (driver_probe_device+0x10c/0x22c)
      [    2.112773] [<c0248988>] (driver_probe_device) from [<c0248b34>] (__driver_attach+0x8c/0x90)
      [    2.121192] [<c0248b34>] (__driver_attach) from [<c02471c8>] (bus_for_each_dev+0x54/0x88)
      [    2.129352] [<c02471c8>] (bus_for_each_dev) from [<c0248188>] (bus_add_driver+0xd4/0x1d0)
      [    2.137510] [<c0248188>] (bus_add_driver) from [<c024915c>] (driver_register+0x78/0xf4)
      [    2.145499] [<c024915c>] (driver_register) from [<c0008924>] (do_one_initcall+0x80/0x1b8)
      [    2.153670] [<c0008924>] (do_one_initcall) from [<c05b7d40>] (kernel_init_freeable+0xfc/0x1c8)
      [    2.162260] [<c05b7d40>] (kernel_init_freeable) from [<c04146c0>] (kernel_init+0x8/0xec)
      [    2.170330] [<c04146c0>] (kernel_init) from [<c000e7f8>] (ret_from_fork+0x14/0x3c)
      [    2.177873] Code: e5940000 e59f128c e59f228c e2800010 (e59c700c)
      Signed-off-by: NSylwester Nawrocki <s.nawrocki@samsung.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      7e5d8706
    • P
      ASoC: pcm512x: Trigger auto-increment of register addresses on i2c · 681a1956
      Peter Rosin 提交于
      When the codec is connected using i2c, it will only auto-increment
      register addresses if msb (0x80) of the register address byte is set.
      
      [Fixes cache sync if multiple adjacent registers are updated -- broonie]
      Signed-off-by: NPeter Rosin <peda@axentia.se>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      Cc: stable@vger.kernel.org
      681a1956
  11. 08 12月, 2014 3 次提交
  12. 07 12月, 2014 2 次提交
  13. 06 12月, 2014 1 次提交
  14. 05 12月, 2014 5 次提交
    • D
      ASoC: rt5677: make volume TLV closer to reality · 40e3262e
      Dylan Reid 提交于
      The volume blocks have an step of 0.375dB, but TLV uses 0.01dB for
      units.  Only use the resolution supported, ignoring the LSB of the
      volume register.  This results in half the steps and 0.75dB per step,
      but reports accurate levels through TLV.  Update the masks to reflect
      that these are registers have the LSB ignored.
      Signed-off-by: NDylan Reid <dgreid@chromium.org>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      40e3262e
    • 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
    • Q
      ASoC: soc-pcm: do not hw_free BE if it's still used · 36fba62c
      Qiao Zhou 提交于
      Do not free BE hw if it's still used by other FE during dpcm runtime
      shutdown. Otherwise the BE runtime state will be STATE_HW_FREE and
      won't be updated to STATE_CLOSE when shutdown ends, because BE dai
      shutdown function won't close pcm when detecting BE is still under
      use. With STATE_HW_FREE, BE can't be triggered start again.
      
      This corner case can easily appear when one BE is used by two FE,
      without this patch "ASoC: dpcm: Fix race between FE/BE updates and
      trigger"(ea9d0d77). One FE tries to
      shutdown but it's raced against xrun on another FE. It improves the
      be dai hw_free logic.
      Signed-off-by: NQiao Zhou <zhouqiao@marvell.com>
      Acked-by: NLiam Girdwood <liam.r.girdwood@linux.intel.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      36fba62c
    • P
      ASoC: Augment existing card DAPM routes in snd_soc_of_parse_audio_routing · f8781db8
      Peter Rosin 提交于
      If a snd_soc_card has any DAPM routes when it calls
      snd_soc_of_parse_audio_routing, those are clobbered without this change.
      Signed-off-by: NPeter Rosin <peda@axentia.se>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      f8781db8
  15. 04 12月, 2014 14 次提交