1. 22 12月, 2014 2 次提交
    • 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
    • L
      ASoC: dapm: Don't mark MICBIAS widgets as auto non-connected · 768c0564
      Lars-Peter Clausen 提交于
      The connected flag of a widget only affects widgets that are either a source
      or a sink. The MICBIAS widget is a simple pass-through widget though and
      hence its behavior is the same regardless of whether the connected flag is
      set or not.
      
      Hence there is not much point in trying to automatically mark MICBIAS
      widgets as non-connected, so just remove it.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      768c0564
  2. 19 12月, 2014 1 次提交
  3. 16 12月, 2014 2 次提交
  4. 13 12月, 2014 1 次提交
  5. 12 12月, 2014 1 次提交
  6. 10 12月, 2014 1 次提交
  7. 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
  8. 08 12月, 2014 3 次提交
  9. 07 12月, 2014 2 次提交
  10. 06 12月, 2014 1 次提交
  11. 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
  12. 04 12月, 2014 19 次提交