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

Commit a323ae93 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound updates from Takashi Iwai:
 "In this batch, you can find lots of cleanups through the whole
  subsystem, as our good New Year's resolution.  Lots of LOCs and
  commits are about LINE6 driver that was promoted finally from staging
  tree, and as usual, there've been widely spread ASoC changes.

  Here some highlights:

  ALSA core changes
   - Embedding struct device into ALSA core structures
   - sequencer core cleanups / fixes
   - PCM msbits constraints cleanups / fixes
   - New SNDRV_PCM_TRIGGER_DRAIN command
   - PCM kerneldoc fixes, header cleanups
   - PCM code cleanups using more standard codes
   - Control notification ID fixes

  Driver cleanups
   - Cleanups of PCI PM callbacks
   - Timer helper usages cleanups
   - Simplification (e.g. argument reduction) of many driver codes

  HD-audio
   - Hotkey and LED support on HP laptops with Realtek codecs
   - Dock station support on HP laptops
   - Toshiba Satellite S50D fixup
   - Enhanced wallclock timestamp handling for HD-audio
   - Componentization to simplify the linkage between i915 and hd-audio
     drivers for Intel HDMI/DP

  USB-audio
   - Akai MPC Element support
   - Enhanced timestamp handling

  ASoC
   - Lots of refactoringin ASoC core, moving drivers to more data driven
     initialization and rationalizing a lot of DAPM usage
   - Much improved handling of CDCLK clocks on Samsung I2S controllers
   - Lots of driver specific cleanups and feature improvements
   - CODEC support for TI PCM514x and TLV320AIC3104 devices
   - Board support for Tegra systems with Realtek RT5677
   - New driver for Maxim max98357a
   - More enhancements / fixes for Intel SST driver

  Others
   - Promotion of LINE6 driver from staging along with lots of rewrites
     and cleanups
   - DT support for old non-ASoC atmel driver
   - oxygen cleanups, XIO2001 init, Studio Evolution SE6x support
   - Emu8000 DRAM size detection fix on ISA(!!) AWE64 boards
   - A few more ak411x fixes for ice1724 boards"

* tag 'sound-3.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (542 commits)
  ALSA: line6: toneport: Use explicit type for firmware version
  ALSA: line6: Use explicit type for serial number
  ALSA: line6: Return EIO if read/write not successful
  ALSA: line6: Return error if device not responding
  ALSA: line6: Add delay before reading status
  ASoC: Intel: Clean data after SST fw fetch
  ALSA: hda - Add docking station support for another HP machine
  ALSA: control: fix failure to return new numerical ID in 'replace' event data
  ALSA: usb: update trigger timestamp on first non-zero URB submitted
  ALSA: hda: read trigger_timestamp immediately after starting DMA
  ALSA: pcm: allow for trigger_tstamp snapshot in .trigger
  ALSA: pcm: don't override timestamp unconditionally
  ALSA: off by one bug in snd_riptide_joystick_probe()
  ASoC: rt5670: Set use_single_rw flag for regmap
  ASoC: rt286: Add rt288 codec support
  ASoC: max98357a: Fix build in !CONFIG_OF case
  ASoC: Intel: fix platform_no_drv_owner.cocci warnings
  ARM: dts: Switch Odroid X2/U2 to simple-audio-card
  ARM: dts: Exynos4 and Odroid X2/U3 sound device nodes update
  ALSA: control: fix failure to return numerical ID in 'add' event
  ...
parents 3e63430a 0e806151
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
Bindings for I2S controller built into xtfpga Xtensa bitstreams.

Required properties:
- compatible: shall be "cdns,xtfpga-i2s".
- reg: memory region (address and length) with device registers.
- interrupts: interrupt for the device.
- clocks: phandle to the clk used as master clock. I2S bus clock
  is derived from it.

Examples:

	i2s0: xtfpga-i2s@0d080000 {
		#sound-dai-cells = <0>;
		compatible = "cdns,xtfpga-i2s";
		reg = <0x0d080000 0x40>;
		interrupts = <2 1>;
		clocks = <&cdce706 4>;
	};
+31 −0
Original line number Diff line number Diff line
DesignWare I2S controller

Required properties:
 - compatible : Must be "snps,designware-i2s"
 - reg : Must contain the I2S core's registers location and length
 - clocks : Pairs of phandle and specifier referencing the controller's
   clocks. The controller expects one clock: the clock used as the sampling
   rate reference clock sample.
 - clock-names : "i2sclk" for the sample rate reference clock.
 - dmas: Pairs of phandle and specifier for the DMA channels that are used by
   the core. The core expects one or two dma channels: one for transmit and
   one for receive.
 - dma-names : "tx" for the transmit channel, "rx" for the receive channel.

