23 Feb, 2011

5 commits

  • 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
     

27 Jan, 2011

3 commits


02 Nov, 2010

1 commit

  • "gadget", "through", "command", "maintain", "maintain", "controller", "address",
    "between", "initiali[zs]e", "instead", "function", "select", "already",
    "equal", "access", "management", "hierarchy", "registration", "interest",
    "relative", "memory", "offset", "already",

    Signed-off-by: Uwe Kleine-König
    Signed-off-by: Jiri Kosina

    Uwe Kleine-König
     

25 Sep, 2010

1 commit

  • The SNDRV_HDSP_IOCTL_GET_CONFIG_INFO and
    SNDRV_HDSP_IOCTL_GET_CONFIG_INFO ioctls in hdspm.c and hdsp.c allow
    unprivileged users to read uninitialized kernel stack memory, because
    several fields of the hdsp{m}_config_info structs 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: Dan Rosenberg
    Cc:
    Signed-off-by: Takashi Iwai

    Dan Rosenberg
     

08 Mar, 2010

1 commit


09 Feb, 2010

2 commits

  • In particular, several occurances of funny versions of 'success',
    'unknown', 'therefore', 'acknowledge', 'argument', 'achieve', 'address',
    'beginning', 'desirable', 'separate' and 'necessary' are fixed.

    Signed-off-by: Daniel Mack
    Cc: Joe Perches
    Cc: Junio C Hamano
    Signed-off-by: Jiri Kosina

    Daniel Mack
     
  • Use DEFINE_PCI_DEVICE_TABLE() to make PCI device ids go to
    .devinit.rodata section, so they can be discarded in some cases,
    and make them const.

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Takashi Iwai

    Alexey Dobriyan
     

04 Dec, 2009

1 commit

  • That is "success", "unknown", "through", "performance", "[re|un]mapping"
    , "access", "default", "reasonable", "[con]currently", "temperature"
    , "channel", "[un]used", "application", "example","hierarchy", "therefore"
    , "[over|under]flow", "contiguous", "threshold", "enough" and others.

    Signed-off-by: André Goddard Rosa
    Signed-off-by: Jiri Kosina

    André Goddard Rosa
     

05 Jun, 2009

1 commit


24 Mar, 2009

1 commit


05 Feb, 2009

1 commit


12 Jan, 2009

1 commit


25 Dec, 2008

1 commit


18 Dec, 2008

1 commit


13 Nov, 2008

1 commit


25 Aug, 2008

1 commit


13 Aug, 2008

1 commit


24 Apr, 2008

2 commits

  • sound/pci/rme9652/hdspm.c has unusually large number of static inline
    functions - 22.

    I looked through them and some of them seem to be too big to warrant inlining.

    This patch removes "inline" from these static functions (regardless of number
    of callsites - gcc nowadays auto-inlines statics with one callsite).

    Size difference on 32bit x86:
    text data bss dec hex filename
    20437 2160 516 23113 5a49 linux-2.6-ALLYES/sound/pci/rme9652/hdspm.o
    18036 2160 516 20712 50e8 linux-2.6.inline-ALLYES/sound/pci/rme9652/hdspm.o

    [coding fix by Takashi Iwai ]

    Signed-off-by: Denys Vlasenko
    Signed-off-by: Takashi Iwai

    Denys Vlasenko
     
  • Just drop the returns.
    sound/pci/rme9652/hdspm.c:1031:3: warning: returning void-valued expression
    sound/pci/rme9652/hdspm.c:1033:3: warning: returning void-valued expression

    Signed-off-by: Harvey Harrison
    Signed-off-by: Takashi Iwai

    Harvey Harrison
     

01 Feb, 2008

2 commits

  • This header file exists only for some hacks to adapt alsa-driver
    tree. It's useless for building in the kernel. Let's move a few
    lines in it to sound/core.h and remove it.
    With this patch, sound/driver.h isn't removed but has just a single
    compile warning to include it. This should be really killed in
    future.

    Signed-off-by: Takashi Iwai
    Signed-off-by: Jaroslav Kysela

    Takashi Iwai
     
  • Signed-off-by: Joe Perches
    Signed-off-by: Takashi Iwai
    Signed-off-by: Jaroslav Kysela

    Joe Perches
     

16 Oct, 2007

3 commits


11 May, 2007

