Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) Audio Graph Card:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) Audio Graph Card specifies audio DAI connections of SoC <-> codec.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) It is based on common bindings for device graphs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) see ${LINUX}/Documentation/devicetree/bindings/graph.txt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) Basically, Audio Graph Card property is same as Simple Card.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) see ${LINUX}/Documentation/devicetree/bindings/sound/simple-card.yaml
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) Below are same as Simple-Card.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) - label
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) - widgets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) - routing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) - dai-format
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) - frame-master
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) - bitclock-master
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) - bitclock-inversion
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) - frame-inversion
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) - mclk-fs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) - hp-det-gpio
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) - mic-det-gpio
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) - dai-tdm-slot-num
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) - dai-tdm-slot-width
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) - clocks / system-clock-frequency
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) Required properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) - compatible				: "audio-graph-card";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) - dais					: list of CPU DAI port{s}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) Optional properties:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) - pa-gpios: GPIO used to control external amplifier.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) Example: Single DAI case
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	sound_card {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 		compatible = "audio-graph-card";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 		dais = <&cpu_port>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	dai-controller {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 		cpu_port: port {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 			cpu_endpoint: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 				remote-endpoint = <&codec_endpoint>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 				dai-format = "left_j";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 				...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	audio-codec {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 		port {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 			codec_endpoint: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 				remote-endpoint = <&cpu_endpoint>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) Example: Multi DAI case
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	sound-card {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 		compatible = "audio-graph-card";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 		label = "sound-card";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 		dais = <&cpu_port0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 			&cpu_port1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 			&cpu_port2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	audio-codec@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 		port {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 			codec0_endpoint: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 				remote-endpoint = <&cpu_endpoint0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	audio-codec@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 		port {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 			codec1_endpoint: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 				remote-endpoint = <&cpu_endpoint1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	audio-codec@2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 		port {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 			codec2_endpoint: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 				remote-endpoint = <&cpu_endpoint2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	dai-controller {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 		ports {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 			cpu_port0: port@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 				cpu_endpoint0: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 					remote-endpoint = <&codec0_endpoint>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 					dai-format = "left_j";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 			cpu_port1: port@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 				cpu_endpoint1: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 					remote-endpoint = <&codec1_endpoint>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 					dai-format = "i2s";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 			cpu_port2: port@2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 				cpu_endpoint2: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 					remote-endpoint = <&codec2_endpoint>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 					dai-format = "i2s";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) Example: Sampling Rate Conversion
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 	sound_card {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 		compatible = "audio-graph-card";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 		label = "sound-card";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 		prefix = "codec";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 		routing = "codec Playback", "DAI0 Playback",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 			  "DAI0 Capture",   "codec Capture";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 		convert-rate = <48000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 		dais = <&cpu_port>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	audio-codec {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 		port {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 			codec_endpoint: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 				remote-endpoint = <&cpu_endpoint>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	dai-controller {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 		cpu_port: port {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 			cpu_endpoint: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 				remote-endpoint = <&codec_endpoint>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 				dai-format = "left_j";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 				...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) Example: 2 CPU 1 Codec (Mixing)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	sound_card {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 		compatible = "audio-graph-card";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 		label = "sound-card";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 		routing = "codec Playback", "DAI0 Playback",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 			  "codec Playback", "DAI1 Playback",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 			  "DAI0 Capture",   "codec Capture";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 		dais = <&cpu_port>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 	audio-codec {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 		audio-graph-card,prefix = "codec";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 		audio-graph-card,convert-rate = <48000>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 		port {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 			reg = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 			codec_endpoint0: endpoint@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 				remote-endpoint = <&cpu_endpoint0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 			codec_endpoint1: endpoint@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 				remote-endpoint = <&cpu_endpoint1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 	dai-controller {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 		cpu_port: port {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 			cpu_endpoint0: endpoint@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 				remote-endpoint = <&codec_endpoint0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 				dai-format = "left_j";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 				...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 			cpu_endpoint1: endpoint@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 				remote-endpoint = <&codec_endpoint1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 				dai-format = "left_j";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 				...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) Example: Multi DAI with DPCM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 	CPU0 ------ ak4613
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 	CPU1 ------ HDMI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 	CPU2 ------ PCM3168A-p	/* DPCM 1ch/2ch */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 	CPU3 --/		/* DPCM 3ch/4ch */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 	CPU4 --/		/* DPCM 5ch/6ch */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 	CPU5 --/		/* DPCM 7ch/8ch */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 	CPU6 ------ PCM3168A-c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 	sound_card: sound {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 		compatible = "audio-graph-card";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) 		label = "sound-card";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 		routing =	"pcm3168a Playback", "DAI2 Playback",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 				"pcm3168a Playback", "DAI3 Playback",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 				"pcm3168a Playback", "DAI4 Playback",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 				"pcm3168a Playback", "DAI5 Playback";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 		dais = <&snd_port0	/* ak4613 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 			&snd_port1	/* HDMI0  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 			&snd_port2	/* pcm3168a playback */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 			&snd_port3	/* pcm3168a capture  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 			>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 	ak4613: codec@10 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 		port {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 			ak4613_endpoint: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 				remote-endpoint = <&rsnd_endpoint0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 	pcm3168a: audio-codec@44 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 		...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 		audio-graph-card,prefix = "pcm3168a";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 		audio-graph-card,convert-channels = <8>; /* TDM Split */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 		ports {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 			port@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 				reg = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 				pcm3168a_endpoint_p1: endpoint@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 					remote-endpoint = <&rsnd_endpoint2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) 				pcm3168a_endpoint_p2: endpoint@2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 					remote-endpoint = <&rsnd_endpoint3>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 				pcm3168a_endpoint_p3: endpoint@3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 					remote-endpoint = <&rsnd_endpoint4>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 				pcm3168a_endpoint_p4: endpoint@4 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 					remote-endpoint = <&rsnd_endpoint5>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) 			port@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 				reg = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 				pcm3168a_endpoint_c: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 					remote-endpoint = <&rsnd_endpoint6>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 	};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 	&sound {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 		ports {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) 			snd_port0: port@0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 				rsnd_endpoint0: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 					remote-endpoint = <&ak4613_endpoint>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 			snd_port1: port@1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) 				rsnd_endpoint1: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) 					remote-endpoint = <&dw_hdmi0_snd_in>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 			snd_port2: port@2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 				#address-cells = <1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 				#size-cells = <0>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) 				rsnd_endpoint2: endpoint@2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 					remote-endpoint = <&pcm3168a_endpoint_p1>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) 				rsnd_endpoint3: endpoint@3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 					remote-endpoint = <&pcm3168a_endpoint_p2>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) 				rsnd_endpoint4: endpoint@4 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) 					remote-endpoint = <&pcm3168a_endpoint_p3>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 				rsnd_endpoint5: endpoint@5 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) 					remote-endpoint = <&pcm3168a_endpoint_p4>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 			snd_port3: port@6 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) 				rsnd_endpoint6: endpoint {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) 					remote-endpoint = <&pcm3168a_endpoint_c>;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 					...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 				};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) 			};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 		};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 	};