19 Jul, 2012

2 commits

  • This merges the changes for converting to new PM ops for platform
    and some other drivers.
    Also move some header files to local places from the public
    include/sound.

    Takashi Iwai
     
  • ASoC: Updates for 3.6

    This has been a pretty quiet release - very little activity in framework
    terms, mostly just a few new drivers and updates:

    - Added the ability to add and remove DAPM paths dynamically, mostly for
    reparenting on clock changes.
    - New machine drivers for Marvell Brownstone, ST-Ericsson Ux500
    reference platform and ttc-dkp.
    - New CPU drivers for Blackfin BF6xx SPORTs in I2S mode, Marvell MMP,
    Synopsis Designware I2S controllers, and SPEAr DMA and S/PDIF
    - New CODEC drivers for Dialog DA732x, ST STA529, ST-Ericsson AB8500, TI
    Isabelle and Wolfson Microelectronics WM5102 and WM5110

    Takashi Iwai
     

18 Jul, 2012

1 commit


16 Jul, 2012

3 commits


07 Jul, 2012

1 commit

  • Since we're now relying on DAPM for things like enabling clocks when we
    reparent the clocks for widgets we need to either use conditional routes
    (which are expensive) or remove routes at runtime. Add a route removal
    API to support this use case.

    Signed-off-by: Mark Brown
    Acked-by: Liam Girdwood

    Mark Brown
     

05 Jul, 2012

1 commit


03 Jul, 2012

2 commits


26 Jun, 2012

1 commit

  • Pull media fixes from Mauro Carvalho Chehab.

    Trivial conflict due to new USB HID ID's being added next to each other
    (Baanto vs Axentia).

    * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (44 commits)
    [media] smia: Fix compile failures
    [media] Fix VIDIOC_DQEVENT docbook entry
    [media] s5p-fimc: Fix control creation function
    [media] s5p-mfc: Fix checkpatch error in s5p_mfc_shm.h file
    [media] s5p-mfc: Fix setting controls
    [media] v4l/s5p-mfc: added image size align in VIDIOC_TRY_FMT
    [media] v4l/s5p-mfc: corrected encoder v4l control definitions
    [media] v4l: mem2mem_testdev: Fix race conditions in driver
    [media] s5p-mfc: Bug fix of timestamp/timecode copy mechanism
    [media] cxd2820r: Fix an incorrect modulation type bitmask
    [media] em28xx: Show a warning if the board does not support remote controls
    [media] em28xx: Add remote control support for Terratec's Cinergy HTC Stick HD
    [media] USB: Staging: media: lirc: initialize spinlocks before usage
    [media] Revert "[media] media: mx2_camera: Fix mbus format handling"
    [media] bw-qcam: driver and pixfmt documentation fixes
    [media] cx88: fix firmware load on big-endian systems
    [media] cx18: support big-endian systems
    [media] ivtv: fix support for big-endian systems
    [media] tuner-core: return the frequency range of the correct tuner
    [media] v4l2-dev.c: fix g_parm regression in determine_valid_ioctls()
    ...

    Linus Torvalds
     

23 Jun, 2012

2 commits


22 Jun, 2012

2 commits


20 Jun, 2012

3 commits

  • Currently the sound dmaengine pcm helper functions implement the pcm_pointer
    callback by trying to count the number of elapsed periods. This is done by
    advancing the stream position in the dmaengine callback by one period.
    Unfortunately there is no guarantee that the callback will be called for each
    elapsed period. It may be possible that under high system load it is only called
    once for multiple elapsed periods. This patch addresses the issue by
    implementing support for querying the current stream position directly from the
    dmaengine driver. Since not all dmaengine drivers support reporting the stream
    position yet the old period counting implementation is kept for now.

    Furthermore the new mechanism allows to report the stream position with a
    sub-period granularity, given that the dmaengine driver supports this.

    Signed-off-by: Lars-Peter Clausen
    Acked-by: Vinod Koul
    Signed-off-by: Mark Brown

    Lars-Peter Clausen
     
  • Currently the sound dmaengine pcm helper functions implement the pcm_pointer
    callback by trying to count the number of elapsed periods. This is done by
    advancing the stream position in the dmaengine callback by one period.
    Unfortunately there is no guarantee that the callback will be called for each
    elapsed period. It may be possible that under high system load it is only called
    once for multiple elapsed periods. This patch renames the current implementation
    and documents its shortcomings and that it should not be used anymore in new
    drivers.

    The next patch will introduce a new snd_dmaengine_pcm_pointer which will be
    implemented based on querying the current stream position from the dma device.

    Signed-off-by: Lars-Peter Clausen
    Acked-by Vinod Koul
    Acked-by: Dong Aisheng

    Lars-Peter Clausen
     
  • There's a dependency but no #include.

    Signed-off-by: Mark Brown
    Signed-off-by: Takashi Iwai

    Mark Brown
     

18 Jun, 2012

1 commit


12 Jun, 2012

