Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2ce3527 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound updates from Takashi Iwai:
 "This time it's a relatively calm update batch, but the amount isn't
  too small in the end.  Here we go over some highlights:

  ALSA core:
   - One major change is the support of nonatomic PCM operations.  This
     allows the trigger and other callbacks to call schedule(), which
     would be useful for mailbox type communications.  Already some
     drivers (Digigram ones) have been converted to use together with
     threaded irqs as an example.
   - Improvement / fixes of DSD PCM format support

  HD-audio:
   - Large volume of rewrites are found in Realtek codec driver for
     converting Dell and HP quirks to generic forms.
   - Inverted dmic code cleanup from David.
   - Realtek COEF access has been optimized.
   - Now HD-audio jack infrastructure allows multiple callbacks, which
     fixes / simplifies the jack-dependent power controls on STAC/IDT
     and VIA codecs.
   - Many additional device-specific fixups as usual
   - A few deadcode cleanups, CA0132 code cleanup, etc.

  ASoC:
   - More componentization work from Lars-Peter, this time mainly
     cleaning up the suspend and bias level transition callbacks.
   - Real system support for the Intel drivers and a bunch of fixes and
     enhancements for the associated CODEC drivers, this is going to
     need a lot quirks over time due to the lack of any firmware
     description of the boards.
   - Jack detect support for simple card from Dylan Reid.
   - A bunch of small fixes and enhancements for the Freescale drivers.
   - New drivers for Analog Devices SSM4567, Cirrus Logic CS35L32,
     Everest Semiconductor ES8328 and Freescale cards using the ASRC in
     newer i.MX processors.
   - A few simple-card fixes, mostly cleanups but also a fix for
     interaction between GPIO 0 and simple-card.

  Misc:
   - Virtuoso / Oxygen updates by Clemens
   - USB-audio: Yamaha MOTIF XF MIDI port name fixes
   - Conversion of kernel messages to standard dev_*() in ctxfi driver"

* tag 'sound-3.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (251 commits)
  ASoC: mc13783: Ensure we only try to dereference valid of_nodes
  ASoC: rockchip-i2s: fix infinite loop in rockchip_snd_txctrl
  ALSA: hda - Add dock port support to Thinkpad L440 (71aa:501e)
  ALSA: Allow pass NULL dev for snd_pci_quirk_lookup()
  ASoC: imx-es8328: Fix of_node_put() call with uninitialized object
  ASoC: soc-pcm: fix sig_bits determination in soc_pcm_apply_msb()
  ASoC: simple-card: Initialize headphone and mic GPIO numbers
  ASoC: imx-es8328: Fix missing return code in imx_es8328_probe()
  ALSA: hda - Add dock support for Thinkpad T440 (17aa:2212)
  ALSA: usb: caiaq: check for cdev->n_streams > 1
  ASoC: 88pm860x-codec: Fix possibly missing string termination
  ASoC: core: fix use after free in snd_soc_remove_platform()
  ASoC: soc-dapm: fix use after free
  ALSA: hda - Make the inv dmic handling for Realtek use generic parser
  ALSA: hda - Add Inverted Internal mic for Samsung Ativ book 9 (NP900X3G)
  ALSA: hda - Add inverted internal mic for Asus Aspire 4830T
  ASoC: Intel: byt-rt5640: fix coccinelle warnings
  ASoC: fsl_esai doc: Add "fsl,vf610-esai" as compatible string
  ASoC: da732x: Remove unnecessary KERN_ERR in pr_err()
  ASoC: simple-card: Fix detect gpio documentation.
  ...