For more details on the 'dma', 'dma-names', 'clock' and 'clock-names'
properties please check:
	* resource-names.txt
	* clock/clock-bindings.txt
	* dma/dma.txt

Example:

	soc_i2s: i2s@7ff90000 {
		compatible = "snps,designware-i2s";
		reg = <0x0 0x7ff90000 0x0 0x1000>;
		clocks = <&scpi_i2sclk 0>;
		clock-names = "i2sclk";
		#sound-dai-cells = <0>;
		dmas = <&dma0 5>;
		dma-names = "tx";
	};
+23 −0
Original line number Diff line number Diff line
Ingenic JZ4740 I2S controller

Required properties:
- compatible : "ingenic,jz4740-i2s"
- reg : I2S registers location and length
- clocks : AIC and I2S PLL clock specifiers.
- clock-names: "aic" and "i2s"
- dmas: DMA controller phandle and DMA request line for I2S Tx and Rx channels
- dma-names: Must be "tx" and "rx"

Example:

i2s: i2s@10020000 {
	compatible = "ingenic,jz4740-i2s";
	reg = <0x10020000 0x94>;

	clocks = <&cgu JZ4740_CLK_AIC>, <&cgu JZ4740_CLK_I2SPLL>;
	clock-names = "aic", "i2s";

	dmas = <&dma 2>, <&dma 3>;
	dma-names = "tx", "rx";

};
+14 −0
Original line number Diff line number Diff line
Maxim MAX98357A audio DAC

This node models the Maxim MAX98357A DAC.

Required properties:
- compatible   : "maxim,max98357a"
- sdmode-gpios : GPIO specifier for the GPIO -> DAC SDMODE pin

Example:

max98357a {
	compatible = "maxim,max98357a";
	sdmode-gpios = <&qcom_pinmux 25 0>;
};
+67 −0
Original line number Diff line number Diff line
NVIDIA Tegra audio complex, with RT5677 CODEC

Required properties:
- compatible : "nvidia,tegra-audio-rt5677"
- clocks : Must contain an entry for each entry in clock-names.
  See ../clocks/clock-bindings.txt for details.
- clock-names : Must include the following entries:
  - pll_a
  - pll_a_out0
  - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
- nvidia,model : The user-visible name of this sound complex.
- nvidia,audio-routing : A list of the connections between audio components.
  Each entry is a pair of strings, the first being the connection's sink,
  the second being the connection's source. Valid names for sources and
  sinks are the RT5677's pins (as documented in its binding), and the jacks
  on the board:

  * Headphone
  * Speaker
  * Headset Mic
  * Internal Mic 1
  * Internal Mic 2

- nvidia,i2s-controller : The phandle of the Tegra I2S controller that's
  connected to the CODEC.
- nvidia,audio-codec : The phandle of the RT5677 audio codec. This binding
  assumes that AIF1 on the CODEC is connected to Tegra.

Optional properties:
- nvidia,hp-det-gpios : The GPIO that detects headphones are plugged in
- nvidia,hp-en-gpios : The GPIO that enables headphone amplifier
- nvidia,mic-present-gpios: The GPIO that mic jack is plugged in
- nvidia,dmic-clk-en-gpios : The GPIO that gates DMIC clock signal

Example:

sound {
	compatible = "nvidia,tegra-audio-rt5677-ryu",
	        "nvidia,tegra-audio-rt5677";
	nvidia,model = "NVIDIA Tegra Ryu";

	nvidia,audio-routing =
		"Headphone", "LOUT2",
		"Headphone", "LOUT1",
		"Headset Mic", "MICBIAS1",
		"IN1P", "Headset Mic",
		"IN1N", "Headset Mic",
		"DMIC L1", "Internal Mic 1",
		"DMIC R1", "Internal Mic 1",
		"DMIC L2", "Internal Mic 2",
		"DMIC R2", "Internal Mic 2",
		"Speaker", "PDM1L",
		"Speaker", "PDM1R";

	nvidia,i2s-controller = <&tegra_i2s1>;
	nvidia,audio-codec = <&rt5677>;

	nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>;
	nvidia,mic-present-gpios = <&gpio TEGRA_GPIO(O, 5) GPIO_ACTIVE_LOW>;
	nvidia,hp-en-gpios = <&rt5677 1 GPIO_ACTIVE_HIGH>;
	nvidia,dmic-clk-en-gpios = <&rt5677 2 GPIO_ACTIVE_HIGH>;

	clocks = <&tegra_car TEGRA124_CLK_PLL_A>,
	         <&tegra_car TEGRA124_CLK_PLL_A_OUT0>,
	         <&tegra_car TEGRA124_CLK_EXTERN1>;
	clock-names = "pll_a", "pll_a_out0", "mclk";
};
Loading