1 commit

  • Before this patch the owner field of the /dev/radio# device fops was set to
    the snd-tea575x-tuner module itself. Meaning that the module which was using
    it could be rmmod-ed while the device is open, and then BAD things happen.

    I know, as I found out the hard way :)

    Note that there is no need to also somehow increase the refcount of the
    snd-tea575x-tuner module itself, since any drivers using it will have
    symbolic references to it.

    Signed-off-by: Hans de Goede
    CC: Ondrej Zary
    Signed-off-by: Mauro Carvalho Chehab

    Hans de Goede
     

03 Jun, 2012

4 commits

  • Control type added for cases where a specific range of values
    within a register are required for control.

    Added convenience macros:

    SOC_SINGLE_RANGE
    SOC_SINGLE_RANGE_TLV

    Added accessor implementations:

    snd_soc_info_volsw_range
    snd_soc_put_volsw_range
    snd_soc_get_volsw_range

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

    Adam Thomson
     
  • Prior to this patch, the CPU side of a DAI link was specified using a
    single name. Often, this was the result of calling dev_name() on the
    device providing the DAI, but in the case of a CPU DAI driver that
    provided multiple DAIs, it needed to mix together both the device name
    and some device-relative name, in order to form a single globally unique
    name.

    However, the CODEC side of the DAI link was specified using separate
    fields for device (name or OF node) and device-relative DAI name.

    This patch allows the CPU side of a DAI link to be specified in the same
    way as the CODEC side, separating concepts of device and device-relative
    DAI name.

    I believe this will be important in multi-codec and/or dynamic PCM
    scenarios, where a single CPU driver provides multiple DAIs, while also
    booting using device tree, with accompanying desire not to hard-code the
    CPU side device's name into the original .cpu_dai_name field.

    Ideally, both the CPU DAI and CODEC DAI loops in soc_bind_dai_link()
    would now be identical. However, two things prevent that at present:

    1) The need to save rtd->codec for the CODEC side, which means we have
    to search for the CODEC explicitly, and not just the CODEC side DAI.

    2) Since we know the CODEC side DAI is part of a codec, and not just
    a standalone DAI, it's slightly more efficient to convert .codec_name/
    .codec_of_node into a codec first, and then compare each DAI's .codec
    field, since this avoids strcmp() on each DAI's CODEC's name within
    the loop.

    However, the two loops are essentially semantically equivalent.

    Signed-off-by: Stephen Warren
    Signed-off-by: Mark Brown

    Stephen Warren
     
  • Adds a supply-widget variant for connection to the clock-framework.
    This widget-type corresponds to the variant for regulators.

    Signed-off-by: Ola Lilja
    Signed-off-by: Mark Brown

    Ola Lilja
     
  • Adds a function getting the stream-name as a string for
    a specific stream.

    Signed-off-by: Ola Lilja
    Reviewed-by: Takashi Iwai
    Signed-off-by: Mark Brown

    Ola Lilja
     

22 May, 2012

1 commit


21 May, 2012

1 commit


20 May, 2012

1 commit

  • SupherH FSI2 can use special data transfer,
    but it depends on CPU-FSI2 connection style.

    We can use 16bit data stream mode if it was valid connection,
    and it is required for 16bit data DMA transfer / SPDIF sound output.
    We can use 24bit data transfer if it was invalid connection.

    We can select connection type if CPU is SH7372,
    and it is always valid connection if latest SuperH.

    This patch adds new bus_option and fsi_bus_setup()
    for supporting these feature.

    Signed-off-by: Kuninori Morimoto
    Signed-off-by: Mark Brown

    Kuninori Morimoto
     

14 May, 2012

1 commit


02 May, 2012

1 commit

  • Devices with many DAIs are becoming more and more common, and generally
    the more modern devices have consistent register layouts between DAIs.
    Rather than have drivers open code lookups based on the DAI ID or cause
    uglification in UI by having register addresses for IDs provide a base
    address field they can use.

    Signed-off-by: Mark Brown
    Acked-by: Liam Girdwood

    Mark Brown
     

01 May, 2012

1 commit


27 Apr, 2012

