15 Feb, 2010

3 commits

  • Move the controls init code outside the init_hw() function because is must
    not be called during resume.

    This patch moves the code that initializes the card's controls with
    default valued from the init_hw() function into a separated
    set_mixer_defaults() function (one for each of the 16 supported
    cards). This change is necessary because during resume we must
    resurrect the hardware without losing the previous
    settings. set_mixer_defaults() must be called only once when the
    module is loaded.

    Signed-off-by: Giuliano Pochini
    Signed-off-by: Takashi Iwai

    Giuliano Pochini
     
  • This patch implements a simple cache for the firmware files when CONFIG_PM is defined.

    This patch changes get_firmware(), free_firmware() and adds
    free_firmware_cache(). The first two functions implement a very
    simple cache and the latter is used to actually release all the stored
    firmwares when the module is unloaded.
    When CONFIG_PM is not enabled those functions act as before, that is
    free_firmware() releases the firmware immediately and
    free_firmware_cache() does nothing.

    Signed-off-by: Giuliano Pochini
    Signed-off-by: Takashi Iwai

    Giuliano Pochini
     
  • Changes the way the firmware is passed through functions.

    When CONFIG_PM is enabled the firmware cannot be released because the
    driver will need it again to resume the card.
    With this patch the firmware is passed as an index of the struct
    firmware card_fw[] in place of a pointer. That same index is then used
    to locate the firmware in the firmware cache.

    Signed-off-by: Giuliano Pochini
    Signed-off-by: Takashi Iwai

    Giuliano Pochini
     

12 Feb, 2010

2 commits


09 Feb, 2010

1 commit


05 Feb, 2010

1 commit

  • I found that the sampling rate locking setting of the ice1712 sound driver
    was only half-respected : when the driver was locked to, let's say, 44100Hz,
    and a usermode app was requesting 48000Hz playback, the request was succesful
    although the soundcard would continue to run at 44100Hz.

    Here's a patch that will make those requests to fail.

    Signed-off-by: Sebastien Alaiwan
    Signed-off-by: Takashi Iwai

    Sebastien Alaiwan
     

03 Feb, 2010

1 commit


02 Feb, 2010

1 commit


01 Feb, 2010

3 commits


28 Jan, 2010

1 commit

  • The code in pcm_lib updating runtime->hw_ptr_interrupt expects
    that runtime->boundary is divisible with runtime->period_size.
    Thanks are going to Clemens Ladisch for the notice.

    Fix the runtime->boundary calculation using buffer_size * period_size
    as base and find a least common multiple for 32bit platforms when
    the expression might overflow.

    Signed-off-by: Jaroslav Kysela

    Jaroslav Kysela
     

27 Jan, 2010

2 commits

  • Takashi Iwai
     
  • Clemens Ladisch noted for hw_ptr_removal in "cleanup & merge hw_ptr
    update functions" commit:

    "It is possible for the status/delay ioctls to be called when the sound
    card's pointer register alreay shows a position at the beginning of the
    new period, but immediately before the interrupt is actually executed.
    (This happens regularly on a SMP machine with mplayer.) When that
    happens, the code thinks that the position must be at least one period
    ahead of the current position and drops an entire buffer of data."

    Return back the hw_ptr_interrupt variable. The last interrupt pointer
    is always computed from the latest hw_ptr instead of tracking it
    separately (in this case all hw_ptr checks and modifications might
    influence also hw_ptr_interrupt and it is difficult to keep it
    consistent).

    Signed-off-by: Jaroslav Kysela

    Jaroslav Kysela
     

26 Jan, 2010

1 commit


21 Jan, 2010

4 commits


19 Jan, 2010

1 commit


18 Jan, 2010

4 commits


14 Jan, 2010

2 commits


13 Jan, 2010

2 commits


12 Jan, 2010

2 commits


08 Jan, 2010

6 commits


07 Jan, 2010

3 commits