Linux Audio

Check our new training course

In-person Linux kernel drivers training

Jun 16-20, 2025
Register
Loading...
Note: File does not exist in v6.9.4.
  1/*
  2 * Device Tree Source for the Porter board
  3 *
  4 * Copyright (C) 2015 Cogent Embedded, Inc.
  5 *
  6 * This file is licensed under the terms of the GNU General Public License
  7 * version 2.  This program is licensed "as is" without any warranty of any
  8 * kind, whether express or implied.
  9 */
 10
 11/*
 12 * SSI-AK4642
 13 *
 14 * JP3: 2-1: AK4642
 15 *      2-3: ADV7511
 16 *
 17 * This command is required before playback/capture:
 18 *
 19 *	amixer set "LINEOUT Mixer DACL" on
 20 */
 21
 22/dts-v1/;
 23#include "r8a7791.dtsi"
 24#include <dt-bindings/gpio/gpio.h>
 25
 26/ {
 27	model = "Porter";
 28	compatible = "renesas,porter", "renesas,r8a7791";
 29
 30	aliases {
 31		serial0 = &scif0;
 32		i2c9 = &gpioi2c2;
 33		i2c10 = &i2chdmi;
 34	};
 35
 36	chosen {
 37		bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp";
 38		stdout-path = "serial0:115200n8";
 39	};
 40
 41	memory@40000000 {
 42		device_type = "memory";
 43		reg = <0 0x40000000 0 0x40000000>;
 44	};
 45
 46	memory@200000000 {
 47		device_type = "memory";
 48		reg = <2 0x00000000 0 0x40000000>;
 49	};
 50
 51	vcc_sdhi0: regulator-vcc-sdhi0 {
 52		compatible = "regulator-fixed";
 53
 54		regulator-name = "SDHI0 Vcc";
 55		regulator-min-microvolt = <3300000>;
 56		regulator-max-microvolt = <3300000>;
 57		regulator-always-on;
 58	};
 59
 60	vccq_sdhi0: regulator-vccq-sdhi0 {
 61		compatible = "regulator-gpio";
 62
 63		regulator-name = "SDHI0 VccQ";
 64		regulator-min-microvolt = <1800000>;
 65		regulator-max-microvolt = <3300000>;
 66
 67		gpios = <&gpio2 12 GPIO_ACTIVE_HIGH>;
 68		gpios-states = <1>;
 69		states = <3300000 1
 70			  1800000 0>;
 71	};
 72
 73	vcc_sdhi2: regulator-vcc-sdhi2 {
 74		compatible = "regulator-fixed";
 75
 76		regulator-name = "SDHI2 Vcc";
 77		regulator-min-microvolt = <3300000>;
 78		regulator-max-microvolt = <3300000>;
 79		regulator-always-on;
 80	};
 81
 82	vccq_sdhi2: regulator-vccq-sdhi2 {
 83		compatible = "regulator-gpio";
 84
 85		regulator-name = "SDHI2 VccQ";
 86		regulator-min-microvolt = <1800000>;
 87		regulator-max-microvolt = <3300000>;
 88
 89		gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>;
 90		gpios-states = <1>;
 91		states = <3300000 1
 92			  1800000 0>;
 93	};
 94
 95	hdmi-out {
 96		compatible = "hdmi-connector";
 97		type = "a";
 98
 99		port {
100			hdmi_con: endpoint {
101				remote-endpoint = <&adv7511_out>;
102			};
103		};
104	};
105
106	x3_clk: x3-clock {
107		compatible = "fixed-clock";
108		#clock-cells = <0>;
109		clock-frequency = <148500000>;
110	};
111
112	x16_clk: x16-clock {
113		compatible = "fixed-clock";
114		#clock-cells = <0>;
115		clock-frequency = <74250000>;
116	};
117
118	x14_clk: audio_clock {
119		compatible = "fixed-clock";
120		#clock-cells = <0>;
121		clock-frequency = <11289600>;
122	};
123
124	sound {
125		compatible = "simple-audio-card";
126
127		simple-audio-card,format = "left_j";
128		simple-audio-card,bitclock-master = <&soundcodec>;
129		simple-audio-card,frame-master = <&soundcodec>;
130
131		simple-audio-card,cpu {
132			sound-dai = <&rcar_sound>;
133		};
134
135		soundcodec: simple-audio-card,codec {
136			sound-dai = <&ak4642>;
137			clocks = <&x14_clk>;
138		};
139	};
140
141	gpioi2c2: i2c-9 {
142		#address-cells = <1>;
143		#size-cells = <0>;
144		compatible = "i2c-gpio";
145		status = "disabled";
146		scl-gpios = <&gpio2 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
147		sda-gpios = <&gpio2 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
148		i2c-gpio,delay-us = <5>;
149	};
150
151	/*
152	 * A fallback to GPIO is provided for I2C2.
153	 */
154	i2chdmi: i2c-10 {
155		compatible = "i2c-demux-pinctrl";
156		i2c-parent = <&i2c2>, <&gpioi2c2>;
157		i2c-bus-name = "i2c-hdmi";
158		#address-cells = <1>;
159		#size-cells = <0>;
160
161		ak4642: codec@12 {
162			compatible = "asahi-kasei,ak4642";
163			#sound-dai-cells = <0>;
164			reg = <0x12>;
165		};
166
167		composite-in@20 {
168			compatible = "adi,adv7180";
169			reg = <0x20>;
170			remote = <&vin0>;
171
172			port {
173				adv7180: endpoint {
174					bus-width = <8>;
175					remote-endpoint = <&vin0ep>;
176				};
177			};
178		};
179
180		hdmi@39 {
181			compatible = "adi,adv7511w";
182			reg = <0x39>;
183			interrupt-parent = <&gpio3>;
184			interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
185
186			adi,input-depth = <8>;
187			adi,input-colorspace = "rgb";
188			adi,input-clock = "1x";
189			adi,input-style = <1>;
190			adi,input-justification = "evenly";
191
192			ports {
193				#address-cells = <1>;
194				#size-cells = <0>;
195
196				port@0 {
197					reg = <0>;
198					adv7511_in: endpoint {
199						remote-endpoint = <&du_out_rgb>;
200					};
201				};
202
203				port@1 {
204					reg = <1>;
205					adv7511_out: endpoint {
206						remote-endpoint = <&hdmi_con>;
207					};
208				};
209			};
210		};
211	};
212};
213
214&extal_clk {
215	clock-frequency = <20000000>;
216};
217
218&pfc {
219	scif0_pins: scif0 {
220		groups = "scif0_data_d";
221		function = "scif0";
222	};
223
224	ether_pins: ether {
225		groups = "eth_link", "eth_mdio", "eth_rmii";
226		function = "eth";
227	};
228
229	phy1_pins: phy1 {
230		groups = "intc_irq0";
231		function = "intc";
232	};
233
234	sdhi0_pins: sd0 {
235		groups = "sdhi0_data4", "sdhi0_ctrl";
236		function = "sdhi0";
237	};
238
239	sdhi2_pins: sd2 {
240		groups = "sdhi2_data4", "sdhi2_ctrl";
241		function = "sdhi2";
242	};
243
244	qspi_pins: qspi {
245		groups = "qspi_ctrl", "qspi_data4";
246		function = "qspi";
247	};
248
249	i2c2_pins: i2c2 {
250		groups = "i2c2";
251		function = "i2c2";
252	};
253
254	usb0_pins: usb0 {
255		groups = "usb0";
256		function = "usb0";
257	};
258
259	usb1_pins: usb1 {
260		groups = "usb1";
261		function = "usb1";
262	};
263
264	vin0_pins: vin0 {
265		groups = "vin0_data8", "vin0_clk";
266		function = "vin0";
267	};
268
269	can0_pins: can0 {
270		groups = "can0_data";
271		function = "can0";
272	};
273
274	du_pins: du {
275		groups = "du_rgb888", "du_sync", "du_disp", "du_clk_out_0";
276		function = "du";
277	};
278
279	ssi_pins: sound {
280		groups = "ssi0129_ctrl", "ssi0_data", "ssi1_data";
281		function = "ssi";
282	};
283
284	audio_clk_pins: audio_clk {
285		groups = "audio_clk_a";
286		function = "audio_clk";
287	};
288};
289
290&scif0 {
291	pinctrl-0 = <&scif0_pins>;
292	pinctrl-names = "default";
293
294	status = "okay";
295};
296
297&ether {
298	pinctrl-0 = <&ether_pins &phy1_pins>;
299	pinctrl-names = "default";
300
301	phy-handle = <&phy1>;
302	renesas,ether-link-active-low;
303	status = "okay";
304
305	phy1: ethernet-phy@1 {
306		reg = <1>;
307		interrupt-parent = <&irqc0>;
308		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
309		micrel,led-mode = <1>;
310	};
311};
312
313&sdhi0 {
314	pinctrl-0 = <&sdhi0_pins>;
315	pinctrl-names = "default";
316
317	vmmc-supply = <&vcc_sdhi0>;
318	vqmmc-supply = <&vccq_sdhi0>;
319	cd-gpios = <&gpio6 6 GPIO_ACTIVE_LOW>;
320	wp-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
321	status = "okay";
322};
323
324&sdhi2 {
325	pinctrl-0 = <&sdhi2_pins>;
326	pinctrl-names = "default";
327
328	vmmc-supply = <&vcc_sdhi2>;
329	vqmmc-supply = <&vccq_sdhi2>;
330	cd-gpios = <&gpio6 22 GPIO_ACTIVE_LOW>;
331	status = "okay";
332};
333
334&qspi {
335	pinctrl-0 = <&qspi_pins>;
336	pinctrl-names = "default";
337
338	status = "okay";
339
340	flash@0 {
341		compatible = "spansion,s25fl512s", "jedec,spi-nor";
342		reg = <0>;
343		spi-max-frequency = <30000000>;
344		spi-tx-bus-width = <4>;
345		spi-rx-bus-width = <4>;
346		m25p,fast-read;
347
348		partitions {
349			compatible = "fixed-partitions";
350			#address-cells = <1>;
351			#size-cells = <1>;
352
353			partition@0 {
354				label = "loader_prg";
355				reg = <0x00000000 0x00040000>;
356				read-only;
357			};
358			partition@40000 {
359				label = "user_prg";
360				reg = <0x00040000 0x00400000>;
361				read-only;
362			};
363			partition@440000 {
364				label = "flash_fs";
365				reg = <0x00440000 0x03bc0000>;
366			};
367		};
368	};
369};
370
371&i2c2 {
372	pinctrl-0 = <&i2c2_pins>;
373	pinctrl-names = "i2c-hdmi";
374
375	clock-frequency = <400000>;
376};
377
378&sata0 {
379	status = "okay";
380};
381
382/* composite video input */
383&vin0 {
384	status = "okay";
385	pinctrl-0 = <&vin0_pins>;
386	pinctrl-names = "default";
387
388	port {
389		#address-cells = <1>;
390		#size-cells = <0>;
391
392		vin0ep: endpoint {
393			remote-endpoint = <&adv7180>;
394			bus-width = <8>;
395		};
396	};
397};
398
399&pci0 {
400	pinctrl-0 = <&usb0_pins>;
401	pinctrl-names = "default";
402
403	status = "okay";
404};
405
406&pci1 {
407	pinctrl-0 = <&usb1_pins>;
408	pinctrl-names = "default";
409
410	status = "okay";
411};
412
413&hsusb {
414	pinctrl-0 = <&usb0_pins>;
415	pinctrl-names = "default";
416
417	status = "okay";
418};
419
420&usbphy {
421	status = "okay";
422};
423
424&pcie_bus_clk {
425	clock-frequency = <100000000>;
426};
427
428&pciec {
429	status = "okay";
430};
431
432&can0 {
433	pinctrl-0 = <&can0_pins>;
434	pinctrl-names = "default";
435
436	status = "okay";
437};
438
439&du {
440	pinctrl-0 = <&du_pins>;
441	pinctrl-names = "default";
442	status = "okay";
443
444	clocks = <&cpg CPG_MOD 724>, <&cpg CPG_MOD 723>,
445		 <&x3_clk>, <&x16_clk>;
446	clock-names = "du.0", "du.1", "dclkin.0", "dclkin.1";
447
448	ports {
449		port@0 {
450			endpoint {
451				remote-endpoint = <&adv7511_in>;
452			};
453		};
454	};
455};
456
457&lvds0 {
458	status = "okay";
459
460	ports {
461		port@1 {
462			lvds_connector: endpoint {
463			};
464		};
465	};
466};
467
468&rcar_sound {
469	pinctrl-0 = <&ssi_pins &audio_clk_pins>;
470	pinctrl-names = "default";
471	status = "okay";
472
473	/* Single DAI */
474	#sound-dai-cells = <0>;
475
476	rcar_sound,dai {
477		dai0 {
478			playback = <&ssi0>;
479			capture  = <&ssi1>;
480		};
481	};
482};
483
484&ssi1 {
485	shared-pin;
486};