01 Nov, 2011

1 commit


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

1 commit


10 Jan, 2011

2 commits


13 Dec, 2010

2 commits


06 Dec, 2010

2 commits


03 Nov, 2010

1 commit


06 Oct, 2010

2 commits

  • Configure the PEX8111 bridge on the PCI Express cards so that the audio
    DMA controller can do proper burst reads and is less likely to lose
    data. This is usually done automatically, but is required on older
    cards where the user has not applied the PLX firmware update.

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

    Clemens Ladisch
     
  • Change the PCIe/PCI bridge initialization code to configure only the
    bridge that is actually connected to the sound chip, instead of any
    bridge found in the system. The new code also makes it easier to add
    other bridges.

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

    Clemens Ladisch
     

08 Sep, 2010

1 commit

  • For the WM8776 chip, this driver uses a different sample format and
    more features than the Windows driver. When rebooting from Linux into
    Windows, the latter driver does not reset the chip but assumes all its
    registers have their default settings, so we get garbled sound or, if
    the output happened to be muted before rebooting, no sound.

    To make that driver happy, hook our driver's cleanup function into the
    shutdown notifier and ensure that the chip gets reset.

    Signed-off-by: Clemens Ladisch
    Reported-and-tested-by: Nathan Schagen
    Cc:
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

28 Sep, 2009

2 commits


03 Sep, 2009

1 commit

  • The card model detection code introduced in 2.6.30 that tries to work
    around partially broken EEPROM contents by reading the EEPROM directly
    does not handle cards where the EEPROM has been omitted. In this case,
    we have to use the default ID to allow the driver to load.

    Signed-off-by: Clemens Ladisch
    Reported-and-tested-by: Ozan Çağlayan
    Cc:
    Signed-off-by: Takashi Iwai

    Clemens Ladisch
     

28 Feb, 2009

1 commit


19 Feb, 2009

5 commits

  • If the EEPROM was partially overwritten (which seems to happen before the OS is
    booted), restore its entire contents by deducing it from the remaining
    information.

    This does not have any effect on the Linux driver, which works even with
    incomplete information in the EEPROM, but it makes other drivers work again.

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

    Clemens Ladisch
     
  • Under as yet unknown circumstances, the first word of the sound card's
    EEPROM gets overwritten. When this has happened, we cannot rely on the
    subsystem IDs that the kernel reads from the PCI configuration
    registers. Instead, we read the IDs directly from the EEPROM and do the
    ID matching manually.

    Because the model-specific driver cannot determine the model before
    calling oxygen_pci_probe(), that function now gets a get_model()
    callback as parameter. The customizing of the model structure, which
    was formerly done by the probe() callback, also has moved into
    get_model().

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

    Clemens Ladisch
     
  • When allocating resources, use a fixed name instead of reading it from
    the model structure. This allows us to allocate the resources before
    the actual model is known.

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

    Clemens Ladisch
     
  • Allocate the model-specific data dynamically instead of including it in
    the memory block of the card structure. This will allow us to determine
    the actual model after the card creation.

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

    Clemens Ladisch
     
  • Move the owner field out of the oxygen_model structure and make it
    a parameter of oxygen_pci_probe(), because the actual owner module does
    not depend on the card model. Furthermore, moving it out of the model
    structure allows us to create the card structure before the actual model
    is known.

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

    Clemens Ladisch
     

12 Jan, 2009

1 commit


22 Sep, 2008

5 commits


19 May, 2008

3 commits


24 Apr, 2008

8 commits