1. 07 Nov, 2012 4 commits
    • Adrian Knoth's avatar
      ALSA: hdspm - Fix sync check reporting on RME RayDAT · d1a3c98d
      Adrian Knoth authored
      The RayDAT reports the sync status of its inputs in consecutive bit
      positions, so all we do in hdspm_s1_sync_check is to iterate over idx:
      
          status = hdspm_read(hdspm, HDSPM_RD_STATUS_1);
      
          lock = (status & (0x1<<idx)) ? 1 : 0;
          sync = (status & (0x100<<idx)) ? 1 : 0;
      
      The index is given in kcontrol->private_value:
      
          HDSPM_SYNC_CHECK("WC SyncCheck", 0),
          HDSPM_SYNC_CHECK("AES SyncCheck", 1),
          HDSPM_SYNC_CHECK("SPDIF SyncCheck", 2),
          HDSPM_SYNC_CHECK("ADAT1 SyncCheck", 3),
          HDSPM_SYNC_CHECK("ADAT2 SyncCheck", 4),
          HDSPM_SYNC_CHECK("ADAT3 SyncCheck", 5),
          HDSPM_SYNC_CHECK("ADAT4 SyncCheck", 6),
          HDSPM_SYNC_CHECK("TCO SyncCheck", 7),
          HDSPM_SYNC_CHECK("SYNC IN SyncCheck", 8),
      
      The patch corrects the indicated sync flags by passing the proper index
      value to hdspm_s1_sync_check().
      Signed-off-by: default avatarAdrian Knoth <adi@drcomp.erfurt.thur.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      d1a3c98d
    • Takashi Iwai's avatar
      ALSA: hda - Add pin fixups for ASUS G75 · d5266125
      Takashi Iwai authored
      To parse properly the subwoofer outputs on ASUS G75 laptop with VT1802
      codec, correct the default configurations of speaker pins 0x24 and
      0x33.
      Reported-by: default avatarMassimo Del Fedele <max@veneto.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      d5266125
    • Takashi Iwai's avatar
      ALSA: hda - Fix invalid connections in VT1802 codec · ef4da458
      Takashi Iwai authored
      VT1802 codec provides the invalid connection lists of NID 0x24 and
      0x33 containing the routes to a non-exist widget 0x3e.  This confuses
      the auto-parser.  Fix it up in the driver by overriding these
      connections.
      Reported-by: default avatarMassimo Del Fedele <max@veneto.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      ef4da458
    • Takashi Iwai's avatar
      ALSA: hda - Fix empty DAC filling in patch_via.c · 5b376195
      Takashi Iwai authored
      In via_auto_fill_adc_nids(), the parser tries to fill dac_nids[] at
      the point of the current line-out (i).  When no valid path is found
      for this output, this results in dac = 0, thus it creates a hole in
      dac_nids[].  This confuses is_empty_dac() and trims the detected DAC
      in later reference.
      
      This patch fixes the bug by appending DAC properly to dac_nids[] in
      via_auto_fill_adc_nids().
      Reported-by: default avatarMassimo Del Fedele <max@veneto.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      5b376195
  2. 05 Nov, 2012 5 commits
  3. 04 Nov, 2012 2 commits
  4. 31 Oct, 2012 1 commit
  5. 30 Oct, 2012 6 commits
  6. 28 Oct, 2012 1 commit
  7. 27 Oct, 2012 2 commits
  8. 26 Oct, 2012 1 commit
  9. 25 Oct, 2012 2 commits
  10. 24 Oct, 2012 1 commit
  11. 22 Oct, 2012 1 commit
  12. 21 Oct, 2012 1 commit
    • Julia Lawall's avatar
      ALSA: sound/isa/opti9xx/miro.c: eliminate possible double free · edb66893
      Julia Lawall authored
      snd_miro_probe is a static function that is only called twice in the file
      that defines it.  At each call site, its argument is freed using
      snd_card_free.  Thus, there is no need for snd_miro_probe to call
      snd_card_free on its argument on any of its error exit paths.
      
      Because snd_card_free both reads the fields of its argument and kfrees its
      argments, the results of the second snd_card_free should be unpredictable.
      
      A simplified version of the semantic match that finds this problem is as
      follows: (http://coccinelle.lip6.fr/)
      
      // <smpl>
      @r@
      identifier f,free,a;
      parameter list[n] ps;
      type T;
      expression e;
      @@
      
      f(ps,T a,...) {
        ... when any
            when != a = e
        if(...) { ... free(a); ... return ...; }
        ... when any
      }
      
      @@
      identifier r.f,r.free;
      expression x,a;
      expression list[r.n] xs;
      @@
      
      * x = f(xs,a,...);
        if (...) { ... free(a); ... return ...; }
      // </smpl>
      Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      edb66893
  13. 20 Oct, 2012 13 commits