Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.9.4.
  1/*
  2 * Device Tree Source for the SILK board
  3 *
  4 * Copyright (C) 2014 Renesas Electronics Corporation
  5 * Copyright (C) 2014-2015 Renesas Solutions Corp.
  6 * Copyright (C) 2014-2015 Cogent Embedded, Inc.
  7 *
  8 * This file is licensed under the terms of the GNU General Public License
  9 * version 2.  This program is licensed "as is" without any warranty of any
 10 * kind, whether express or implied.
 11 */
 12
 13/*
 14 * SSI-AK4643
 15 *
 16 * SW1: 2-1: AK4643
 17 *      2-3: ADV7511
 18 *
 19 * This command is required before playback/capture:
 20 *
 21 *	amixer set "LINEOUT Mixer DACL" on
 22 */
 23
 24/dts-v1/;
 25#include "r8a7794.dtsi"
 26#include <dt-bindings/gpio/gpio.h>
 27#include <dt-bindings/input/input.h>
 28
 29/ {
 30	model = "SILK";
 31	compatible = "renesas,silk", "renesas,r8a7794";
 32
 33	aliases {
 34		serial0 = &scif2;
 35		i2c9 = &gpioi2c1;
 36		i2c10 = &i2chdmi;
 37	};
 38
 39	chosen {
 40		bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp";
 41		stdout-path = "serial0:115200n8";
 42	};
 43
 44	memory@40000000 {
 45		device_type = "memory";
 46		reg = <0 0x40000000 0 0x40000000>;
 47	};
 48
 49	gpio-keys {
 50		compatible = "gpio-keys";
 51
 52		key-3 {
 53			gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
 54			linux,code = <KEY_3>;
 55			label = "SW3";
 56			wakeup-source;
 57			debounce-interval = <20>;
 58		};
 59		key-4 {
 60			gpios = <&gpio5 11 GPIO_ACTIVE_LOW>;
 61			linux,code = <KEY_4>;
 62			label = "SW4";
 63			wakeup-source;
 64			debounce-interval = <20>;
 65		};
 66		key-6 {
 67			gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;
 68			linux,code = <KEY_6>;
 69			label = "SW6";
 70			wakeup-source;
 71			debounce-interval = <20>;
 72		};
 73		key-a {
 74			gpios = <&gpio3 9 GPIO_ACTIVE_LOW>;
 75			linux,code = <KEY_A>;
 76			label = "SW12-1";
 77			wakeup-source;
 78			debounce-interval = <20>;
 79		};
 80		key-b {
 81			gpios = <&gpio3 10 GPIO_ACTIVE_LOW>;
 82			linux,code = <KEY_B>;
 83			label = "SW12-2";
 84			wakeup-source;
 85			debounce-interval = <20>;
 86		};
 87		key-c {
 88			gpios = <&gpio3 11 GPIO_ACTIVE_LOW>;
 89			linux,code = <KEY_C>;
 90			label = "SW12-3";
 91			wakeup-source;
 92			debounce-interval = <20>;
 93		};
 94		key-d {
 95			gpios = <&gpio3 12 GPIO_ACTIVE_LOW>;
 96			linux,code = <KEY_D>;
 97			label = "SW12-4";
 98			wakeup-source;
 99			debounce-interval = <20>;
100		};
101	};
102
103	d3_3v: regulator-d3-3v {
104		compatible = "regulator-fixed";
105		regulator-name = "D3.3V";
106		regulator-min-microvolt = <3300000>;
107		regulator-max-microvolt = <3300000>;
108		regulator-boot-on;
109		regulator-always-on;
110	};
111
112	vcc_sdhi1: regulator-vcc-sdhi1 {
113		compatible = "regulator-fixed";
114
115		regulator-name = "SDHI1 Vcc";
116		regulator-min-microvolt = <3300000>;
117		regulator-max-microvolt = <3300000>;
118
119		gpio = <&gpio4 26 GPIO_ACTIVE_HIGH>;
120		enable-active-high;
121	};
122
123	vccq_sdhi1: regulator-vccq-sdhi1 {
124		compatible = "regulator-gpio";
125
126		regulator-name = "SDHI1 VccQ";
127		regulator-min-microvolt = <1800000>;
128		regulator-max-microvolt = <3300000>;
129
130		gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>;
131		gpios-states = <1>;
132		states = <3300000 1
133			  1800000 0>;
134	};
135
136	vga-encoder {
137		compatible = "adi,adv7123";
138
139		ports {
140			#address-cells = <1>;
141			#size-cells = <0>;
142
143			port@0 {
144				reg = <0>;
145				adv7123_in: endpoint {
146					remote-endpoint = <&du_out_rgb1>;
147				};
148			};
149			port@1 {
150				reg = <1>;
151				adv7123_out: endpoint {
152					remote-endpoint = <&vga_in>;
153				};
154			};
155		};
156	};
157
158	hdmi-out {
159		compatible = "hdmi-connector";
160		type = "a";
161
162		port {
163			hdmi_con: endpoint {
164				remote-endpoint = <&adv7511_out>;
165			};
166		};
167	};
168
169	vga {
170		compatible = "vga-connector";
171
172		port {
173			vga_in: endpoint {
174				remote-endpoint = <&adv7123_out>;
175			};
176		};
177	};
178
179	x2_clk: x2-clock {
180		compatible = "fixed-clock";
181		#clock-cells = <0>;
182		clock-frequency = <148500000>;
183	};
184
185	x3_clk: x3-clock {
186		compatible = "fixed-clock";
187		#clock-cells = <0>;
188		clock-frequency = <74250000>;
189	};
190
191	x9_clk: audio_clock {
192		compatible = "fixed-clock";
193		#clock-cells = <0>;
194		clock-frequency = <12288000>;
195	};
196
197	sound {
198		compatible = "simple-audio-card";
199
200		simple-audio-card,format = "left_j";
201		simple-audio-card,bitclock-master = <&soundcodec>;
202		simple-audio-card,frame-master = <&soundcodec>;
203
204		simple-audio-card,cpu {
205			sound-dai = <&rcar_sound>;
206		};
207
208		soundcodec: simple-audio-card,codec {
209			sound-dai = <&ak4643>;
210			clocks = <&x9_clk>;
211		};
212	};
213
214	gpioi2c1: i2c-9 {
215		#address-cells = <1>;
216		#size-cells = <0>;
217		compatible = "i2c-gpio";
218		status = "disabled";
219		scl-gpios = <&gpio4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
220		sda-gpios = <&gpio4 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
221		i2c-gpio,delay-us = <5>;
222	};
223
224	/*
225	 * A fallback to GPIO is provided for I2C1.
226	 */
227	i2chdmi: i2c-10 {
228		compatible = "i2c-demux-pinctrl";
229		i2c-parent = <&i2c1>, <&gpioi2c1>;
230		i2c-bus-name = "i2c-hdmi";
231		#address-cells = <1>;
232		#size-cells = <0>;
233
234		ak4643: codec@12 {
235			compatible = "asahi-kasei,ak4643";
236			#sound-dai-cells = <0>;
237			reg = <0x12>;
238		};
239
240		composite-in@20 {
241			compatible = "adi,adv7180";
242			reg = <0x20>;
243			remote = <&vin0>;
244
245			port {
246				adv7180: endpoint {
247					bus-width = <8>;
248					remote-endpoint = <&vin0ep>;
249				};
250			};
251		};
252
253		hdmi@39 {
254			compatible = "adi,adv7511w";
255			reg = <0x39>;
256			interrupt-parent = <&gpio5>;
257			interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
258
259			adi,input-depth = <8>;
260			adi,input-colorspace = "rgb";
261			adi,input-clock = "1x";
262			adi,input-style = <1>;
263			adi,input-justification = "evenly";
264
265			ports {
266				#address-cells = <1>;
267				#size-cells = <0>;
268
269				port@0 {
270					reg = <0>;
271					adv7511_in: endpoint {
272						remote-endpoint = <&du_out_rgb0>;
273					};
274				};
275
276				port@1 {
277					reg = <1>;
278					adv7511_out: endpoint {
279						remote-endpoint = <&hdmi_con>;
280					};
281				};
282			};
283		};
284
285		eeprom@50 {
286			compatible = "renesas,r1ex24002", "atmel,24c02";
287			reg = <0x50>;
288			pagesize = <16>;
289		};
290	};
291};
292
293&extal_clk {
294	clock-frequency = <20000000>;
295};
296
297&pfc {
298	pinctrl-0 = <&scif_clk_pins>;
299	pinctrl-names = "default";
300
301	scif2_pins: scif2 {
302		groups = "scif2_data";
303		function = "scif2";
304	};
305
306	scif_clk_pins: scif_clk {
307		groups = "scif_clk";
308		function = "scif_clk";
309	};
310
311	ether_pins: ether {
312		groups = "eth_link", "eth_mdio", "eth_rmii";
313		function = "eth";
314	};
315
316	phy1_pins: phy1 {
317		groups = "intc_irq8";
318		function = "intc";
319	};
320
321	i2c1_pins: i2c1 {
322		groups = "i2c1";
323		function = "i2c1";
324	};
325
326	mmcif0_pins: mmcif0 {
327		groups = "mmc_data8", "mmc_ctrl";
328		function = "mmc";
329	};
330
331	sdhi1_pins: sd1 {
332		groups = "sdhi1_data4", "sdhi1_ctrl";
333		function = "sdhi1";
334	};
335
336	qspi_pins: qspi {
337		groups = "qspi_ctrl", "qspi_data4";
338		function = "qspi";
339	};
340
341	vin0_pins: vin0 {
342		groups = "vin0_data8", "vin0_clk";
343		function = "vin0";
344	};
345
346	usb0_pins: usb0 {
347		groups = "usb0";
348		function = "usb0";
349	};
350
351	usb1_pins: usb1 {
352		groups = "usb1";
353		function = "usb1";
354	};
355
356	du0_pins: du0 {
357		groups = "du0_rgb888", "du0_sync", "du0_disp", "du0_clk0_out";
358		function = "du0";
359	};
360
361	du1_pins: du1 {
362		groups = "du1_rgb666", "du1_sync", "du1_disp", "du1_clk0_out";
363		function = "du1";
364	};
365
366	ssi_pins: sound {
367		groups = "ssi0129_ctrl", "ssi0_data", "ssi1_data";
368		function = "ssi";
369	};
370
371	audio_clk_pins: audio_clk {
372		groups = "audio_clkc";
373		function = "audio_clk";
374	};
375};
376
377&scif2 {
378	pinctrl-0 = <&scif2_pins>;
379	pinctrl-names = "default";
380
381	status = "okay";
382};
383
384&scif_clk {
385	clock-frequency = <14745600>;
386};
387
388&ether {
389	pinctrl-0 = <&ether_pins &phy1_pins>;
390	pinctrl-names = "default";
391
392	phy-handle = <&phy1>;
393	renesas,ether-link-active-low;
394	status = "okay";
395
396	phy1: ethernet-phy@1 {
397		reg = <1>;
398		interrupt-parent = <&irqc0>;
399		interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
400		micrel,led-mode = <1>;
401	};
402};
403
404&i2c1 {
405	pinctrl-0 = <&i2c1_pins>;
406	pinctrl-names = "i2c-hdmi";
407
408	clock-frequency = <400000>;
409};
410
411&mmcif0 {
412	pinctrl-0 = <&mmcif0_pins>;
413	pinctrl-names = "default";
414
415	vmmc-supply = <&d3_3v>;
416	vqmmc-supply = <&d3_3v>;
417	bus-width = <8>;
418	non-removable;
419	status = "okay";
420};
421
422&sdhi1 {
423	pinctrl-0 = <&sdhi1_pins>;
424	pinctrl-names = "default";
425
426	vmmc-supply = <&vcc_sdhi1>;
427	vqmmc-supply = <&vccq_sdhi1>;
428	cd-gpios = <&gpio6 14 GPIO_ACTIVE_LOW>;
429	status = "okay";
430};
431
432&qspi {
433	pinctrl-0 = <&qspi_pins>;
434	pinctrl-names = "default";
435
436	status = "okay";
437
438	flash@0 {
439		compatible = "spansion,s25fl512s", "jedec,spi-nor";
440		reg = <0>;
441		spi-max-frequency = <30000000>;
442		spi-tx-bus-width = <4>;
443		spi-rx-bus-width = <4>;
444		spi-cpol;
445		spi-cpha;
446		m25p,fast-read;
447
448		partitions {
449			compatible = "fixed-partitions";
450			#address-cells = <1>;
451			#size-cells = <1>;
452
453			partition@0 {
454				label = "loader";
455				reg = <0x00000000 0x00040000>;
456				read-only;
457			};
458			partition@40000 {
459				label = "user";
460				reg = <0x00040000 0x00400000>;
461				read-only;
462			};
463			partition@440000 {
464				label = "flash";
465				reg = <0x00440000 0x03bc0000>;
466			};
467		};
468	};
469};
470
471/* composite video input */
472&vin0 {
473	status = "okay";
474	pinctrl-0 = <&vin0_pins>;
475	pinctrl-names = "default";
476
477	port {
478		#address-cells = <1>;
479		#size-cells = <0>;
480
481		vin0ep: endpoint {
482			remote-endpoint = <&adv7180>;
483			bus-width = <8>;
484		};
485	};
486};
487
488&pci0 {
489	status = "okay";
490	pinctrl-0 = <&usb0_pins>;
491	pinctrl-names = "default";
492};
493
494&pci1 {
495	status = "okay";
496	pinctrl-0 = <&usb1_pins>;
497	pinctrl-names = "default";
498};
499
500&usbphy {
501	status = "okay";
502};
503
504&du {
505	pinctrl-0 = <&du0_pins &du1_pins>;
506	pinctrl-names = "default";
507	status = "okay";
508
509	clocks = <&cpg CPG_MOD 724>, <&cpg CPG_MOD 723>,
510		 <&x2_clk>, <&x3_clk>;
511	clock-names = "du.0", "du.1", "dclkin.0", "dclkin.1";
512
513	ports {
514		port@0 {
515			endpoint {
516				remote-endpoint = <&adv7511_in>;
517			};
518		};
519		port@1 {
520			endpoint {
521				remote-endpoint = <&adv7123_in>;
522			};
523		};
524	};
525};
526
527&rcar_sound {
528	pinctrl-0 = <&ssi_pins &audio_clk_pins>;
529	pinctrl-names = "default";
530	status = "okay";
531
532	/* Single DAI */
533	#sound-dai-cells = <0>;
534
535	rcar_sound,dai {
536		dai0 {
537			playback = <&ssi0>;
538			capture  = <&ssi1>;
539		};
540	};
541};
542
543&ssi1 {
544	shared-pin;
545};