5 commits

  • Some on SoC DSP HW is very tightly coupled with DMA and DAI drivers. It's
    necessary to allow some flexability wrt to PCM operations here so that we
    can define a bespoke DPCM trigger() PCM operation for such HW.

    A bespoke DPCM trigger() allows exact ordering and timing of component
    triggering by allowing a component driver to manage the final enable
    and disable configurations without adding extra complexity to other
    component drivers. e.g. The McPDM DAI and ABE are tightly coupled on
    OMAP4 so we have a bespoke trigger to manage the trigger to improve
    performance and reduce complexity when triggering new McPDM BEs.

    Signed-off-by: Liam Girdwood
    Signed-off-by: Mark Brown

    Liam Girdwood
     
  • Some component drivers will need to be able to look up their
    DAI link substream and RTD data. Provide a mechanism for this.

    Signed-off-by: Liam Girdwood
    Signed-off-by: Mark Brown

    Liam Girdwood
     
  • This patch allows DPCM to dynamically alter the FE to BE PCM links
    at runtime based on mixer setting updates. DAPM is looked up after
    every mixer update and we perform a DPCM runtime update if the
    mixer has a change of value.

    This patchs adds/changes the following :-

    o Adds DPCM runtime update core.
    o Changes soc_dapm_mixer_update_power() and soc_dapm_mux_update_power()
    to return if a change has occured rather than 0. No other users check
    atm.

    Signed-off-by: Liam Girdwood
    Signed-off-by: Mark Brown

    Liam Girdwood
     
  • Add debugFS files for DPCM link management information.

    Signed-off-by: Liam Girdwood
    Signed-off-by: Mark Brown

    Liam Girdwood
     
  • The Dynamic PCM core allows digital audio data to be dynamically
    routed between different ALSA PCMs and DAI links on SoC CPUs with
    on chip DSP devices. e.g. audio data could be played on pcm:0,0 and
    routed to any (or all) SoC DAI links.

    Dynamic PCM introduces the concept of Front End (FE) PCMs and Back
    End (BE) PCMs. The FE PCMs are normal ALSA PCM devices except that
    they can dynamically route digital audio data to any supported BE
    PCM. A BE PCM has no ALSA device, but represents a DAI link and it's
    substream and audio HW parameters.

    e.g. pcm:0,0 routing digital data to 2 external codecs.

    FE pcm:0,0 ----> BE (McBSP.0) ----> CODEC 0
    +--> BE (McPDM.0) ----> CODEC 1

    e.g. pcm:0,0 and pcm:0,1 routing digital data to 1 external codec.

    FE pcm:0,0 ---
    +--> BE (McBSP.0) ----> CODEC
    FE pcm:0,1 ---

    The digital audio routing is controlled by the usual ALSA method
    of mixer kcontrols. Dynamic PCM uses a DAPM graph to work out the
    routing based upon the mixer settings and configures the BE PCMs
    based on routing and the FE HW params.

    DPCM is designed so that most ASoC component drivers will need no
    modification at all. It's intended that existing CODEC, DAI and
    platform drivers can be used in DPCM based audio devices without
    any changes. However, there will be some cases where minor changes
    are required (e.g. for very tightly coupled HW) and there are
    helpers to support this too.

    Somethimes the HW params of a FE and BE do not match or are
    incompatible, so in these cases the machine driver can reconfigure
    any hw_params and make any DSP perform sample rate / format conversion.

    This patch adds the core DPCM code and contains :-

    o The FE and BE PCM operations.
    o FE and BE DAI link support.
    o FE and BE PCM creation.
    o BE support API.
    o BE and FE link management.

    Signed-off-by: Liam Girdwood
    Signed-off-by: Mark Brown

    Liam Girdwood
     

24 Apr, 2012

2 commits

  • Added support for a control that strobes a bit in
    a register to high then back to low (or the inverse).

    This is typically useful for hardware that requires
    strobing a singe bit to trigger some functionality
    and where exposing the bit in a normal single control
    would require the user to first manually set then
    again unset the bit again for the strobe to trigger.

    Added convenience macro.

    SOC_SINGLE_STROBE

    Added accessor implementations.

    snd_soc_get_strobe
    snd_soc_put_strobe

    Signed-off-by: Kristoffer KARLSSON
    Signed-off-by: Mark Brown

    Kristoffer KARLSSON
     
  • Added control type that can span multiple consecutive codec registers
    forming a single signed value in a MSB/LSB manner.
    The control dynamically adjusts to the register word size configured
    in driver.

    Added convenience macro.

    SOC_SINGLE_XR_SX

    Added accessor implementations.

    snd_soc_info_xr_sx
    snd_soc_get_xr_sx
    snd_soc_put_xr_sx

    Signed-off-by: Kristoffer KARLSSON
    Signed-off-by: Mark Brown

    Kristoffer KARLSSON
     

19 Apr, 2012

1 commit

  • In preparation for ASoC DSP support.

    Add a DAPM API call to determine whether a DAPM audio path is valid between
    source and sink widgets. This also takes into account all kcontrol mux and mixer
    settings in between the source and sink widgets to validate the audio path.

    This will be used by the DSP core to determine the runtime DAI mappings
    between FE and BE DAIs in order to run PCM operations.

    Signed-off-by: Liam Girdwood
    Signed-off-by: Mark Brown

    Liam Girdwood
     

18 Apr, 2012

1 commit

  • Along with the IEC-60958 channel status word, CEA-861 Audio InfoFrames
    are used in HDMI and DisplayPort to describe the parameters of the audio
    stream. Hence, drivers for such devices may use these definitions to, for
    instance, fill a CEA-861 data structure and pass it to a display driver
    to configure an IP.

    Signed-off-by: Ricardo Neri
    Signed-off-by: Takashi Iwai

    Ricardo Neri
     

17 Apr, 2012

1 commit

  • Linux 3.4-rc3 contains a bunch of Tegra changes which are conflicting
    annoyingly with the new development that's going on for Tegra so merge
    it up to resolve those conflicts.

    Conflicts:
    sound/soc/soc-core.c
    sound/soc/tegra/tegra_i2s.c
    sound/soc/tegra/tegra_spdif.c

    Mark Brown