10 Mar, 2011

1 commit

  • Since OSS driver creates the device entries for /dev/audio* and
    /dev/dspW* by itself without coping with sound_core, it leads to
    conflicts with others and let sysfs spewing warnings.

    This patch rewrites the registration part of OSS driver to use
    the standard method also for additional minor devices.

    Reported-by: Steven Rostedt (with ktest.pl)
    Tested-by: Steven Rostedt (with ktest.pl)
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

09 Mar, 2011

1 commit


08 Mar, 2011

3 commits

  • The return value of snd_ctl_hole_check() is used only to detect whether
    to continue the loop in snd_ctl_find_hole() or not, so we can simplify
    the code by changing this return type to a boolean. Also rename this
    function to better show what it actually does.

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     
  • The purpose of the snd_ctl_hole_check() function is to find conflicts
    between the numerical IDs of the new control and those of any existing
    controls. However, it would fail to detect an existing control whose
    count is smaller than the new control's count and whose interval of IDs
    is entirely contained in the interval of the new control's IDs.

    To fix this, use the correct formula to detect overlapping intervals,
    which happens to simplify the condition.

    This problem was not encountered so far because ALSA does not yet allow
    drivers to allocate specific control IDs.

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     
  • The current AES32 firmware revision ID is 234, however, a user confirmed
    that everything works fine with the previous revision, too.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     

28 Feb, 2011

5 commits

  • Depending on the model and the presence of a TCO module, the number of
    midi ports varies. Some have 1 port (MADIface), some have 2 (default),
    with TCO, there are 3.

    Don't hardcode the number of midi ports to initialize.

    This patch also fixes a boot lockup on MADIface.

    [Coding-style fixes by tiwai]

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Don't continue if we cannot detect the real card type, otherwise, all
    subsequent functions, especially strcpy(), would fail, leaving the whole
    driver in an unusable state.

    Without such a protection, dmesg would look like this:

    Pid: 1525, comm: modprobe Not tainted 2.6.38-rc6 #1 MSI MS-7250/MS-7250
    EIP: 0060:[] EFLAGS: 00010296 CPU: 1
    EIP is at strcpy+0x10/0x30
    EAX: f4d33e58 EBX: f5990800 ECX: f4d33e58 EDX: 00000000
    ESI: 00000000 EDI: f4d33e58 EBP: f5990930 ESP: f3dd3e0c
    DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
    f53d4204 00000000 f90bfc03 00000001 00000001 f3dd3e64 c10fedff f3dd3e7c
    f3d854e4 f53d4000 c10307b8 00000001 c10307b8 f5990860 c10307b8 00000001
    c10332e5 f59908bc c12f4339 f59908bc f5990860 c11ef207 f4d33e00 f53d4000
    [] ? snd_hdspm_probe+0x7e7/0x1166 [snd_hdspm]
    [] ? __sysfs_add_one+0x1f/0xf0
    [] ? get_parent_ip+0x8/0x20
    [] ? get_parent_ip+0x8/0x20
    [] ? get_parent_ip+0x8/0x20
    [] ? add_preempt_count+0xa5/0xd0
    [] ? _raw_spin_lock_irqsave+0x19/0x40
    [] ? pm_runtime_enable+0x17/0x80
    [] ? local_pci_probe+0x42/0xb0
    [] ? pci_device_probe+0x61/0x80
    [] ? driver_probe_device+0x77/0x180
    [] ? pci_match_device+0xa0/0xc0
    [] ? __driver_attach+0x79/0x80
    [] ? __driver_attach+0x0/0x80
    [] ? bus_for_each_dev+0x52/0x80
    [] ? driver_attach+0x16/0x20
    [] ? __driver_attach+0x0/0x80
    [] ? bus_add_driver+0xa1/0x220
    [] ? pci_device_remove+0x0/0xf0
    [] ? driver_register+0x63/0x120
    [] ? __pci_register_driver+0x3d/0xb0
    [] ? do_one_initcall+0x32/0x160
    [] ? alsa_card_hdspm_init+0x0/0x14 [snd_hdspm]
    [] ? sys_init_module+0x99/0x1e0
    [] ? sys_close+0x6d/0xc0
    [] ? sysenter_do_call+0x12/0x26
    ---[ end trace 239f0661c558378b ]---

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • In contrast to the PCIe version (RME AES), the PCI version (RME AES32)
    has a different firmware revision.

    This patch adds the missing PCI revision.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Allow input from microphone on remaining PowerBooks and iBooks with Tumbler.
    Tested only with PowerBook G4 Gigabit Ethernet (PowerBook3,3).

    [Fixed to use of_machine_is_compatible by tiwai]

    Signed-off-by: Risto Suominen
    Signed-off-by: Takashi Iwai

    Risto Suominen
     

