1. 10 12月, 2014 12 次提交
    • T
      ALSA: oxfw: Add support AMDTP in-stream · b0ac0009
      Takashi Sakamoto 提交于
      Previous commit adds support for some devices which can capture PCM samples.
      These devices transmit AMDTP stream in non-blocking mode. This commit adds
      functionality to handle AMDTP incoming stream.
      
      OXFW seems to have two quirks:
       - Transmits packets with non-zero dbc in its beginning
       - Transmits packets with wrong values in syt field
      
      For the first quirk, this commit adds CIP_SKIP_INIT_DBC_CHECK flag for
      incoming stream to skip first check of dbc.
      
      For the second quirk, this commit doesn't add duplex stream which
      Fireworks/BeBoB drivers use. So OXFW driver generates syt value for outgoing
      stream.
      
      Here are examples of a sequence of packets transmitted by Behringer F-Control
      Audio 202. There are differences between sequences of syt value when OXFW
      driver transfers outgoing stream or not.
      
      When driver gives no outgoing stream:
      Index   Payload CIP_Header_0    CIP_Header_1
      38      14      00020092        900103D1
      39      12      00020098        900102FF
      40      12      0002009D        9001027F
      41      14      000200A2        90010396
      42      14      000200A8        900102E8
      43      12      000200AE        90010219
      44      14      000200B3        90010331
      45      12      000200B9        9001025F
      46      14      000200BE        90010376
      47      12      000200C4        900102A1
      00      12      000200C9        9001023E
      01      14      000200CE        90010358
      02      12      000200D4        90010289
      03      16      000200D9        900103A3
      04      12      000200E0        900102DD
      05      14      000200E5        900103F1
      06      12      000200EB        90010335
      07      12      000200F0        90010263
      08      14      000200F5        9001037C
      09      12      000200FB        900102AE
      
      When driver gives outgoing stream:
      Index   Payload CIP_Header_0    CIP_Header_1
      38      12      000200BD        900104A8
      39      14      000200C2        900104A8
      40      12      000200C8        900104AC
      41      14      000200CD        900104A9
      42      12      000200D3        900104B1
      43      14      000200D8        900104A8
      44      12      000200DE        900104AA
      45      14      000200E3        900104A9
      46      14      000200E9        900104AE
      47      12      000200EF        900104A8
      00      14      000200F4        900104AD
      01      12      000200FA        900104A7
      02      14      000200FF        900104A9
      03      12      00020005        900104A9
      04      14      0002000A        900104B1
      05      12      00020010        900104AA
      06      14      00020015        900104AD
      07      12      0002001B        900104A7
      08      14      00020020        900104AC
      09      12      00020026        900104A7
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      b0ac0009
    • T
      ALSA: oxfw: Add support for Behringer/Mackie devices · ec4dba50
      Takashi Sakamoto 提交于
      Some devices produced by Behringer/Mackie are based on OXFW970/971. This
      commit adds support for them. Additionally, this commit changes the way to
      name card with some information in config rom.
      
      Ids of some Mackie(Loud) models are not identified, therefore this commit
      applies name detection for these models.
      
      The devices support capture/playback of PCM-samples and some of them
      supports capture/playback of MIDI messages. These functionalities are
      implemented by followed commits.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ec4dba50
    • T
      ALSA: oxfw: Change the way to start stream · f3699e2c
      Takashi Sakamoto 提交于
      In past commit, this driver can keep stream formations for each sampling
      rate. So its stream functionality can decide stream formations with given
      some parameters.
      
      This commit moves related codes from PCM functionality to stream
      functionality. Furthermore, to set stream format correctly, this commit
      uses AV/C Stream Format Information command instead of AV/C Input/Output
      Plug Signal Format command.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      f3699e2c
    • T
      ALSA: oxfw: Add proc interface for debugging purpose · 3c96101f
      Takashi Sakamoto 提交于
      This commit adds proc interface to get information about stream
      formation. This commit also adds snd_oxfw_stream_get_current_formation()
      to get current stream formation.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      3c96101f
    • T
      ALSA: oxfw: Change the way to make PCM rules/constraints · 5cd1d3f4
      Takashi Sakamoto 提交于
      In previous commit, this driver can get to know stream formations at
      each supported sampling rates. This commit uses it to make PCM
      rules/constraints and obsoletes hard-coded rules/constraints.
      
      For this purpose, this commit adds 'struct snd_oxfw_stream_formation' and
      snd_oxfw_stream_parse_format() to parse data channel formation of data
      block.
      
      According to datasheet of OXFW970/971, they support 32.0kHz to 196.0kHz.
      
      As long as developers investigate, some devices are confirmed to have
      several formats for the same sampling rate.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      5cd1d3f4
    • T
      ALSA: oxfw: Add support for AV/C stream format command to get/set supported stream formation · 5b59d809
      Takashi Sakamoto 提交于
      OXFW970/971 may supports AV/C Stream Format Information Specification 1.1
      Working Draft (Apr 2005, 1394TA). By using this command, drivers can get to know
      stream formations which device supports.
      
      This commit adds 'EXTENDED STREAM FORMAT INFORMATION' command. This command
      has two subfunctions, 'SINGLE' and 'LIST'. Drivers can use 'SINGLE' subfunction
      to know/set current formation of AMDTP stream, Drivers can use 'LIST'
      subfunction to know an available formation of AMDTP stream in a certain sampling
      rate.
      
      But some devices don't implement the 'LIST' subfunction. So this commit uses
      an assumption that 'if they don't implement it, they don't change stream
      formation depending on current each sampling rate'. With this assumption, this
      driver generates formations for such devices by:
       1.getting current formation by SINGLE subfunction
       2.getting supported sampling rates
       3.applying current formation for all of supported sampling rates
      
      Followed commit implements a parser of this format information.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      5b59d809
    • T
      ALSA: oxfw: Change the way to name card · fec7b753
      Takashi Sakamoto 提交于
      This is a preparation for more models. In following commit, members
      of 'struct snd_card' related to name becomes to consists of vendor and
      model strings in device's config-rom.
      
      Current supported devices also has strings in their config rom, but the
      strings are too long to name sound card, thus this driver still keep
      hard-coded vendor and model names for them.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      fec7b753
    • T
      ALSA: dice: Add support for MIDI capture/playback · a113ff88
      Takashi Sakamoto 提交于
      This commit adds a support for MIDI capture/playback
      
      When MIDI substrams already start streaming and PCM substreams are going to
      join at different sampling rate, streams are stopped once. Then sampling rate
      is changed and streams are restarted.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      a113ff88
    • T
      ALSA: dice: Add support for capturing PCM samples · 69dcf3e4
      Takashi Sakamoto 提交于
      This commit adds a support for capturing PCM samples.
      
      When opposite PCM substream is already running, available sampling rate is
      limited at current one.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      69dcf3e4
    • T
      ALSA: dice: Support for non SYT-Match sampling clock source mode · 8fc01fc0
      Takashi Sakamoto 提交于
      This commit allows this driver to handle devices with non SYT-Match
      sampling clock source.
      
      When sampling clock source is SYT-Match mode, devices handle
      'presentation timestamp' in received packets and generates sampling clock
      according to the information. In this case, driver is synchronization master
      and must transfer correct value in SYT field of each packets in outgoing
      stream, then the outgoing stream is a master stream.
      
      On the other hand, non SYT-Match mode, devices do this. So drivers must pick
      up the value in SYT field of incoming packets and use the value for outgoing
      stream. Currently firewire-lib module achieve this work.
      
      Furthermore, without SYT-Match and internal clock source, the sampling rate
      should be fixed for the other devices connected to the handled device. This
      commit add a restriction of sampling rate at this situation.
      
      With these implementations, this driver has no need to set clock source.
      This commit remove set function.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      8fc01fc0
    • T
      ALSA: dice: Add support for duplex streams with synchronization · 9a02843c
      Takashi Sakamoto 提交于
      This commit adds support for AMDTP in-stream. As a result, Dice driver
      supports full duplex streams with synchronization.
      
      AMDTP can transfer timestamps in its packets. By handling the timestamp,
      devices can synchronize to the other devices or drivers on the same bus.
      
      When Dice chipset is 'enabled', it starts streams with correct settings.
      This 'enable' register is global, thus, when a stream is started to run,
      an opposite stream can't start unless turning off 'enable'. Therefore
      a pair of streams must be running. This causes a loss of CPU usage when
      single stream is needed for neither playbacking or capturing.
      
      This commit assumes that playback-only models also have a functionality
      to transmit stream for delivering timestamps.
      
      Currently, sampling clock source is restricted to SYT-Match mode. This is
      improved in followed commit. I note that at SYT-Match mode, Dice can select
      from 4 streams for synchronization but this driver uses the 1st stream only
      for simplicity.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      9a02843c
    • T
      ALSA: dice: Change the way to start stream · 288a8d0c
      Takashi Sakamoto 提交于
      Streaming functionality can start streams when rate is given but currently
      some codes are in PCM functionality.
      
      This commit changes the way to start stream and add some arrangement
      to make it easy to understand the way.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      288a8d0c
  2. 08 12月, 2014 2 次提交
    • M
      ASoC: wm5102: Initialize dac_comp_lock mutex · 47370022
      Mark Brown 提交于
      Commit d74bcaae (ASoC: wm5102: Move ultrasonic response settings
      lock to the driver level) created a driver local mutex for protecting
      the ultrasonic response settings but neglected to initialize that mutex,
      causing loud complaints from lockep and potential runtime failures. Fix
      this by initializing the mutex.
      Signed-off-by: NMark Brown <broonie@kernel.org>
      Acked-by: NCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
      47370022
    • M
      ASoC: samsung: Fix non-DT use of I2S controller · 3f024980
      Mark Brown 提交于
      The changes in commit a5a56871 (ASoC: samsung: add support for exynos7
      I2S controller) introduce a new variant_regs structure in the driver data
      which is now mandatory for accessing registers. Unfortunately this is only
      hooked up for DT platforms so non-DT platforms like my primary development
      platform for audio are broken by this change and crash on boot.
      
      Since the only non-DT user of these device is s3c64xx fix this by making
      the standard samsung-i2s device be of type I2Sv3 and add a new I2Sv4 name
      to the platform data section, currently using the I2Sv5 information which
      should be about right.
      Signed-off-by: NMark Brown <broonie@kernel.org>
      3f024980
  3. 07 12月, 2014 3 次提交
    • K
      ASoC: rsnd: rename SSI function name of PIO · 6cfad789
      Kuninori Morimoto 提交于
      Current R-Car sound SSI PIO/DMA mode are using interrupt.
      it is no longer "xxx_pio_xxx", rename it.
      Signed-off-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      6cfad789
    • K
      ASoC: rsnd: add salvage support for under/over flow error on SSI · 4e7d606c
      Kuninori Morimoto 提交于
      L/R channel will be switched if under/over flow error happen on
      Renesas R-Car sound device by the HW bugs. Then, HW restart is required
      for salvage. This patch add salvage support for SSI.
      Signed-off-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      4e7d606c
    • T
      ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery · 66139a48
      Takashi Iwai 提交于
      In snd_usbmidi_error_timer(), the driver tries to resubmit MIDI input
      URBs to reactivate the MIDI stream, but this causes the error when
      some of URBs are still pending like:
      
       WARNING: CPU: 0 PID: 0 at ../drivers/usb/core/urb.c:339 usb_submit_urb+0x5f/0x70()
       URB ef705c40 submitted while active
       CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.16.6-2-desktop #1
       Hardware name: FOXCONN TPS01/TPS01, BIOS 080015  03/23/2010
        c0984bfa f4009ed4 c078deaf f4009ee4 c024c884 c09a135c f4009f00 00000000
        c0984bfa 00000153 c061ac4f c061ac4f 00000009 00000001 ef705c40 e854d1c0
        f4009eec c024c8d3 00000009 f4009ee4 c09a135c f4009f00 f4009f04 c061ac4f
       Call Trace:
        [<c0205df6>] try_stack_unwind+0x156/0x170
        [<c020482a>] dump_trace+0x5a/0x1b0
        [<c0205e56>] show_trace_log_lvl+0x46/0x50
        [<c02049d1>] show_stack_log_lvl+0x51/0xe0
        [<c0205eb7>] show_stack+0x27/0x50
        [<c078deaf>] dump_stack+0x45/0x65
        [<c024c884>] warn_slowpath_common+0x84/0xa0
        [<c024c8d3>] warn_slowpath_fmt+0x33/0x40
        [<c061ac4f>] usb_submit_urb+0x5f/0x70
        [<f7974104>] snd_usbmidi_submit_urb+0x14/0x60 [snd_usbmidi_lib]
        [<f797483a>] snd_usbmidi_error_timer+0x6a/0xa0 [snd_usbmidi_lib]
        [<c02570c0>] call_timer_fn+0x30/0x130
        [<c0257442>] run_timer_softirq+0x1c2/0x260
        [<c0251493>] __do_softirq+0xc3/0x270
        [<c0204732>] do_softirq_own_stack+0x22/0x30
        [<c025186d>] irq_exit+0x8d/0xa0
        [<c0795228>] smp_apic_timer_interrupt+0x38/0x50
        [<c0794a3c>] apic_timer_interrupt+0x34/0x3c
        [<c0673d9e>] cpuidle_enter_state+0x3e/0xd0
        [<c028bb8d>] cpu_idle_loop+0x29d/0x3e0
        [<c028bd23>] cpu_startup_entry+0x53/0x60
        [<c0bfac1e>] start_kernel+0x415/0x41a
      
      For avoiding these errors, check the pending URBs and skip
      resubmitting such ones.
      Reported-and-tested-by: NStefan Seyfried <stefan.seyfried@googlemail.com>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      66139a48
  4. 06 12月, 2014 5 次提交
    • M
      ASoC: samsung: Fix error handling for clock lookup · ba56447c
      Mark Brown 提交于
      Return the error code we got from clk_get() and check to make sure that
      clk_prepare_enable() worked.
      Signed-off-by: NMark Brown <broonie@kernel.org>
      ba56447c
    • A
      ALSA: atmel_abdac: Add missing clock prepare · 04818454
      Alexander Stein 提交于
      Clocks must be prepared before enabling them. Do this in one step.
      Replace clk_enable with clk_prepare_enable and clk_disable with
      clk_disable_unprepare.
      Signed-off-by: NAlexander Stein <alexanders83@web.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      04818454
    • A
      ALSA: sound/atmel/ac97c.c: Add missing clock prepare · 1132015b
      Alexander Stein 提交于
      Clocks must be prepared before enabling them. Do this in one step.
      Replace clk_enable with clk_prepare_enable and clk_disable with
      clk_disable_unprepare. This fixes the following warning:
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:895 __clk_enable+0x24/0x9c()
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper Tainted: G        W      3.18.0-rc7+ #245
      [<c000dce8>] (unwind_backtrace) from [<c000bcf0>] (show_stack+0x10/0x14)
      [<c000bcf0>] (show_stack) from [<c001664c>] (warn_slowpath_common+0x60/0x80)
      [<c001664c>] (warn_slowpath_common) from [<c00166fc>] (warn_slowpath_null+0x18/0x20)
      [<c00166fc>] (warn_slowpath_null) from [<c02fd7ac>] (__clk_enable+0x24/0x9c)
      [<c02fd7ac>] (__clk_enable) from [<c02fdbb4>] (clk_enable+0x18/0x2c)
      [<c02fdbb4>] (clk_enable) from [<c0322688>] (atmel_ac97c_probe+0x154/0x694)
      [<c0322688>] (atmel_ac97c_probe) from [<c0235e08>] (platform_drv_probe+0x48/0x94)
      [<c0235e08>] (platform_drv_probe) from [<c02345f8>] (driver_probe_device+0x138/0x350)
      [<c02345f8>] (driver_probe_device) from [<c02348bc>] (__driver_attach+0x68/0x8c)
      [<c02348bc>] (__driver_attach) from [<c0232bd0>] (bus_for_each_dev+0x70/0x84)
      [<c0232bd0>] (bus_for_each_dev) from [<c0233cd8>] (bus_add_driver+0xfc/0x1f8)
      [<c0233cd8>] (bus_add_driver) from [<c0234f0c>] (driver_register+0x9c/0xe0)
      [<c0234f0c>] (driver_register) from [<c0008ac4>] (do_one_initcall+0x110/0x1c8)
      [<c0008ac4>] (do_one_initcall) from [<c053cd58>] (kernel_init_freeable+0xf8/0x1b8)
      [<c053cd58>] (kernel_init_freeable) from [<c03c0414>] (kernel_init+0x8/0xe4)
      [<c03c0414>] (kernel_init) from [<c00096d0>] (ret_from_fork+0x14/0x24)
      ---[ end trace cb88537fdc8fa201 ]---
      atmel_ac97c fffa0000.sound: AC'97 0 does not respond - RESET
      atmel_ac97c fffa0000.sound: AC'97 0 access is not valid [0xffffffff], removing mixer.
      ------------[ cut here ]------------
      Signed-off-by: NAlexander Stein <alexanders83@web.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      1132015b
    • T
      ALSA: hda - Fix built-in mic at resume on Lenovo Ideapad S210 · fedb2245
      Takashi Iwai 提交于
      The built-in mic boost volume gets almost muted after suspend/resume
      on Lenovo Ideapad S210.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=88121Reported-and-tested-by: NRoman Kagan <rkagan@mail.ru>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      fedb2245
    • A
      ALSA: sound/atmel/ac97c.c: Fix device index for pcm · ca460cc2
      Alexander Stein 提交于
      chip->pdev->id is -1 by default. This is an invalid index resulting in
      device file names like /dev/snd/pcmC0D-1p.
      Signed-off-by: NAlexander Stein <alexanders83@web.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ca460cc2
  5. 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
  6. 04 12月, 2014 13 次提交