parents bf65dea8 fd1a2a90
Loading
Loading
Loading
Loading
+23 −5
Original line number Original line Diff line number Diff line
@@ -2742,7 +2742,9 @@ struct _snd_pcm_runtime {


        <para>
        <para>
          Another note is that this callback is non-atomic
          Another note is that this callback is non-atomic
        (schedulable). This is important, because the
        (schedulable) as default, i.e. when no
	<structfield>nonatomic</structfield> flag set.
	This is important, because the
        <structfield>trigger</structfield> callback 
        <structfield>trigger</structfield> callback 
        is atomic (non-schedulable). That is, mutexes or any
        is atomic (non-schedulable). That is, mutexes or any
        schedule-related functions are not available in
        schedule-related functions are not available in
@@ -2900,8 +2902,9 @@ struct _snd_pcm_runtime {
        </para>
        </para>


        <para>
        <para>
          As mentioned, this callback is atomic.  You cannot call
          As mentioned, this callback is atomic as default unless
	  functions which may sleep.
	  <structfield>nonatomic</structfield> flag set, and
	  you cannot call functions which may sleep.
	  The trigger callback should be as minimal as possible,
	  The trigger callback should be as minimal as possible,
	  just really triggering the DMA.  The other stuff should be
	  just really triggering the DMA.  The other stuff should be
	  initialized hw_params and prepare callbacks properly
	  initialized hw_params and prepare callbacks properly
@@ -2936,7 +2939,7 @@ struct _snd_pcm_runtime {
        </para>
        </para>


        <para>
        <para>
          This callback is also atomic.
          This callback is also atomic as default.
        </para>
        </para>
      </section>
      </section>


@@ -2972,7 +2975,7 @@ struct _snd_pcm_runtime {
	is useful only for such a purpose.
	is useful only for such a purpose.
	</para>
	</para>
	<para>
	<para>
	  This callback is atomic.
	  This callback is atomic as default.
	</para>
	</para>
      </section>
      </section>


@@ -3175,6 +3178,21 @@ struct _snd_pcm_runtime {
      called with local interrupts disabled.
      called with local interrupts disabled.
      </para>
      </para>


      <para>
      The recent changes in PCM core code, however, allow all PCM
      operations to be non-atomic.  This assumes that the all caller
      sides are in non-atomic contexts.  For example, the function
      <function>snd_pcm_period_elapsed()</function> is called
      typically from the interrupt handler.  But, if you set up the
      driver to use a threaded interrupt handler, this call can be in
      non-atomic context, too.  In such a case, you can set
      <structfield>nonatomic</structfield> filed of
      <structname>snd_pcm</structname> object after creating it.
      When this flag is set, mutex and rwsem are used internally in
      the PCM core instead of spin and rwlocks, so that you can call
      all PCM functions safely in a non-atomic context.
      </para>

    </section>
    </section>
    <section id="pcm-interface-constraints">
    <section id="pcm-interface-constraints">
      <title>Constraints</title>
      <title>Constraints</title>
+19 −0
Original line number Original line Diff line number Diff line
Analog Devices SSM2602, SSM2603 and SSM2604 I2S audio CODEC devices

SSM2602 support both I2C and SPI as the configuration interface,
the selection is made by the MODE strap-in pin.
SSM2603 and SSM2604 only support I2C as the configuration interface.

Required properties:

  - compatible : One of "adi,ssm2602", "adi,ssm2603" or "adi,ssm2604"

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

 Example:

	ssm2602: ssm2602@1a {
		compatible = "adi,ssm2602";
		reg = <0x1a>;
	};
+62 −0
Original line number Original line Diff line number Diff line
CS35L32 audio CODEC

Required properties:

  - compatible : "cirrus,cs35l32"

  - reg : the I2C address of the device for I2C. Address is determined by the level
  of the AD0 pin. Level 0 is 0x40 while Level 1 is 0x41.

  - VA-supply, VP-supply : power supplies for the device,
  as covered in Documentation/devicetree/bindings/regulator/regulator.txt.

Optional properties:

  - reset-gpios : a GPIO spec for the reset pin. If specified, it will be
  deasserted before communication to the codec starts.

  - cirrus,boost-manager : Boost voltage control.
  0 = Automatically managed.  Boost-converter output voltage is the higher
  of the two: Class G or adaptive LED voltage.
  1 = Automatically managed irrespective of audio, adapting for low-power
  dissipation when LEDs are ON, and operating in Fixed-Boost Bypass Mode
  if LEDs are OFF (VBST = VP).
  2 = (Default) Boost voltage fixed in Bypass Mode (VBST = VP).
  3 = Boost voltage fixed at 5 V.

  - cirrus,sdout-datacfg : Data configuration for dual CS35L32 applications only.
  Determines the data packed in a two-CS35L32 configuration.
  0 = Left/right channels VMON[11:0], IMON[11:0], VPMON[7:0].
  1 = Left/right channels VMON[11:0], IMON[11:0], STATUS.
  2 = (Default) left/right channels VMON[15:0], IMON [15:0].
  3 = Left/right channels VPMON[7:0], STATUS.

  - cirrus,sdout-share : SDOUT sharing. Determines whether one or two CS35L32
  devices are on board sharing SDOUT.
  0 = (Default) One IC.
  1 = Two IC's.

  - cirrus,battery-recovery : Low battery nominal recovery threshold, rising VP.
  0 = 3.1V
  1 = 3.2V
  2 = 3.3V (Default)
  3 = 3.4V

  - cirrus,battery-threshold : Low battery nominal threshold, falling VP.
  0 = 3.1V
  1 = 3.2V
  2 = 3.3V
  3 = 3.4V (Default)
  4 = 3.5V
  5 = 3.6V

Example:

codec: codec@40 {
	compatible = "cirrus,cs35l32";
	reg = <0x40>;
	reset-gpios = <&gpio 10 0>;
	cirrus,boost-manager = <0x03>;
	cirrus,sdout-datacfg = <0x02>;
	VA-supply = <&reg_audio>;
};
+38 −0
Original line number Original line Diff line number Diff line
Everest ES8328 audio CODEC

This device supports both I2C and SPI.

Required properties:

  - compatible : "everest,es8328"
  - DVDD-supply : Regulator providing digital core supply voltage 1.8 - 3.6V
  - AVDD-supply : Regulator providing analog supply voltage 3.3V
  - PVDD-supply : Regulator providing digital IO supply voltage 1.8 - 3.6V
  - IPVDD-supply : Regulator providing analog output voltage 3.3V
  - clocks : A 22.5792 or 11.2896 MHz clock
  - reg : the I2C address of the device for I2C, the chip select number for SPI

Pins on the device (for linking into audio routes):

  * LOUT1
  * LOUT2
  * ROUT1
  * ROUT2
  * LINPUT1
  * RINPUT1
  * LINPUT2
  * RINPUT2
  * Mic Bias


Example:

codec: es8328@11 {
	compatible = "everest,es8328";
	DVDD-supply = <&reg_3p3v>;
	AVDD-supply = <&reg_3p3v>;
	PVDD-supply = <&reg_3p3v>;
	HPVDD-supply = <&reg_3p3v>;
	clocks = <&clks 169>;
	reg = <0x11>;
};
+2 −1
Original line number Original line Diff line number Diff line
@@ -7,7 +7,8 @@ other DSPs. It has up to six transmitters and four receivers.


Required properties:
Required properties:


  - compatible : Compatible list, must contain "fsl,imx35-esai".
  - compatible : Compatible list, must contain "fsl,imx35-esai" or
		 "fsl,vf610-esai"


  - reg : Offset and length of the register set for the device.
  - reg : Offset and length of the register set for the device.


Loading