27 Feb, 2011

1 commit


25 Feb, 2011

2 commits


23 Feb, 2011

8 commits

  • Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Original patch by Dan Rosenberg under commit
    e68d3b316ab7b02a074edc4f770e6a746390cb7d. I'm copying his text here:

    The SNDRV_HDSPM_IOCTL_GET_CONFIG_INFO ioctl in hdspm.c allow unprivileged
    users to read uninitialized kernel stack memory, because several fields
    of the hdspm_config struct declared on the stack are not altered
    or zeroed before being copied back to the user. This patch takes care
    of it.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Fredrik Lingvall has discovered wrong
    frequency and sync detection on AES32. According to him, the provided
    patch fixes these issues.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • In contrast to the RME MADI card, coax/optical selection on the MADIface
    is done via a physical switch located at the breakout box. Obviously,
    the driver cannot switch ports in software.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Caused by two typos, no output channel mappings were assigned for
    MADI/MADIface at double/quad speed.

    The channel mapping is indeed identical to the single speed mapping, the
    cards will simply use the first N channels.

    Signed-off-by: Florian Faber
    Signed-off-by: Fredrik Lingvall
    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Without calling an appropriate rule, AES/AES32 cards would announce a
    theoretical channel count of 64 (HDSPM_MAX_CHANNELS), leading to the
    already known bug:

    [37422.640481] ------------[ cut here ]------------
    [37422.640487] WARNING: at sound/pci/rme9652/hdspm.c:5449
    snd_hdspm_ioctl+0x18f/0x202 [snd_hdspm]()
    [37422.640489] Hardware name: PRIMERGY RX100 S6
    [37422.640490] BUG? (info->channel >= hdspm->max_channels_in)
    [37422.640492] Modules linked in: snd_hdspm snd_seq_midi ipmi_watchdog
    ipmi_poweroff ipmi_si ipmi_devintf ipmi_msghandler i2c_i801 e1000e
    snd_rawmidi power_meter [last unloaded: snd_hdspm]
    [37422.640501] Pid: 22231, comm: jackd Tainted: G D W
    2.6.36-gentoo-r5 #5
    [37422.640502] Call Trace:
    [37422.640508] [] warn_slowpath_common+0x80/0x98
    [37422.640511] [] warn_slowpath_fmt+0x41/0x43
    [37422.640514] [] ? get_parent_ip+0x11/0x42
    [37422.640518] [] snd_hdspm_ioctl+0x18f/0x202
    [snd_hdspm]
    [37422.640522] [] snd_pcm_channel_info+0x73/0x7c
    [37422.640525] [] snd_pcm_common_ioctl1+0x326/0xb01
    [37422.640527] [] ? get_parent_ip+0x11/0x42
    [37422.640531] [] ? __srcu_read_unlock+0x3b/0x59
    [37422.640533] [] snd_pcm_capture_ioctl1+0x20a/0x227
    [37422.640537] [] ? file_has_perm+0x90/0x9e
    [37422.640540] [] snd_pcm_capture_ioctl+0x2a/0x2e
    [37422.640543] [] do_vfs_ioctl+0x404/0x453
    [37422.640546] [] sys_ioctl+0x51/0x74
    [37422.640549] [] system_call_fastpath+0x16/0x1b
    [37422.640552] ---[ end trace 0cd919cd68118082 ]---

    We already have all the right values in place, we simply have to inform
    the upper layers about this restriction.

    Note that snd_hdspm_hw_rule_rate_out_channels and
    snd_hdspm_hw_rule_rate_in_channels must not be called on AES32, because
    the channel count is always 16, no matter of the samplerate in use.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • Only RayDAT and AIO provide sane buffer pointers that can be used with
    HDSPM_BufferPositionMask, on all other cards, this would result in a
    wrong HW pointer leading to xruns and these messages:

    [260808.916788] BUG: pcmC0D0p:0, pos = 2976, buffer size = 1024, period size = 512
    [260808.961124] BUG: pcmC0D0c:0, pos = 4944, buffer size = 1024, period size = 512

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • On RME AES and AES(32), none of the required information
    (max_channels_in, max_channels_out, channel mappings, port names) was
    set, leading to the BUG below.

    This patch adds the missing bits, thus fixing the bug.

    125.058768] ------------[ cut here ]------------
    [ 125.058773] WARNING: at sound/pci/rme9652/hdspm.c:5389
    snd_hdspm_ioctl+0x10c/0x1d8 [snd_hdspm]()
    [ 125.058775] Hardware name: PRIMERGY RX100 S6
    [ 125.058777] BUG? (info->channel >= hdspm->max_channels_out)
    [ 125.058778] Modules linked in: ipmi_watchdog ipmi_poweroff ipmi_si
    ipmi_devintf ipmi_msghandler snd_hdspm power_meter e1000e snd_rawmidi
    i2c_i801
    [ 125.058787] Pid: 3652, comm: audacity Tainted: G W
    2.6.36-gentoo-r5 #5
    [ 125.058788] Call Trace:
    [ 125.058792] [] warn_slowpath_common+0x80/0x98
    [ 125.058796] [] warn_slowpath_fmt+0x41/0x43
    [ 125.058800] [] snd_hdspm_ioctl+0x10c/0x1d8
    [snd_hdspm]
    [ 125.058803] [] snd_pcm_channel_info+0x73/0x7c
    [ 125.058806] [] snd_pcm_common_ioctl1+0x326/0xb01
    [ 125.058809] [] ? __do_fault+0x361/0x3a6
    [ 125.058812] [] snd_pcm_playback_ioctl1+0x20a/0x227
    [ 125.058815] [] ? file_has_perm+0x90/0x9e
    [ 125.058818] [] snd_pcm_playback_ioctl+0x2a/0x2e
    [ 125.058821] [] do_vfs_ioctl+0x404/0x453
    [ 125.058824] [] sys_ioctl+0x51/0x74
    [ 125.058827] [] system_call_fastpath+0x16/0x1b
    [ 125.058830] ---[ end trace 5bddb08e5d4cbeb1 ]---

    Signed-off-by: Adrian Knoth
    Signed-off-by: Florian Faber
    Signed-off-by: Fredrik Lingvall
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     

20 Feb, 2011

1 commit


19 Feb, 2011

2 commits

  • Make newly created AC97 emulation of azt3328 known to the AC97 layer
    side.
    - relocate common functions to the top (due to definition after use)
    - rename control names
    - adjust 3D settings to the card's custom layout of this register

    Signed-off-by: Andreas Mohr
    Signed-off-by: Takashi Iwai

    Andreas Mohr
     
  • Make use of the very flexible ALSA ac97 layer (hooks for custom I/O!)
    on this weird AC97 copycat hardware,
    via semi-extended I/O translation/emulation.

    Some 5kB binary/loaded size saved (well... additional huge AC97 module
    penalty not factored in, of course ;-P).
    Given that the driver previously had 20kB that's not bad,
    but the much more important thing is to have AC97 layer stress-tested
    with a thoroughly weird AC97 copycat (or, simply put, if it were not for
    this AC97 test aspect, this effort would merely have been a nut job ;).

    Signed-off-by: Andreas Mohr
    Signed-off-by: Takashi Iwai

    Andreas Mohr
     

18 Feb, 2011

1 commit


15 Feb, 2011

4 commits


11 Feb, 2011

11 commits