23 Feb, 2010

5 commits

  • Use the definitions from linux/usb/audio.h all over the ALSA USB audio
    driver and add some missing definitions there as well.

    Use the endpoint attribute macros from linux/usb/ch9 and remove the own
    things from sound/usb/usbaudio.h.

    Now things are also nicely prefixed which makes understanding the code
    easier.

    Signed-off-by: Daniel Mack
    Signed-off-by: Takashi Iwai

    Daniel Mack
     
  • This is just a quick hack that needs to be removed once the new units
    defined by the audio class v2.0 standard are supported.

    However, it allows using these devices for now, without mixer support.

    Signed-off-by: Daniel Mack
    Signed-off-by: Takashi Iwai

    Daniel Mack
     
  • This adds a number of parsers for audio class v2.0. In particular, the
    following internals are different and now handled by the code:

    * the number of streaming interfaces is now reported by an interface
    association descriptor. The old approach using a proprietary
    descriptor is deprecated.

    * The number of channels per interface is now stored in the AS_GENERAL
    descriptor (used to be part of the FORMAT_TYPE descriptor).

    * The list of supported sample rates is no longer stored in a variable
    length appendix of the format_type descriptor but is retrieved from
    the device using a class specific GET_RANGE command.

    * Supported sample formats are now reported as 32bit bitmap rather than
    a fixed value. For now, this is worked around by choosing just one of
    them.

    * A devices needs to have at least one CLOCK_SOURCE descriptor which
    denotes a clockID that is needed im the class request command.

    * Many descriptors (format_type, ...) have changed their layout. Handle
    this by casting the descriptors to the appropriate structs.

    Signed-off-by: Daniel Mack
    Signed-off-by: Takashi Iwai

    Daniel Mack
     
  • This patch adds some definitions for audio class v2.

    Unfortunately, the UNIT types PROCESSING_UNIT and EXTENSION_UNIT have
    different numerical representations in both standards, so there is need
    for a _V1 add-on now. usbmixer.c is changed accordingly.

    Signed-off-by: Daniel Mack
    Signed-off-by: Takashi Iwai

    Daniel Mack
     
  • In preparation of support for v2.0 audio class, use the structs from
    linux/usb/audio.h and add some new ones to describe the fields that are
    actually parsed by the descriptor decoders.

    Also, factor out code from usb_create_streams(). This makes it easier to
    adopt the new iteration logic needed for v2.0.

    Signed-off-by: Daniel Mack
    Signed-off-by: Takashi Iwai

    Daniel Mack
     

22 Feb, 2010

1 commit


18 Feb, 2010

2 commits


17 Feb, 2010

3 commits


16 Feb, 2010

8 commits


15 Feb, 2010

4 commits

  • This patch adds rearranges parts of the initialization code and adds
    suspend and resume callbacks.

    This patch adds suspend and resume callbacks.
    It also rearranges parts of the initialization code so it can be
    used in both the first initialization (when the module is loaded we
    also have to load default settings) and the resume callback (where
    we have to restore the previous settings).

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

    Giuliano Pochini
     
  • 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
     

13 Feb, 2010

8 commits


12 Feb, 2010

9 commits