1. 15 1月, 2017 1 次提交
    • T
      ALSA: hda - Make single_cmd option to stop the fallback mechanism · 41438f13
      Takashi Iwai 提交于
      HD-audio driver has a mechanism to fall back to the single cmd mode as
      a last resort if the CORB/RIRB communication goes wrong even after
      switching to the polling mode.  The switching has worked in the past
      well, but Enrico Mioso reported that his system crashes when this
      happens.
      
      Although the actual cause of the crash isn't still fully analyzed yet,
      it'd be in anyway good to provide an option to turn off the fallback
      mode.  Now this patch extends the behavior of the existing single_cmd
      option for that.  Namely,
      
      - The option is changed from bool to bint.
      - As default, it is the mode allowing the fallback to single cmd.
      - Once when either true/false value is given to the option, the driver
        explicitly turns on/off the single cmd mode, but without the
        fallback.
      
      That is, if you want to disable the fallback, just pass single_cmd=0
      option.  Passing single_cmd=1 will keep working like before.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      41438f13
  2. 14 1月, 2017 1 次提交
  3. 12 1月, 2017 8 次提交
  4. 05 1月, 2017 8 次提交
  5. 04 1月, 2017 2 次提交
    • T
      ALSA: hda - Fix deadlock of controller device lock at unbinding · ab949d51
      Takashi Iwai 提交于
      Imre Deak reported a deadlock of HD-audio driver at unbinding while
      it's still in probing.  Since we probe the codecs asynchronously in a
      work, the codec driver probe may still be kicked off while the
      controller itself is being unbound.  And, azx_remove() tries to
      process all pending tasks via cancel_work_sync() for fixing the other
      races (see commit [0b8c8219: ALSA: hda - Cancel probe work instead
      of flush at remove]), now we may meet a bizarre deadlock:
      
      Unbind snd_hda_intel via sysfs:
        device_release_driver() ->
          device_lock(snd_hda_intel) ->
            azx_remove() ->
              cancel_work_sync(azx_probe_work)
      
      azx_probe_work():
        codec driver probe() ->
           __driver_attach() ->
             device_lock(snd_hda_intel)
      
      This deadlock is caused by the fact that both device_release_driver()
      and driver_probe_device() take both the device and its parent locks at
      the same time.  The codec device sets the controller device as its
      parent, and this lock is taken before the probe() callback is called,
      while the controller remove() callback gets called also with the same
      lock.
      
      In this patch, as an ugly workaround, we unlock the controller device
      temporarily during cancel_work_sync() call.  The race against another
      bind call should be still suppressed by the parent's device lock.
      Reported-by: NImre Deak <imre.deak@intel.com>
      Fixes: 0b8c8219 ("ALSA: hda - Cancel probe work instead of flush at remove")
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ab949d51
    • K
      ALSA: hda/realtek - Add new codec ID ALC299 · 28f1f9b2
      Kailang Yang 提交于
      ALC299 was similar as ALC225.
      Add headset support for ALC299.
      ALC3271 was for Dell rename.
      Signed-off-by: NKailang Yang <kailang@realtek.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      28f1f9b2
  6. 03 1月, 2017 5 次提交
    • T
      ALSA: dice: ensure transmission speed for transmitted packets · b0e159fe
      Takashi Sakamoto 提交于
      As of kernel 4.10, ALSA dice driver is expected to be used in default
      speed. In most cases, it's S400. While, IEEE 1394 specification describes
      the other speed such as S800.
      
      According to 'TCD30XX User Guide', its link layer controller supports
      several transmission speed up to S800[0]. In Dice software interface,
      transmission speed in output direction can be configured by asynchronous
      transaction to 'TX_SPEED' offset in its address space. S800 may be
      available.
      
      This commit improves configuration of transmission unit before starting
      packet streaming for this purpose. The value of 'max_speed' in 'fw_device'
      data structure has available maximum speed decided in bus arbitration,
      thus it's within capacity of the unit.
      
      [0] TCD3xx User Guide - TCAT 1394 LLC, Revision 0.9.0-41360 (TC Applied Technologies, May 6 2015)
      http://www.tctechnologies.tc/index.php/support/support-hardware/dice-iii-detailed-documentationSigned-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      b0e159fe
    • T
      ALSA: firewire-lib: change structure member with proper type · 6b7e95d1
      Takashi Sakamoto 提交于
      The 'amdtp_stream' structure is initialized by a call of
      'amdtp_stream_init()'. Although a parameter of this function is for bit
      flags of packet attributes, its type is enumerator.
      
      This commit changes the type so that it's proper for a bit flags.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      6b7e95d1
    • T
      ALSA: firewire-tascam: Fix to handle error from initialization of stream data · 6a2a2f45
      Takashi Sakamoto 提交于
      This module has a bug not to return error code in a case that data
      structure for transmitted packets fails to be initialized.
      
      This commit fixes the bug.
      
      Fixes: 35efa5c4 ("ALSA: firewire-tascam: add streaming functionality")
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      6a2a2f45
    • T
      ALSA: fireworks: fix asymmetric API call at unit removal · e2eb31d7
      Takashi Sakamoto 提交于
      ALSA fireworks driver has a bug not to call an API to destroy
      'cmp_connection' structure for input direction. Currently this causes no
      issues because it just destroys 'mutex' structure, while it's better to
      fix it for future work.
      
      Fix: d23c2cc4 ("ALSA: fireworks/bebob/dice/oxfw: allow stream destructor after releasing runtime")
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      e2eb31d7
    • T
      ALSA: oxfw: add support for Mackie Onyx 1640i · 03abd33a
      Takashi Sakamoto 提交于
      As of kernel 4.10,  ALSA OXFW driver has no entry for Onyx 1640i produced
      by Mackie (Loud Technologies). This commit supplement it.
      
      I note that there're two models produced by Mackie (Loud Technologies),
      which have the same name 'Onyx 1640i'. The former model based on OXFW970,
      the latter model based on Dice. This is probably due to low quality of
      communication of OXFW series.
      
      Additionally, the tester reports his or her experiences to get unexpected
      result at higher sampling transmission frequency as 88.2/96.0 kHz. We
      didn't have further investigation yet[0].
      
      $ ./linux-firewire-utils/src/crpp < config_rom
                     ROM header and bus information block
                     -----------------------------------------------------------------
      400  042525ce  bus_info_length 4, crc_length 37, crc 9678
      404  31333934  bus_name "1394"
      408  20ff5003  irmc 0, cmc 0, isc 1, bmc 0, cyc_clk_acc 255, max_rec 5 (64)
      40c  000ff205  company_id 000ff2     |
      410  00000fcf  device_id 0500000fcf  | EUI-64 000ff20500000fcf
      
                     root directory
                     -----------------------------------------------------------------
      414  0006c1b7  directory_length 6, crc 49591
      418  03000ff2  vendor
      41c  8100000a  --> descriptor leaf at 444
      420  17001640  model
      424  81000011  --> descriptor leaf at 468
      428  0c0083c0  node capabilities per IEEE 1394
      42c  d1000001  --> unit directory at 430
      
                     unit directory at 430
                     -----------------------------------------------------------------
      430  00040b97  directory_length 4, crc 2967
      434  1200a02d  specifier id: 1394 TA
      438  13010001  version: AV/C
      43c  17001640  model
      440  81000010  --> descriptor leaf at 480
      
                     descriptor leaf at 444
                     -----------------------------------------------------------------
      444  0008a886  leaf_length 8, crc 43142
      448  00000000  textual descriptor
      44c  00000000  minimal ASCII
      450  4c6f7564  "Loud"
      454  20546563  " Tec"
      458  686e6f6c  "hnol"
      45c  6f676965  "ogie"
      460  7320496e  "s In"
      464  632e0000  "c."
      
                     descriptor leaf at 468
                     -----------------------------------------------------------------
      468  00059fcf  leaf_length 5, crc 40911
      46c  00000000  textual descriptor
      470  00000000  minimal ASCII
      474  4f6e7978  "Onyx"
      478  20313634  " 164"
      47c  30690000  "0i"
      
                     descriptor leaf at 480
                     -----------------------------------------------------------------
      480  00059fcf  leaf_length 5, crc 40911
      484  00000000  textual descriptor
      488  00000000  minimal ASCII
      48c  4f6e7978  "Onyx"
      490  20313634  " 164"
      494  30690000  "0i"
      
      [0]: [FFADO-user] Mackie 1640i issues (finer details)
      https://sourceforge.net/p/ffado/mailman/message/35229260/Tested-by: NSeth O'Bannion <saobannion@gmail.com>
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      03abd33a
  7. 28 12月, 2016 6 次提交
  8. 26 12月, 2016 2 次提交
    • T
      ktime: Cleanup ktime_set() usage · 8b0e1953
      Thomas Gleixner 提交于
      ktime_set(S,N) was required for the timespec storage type and is still
      useful for situations where a Seconds and Nanoseconds part of a time value
      needs to be converted. For anything where the Seconds argument is 0, this
      is pointless and can be replaced with a simple assignment.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      8b0e1953
    • T
      ktime: Get rid of the union · 2456e855
      Thomas Gleixner 提交于
      ktime is a union because the initial implementation stored the time in
      scalar nanoseconds on 64 bit machine and in a endianess optimized timespec
      variant for 32bit machines. The Y2038 cleanup removed the timespec variant
      and switched everything to scalar nanoseconds. The union remained, but
      become completely pointless.
      
      Get rid of the union and just keep ktime_t as simple typedef of type s64.
      
      The conversion was done with coccinelle and some manual mopping up.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      2456e855
  9. 25 12月, 2016 2 次提交
  10. 22 12月, 2016 1 次提交
  11. 13 12月, 2016 4 次提交