1cba59c25SWolfram Sang// SPDX-License-Identifier: GPL-2.0
252cb6607SVladimir Barinov/*
352cb6607SVladimir Barinov * Device Tree Source for the Kingfisher (ULCB extension) board
452cb6607SVladimir Barinov *
552cb6607SVladimir Barinov * Copyright (C) 2017 Renesas Electronics Corp.
652cb6607SVladimir Barinov * Copyright (C) 2017 Cogent Embedded, Inc.
752cb6607SVladimir Barinov */
852cb6607SVladimir Barinov
980c07701SKuninori Morimoto/*
1080c07701SKuninori Morimoto * SSI-PCM3168A
1180c07701SKuninori Morimoto *	aplay   -D plughw:0,2 xxx.wav
1280c07701SKuninori Morimoto *	arecord -D plughw:0,3 xxx.wav
1380c07701SKuninori Morimoto */
1480c07701SKuninori Morimoto
1552cb6607SVladimir Barinov/ {
1652cb6607SVladimir Barinov	aliases {
1752cb6607SVladimir Barinov		serial1 = &hscif0;
18c6c816e2SVladimir Barinov		serial2 = &scif1;
1952cb6607SVladimir Barinov	};
2080c07701SKuninori Morimoto
2180c07701SKuninori Morimoto	clksndsel: clksndsel {
2280c07701SKuninori Morimoto		#clock-cells = <0>;
2380c07701SKuninori Morimoto		compatible = "gpio-mux-clock";
2480c07701SKuninori Morimoto		clocks = <&cs2000>, <&audio_clk_a>; /* clk8snd, clksnd */
2580c07701SKuninori Morimoto		select-gpios = <&gpio_exp_75 13 GPIO_ACTIVE_HIGH>;
2680c07701SKuninori Morimoto	};
2780c07701SKuninori Morimoto
2880c07701SKuninori Morimoto	snd_3p3v: regulator-snd_3p3v {
2980c07701SKuninori Morimoto		compatible = "regulator-fixed";
3080c07701SKuninori Morimoto		regulator-name = "snd-3.3v";
3180c07701SKuninori Morimoto		regulator-min-microvolt = <3300000>;
3280c07701SKuninori Morimoto		regulator-max-microvolt = <3300000>;
3380c07701SKuninori Morimoto	};
3480c07701SKuninori Morimoto
3580c07701SKuninori Morimoto	snd_vcc5v: regulator-snd_vcc5v {
3680c07701SKuninori Morimoto		compatible = "regulator-fixed";
3780c07701SKuninori Morimoto		regulator-name = "snd-vcc5v";
3880c07701SKuninori Morimoto		regulator-min-microvolt = <5000000>;
3980c07701SKuninori Morimoto		regulator-max-microvolt = <5000000>;
4080c07701SKuninori Morimoto	};
4195ff4aabSSpyridon Papageorgiou
4295ff4aabSSpyridon Papageorgiou	wlan_en: regulator-wlan_en {
4395ff4aabSSpyridon Papageorgiou		compatible = "regulator-fixed";
4495ff4aabSSpyridon Papageorgiou		regulator-name = "wlan-en-regulator";
4595ff4aabSSpyridon Papageorgiou
4695ff4aabSSpyridon Papageorgiou		regulator-min-microvolt = <3300000>;
4795ff4aabSSpyridon Papageorgiou		regulator-max-microvolt = <3300000>;
4895ff4aabSSpyridon Papageorgiou
4995ff4aabSSpyridon Papageorgiou		gpio = <&gpio_exp_74 4 GPIO_ACTIVE_HIGH>;
5095ff4aabSSpyridon Papageorgiou		startup-delay-us = <70000>;
5195ff4aabSSpyridon Papageorgiou		enable-active-high;
5295ff4aabSSpyridon Papageorgiou	};
5352cb6607SVladimir Barinov};
5452cb6607SVladimir Barinov
55ba915c12SVladimir Barinov&can0 {
56ba915c12SVladimir Barinov	pinctrl-0 = <&can0_pins>;
57ba915c12SVladimir Barinov	pinctrl-names = "default";
58ba915c12SVladimir Barinov	status = "okay";
59ba915c12SVladimir Barinov};
60ba915c12SVladimir Barinov
61ba915c12SVladimir Barinov&can1 {
62ba915c12SVladimir Barinov	pinctrl-0 = <&can1_pins>;
63ba915c12SVladimir Barinov	pinctrl-names = "default";
64ba915c12SVladimir Barinov	status = "okay";
65ba915c12SVladimir Barinov};
66ba915c12SVladimir Barinov
6736bd8e3eSVladimir Barinov&ehci0 {
68499468cfSVladimir Barinov	dr_mode = "otg";
6936bd8e3eSVladimir Barinov	status = "okay";
7036bd8e3eSVladimir Barinov};
7136bd8e3eSVladimir Barinov
7252cb6607SVladimir Barinov&hscif0 {
7352cb6607SVladimir Barinov	pinctrl-0 = <&hscif0_pins>;
7452cb6607SVladimir Barinov	pinctrl-names = "default";
7552cb6607SVladimir Barinov	uart-has-rtscts;
7652cb6607SVladimir Barinov
7752cb6607SVladimir Barinov	status = "okay";
7852cb6607SVladimir Barinov};
7952cb6607SVladimir Barinov
80da9c3629SVladimir Barinov&hsusb {
81499468cfSVladimir Barinov	dr_mode = "otg";
82da9c3629SVladimir Barinov	status = "okay";
83da9c3629SVladimir Barinov};
84da9c3629SVladimir Barinov
851189d1d4SVladimir Barinov&i2c2 {
8680c07701SKuninori Morimoto	/* U11 */
871189d1d4SVladimir Barinov	gpio_exp_74: gpio@74 {
881189d1d4SVladimir Barinov		compatible = "ti,tca9539";
891189d1d4SVladimir Barinov		reg = <0x74>;
901189d1d4SVladimir Barinov		gpio-controller;
911189d1d4SVladimir Barinov		#gpio-cells = <2>;
921189d1d4SVladimir Barinov		interrupt-controller;
931189d1d4SVladimir Barinov		interrupt-parent = <&gpio6>;
941189d1d4SVladimir Barinov		interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
954339306aSVladimir Barinov
9680c07701SKuninori Morimoto		audio_out_off {
9780c07701SKuninori Morimoto			gpio-hog;
9880c07701SKuninori Morimoto			gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */
9980c07701SKuninori Morimoto			output-high;
10080c07701SKuninori Morimoto			line-name = "Audio_Out_OFF";
10180c07701SKuninori Morimoto		};
10280c07701SKuninori Morimoto
10395ff4aabSSpyridon Papageorgiou		sd-wifi-mux {
10495ff4aabSSpyridon Papageorgiou			gpio-hog;
10595ff4aabSSpyridon Papageorgiou			gpios = <5 GPIO_ACTIVE_HIGH>;
10695ff4aabSSpyridon Papageorgiou			output-low;	/* Connect WL1837 */
10795ff4aabSSpyridon Papageorgiou			line-name = "SD WiFi mux";
10895ff4aabSSpyridon Papageorgiou		};
10995ff4aabSSpyridon Papageorgiou
1104339306aSVladimir Barinov		hub_pwen {
1114339306aSVladimir Barinov			gpio-hog;
1124339306aSVladimir Barinov			gpios = <6 GPIO_ACTIVE_HIGH>;
1134339306aSVladimir Barinov			output-high;
1144339306aSVladimir Barinov			line-name = "HUB pwen";
1154339306aSVladimir Barinov		};
1164339306aSVladimir Barinov
1174339306aSVladimir Barinov		hub_rst {
1184339306aSVladimir Barinov			gpio-hog;
1194339306aSVladimir Barinov			gpios = <7 GPIO_ACTIVE_HIGH>;
1204339306aSVladimir Barinov			output-high;
1214339306aSVladimir Barinov			line-name = "HUB rst";
1224339306aSVladimir Barinov		};
12380785024SVladimir Barinov
12480785024SVladimir Barinov		otg_offvbusn {
12580785024SVladimir Barinov			gpio-hog;
12680785024SVladimir Barinov			gpios = <8 GPIO_ACTIVE_HIGH>;
12780785024SVladimir Barinov			output-low;
12880785024SVladimir Barinov			line-name = "OTG OFFVBUSn";
12980785024SVladimir Barinov		};
13080785024SVladimir Barinov
13180785024SVladimir Barinov		otg_extlpn {
13280785024SVladimir Barinov			gpio-hog;
13380785024SVladimir Barinov			gpios = <9 GPIO_ACTIVE_HIGH>;
13480785024SVladimir Barinov			output-high;
13580785024SVladimir Barinov			line-name = "OTG EXTLPn";
13680785024SVladimir Barinov		};
13780c07701SKuninori Morimoto
13880c07701SKuninori Morimoto		snd_rst {
13980c07701SKuninori Morimoto			gpio-hog;
14080c07701SKuninori Morimoto			gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */
14180c07701SKuninori Morimoto			output-high;
14280c07701SKuninori Morimoto			line-name = "SND_RST";
14380c07701SKuninori Morimoto		};
1441189d1d4SVladimir Barinov	};
1451189d1d4SVladimir Barinov
14680c07701SKuninori Morimoto	/* U5 */
1471189d1d4SVladimir Barinov	gpio_exp_75: gpio@75 {
1481189d1d4SVladimir Barinov		compatible = "ti,tca9539";
1491189d1d4SVladimir Barinov		reg = <0x75>;
1501189d1d4SVladimir Barinov		gpio-controller;
1511189d1d4SVladimir Barinov		#gpio-cells = <2>;
1521189d1d4SVladimir Barinov		interrupt-controller;
1531189d1d4SVladimir Barinov		interrupt-parent = <&gpio6>;
1541189d1d4SVladimir Barinov		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
1551189d1d4SVladimir Barinov	};
156c6f9cbe3SVladimir Barinov
157c6f9cbe3SVladimir Barinov	i2cswitch2: i2c-switch@71 {
158c6f9cbe3SVladimir Barinov		compatible = "nxp,pca9548";
159c6f9cbe3SVladimir Barinov		#address-cells = <1>;
160c6f9cbe3SVladimir Barinov		#size-cells = <0>;
161c6f9cbe3SVladimir Barinov		reg = <0x71>;
162c6f9cbe3SVladimir Barinov		reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>;
16380c07701SKuninori Morimoto
16480c07701SKuninori Morimoto		/* Audio_SDA, Audio_SCL */
16580c07701SKuninori Morimoto		i2c@7 {
16680c07701SKuninori Morimoto			#address-cells = <1>;
16780c07701SKuninori Morimoto			#size-cells = <0>;
16880c07701SKuninori Morimoto			reg = <7>;
16980c07701SKuninori Morimoto
17080c07701SKuninori Morimoto			pcm3168a: audio-codec@44 {
17180c07701SKuninori Morimoto				#sound-dai-cells = <0>;
17280c07701SKuninori Morimoto				compatible = "ti,pcm3168a";
17380c07701SKuninori Morimoto				reg = <0x44>;
17480c07701SKuninori Morimoto				clocks = <&clksndsel>;
17580c07701SKuninori Morimoto				clock-names = "scki";
17680c07701SKuninori Morimoto
17780c07701SKuninori Morimoto				VDD1-supply	= <&snd_3p3v>;
17880c07701SKuninori Morimoto				VDD2-supply	= <&snd_3p3v>;
17980c07701SKuninori Morimoto				VCCAD1-supply	= <&snd_vcc5v>;
18080c07701SKuninori Morimoto				VCCAD2-supply	= <&snd_vcc5v>;
18180c07701SKuninori Morimoto				VCCDA1-supply	= <&snd_vcc5v>;
18280c07701SKuninori Morimoto				VCCDA2-supply	= <&snd_vcc5v>;
18380c07701SKuninori Morimoto
18480c07701SKuninori Morimoto				ports {
18580c07701SKuninori Morimoto					#address-cells = <1>;
18680c07701SKuninori Morimoto					#size-cells = <0>;
18780c07701SKuninori Morimoto					mclk-fs = <512>;
18880c07701SKuninori Morimoto					port@0 {
18980c07701SKuninori Morimoto						reg = <0>;
19080c07701SKuninori Morimoto						pcm3168a_endpoint_p: endpoint {
19180c07701SKuninori Morimoto							remote-endpoint = <&rsnd_for_pcm3168a_play>;
19280c07701SKuninori Morimoto							clocks = <&clksndsel>;
19380c07701SKuninori Morimoto						};
19480c07701SKuninori Morimoto					};
19580c07701SKuninori Morimoto					port@1 {
19680c07701SKuninori Morimoto						reg = <1>;
19780c07701SKuninori Morimoto						pcm3168a_endpoint_c: endpoint {
19880c07701SKuninori Morimoto							remote-endpoint = <&rsnd_for_pcm3168a_capture>;
19980c07701SKuninori Morimoto							clocks = <&clksndsel>;
20080c07701SKuninori Morimoto						};
20180c07701SKuninori Morimoto					};
20280c07701SKuninori Morimoto				};
20380c07701SKuninori Morimoto			};
20480c07701SKuninori Morimoto		};
205c6f9cbe3SVladimir Barinov	};
2061189d1d4SVladimir Barinov};
2071189d1d4SVladimir Barinov
2080f9c47b2SVladimir Barinov&i2c4 {
2090f9c47b2SVladimir Barinov	gpio_exp_76: gpio@76 {
2100f9c47b2SVladimir Barinov		compatible = "ti,tca9539";
2110f9c47b2SVladimir Barinov		reg = <0x76>;
2120f9c47b2SVladimir Barinov		gpio-controller;
2130f9c47b2SVladimir Barinov		#gpio-cells = <2>;
2140f9c47b2SVladimir Barinov		interrupt-controller;
2150f9c47b2SVladimir Barinov		interrupt-parent = <&gpio7>;
2160f9c47b2SVladimir Barinov		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
2170f9c47b2SVladimir Barinov	};
2180f9c47b2SVladimir Barinov
2190f9c47b2SVladimir Barinov	gpio_exp_77: gpio@77 {
2200f9c47b2SVladimir Barinov		compatible = "ti,tca9539";
2210f9c47b2SVladimir Barinov		reg = <0x77>;
2220f9c47b2SVladimir Barinov		gpio-controller;
2230f9c47b2SVladimir Barinov		#gpio-cells = <2>;
2240f9c47b2SVladimir Barinov		interrupt-controller;
2250f9c47b2SVladimir Barinov		interrupt-parent = <&gpio5>;
2260f9c47b2SVladimir Barinov		interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
2270f9c47b2SVladimir Barinov	};
2286d5fcdd3SVladimir Barinov
2296d5fcdd3SVladimir Barinov	i2cswitch4: i2c-switch@71 {
2306d5fcdd3SVladimir Barinov		compatible = "nxp,pca9548";
2316d5fcdd3SVladimir Barinov		#address-cells = <1>;
2326d5fcdd3SVladimir Barinov		#size-cells = <0>;
2336d5fcdd3SVladimir Barinov		reg = <0x71>;
2346d5fcdd3SVladimir Barinov		reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
2356d5fcdd3SVladimir Barinov	};
2360f9c47b2SVladimir Barinov};
2370f9c47b2SVladimir Barinov
23836bd8e3eSVladimir Barinov&ohci0 {
239499468cfSVladimir Barinov	dr_mode = "otg";
24036bd8e3eSVladimir Barinov	status = "okay";
24136bd8e3eSVladimir Barinov};
24236bd8e3eSVladimir Barinov
243e0304a36SVladimir Barinov&pcie_bus_clk {
244e0304a36SVladimir Barinov	clock-frequency = <100000000>;
245e0304a36SVladimir Barinov};
246e0304a36SVladimir Barinov
247e0304a36SVladimir Barinov&pciec0 {
248e0304a36SVladimir Barinov	status = "okay";
249e0304a36SVladimir Barinov};
250e0304a36SVladimir Barinov
251e0304a36SVladimir Barinov&pciec1 {
252e0304a36SVladimir Barinov	status = "okay";
253e0304a36SVladimir Barinov};
254e0304a36SVladimir Barinov
25552cb6607SVladimir Barinov&pfc {
256ba915c12SVladimir Barinov	can0_pins: can0 {
257ba915c12SVladimir Barinov		groups = "can0_data_a";
258ba915c12SVladimir Barinov		function = "can0";
259ba915c12SVladimir Barinov	};
260ba915c12SVladimir Barinov
261ba915c12SVladimir Barinov	can1_pins: can1 {
262ba915c12SVladimir Barinov		groups = "can1_data";
263ba915c12SVladimir Barinov		function = "can1";
264ba915c12SVladimir Barinov	};
265ba915c12SVladimir Barinov
26652cb6607SVladimir Barinov	hscif0_pins: hscif0 {
26752cb6607SVladimir Barinov		groups = "hscif0_data", "hscif0_ctrl";
26852cb6607SVladimir Barinov		function = "hscif0";
26952cb6607SVladimir Barinov	};
270c6c816e2SVladimir Barinov
271c6c816e2SVladimir Barinov	scif1_pins: scif1 {
272c6c816e2SVladimir Barinov		groups = "scif1_data_b", "scif1_ctrl";
273c6c816e2SVladimir Barinov		function = "scif1";
274c6c816e2SVladimir Barinov	};
27580785024SVladimir Barinov
27695ff4aabSSpyridon Papageorgiou	sdhi3_pins: sdhi3 {
27795ff4aabSSpyridon Papageorgiou		groups = "sdhi3_data4", "sdhi3_ctrl";
27895ff4aabSSpyridon Papageorgiou		function = "sdhi3";
27995ff4aabSSpyridon Papageorgiou		power-source = <3300>;
28095ff4aabSSpyridon Papageorgiou	};
28195ff4aabSSpyridon Papageorgiou
28280785024SVladimir Barinov	usb0_pins: usb0 {
28380785024SVladimir Barinov		groups = "usb0";
28480785024SVladimir Barinov		function = "usb0";
28580785024SVladimir Barinov	};
28680c07701SKuninori Morimoto
28780c07701SKuninori Morimoto	sound_pcm_pins: sound-pcm {
28880c07701SKuninori Morimoto		groups = "ssi349_ctrl", "ssi3_data", "ssi4_data";
28980c07701SKuninori Morimoto		function = "ssi";
29080c07701SKuninori Morimoto	};
291c6c816e2SVladimir Barinov};
292c6c816e2SVladimir Barinov
293c6c816e2SVladimir Barinov&scif1 {
294c6c816e2SVladimir Barinov	pinctrl-0 = <&scif1_pins>;
295c6c816e2SVladimir Barinov	pinctrl-names = "default";
296c6c816e2SVladimir Barinov	uart-has-rtscts;
297c6c816e2SVladimir Barinov
298c6c816e2SVladimir Barinov	status = "okay";
29952cb6607SVladimir Barinov};
300af758116SVladimir Barinov
30195ff4aabSSpyridon Papageorgiou&sdhi3 {
30295ff4aabSSpyridon Papageorgiou	pinctrl-0 = <&sdhi3_pins>;
30395ff4aabSSpyridon Papageorgiou	pinctrl-names = "default";
30495ff4aabSSpyridon Papageorgiou
30595ff4aabSSpyridon Papageorgiou	vmmc-supply = <&wlan_en>;
30695ff4aabSSpyridon Papageorgiou	vqmmc-supply = <&wlan_en>;
30795ff4aabSSpyridon Papageorgiou	bus-width = <4>;
30895ff4aabSSpyridon Papageorgiou	no-1-8-v;
30995ff4aabSSpyridon Papageorgiou	non-removable;
31095ff4aabSSpyridon Papageorgiou	cap-power-off-card;
31195ff4aabSSpyridon Papageorgiou	keep-power-in-suspend;
31295ff4aabSSpyridon Papageorgiou	max-frequency = <26000000>;
31395ff4aabSSpyridon Papageorgiou	status = "okay";
31495ff4aabSSpyridon Papageorgiou
31595ff4aabSSpyridon Papageorgiou	#address-cells = <1>;
31695ff4aabSSpyridon Papageorgiou	#size-cells = <0>;
31795ff4aabSSpyridon Papageorgiou	wlcore: wlcore@2 {
31895ff4aabSSpyridon Papageorgiou		compatible = "ti,wl1837";
31995ff4aabSSpyridon Papageorgiou		reg = <2>;
32095ff4aabSSpyridon Papageorgiou		interrupt-parent = <&gpio1>;
32195ff4aabSSpyridon Papageorgiou		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
32295ff4aabSSpyridon Papageorgiou	};
32395ff4aabSSpyridon Papageorgiou};
32495ff4aabSSpyridon Papageorgiou
32580785024SVladimir Barinov&usb2_phy0 {
32680785024SVladimir Barinov	pinctrl-0 = <&usb0_pins>;
32780785024SVladimir Barinov	pinctrl-names = "default";
32880785024SVladimir Barinov
32980785024SVladimir Barinov	status = "okay";
33080785024SVladimir Barinov};
33180785024SVladimir Barinov
332af758116SVladimir Barinov&xhci0 {
333af758116SVladimir Barinov	status = "okay";
334af758116SVladimir Barinov};
33580c07701SKuninori Morimoto
33680c07701SKuninori Morimoto&sound_card {
33780c07701SKuninori Morimoto	dais = <&rsnd_port0	/* ak4613 */
33880c07701SKuninori Morimoto		&rsnd_port1	/* HDMI0  */
33980c07701SKuninori Morimoto		&rsnd_port2	/* pcm3168a playback */
34080c07701SKuninori Morimoto		&rsnd_port3	/* pcm3168a capture  */
34180c07701SKuninori Morimoto		>;
34280c07701SKuninori Morimoto};
34380c07701SKuninori Morimoto
34480c07701SKuninori Morimoto&rcar_sound {
34580c07701SKuninori Morimoto	pinctrl-0 = <&sound_pins
34680c07701SKuninori Morimoto		     &sound_clk_pins
34780c07701SKuninori Morimoto		     &sound_pcm_pins>;
34880c07701SKuninori Morimoto
34980c07701SKuninori Morimoto	ports {
35080c07701SKuninori Morimoto		/* rsnd_port0/1 are on salvator-common */
35180c07701SKuninori Morimoto		rsnd_port2: port@2 {
35280c07701SKuninori Morimoto			reg = <2>;
35380c07701SKuninori Morimoto			rsnd_for_pcm3168a_play: endpoint {
35480c07701SKuninori Morimoto				remote-endpoint = <&pcm3168a_endpoint_p>;
35580c07701SKuninori Morimoto
35680c07701SKuninori Morimoto				dai-format = "i2s";
35780c07701SKuninori Morimoto				bitclock-master = <&rsnd_for_pcm3168a_play>;
35880c07701SKuninori Morimoto				frame-master = <&rsnd_for_pcm3168a_play>;
35980c07701SKuninori Morimoto				dai-tdm-slot-num = <8>;
36080c07701SKuninori Morimoto
36180c07701SKuninori Morimoto				playback = <&ssi3>;
36280c07701SKuninori Morimoto			};
36380c07701SKuninori Morimoto		};
36480c07701SKuninori Morimoto		rsnd_port3: port@3 {
36580c07701SKuninori Morimoto			reg = <3>;
36680c07701SKuninori Morimoto			rsnd_for_pcm3168a_capture: endpoint {
36780c07701SKuninori Morimoto				remote-endpoint = <&pcm3168a_endpoint_c>;
36880c07701SKuninori Morimoto
36980c07701SKuninori Morimoto				dai-format = "i2s";
37080c07701SKuninori Morimoto				bitclock-master = <&rsnd_for_pcm3168a_capture>;
37180c07701SKuninori Morimoto				frame-master = <&rsnd_for_pcm3168a_capture>;
37280c07701SKuninori Morimoto				dai-tdm-slot-num = <6>;
37380c07701SKuninori Morimoto
37480c07701SKuninori Morimoto				capture  = <&ssi4>;
37580c07701SKuninori Morimoto			};
37680c07701SKuninori Morimoto		};
37780c07701SKuninori Morimoto	};
37880c07701SKuninori Morimoto};
37980c07701SKuninori Morimoto
38080c07701SKuninori Morimoto&ssi4 {
38180c07701SKuninori Morimoto	shared-pin;
38280c07701SKuninori Morimoto};
383