2 commits

  • The current MADI driver was found not to completely work, at least on recent
    MADI cards (rev 204), in particular at 96kHz. This patch solves this:
    * Add support of DDS feature
    * Channel map fixed
    * Channel/rate rules fixed
    * DMA allocation fixed (need to alloc for all channels and not only for the
    used ones)
    Full support for AES32 master mode was added:
    * Add support of DDS feature
    * Channel map fixed
    * Channel/rate rules fixed

    Signed-off-by: Remy Bruno
    Signed-off-by: Takashi Iwai
    Signed-off-by: Jaroslav Kysela

    Remy Bruno
     
  • Added a new macro snd_pcm_group_for_each_entry() just for code cleanup.
    Old macros, snd_pcm_group_for_each() and snd_pcm_group_substream_entry(),
    are removed.

    Signed-off-by: Takashi Iwai
    Signed-off-by: Jaroslav Kysela

    Takashi Iwai
     

06 Mar, 2007

1 commit


09 Feb, 2007

2 commits

  • sound/pci/rme9652/hdspm.c: In function 'snd_hdspm_hw_params':
    sound/pci/rme9652/hdspm.c:3681: warning: format '%08X' expects type 'unsigned int', but argument 4 has type 'unsigned char *'
    sound/pci/rme9652/hdspm.c:3692: warning: format '%08X' expects type 'unsigned int', but argument 4 has type 'unsigned char *'

    Signed-off-by: Takashi Iwai
    Signed-off-by: Jaroslav Kysela

    Takashi Iwai
     
  • Add support for AES32. Difference between MADI and AES32 is done
    through revision. Master support is not finished for now (RME so-called DDS
    feature is not supported yet)

    Signed-off-by: Remy Bruno
    Signed-off-by: Takashi Iwai
    Signed-off-by: Jaroslav Kysela

    Remy Bruno
     

20 Dec, 2006

1 commit

  • Fix IRQ flags for PCI devices.
    The shared IRQs for PCI devices shouldn't be allocated with
    IRQF_DISABLED. Also, when MSI is enabled, IRQF_SHARED shouldn't
    be used.
    The patch removes unnecessary cast in request_irq and free_irq,
    too.

    Signed-off-by: Takashi Iwai
    Signed-off-by: Jaroslav Kysela

    Takashi Iwai
     

05 Oct, 2006

1 commit

  • Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
    of passing regs around manually through all ~1800 interrupt handlers in the
    Linux kernel.

    The regs pointer is used in few places, but it potentially costs both stack
    space and code to pass it around. On the FRV arch, removing the regs parameter
    from all the genirq function results in a 20% speed up of the IRQ exit path
    (ie: from leaving timer_interrupt() to leaving do_IRQ()).

    Where appropriate, an arch may override the generic storage facility and do
    something different with the variable. On FRV, for instance, the address is
    maintained in GR28 at all times inside the kernel as part of general exception
    handling.

    Having looked over the code, it appears that the parameter may be handed down
    through up to twenty or so layers of functions. Consider a USB character
    device attached to a USB hub, attached to a USB controller that posts its
    interrupts through a cascaded auxiliary interrupt controller. A character
    device driver may want to pass regs to the sysrq handler through the input
    layer which adds another few layers of parameter passing.

    I've build this code with allyesconfig for x86_64 and i386. I've runtested the
    main part of the code on FRV and i386, though I can't test most of the drivers.
    I've also done partial conversion for powerpc and MIPS - these at least compile
    with minimal configurations.

    This will affect all archs. Mostly the changes should be relatively easy.
    Take do_IRQ(), store the regs pointer at the beginning, saving the old one:

    struct pt_regs *old_regs = set_irq_regs(regs);

    And put the old one back at the end:

    set_irq_regs(old_regs);

    Don't pass regs through to generic_handle_irq() or __do_IRQ().

    In timer_interrupt(), this sort of change will be necessary:

    - update_process_times(user_mode(regs));
    - profile_tick(CPU_PROFILING, regs);
    + update_process_times(user_mode(get_irq_regs()));
    + profile_tick(CPU_PROFILING);

    I'd like to move update_process_times()'s use of get_irq_regs() into itself,
    except that i386, alone of the archs, uses something other than user_mode().

    Some notes on the interrupt handling in the drivers:

    (*) input_dev() is now gone entirely. The regs pointer is no longer stored in
    the input_dev struct.

    (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does
    something different depending on whether it's been supplied with a regs
    pointer or not.

    (*) Various IRQ handler function pointers have been moved to type
    irq_handler_t.

    Signed-Off-By: David Howells
    (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)

    David Howells
     

03 Jul, 2006

1 commit


23 Jun, 2006

1 commit


28 Apr, 2006

1 commit