19 Dec, 2011

1 commit

  • module_param(bool) used to counter-intuitively take an int. In
    fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
    trick.

    It's time to remove the int/unsigned int option. For this version
    it'll simply give a warning, but it'll break next kernel version.

    Signed-off-by: Rusty Russell
    Signed-off-by: Takashi Iwai

    Rusty Russell
     

01 Nov, 2011

1 commit


23 Sep, 2011

1 commit


22 Sep, 2011

3 commits

  • Takashi Iwai
     
  • Commit 9676001559fce06e37c7dc230ab275f605556176
    ("ALSA: fm801: add error handling if auto-detect fails") seems to
    break systems that were previously working without a tuner.

    As a bonus, this should fix init and cleanup for the case where the
    tuner is explicitly disabled.

    Reported-and-tested-by: Hor Jiun Shyong
    References: http://bugs.debian.org/641946
    Signed-off-by: Ben Hutchings
    Cc: stable@kernel.org [v3.0+]
    Signed-off-by: Takashi Iwai

    Ben Hutchings
     
  • Commit 9676001559fce06e37c7dc230ab275f605556176
    ("ALSA: fm801: add error handling if auto-detect fails") added
    incorrect error handling.

    Once we have successfully called snd_device_new(), the cleanup
    function fm801_free() will automatically be called by snd_card_free()
    and we must *not* also call fm801_free() directly.

    Reported-by: Hor Jiun Shyong
    References: http://bugs.debian.org/641946
    Signed-off-by: Ben Hutchings
    Cc: stable@kernel.org [v3.0+]
    Signed-off-by: Takashi Iwai

    Ben Hutchings
     

14 Sep, 2011

1 commit

  • The semantics of snd_mpu401_uart_new()'s interrupt parameters are
    somewhat counterintuitive: To prevent the function from allocating its
    own interrupt, either the irq number must be invalid, or the irq_flags
    parameter must be zero. At the same time, the irq parameter being
    invalid specifies that the mpu401 code has to work without an interrupt
    allocated by the caller. This implies that, if there is an interrupt
    and it is allocated by the caller, the irq parameter must be set to
    a valid-looking number which then isn't actually used.

    With the removal of IRQF_DISABLED, zero becomes a valid irq_flags value,
    which forces us to handle the parameters differently.

    This patch introduces a new flag MPU401_INFO_IRQ_HOOK for when the
    device interrupt is handled by the caller, and makes the allocation of
    the interrupt to depend only on the irq parameter. As suggested by
    Takashi, the irq_flags parameter was dropped because, when used, it had
    the constant value IRQF_DISABLED.

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

    Clemens Ladisch
     

10 Jun, 2011

2 commits

  • The name argument of request_irq() appears in /proc/interrupts, and
    it's quite ugly when the name entry contains a space or special letters.
    In general, it's simpler and more readable when the module name appears
    there, so let's replace all entries with KBUILD_MODNAME.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • The convention for pci_driver.name entry in kernel drivers seem to be
    the module name or equivalent ones. But, so far, almost all PCI sound
    drivers use more verbose name like "ABC Xyz (12)", and these are fairly
    confusing when appearing as a file name.

    This patch converts the all pci_driver.name entries in sound/pci/* to
    use KBUILD_MODNAME for more unified appearance.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

03 Jun, 2011

1 commit


15 May, 2011

1 commit


14 May, 2011

3 commits


11 May, 2011

1 commit


10 May, 2011

1 commit

  • Use common functions to access TEA575x tuner - remove original read/write
    functions and provide new pin manipulation functions instead.

    Also convert the original triple implementation to a simple GPIO pin map.

    Tested with SF256-PCP and SF64-PCR (added the GPIO pin for MO/ST signal
    for them).
    SF256-PCS untested (pin for MO/ST signal is a guess).

    Signed-off-by: Ondrej Zary
    Signed-off-by: Takashi Iwai

    Ondrej Zary
     

21 Mar, 2011

1 commit


09 Feb, 2010

1 commit


04 Dec, 2009

1 commit

  • When primary AC97 is not found, don't fail with tons of AC97 errors.
    Assume that the card is SF64-PCR (tuner-only).
    This makes the SF64-PCR radio card work "out of the box".

    Also fixes a bug that can cause an oops here:
            if (tea575x_tuner > 0 && (tea575x_tuner & 0x000f) < 4) {
    when tea575x_tuner == 16, it passes this check and causes problems
    a couple lines below:
            chip->tea.ops = &snd_fm801_tea_ops[(tea575x_tuner & 0x000f) - 1];

    Tested with SF64-PCR, but I don't have any of those sound or sound+radio cards
    to test if I didn't break anything.

    Signed-off-by: Ondrej Zary
    Signed-off-by: Takashi Iwai

    Ondrej Zary
     

12 Jan, 2009

1 commit


24 Apr, 2008

1 commit

  • id was only used as a counter in a for loop, move the declaration
    to where it is used and change it to i.
    sound/pci/fm801.c:1288:6: warning: symbol 'id' shadows an earlier one
    sound/pci/fm801.c:51:13: originally declared here

    [tiwai - fixed a coding style issue as well]

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

    Harvey Harrison
     

01 Feb, 2008

2 commits

  • This is improvement of the early support of the FM-only cards where the
    fm801 chip represents the PCI to tuner bridge.
    The tuner initialization isn't included the mute on as well as mute support
    via V4L request. Proposed patch should fix this at least for 64-PCR model.

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

    Andy Shevchenko
     
  • 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
     

16 Oct, 2007

1 commit


12 Jul, 2007

1 commit

  • Instead of all drivers reading pci config space to get the revision
    ID, they can now use the pci_device->revision member.

    This exposes some issues where drivers where reading a word or a dword
    for the revision number, and adding useless error-handling around the
    read. Some drivers even just read it for no purpose of all.

    In devices where the revision ID is being copied over and used in what
    appears to be the equivalent of hotpath, I have left the copy code
    and the cached copy as not to influence the driver's performance.

    Compile tested with make all{yes,mod}config on x86_64 and i386.

    Signed-off-by: Auke Kok
    Acked-by: Dave Jones
    Signed-off-by: Greg Kroah-Hartman

    Auke Kok
     

09 Feb, 2007

1 commit


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
     

22 Oct, 2006

1 commit

  • - Check the return value of pci_enable_device() and request_irq()
    in the suspend. If any error occurs there, disable the device
    using snd_card_disconnect().
    - Call pci_set_power_state() properly with pci_choose_state().
    - Fix the order to call pci_set_power_state().
    - Removed obsolete house-made PM codes in some drivers.

    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
     

23 Sep, 2006

4 commits


13 Jul, 2006

2 commits

  • Fixed 'section mismatch' errors in ALSA PCI drivers:
    - removed invalid __devinitdata from pci id tables
    - fix/remove __devinit of functions called in suspend/resume

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

    Takashi Iwai
     
  • CONFIG_SND_FM801=y, CONFIG_SND_FM801_TEA575X=m resulted in the following
    compile error:

    ...
    LD vmlinux
    sound/built-in.o: In function 'snd_fm801_free':
    fm801.c:(.text+0x3c15b): undefined reference to 'snd_tea575x_exit'
    sound/built-in.o: In function 'snd_card_fm801_probe':
    fm801.c:(.text+0x3cfde): undefined reference to 'snd_tea575x_init'
    make: *** [vmlinux] Error 1

    This patch fixes kernel Bugzilla #6458.

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

    Adrian Bunk
     

03 Jul, 2006

1 commit


23 Jun, 2006

2 commits


28 Apr, 2006

1 commit


03 Jan, 2006

1 commit