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

Commit 8e61e7b5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sound updates from Takashi Iwai:
 "There are no intensive changes in both ALSA and ASoC core parts while
  rather most of changes are a bunch of driver fixes and updates. A
  large diff pattern appears in ASoC TI part which now merges both OMAP
  and DaVinci stuff, but the rest spreads allover the places.

  Note that this pull request includes also some updates for LED trigger
  and platform drivers for mute LEDs, appearing in the diffstat as well.

  Some highlights:

  ASoC:
   - Preparatory work for merging the audio-graph and audio-graph-scu
     cards
   - A merge of TI OMAP and DaVinci directories, as both product lines
     get merged together. Also including a few architecture changes as
     well.
   - Major cleanups of the Maxim MAX9867 driver
   - Small fixes for tablets & co with Intel BYT/CHT chips
   - Lots of rsnd updates as usual
   - Support for Asahi Kaesi AKM4118, AMD ACP3x, Intel platforms with
     RT5660, Meson AXG S/PDIF inputs, several Qualcomm IPs and Xilinx
     I2S controllers

  HD-audio:
   - Introduce audio-mute LED trigger for replacing the former hackish
     dynamic binding
   - Huawei WMI hotkey and mute LED support
   - Refactoring of PM code and display power controls
   - Headset button support in the generic jack code
   - A few updates for Tegra
   - Fixups for HP EliteBook and ASUS UX391UA
   - Lots of updates for Intel ASoC HD-audio, including the improved DSP
     detection and the fallback binding from ASoC SST to legacy HD-audio
     controller drivers

  Others:
   - Updates for FireWire TASCAM and Fireface devices, some other fixes
   - A few potential Spectre v1 fixes that are all trivial"

* tag 'sound-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (280 commits)
  ALSA: HD-Audio: SKL+: force HDaudio legacy or SKL+ driver selection
  ALSA: HD-Audio: SKL+: abort probe if DSP is present and Skylake driver selected
  ALSA: HDA: export process_unsol_events()
  ALSA: hda/realtek: Enable audio jacks of ASUS UX391UA with ALC294
  ALSA: bebob: fix model-id of unit for Apogee Ensemble
  ALSA: emu10k1: Fix potential Spectre v1 vulnerabilities
  ALSA: rme9652: Fix potential Spectre v1 vulnerability
  ASoC: ti: Kconfig: Remove the deprecated options
  ARM: davinci_all_defconfig: Update the audio options
  ARM: omap1_defconfig: Do not select ASoC by default
  ARM: omap2plus_defconfig: Update the audio options
  ARM: davinci: dm365-evm: Update for the new ASoC Kcofnig options
  ARM: OMAP2: Update for new MCBSP Kconfig option
  ARM: OMAP1: Makefile: Update for new MCBSP Kconfig option
  MAINTAINERS: Add entry for sound/soc/ti and update the OMAP audio support
  ASoC: ti: Merge davinci and omap directories
  ALSA: hda: add mute LED support for HP EliteBook 840 G4
  ALSA: fireface: code refactoring to handle model-specific registers
  ALSA: fireface: add support for packet streaming on Fireface 800
  ALSA: fireface: allocate isochronous resources in mode-specific implementation
  ...
parents 996680d4 d82b51c8
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ Required properties:

Optional properties:

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

Example:
+22 −0
Original line number Diff line number Diff line
AK4118 S/PDIF transceiver

This device supports I2C mode.

Required properties:

- compatible : "asahi-kasei,ak4118"
- reg : The I2C address of the device for I2C
- reset-gpios: A GPIO specifier for the reset pin
- irq-gpios: A GPIO specifier for the IRQ pin

Example:

&i2c {
	ak4118: ak4118@13 {
		#sound-dai-cells = <0>;
		compatible = "asahi-kasei,ak4118";
		reg = <0x13>;
		reset-gpios = <&gpio 0 GPIO_ACTIVE_LOW>
		irq-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
	};
};
+22 −0
Original line number Diff line number Diff line
* Amlogic Audio SPDIF Input

Required properties:
- compatible: 'amlogic,axg-spdifin'
- interrupts: interrupt specifier for the spdif input.
- clocks: list of clock phandle, one for each entry clock-names.
- clock-names: should contain the following:
  * "pclk" : peripheral clock.
  * "refclk" : spdif input reference clock
- #sound-dai-cells: must be 0.

Example on the A113 SoC:

spdifin: audio-controller@400 {
	compatible = "amlogic,axg-spdifin";
	reg = <0x0 0x400 0x0 0x30>;
	#sound-dai-cells = <0>;
	interrupts = <GIC_SPI 87 IRQ_TYPE_EDGE_RISING>;
	clocks = <&clkc_audio AUD_CLKID_SPDIFIN>,
		 <&clkc_audio AUD_CLKID_SPDIFIN_CLK>;
	clock-names = "pclk", "refclk";
};
+205 −0
Original line number Diff line number Diff line
@@ -32,7 +32,9 @@ Required properties:
Optional properties:
- pa-gpios: GPIO used to control external amplifier.

-----------------------
Example: Single DAI case
-----------------------

	sound_card {
		compatible = "audio-graph-card";
@@ -61,7 +63,9 @@ Example: Single DAI case
		};
	};

-----------------------
Example: Multi DAI case
-----------------------

	sound-card {
		compatible = "audio-graph-card";
@@ -130,3 +134,204 @@ Example: Multi DAI case
		};
	};


