18 May, 2016

1 commit

  • The function setup_timer combines the initialization of a timer with the
    initialization of the timer's function and data fields. The mulitiline
    code for timer initialization is now replaced with function setup_timer.

    Also, quoting the mod_timer() function comment:
    -> mod_timer() is a more efficient way to update the expire field of an
    active timer (if the timer is inactive it will be activated).

    Use setup_timer() and mod_timer() to setup and arm a timer, making the
    code compact and aid readablity.

    Signed-off-by: Muhammad Falak R Wani
    Signed-off-by: Takashi Iwai

    Muhammad Falak R Wani
     

17 May, 2016

2 commits


16 May, 2016

2 commits


13 May, 2016

23 commits


12 May, 2016

9 commits

  • Broxton-P reference platform also uses combo jack for audio
    connector so we need to set codec pdata to use this based on DMI
    match for this board.

    Signed-off-by: Ramesh Babu
    Signed-off-by: Senthilnathan Veppur
    Signed-off-by: Vinod Koul
    Acked-by: Bard Liao
    Signed-off-by: Mark Brown

    Vinod Koul
     
  • ACPI driver data can be NULL so we need to check that before
    dereference the driver data.

    Signed-off-by: Senthilnathan Veppur
    Signed-off-by: Vinod Koul
    Acked-by: Bard Liao
    Signed-off-by: Mark Brown

    Vinod Koul
     
  • Commit 086d7f804e26 ("ASoC: Convert WM8962 MICBIAS to a supply widget",
    2011-09-23) says:

    A supply widget is generally clearer than a MICBIAS widget and a
    mic bias is just a type of supply so use a supply widget for the
    MICBIAS. This also avoids confusion with the routing when
    connected to multiple inputs.

    but this has never been documented as a policy. Add some comments to
    make it clear.

    Signed-off-by: John Keeping
    Signed-off-by: Mark Brown

    John Keeping
     
  • On most of audio and music units on IEEE 1394 bus which ALSA firewire stack
    supports (or plans to support), CIP with two quadlets header is used.
    Thus, there's no cases to queue packets with blank payload. If such packets
    are going to be queued, it means that they're for skips of the cycle.

    This commit simplifies helper functions to queue a packet.

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

    Takashi Sakamoto
     
  • In current implementation, packet processing is done in both of software
    IRQ contexts of IR/IT contexts and process contexts.

    This is usual interrupt handling of IR/IT context for 1394 OHCI.
    (in hardware IRQ context)
    irq_handler() (drivers/firewire/ohci.c)
    ->tasklet_schedule()
    (in software IRQ context)
    handle_it_packet() or handle_ir_packet_per_buffer() (drivers/firewire/ohci.c)
    ->flush_iso_completions()
    ->struct fw_iso_context.callback.sc()
    = out_stream_callback() or in_stream_callback()

    However, we have another chance for packet processing. It's done in PCM
    frame handling via ALSA PCM interfaces.
    (in process context)
    ioctl(i.e. SNDRV_PCM_IOCTL_HWSYNC)
    ->snd_pcm_hwsync() (sound/core/pcm_native.c)
    ->snd_pcm_update_hw_ptr() (sound/core/pcm_lib.c)
    ->snd_pcm_update_hw_ptr0()
    ->struct snd_pcm_ops.pointer()
    = amdtp_stream_pcm_pointer()
    ->fw_iso_context_flush_completions() (drivers/firewire/core-iso.c)
    ->struct fw_card_driver.flush_iso_completions()
    = ohci_flush_iso_completions() (drivers/firewire/ohci.c)
    ->flush_iso_completions()
    ->struct fw_iso_context.callback.sc()
    = out_stream_callback() or in_stream_callback()

    This design is for a better granularity of PCM pointer. When ioctl(2) is
    executed with some commands for ALSA PCM interface, queued packets are
    handled at first. Then, the latest number of handled PCM frames is
    reported. The number can represent PCM frames transferred in most near
    isochronous cycle.

    Current tracepoints include no information to distinguish running contexts.
    When tracing the interval of software IRQ context, this is not good.

    This commit adds more information for current context. Additionally, the
    index of packet processed in one context is added in a case that packet
    processing is executed in continuous context of the same kind,

    As a result, the output includes 11 fields with additional two fields
    to commit 0c95c1d6197f ("ALSA: firewire-lib: add tracepoints to dump a part
    of isochronous packet data"):
    17131.9186: out_packet: 07 7494 ffc0 ffc1 00 000700c0 9001a496 058 45 1 13
    17131.9186: out_packet: 07 7495 ffc0 ffc1 00 000700c8 9001ba00 058 46 1 14
    17131.9186: out_packet: 07 7496 ffc0 ffc1 00 000700d0 9001ffff 002 47 1 15
    17131.9189: out_packet: 07 7497 ffc0 ffc1 00 000700d0 9001d36a 058 00 0 00
    17131.9189: out_packet: 07 7498 ffc0 ffc1 00 000700d8 9001e8d4 058 01 0 01
    17131.9189: out_packet: 07 7499 ffc0 ffc1 00 000700e0 9001023e 058 02 0 00
    17131.9206: in_packet: 07 7447 ffc1 ffc0 01 3f070072 9001783d 058 32 1 00
    17131.9206: in_packet: 07 7448 ffc1 ffc0 01 3f070072 90ffffff 002 33 1 01
    17131.9206: in_packet: 07 7449 ffc1 ffc0 01 3f07007a 900191a8 058 34 1 02
    (Here, some common fields are omitted so that a line is within 80
    characters.)

    The legend is:
    - The second of cycle scheduled for the packet
    - The count of cycle scheduled for the packet
    - The ID of node as source (hex)
    - The ID of node as destination (hex)
    - The value of isochronous channel
    - The first quadlet of CIP header (hex)
    - The second quadlet of CIP header (hex)
    - The number of included quadlets
    - The index of packet in a buffer maintained by this module
    - 0 in process context, 1 in IRQ context
    - The index of packet processed in the context

    Signed-off-by: Takashi Sakamoto
    Signed-off-by: Takashi Iwai

    Takashi Sakamoto
     
  • …etter PCM period granularity

    These three commits were merged to improve PCM pointer granularity.
    commit 76fb87894828 ("ALSA: firewire-lib: taskletize the snd_pcm_period_elapsed() call")
    commit e9148dddc3c7 ("ALSA: firewire-lib: flush completed packets when reading PCM position")
    commit 92b862c7d685 ("ALSA: firewire-lib: optimize packet flushing")

    The point of them is to handle queued packets not only in software IRQ
    context of IR/IT contexts, but also in process context. As a result of
    handling packets, period tasklet is scheduled when acrossing PCM period
    boundary. This is to prevent recursive call of
    'struct snd_pcm_ops.pointer()' in the same context.

    When the pointer callback is executed in the process context, it's
    better to avoid the second callback in the software IRQ context. The
    software IRQ context runs immediately after scheduled in the process
    context because few packets are queued yet.

    For the aim, 'pointer_flush' is used, however it causes a race condition
    between the process context and software IRQ context of IR/IT contexts.

    Practically, this race is not so critical because it influences process
    context to skip flushing queued packet and to get worse granularity of
    PCM pointer. The race condition is quite rare but it should be improved
    for stable service.

    The similar effect can be achieved by using 'in_interrupt()' macro. This
    commit obsoletes 'pointer_flush' with it.

    Acked-by: Clemens Ladisch <clemens@ladisch.de>
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>

    Takashi Sakamoto
     
  • Signed-off-by: Stephen Rothwell
    Acked-by: Vinod Koul
    Signed-off-by: Mark Brown

    Stephen Rothwell
     
  • Phoenix Audio has yet another device with another id (even a different
    vendor id, 0556:0014) that requires the same quirk for the sample
    rate.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=110221
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • …roonie/sound into asoc-intel

    Mark Brown
     

11 May, 2016

3 commits

  • Format number after 0x in hex.

    Cc: Jie Yang
    Cc: Liam Girdwood
    Cc: Mark Brown
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Signed-off-by: Joonas Lahtinen
    Signed-off-by: Mark Brown

    Joonas Lahtinen
     
  • The HDMI/DP audio output on ATI/AMD chips got broken due to the recent
    restructuring of chmap. Fortunately, Daniel Exner could bisect, and
    pointed the culprit commit [739ffee97ed5: ALSA: hda - Add hdmi chmap
    verb programming ops to chmap object].

    This commit moved some ops from hdmi_ops to chmap_ops, and reassigned
    the ops in the embedded chmap object in hdmi_spec instead.
    Unfortunately, the reassignment of these ops in patch_atihdmi() were
    moved into an if block that is performed only for old chips. Thus, on
    newer chips, the generic ops is still used, which doesn't work for
    such ATI/AMD chips.

    This patch addresses the regression, simply by moving the assignment
    of chmap ops to the right place.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=114981
    Fixes: 739ffee97ed5 ('ALSA: hda - Add hdmi chmap verb programming ops to chmap object')
    Reported-and-tested-by: Daniel Exner
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Current checking for PLL 32KHz mode fails in driver code when
    bypassing the PLL. This is due to an incorrect check of PLL
    source type when 32KHz clock is provided. Removal of this check
    resolves the issue.

    Signed-off-by: Adam Thomson
    Signed-off-by: Mark Brown

    Adam Thomson