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

Unverified Commit a7a850db authored by Mark Brown's avatar Mark Brown
Browse files

Merge branch 'asoc-4.21' into asoc-next

parents c5fd9e77 0f4967bc
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