-----------------------
Example: Sampling Rate Conversion
-----------------------

	sound_card {
		compatible = "audio-graph-card";

		label = "sound-card";
		prefix = "codec";
		routing = "codec Playback", "DAI0 Playback",
			  "DAI0 Capture",   "codec Capture";
		convert-rate = <48000>;

		dais = <&cpu_port>;
	};

	audio-codec {
		...
		port {
			codec_endpoint: endpoint {
				remote-endpoint = <&cpu_endpoint>;
			};
		};
	};

	dai-controller {
		...
		cpu_port: port {
			cpu_endpoint: endpoint {
				remote-endpoint = <&codec_endpoint>;

				dai-format = "left_j";
				...
			};
		};
	};

-----------------------
Example: 2 CPU 1 Codec (Mixing)
-----------------------

	sound_card {
		compatible = "audio-graph-card";

		label = "sound-card";
		routing = "codec Playback", "DAI0 Playback",
			  "codec Playback", "DAI1 Playback",
			  "DAI0 Capture",   "codec Capture";

		dais = <&cpu_port>;
	};

	audio-codec {
		...

		audio-graph-card,prefix = "codec";
		audio-graph-card,convert-rate = <48000>;
		port {
			reg = <0>;
			codec_endpoint0: endpoint@0 {
				remote-endpoint = <&cpu_endpoint0>;
			};
			codec_endpoint1: endpoint@1 {
				remote-endpoint = <&cpu_endpoint1>;
			};
		};
	};

	dai-controller {
		...
		cpu_port: port {
			cpu_endpoint0: endpoint@0 {
				remote-endpoint = <&codec_endpoint0>;

				dai-format = "left_j";
				...
			};
			cpu_endpoint1: endpoint@1 {
				remote-endpoint = <&codec_endpoint1>;

				dai-format = "left_j";
				...
			};
		};
	};

-----------------------
Example: Multi DAI with DPCM
-----------------------

	CPU0 ------ ak4613
	CPU1 ------ HDMI
	CPU2 ------ PCM3168A-p	/* DPCM 1ch/2ch */
	CPU3 --/		/* DPCM 3ch/4ch */
	CPU4 --/		/* DPCM 5ch/6ch */
	CPU5 --/		/* DPCM 7ch/8ch */
	CPU6 ------ PCM3168A-c

	sound_card: sound {
		compatible = "audio-graph-card";

		label = "sound-card";

		routing =	"pcm3168a Playback", "DAI2 Playback",
				"pcm3168a Playback", "DAI3 Playback",
				"pcm3168a Playback", "DAI4 Playback",
				"pcm3168a Playback", "DAI5 Playback";

		dais = <&snd_port0	/* ak4613 */
			&snd_port1	/* HDMI0  */
			&snd_port2	/* pcm3168a playback */
			&snd_port3	/* pcm3168a capture  */
			>;
	};

	ak4613: codec@10 {
		...
		port {
			ak4613_endpoint: endpoint {
				remote-endpoint = <&rsnd_endpoint0>;
			};
		};
	};

	pcm3168a: audio-codec@44 {
		...
		audio-graph-card,prefix = "pcm3168a";
		audio-graph-card,convert-channels = <8>; /* TDM Split */
		ports {
			port@0 {
				reg = <0>;
				pcm3168a_endpoint_p1: endpoint@1 {
					remote-endpoint = <&rsnd_endpoint2>;
					...
				};
				pcm3168a_endpoint_p2: endpoint@2 {
					remote-endpoint = <&rsnd_endpoint3>;
					...
				};
				pcm3168a_endpoint_p3: endpoint@3 {
					remote-endpoint = <&rsnd_endpoint4>;
					...
				};
				pcm3168a_endpoint_p4: endpoint@4 {
					remote-endpoint = <&rsnd_endpoint5>;
					...
				};
			};
			port@1 {
				reg = <1>;
				pcm3168a_endpoint_c: endpoint {
					remote-endpoint = <&rsnd_endpoint6>;
					...
				};
			};
		};
	};

	&sound {
		ports {
			snd_port0: port@0 {
				rsnd_endpoint0: endpoint {
					remote-endpoint = <&ak4613_endpoint>;
					...
				};
			};
			snd_port1: port@1 {
				rsnd_endpoint1: endpoint {
					remote-endpoint = <&dw_hdmi0_snd_in>;
					...
				};
			};
			snd_port2: port@2 {
				#address-cells = <1>;
				#size-cells = <0>;
				rsnd_endpoint2: endpoint@2 {
					remote-endpoint = <&pcm3168a_endpoint_p1>;
					...
				};
				rsnd_endpoint3: endpoint@3 {
					remote-endpoint = <&pcm3168a_endpoint_p2>;
					...
				};
				rsnd_endpoint4: endpoint@4 {
					remote-endpoint = <&pcm3168a_endpoint_p3>;
					...
				};
				rsnd_endpoint5: endpoint@5 {
					remote-endpoint = <&pcm3168a_endpoint_p4>;
					...
				};
			};
			snd_port3: port@6 {
				rsnd_endpoint6: endpoint {
					remote-endpoint = <&pcm3168a_endpoint_c>;
					...
				};
			};
		};
	};
+2 −2
Original line number Diff line number Diff line
@@ -77,11 +77,9 @@ Example 2. 2 CPU 1 Codec (Mixing)
		compatible = "audio-graph-scu-card";

		label = "sound-card";
		prefix = "codec";
		routing = "codec Playback", "DAI0 Playback",
			  "codec Playback", "DAI1 Playback",
			  "DAI0 Capture",   "codec Capture";
		convert-rate = <48000>;

		dais = <&cpu_port0
			&cpu_port1>;
@@ -90,6 +88,8 @@ Example 2. 2 CPU 1 Codec (Mixing)
	audio-codec {
		...

		audio-graph-card,prefix = "codec";
		audio-graph-card,convert-rate = <48000>;
		port {
			codec_endpoint0: endpoint {
				remote-endpoint = <&cpu_endpoint0>;
Loading