Audio Graph Card:

Audio Graph Card specifies audio DAI connections of SoC <-> codec.
It is based on common bindings for device graphs.
see ${LINUX}/Documentation/devicetree/bindings/graph.txt

Basically, Audio Graph Card property is same as Simple Card.
see ${LINUX}/Documentation/devicetree/bindings/sound/simple-card.txt

Below are same as Simple-Card.

- label
- widgets
- routing
- dai-format
- frame-master
- bitclock-master
- bitclock-inversion
- frame-inversion
- mclk-fs
- hp-det-gpio
- mic-det-gpio
- dai-tdm-slot-num
- dai-tdm-slot-width
- clocks / system-clock-frequency

Required properties:

- compatible				: "audio-graph-card";
- dais					: list of CPU DAI port{s}

Optional properties:
- pa-gpios: GPIO used to control external amplifier.

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

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

		dais = <&cpu_port>;
	};

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

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

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

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

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

		label = "sound-card";

		dais = <&cpu_port0
			&cpu_port1
			&cpu_port2>;
	};

	audio-codec@0 {
		...
		port {
			codec0_endpoint: endpoint {
				remote-endpoint = <&cpu_endpoint0>;
			};
		};
	};

	audio-codec@1 {
		...
		port {
			codec1_endpoint: endpoint {
				remote-endpoint = <&cpu_endpoint1>;
			};
		};
	};

	audio-codec@2 {
		...
		port {
			codec2_endpoint: endpoint {
				remote-endpoint = <&cpu_endpoint2>;
			};
		};
	};

	dai-controller {
		...
		ports {
			cpu_port0: port@0 {
				cpu_endpoint0: endpoint {
					remote-endpoint = <&codec0_endpoint>;

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

					dai-format = "i2s";
					...
				};
			};
			cpu_port2: port@2 {
				cpu_endpoint2: endpoint {
					remote-endpoint = <&codec2_endpoint>;

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


-----------------------
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>;
					...
				};
			};
		};
	};
