xref: /rk3399_rockchip-uboot/arch/arm/dts/sun8i-r16-parrot.dts (revision c6b968da78ce3fa7224c0ddf15fe170c7c05b27e)
1d2a6af05SQuentin Schulz/*
2d2a6af05SQuentin Schulz * Copyright 2016 Quentin Schulz
3d2a6af05SQuentin Schulz *
4d2a6af05SQuentin Schulz * Quentin Schulz <quentin.schulz@free-electrons.com>
5d2a6af05SQuentin Schulz *
6d2a6af05SQuentin Schulz * This file is dual-licensed: you can use it either under the terms
7d2a6af05SQuentin Schulz * of the GPL or the X11 license, at your option. Note that this dual
8d2a6af05SQuentin Schulz * licensing only applies to this file, and not this project as a
9d2a6af05SQuentin Schulz * whole.
10d2a6af05SQuentin Schulz *
11d2a6af05SQuentin Schulz *  a) This file is free software; you can redistribute it and/or
12d2a6af05SQuentin Schulz *     modify it under the terms of the GNU General Public License as
13d2a6af05SQuentin Schulz *     published by the Free Software Foundation; either version 2 of the
14d2a6af05SQuentin Schulz *     License, or (at your option) any later version.
15d2a6af05SQuentin Schulz *
16d2a6af05SQuentin Schulz *     This file is distributed in the hope that it will be useful,
17d2a6af05SQuentin Schulz *     but WITHOUT ANY WARRANTY; without even the implied warranty of
18d2a6af05SQuentin Schulz *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19d2a6af05SQuentin Schulz *     GNU General Public License for more details.
20d2a6af05SQuentin Schulz *
21d2a6af05SQuentin Schulz * Or, alternatively,
22d2a6af05SQuentin Schulz *
23d2a6af05SQuentin Schulz *  b) Permission is hereby granted, free of charge, to any person
24d2a6af05SQuentin Schulz *     obtaining a copy of this software and associated documentation
25d2a6af05SQuentin Schulz *     files (the "Software"), to deal in the Software without
26d2a6af05SQuentin Schulz *     restriction, including without limitation the rights to use,
27d2a6af05SQuentin Schulz *     copy, modify, merge, publish, distribute, sublicense, and/or
28d2a6af05SQuentin Schulz *     sell copies of the Software, and to permit persons to whom the
29d2a6af05SQuentin Schulz *     Software is furnished to do so, subject to the following
30d2a6af05SQuentin Schulz *     conditions:
31d2a6af05SQuentin Schulz *
32d2a6af05SQuentin Schulz *     The above copyright notice and this permission notice shall be
33d2a6af05SQuentin Schulz *     included in all copies or substantial portions of the Software.
34d2a6af05SQuentin Schulz *
35d2a6af05SQuentin Schulz *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36d2a6af05SQuentin Schulz *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37d2a6af05SQuentin Schulz *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38d2a6af05SQuentin Schulz *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
39d2a6af05SQuentin Schulz *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40d2a6af05SQuentin Schulz *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41d2a6af05SQuentin Schulz *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42d2a6af05SQuentin Schulz *     OTHER DEALINGS IN THE SOFTWARE.
43d2a6af05SQuentin Schulz */
44d2a6af05SQuentin Schulz
45d2a6af05SQuentin Schulz/dts-v1/;
46d2a6af05SQuentin Schulz#include "sun8i-a33.dtsi"
47d2a6af05SQuentin Schulz#include "sunxi-common-regulators.dtsi"
48d2a6af05SQuentin Schulz
49d2a6af05SQuentin Schulz#include <dt-bindings/gpio/gpio.h>
50d2a6af05SQuentin Schulz#include <dt-bindings/input/input.h>
51d2a6af05SQuentin Schulz
52d2a6af05SQuentin Schulz/ {
53d2a6af05SQuentin Schulz	model = "Allwinner R16 EVB (Parrot)";
54d2a6af05SQuentin Schulz	compatible = "allwinner,parrot", "allwinner,sun8i-a33";
55d2a6af05SQuentin Schulz
56d2a6af05SQuentin Schulz	aliases {
57d2a6af05SQuentin Schulz		serial0 = &uart0;
58d2a6af05SQuentin Schulz	};
59d2a6af05SQuentin Schulz
60d2a6af05SQuentin Schulz	chosen {
61d2a6af05SQuentin Schulz		stdout-path = "serial0:115200n8";
62d2a6af05SQuentin Schulz	};
63d2a6af05SQuentin Schulz
64d2a6af05SQuentin Schulz	leds {
65d2a6af05SQuentin Schulz		compatible = "gpio-leds";
66d2a6af05SQuentin Schulz		pinctrl-names = "default";
67d2a6af05SQuentin Schulz		pinctrl-0 = <&led_pins_parrot>;
68d2a6af05SQuentin Schulz
69d2a6af05SQuentin Schulz		led1 {
70d2a6af05SQuentin Schulz			label = "parrot:led1:usr";
71d2a6af05SQuentin Schulz			gpio = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
72d2a6af05SQuentin Schulz		};
73d2a6af05SQuentin Schulz
74d2a6af05SQuentin Schulz		led2 {
75d2a6af05SQuentin Schulz			label = "parrot:led2:usr";
76d2a6af05SQuentin Schulz			gpio = <&pio 4 16 GPIO_ACTIVE_HIGH>; /* PE16 */
77d2a6af05SQuentin Schulz		};
78d2a6af05SQuentin Schulz	};
79d2a6af05SQuentin Schulz
80d2a6af05SQuentin Schulz	wifi_pwrseq: wifi_pwrseq {
81d2a6af05SQuentin Schulz		compatible = "mmc-pwrseq-simple";
82d2a6af05SQuentin Schulz		reset-gpios = <&r_pio 0 6 GPIO_ACTIVE_LOW>; /* PL06 */
83d2a6af05SQuentin Schulz	};
84d2a6af05SQuentin Schulz
85d2a6af05SQuentin Schulz};
86d2a6af05SQuentin Schulz
87d2a6af05SQuentin Schulz&ehci0 {
88d2a6af05SQuentin Schulz	status = "okay";
89d2a6af05SQuentin Schulz};
90d2a6af05SQuentin Schulz
91d2a6af05SQuentin Schulz&i2c1 {
92d2a6af05SQuentin Schulz	pinctrl-names = "default";
93d2a6af05SQuentin Schulz	pinctrl-0 = <&i2c1_pins_a>;
94d2a6af05SQuentin Schulz	status = "okay";
95d2a6af05SQuentin Schulz
96*860fbdd4SHans de Goede	/*
97*860fbdd4SHans de Goede	 * FIXME: An as-yet-unknown accelerometer is connected to this
98*860fbdd4SHans de Goede	 * i2c bus.
99*860fbdd4SHans de Goede	 */
100d2a6af05SQuentin Schulz};
101d2a6af05SQuentin Schulz
102d2a6af05SQuentin Schulz&lradc {
103d2a6af05SQuentin Schulz	vref-supply = <&reg_aldo3>;
104d2a6af05SQuentin Schulz	status = "okay";
105d2a6af05SQuentin Schulz
106d2a6af05SQuentin Schulz	button@0 {
107d2a6af05SQuentin Schulz		label = "V+";
108d2a6af05SQuentin Schulz		linux,code = <KEY_VOLUMEUP>;
109d2a6af05SQuentin Schulz		channel = <0>;
110d2a6af05SQuentin Schulz		voltage = <190000>;
111d2a6af05SQuentin Schulz	};
112d2a6af05SQuentin Schulz
113d2a6af05SQuentin Schulz	button@1 {
114d2a6af05SQuentin Schulz		label = "V-";
115d2a6af05SQuentin Schulz		linux,code = <KEY_VOLUMEDOWN>;
116d2a6af05SQuentin Schulz		channel = <0>;
117d2a6af05SQuentin Schulz		voltage = <390000>;
118d2a6af05SQuentin Schulz	};
119d2a6af05SQuentin Schulz
120d2a6af05SQuentin Schulz};
121d2a6af05SQuentin Schulz
122d2a6af05SQuentin Schulz&mmc0 {
123d2a6af05SQuentin Schulz	pinctrl-names = "default";
124d2a6af05SQuentin Schulz	pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_parrot>;
125d2a6af05SQuentin Schulz	vmmc-supply = <&reg_dcdc1>;
126d2a6af05SQuentin Schulz	cd-gpios = <&pio 3 14 GPIO_ACTIVE_LOW>; /* PD14 */
127d2a6af05SQuentin Schulz	bus-width = <4>;
128d2a6af05SQuentin Schulz	status = "okay";
129d2a6af05SQuentin Schulz};
130d2a6af05SQuentin Schulz
131d2a6af05SQuentin Schulz&mmc1 {
132d2a6af05SQuentin Schulz	pinctrl-names = "default";
133d2a6af05SQuentin Schulz	pinctrl-0 = <&mmc1_pins_a>, <&wifi_reset_pin_parrot>;
134d2a6af05SQuentin Schulz	vmmc-supply = <&reg_aldo1>;
135d2a6af05SQuentin Schulz	mmc-pwrseq = <&wifi_pwrseq>;
136d2a6af05SQuentin Schulz	bus-width = <4>;
137d2a6af05SQuentin Schulz	non-removable;
138d2a6af05SQuentin Schulz	status = "okay";
139d2a6af05SQuentin Schulz};
140d2a6af05SQuentin Schulz
141d2a6af05SQuentin Schulz&mmc2 {
142d2a6af05SQuentin Schulz	pinctrl-names = "default";
143d2a6af05SQuentin Schulz	pinctrl-0 = <&mmc2_8bit_pins>;
144d2a6af05SQuentin Schulz	vmmc-supply = <&reg_dcdc1>;
145d2a6af05SQuentin Schulz	bus-width = <8>;
146d2a6af05SQuentin Schulz	non-removable;
147d2a6af05SQuentin Schulz	cap-mmc-hw-reset;
148d2a6af05SQuentin Schulz	status = "okay";
149d2a6af05SQuentin Schulz};
150d2a6af05SQuentin Schulz
151d2a6af05SQuentin Schulz&mmc2_8bit_pins {
152d2a6af05SQuentin Schulz	allwinner,drive = <SUN4I_PINCTRL_40_MA>;
153d2a6af05SQuentin Schulz	allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
154d2a6af05SQuentin Schulz};
155d2a6af05SQuentin Schulz
156d2a6af05SQuentin Schulz&ohci0 {
157d2a6af05SQuentin Schulz	status = "okay";
158d2a6af05SQuentin Schulz};
159d2a6af05SQuentin Schulz
160d2a6af05SQuentin Schulz&pio {
161d2a6af05SQuentin Schulz	mmc0_cd_pin_parrot: mmc0_cd_pin@0 {
162d2a6af05SQuentin Schulz		allwinner,pins = "PD14";
163d2a6af05SQuentin Schulz		allwinner,function = "gpio_in";
164d2a6af05SQuentin Schulz		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
165d2a6af05SQuentin Schulz		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
166d2a6af05SQuentin Schulz	};
167d2a6af05SQuentin Schulz
168d2a6af05SQuentin Schulz	led_pins_parrot: led_pins@0 {
169d2a6af05SQuentin Schulz		allwinner,pins = "PE16", "PE17";
170d2a6af05SQuentin Schulz		allwinner,function = "gpio_out";
171d2a6af05SQuentin Schulz		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
172d2a6af05SQuentin Schulz		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
173d2a6af05SQuentin Schulz	};
174d2a6af05SQuentin Schulz
175d2a6af05SQuentin Schulz	usb0_id_det: usb0_id_detect_pin@0 {
176d2a6af05SQuentin Schulz		allwinner,pins = "PD10";
177d2a6af05SQuentin Schulz		allwinner,function = "gpio_in";
178d2a6af05SQuentin Schulz		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
179d2a6af05SQuentin Schulz		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
180d2a6af05SQuentin Schulz	};
181d2a6af05SQuentin Schulz
182d2a6af05SQuentin Schulz	usb1_vbus_pin_parrot: usb1_vbus_pin@0 {
183d2a6af05SQuentin Schulz		allwinner,pins = "PD12";
184d2a6af05SQuentin Schulz		allwinner,function = "gpio_out";
185d2a6af05SQuentin Schulz		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
186d2a6af05SQuentin Schulz		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
187d2a6af05SQuentin Schulz	};
188d2a6af05SQuentin Schulz};
189d2a6af05SQuentin Schulz
190d2a6af05SQuentin Schulz&r_pio {
191d2a6af05SQuentin Schulz	wifi_reset_pin_parrot: wifi_reset_pin@0 {
192d2a6af05SQuentin Schulz		allwinner,pins = "PL6";
193d2a6af05SQuentin Schulz		allwinner,function = "gpio_out";
194d2a6af05SQuentin Schulz		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
195d2a6af05SQuentin Schulz		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
196d2a6af05SQuentin Schulz	};
197d2a6af05SQuentin Schulz};
198d2a6af05SQuentin Schulz
199d2a6af05SQuentin Schulz&r_rsb {
200d2a6af05SQuentin Schulz	status = "okay";
201d2a6af05SQuentin Schulz
202d2a6af05SQuentin Schulz	axp22x: pmic@3a3 {
203d2a6af05SQuentin Schulz		compatible = "x-powers,axp223";
204d2a6af05SQuentin Schulz		reg = <0x3a3>;
205d2a6af05SQuentin Schulz		interrupt-parent = <&nmi_intc>;
206d2a6af05SQuentin Schulz		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
207d2a6af05SQuentin Schulz		drivevbus-supply = <&reg_vcc5v0>;
208d2a6af05SQuentin Schulz		x-powers,drive-vbus-en;
209d2a6af05SQuentin Schulz	};
210d2a6af05SQuentin Schulz};
211d2a6af05SQuentin Schulz
212d2a6af05SQuentin Schulz#include "axp22x.dtsi"
213d2a6af05SQuentin Schulz
214d2a6af05SQuentin Schulz&reg_aldo1 {
215d2a6af05SQuentin Schulz	regulator-always-on;
216d2a6af05SQuentin Schulz	regulator-min-microvolt = <3000000>;
217d2a6af05SQuentin Schulz	regulator-max-microvolt = <3000000>;
218d2a6af05SQuentin Schulz	regulator-name = "vcc-io";
219d2a6af05SQuentin Schulz};
220d2a6af05SQuentin Schulz
221d2a6af05SQuentin Schulz&reg_aldo2 {
222d2a6af05SQuentin Schulz	regulator-always-on;
223d2a6af05SQuentin Schulz	regulator-min-microvolt = <2350000>;
224d2a6af05SQuentin Schulz	regulator-max-microvolt = <2650000>;
225d2a6af05SQuentin Schulz	regulator-name = "vdd-dll";
226d2a6af05SQuentin Schulz};
227d2a6af05SQuentin Schulz
228d2a6af05SQuentin Schulz&reg_aldo3 {
229d2a6af05SQuentin Schulz	regulator-always-on;
230d2a6af05SQuentin Schulz	regulator-min-microvolt = <2700000>;
231d2a6af05SQuentin Schulz	regulator-max-microvolt = <3300000>;
232d2a6af05SQuentin Schulz	regulator-name = "vcc-pll-avcc";
233d2a6af05SQuentin Schulz};
234d2a6af05SQuentin Schulz
235d2a6af05SQuentin Schulz&reg_dc5ldo {
236d2a6af05SQuentin Schulz	regulator-always-on;
237d2a6af05SQuentin Schulz	regulator-min-microvolt = <900000>;
238d2a6af05SQuentin Schulz	regulator-max-microvolt = <1400000>;
239d2a6af05SQuentin Schulz	regulator-name = "vdd-cpus";
240d2a6af05SQuentin Schulz};
241d2a6af05SQuentin Schulz
242d2a6af05SQuentin Schulz&reg_dcdc1 {
243d2a6af05SQuentin Schulz	regulator-always-on;
244d2a6af05SQuentin Schulz	regulator-min-microvolt = <3000000>;
245d2a6af05SQuentin Schulz	regulator-max-microvolt = <3000000>;
246d2a6af05SQuentin Schulz	regulator-name = "vcc-3v0";
247d2a6af05SQuentin Schulz};
248d2a6af05SQuentin Schulz
249d2a6af05SQuentin Schulz&reg_dcdc2 {
250d2a6af05SQuentin Schulz	regulator-always-on;
251d2a6af05SQuentin Schulz	regulator-min-microvolt = <900000>;
252d2a6af05SQuentin Schulz	regulator-max-microvolt = <1400000>;
253d2a6af05SQuentin Schulz	regulator-name = "vdd-sys";
254d2a6af05SQuentin Schulz};
255d2a6af05SQuentin Schulz
256d2a6af05SQuentin Schulz&reg_dcdc3 {
257d2a6af05SQuentin Schulz	regulator-always-on;
258d2a6af05SQuentin Schulz	regulator-min-microvolt = <900000>;
259d2a6af05SQuentin Schulz	regulator-max-microvolt = <1400000>;
260d2a6af05SQuentin Schulz	regulator-name = "vdd-cpu";
261d2a6af05SQuentin Schulz};
262d2a6af05SQuentin Schulz
263d2a6af05SQuentin Schulz&reg_dcdc5 {
264d2a6af05SQuentin Schulz	regulator-always-on;
265d2a6af05SQuentin Schulz	regulator-min-microvolt = <1500000>;
266d2a6af05SQuentin Schulz	regulator-max-microvolt = <1500000>;
267d2a6af05SQuentin Schulz	regulator-name = "vcc-dram";
268d2a6af05SQuentin Schulz};
269d2a6af05SQuentin Schulz
270d2a6af05SQuentin Schulz&reg_dldo1 {
271d2a6af05SQuentin Schulz	/*
272d2a6af05SQuentin Schulz	 * TODO: WiFi chip needs dldo1 AND dldo2 to be on to be powered.
273d2a6af05SQuentin Schulz	 * Remove next line once it is possible to sync two regulators.
274d2a6af05SQuentin Schulz	 */
275d2a6af05SQuentin Schulz	regulator-always-on;
276d2a6af05SQuentin Schulz	regulator-min-microvolt = <3300000>;
277d2a6af05SQuentin Schulz	regulator-max-microvolt = <3300000>;
278d2a6af05SQuentin Schulz	regulator-name = "vcc-wifi0";
279d2a6af05SQuentin Schulz};
280d2a6af05SQuentin Schulz
281d2a6af05SQuentin Schulz&reg_dldo2 {
282d2a6af05SQuentin Schulz	/*
283d2a6af05SQuentin Schulz	 * TODO: WiFi chip needs dldo1 AND dldo2 to be on to be powered.
284d2a6af05SQuentin Schulz	 * Remove next line once it is possible to sync two regulators.
285d2a6af05SQuentin Schulz	 */
286d2a6af05SQuentin Schulz	regulator-always-on;
287d2a6af05SQuentin Schulz	regulator-min-microvolt = <3300000>;
288d2a6af05SQuentin Schulz	regulator-max-microvolt = <3300000>;
289d2a6af05SQuentin Schulz	regulator-name = "vcc-wifi1";
290d2a6af05SQuentin Schulz};
291d2a6af05SQuentin Schulz
292d2a6af05SQuentin Schulz&reg_dldo3 {
293d2a6af05SQuentin Schulz	regulator-min-microvolt = <3000000>;
294d2a6af05SQuentin Schulz	regulator-max-microvolt = <3000000>;
295d2a6af05SQuentin Schulz	regulator-name = "vcc-3v0-csi";
296d2a6af05SQuentin Schulz};
297d2a6af05SQuentin Schulz
298d2a6af05SQuentin Schulz&reg_drivevbus {
299d2a6af05SQuentin Schulz	regulator-name = "usb0-vbus";
300d2a6af05SQuentin Schulz	status = "okay";
301d2a6af05SQuentin Schulz};
302d2a6af05SQuentin Schulz
303d2a6af05SQuentin Schulz&reg_eldo1 {
304d2a6af05SQuentin Schulz	regulator-min-microvolt = <1200000>;
305d2a6af05SQuentin Schulz	regulator-max-microvolt = <1200000>;
306d2a6af05SQuentin Schulz	regulator-name = "vcc-1v2-hsic";
307d2a6af05SQuentin Schulz};
308d2a6af05SQuentin Schulz
309d2a6af05SQuentin Schulz&reg_eldo2 {
310d2a6af05SQuentin Schulz	regulator-min-microvolt = <3000000>;
311d2a6af05SQuentin Schulz	regulator-max-microvolt = <3000000>;
312d2a6af05SQuentin Schulz	regulator-name = "vcc-dsp";
313d2a6af05SQuentin Schulz};
314d2a6af05SQuentin Schulz
315d2a6af05SQuentin Schulz&reg_eldo3 {
316d2a6af05SQuentin Schulz	regulator-min-microvolt = <3000000>;
317d2a6af05SQuentin Schulz	regulator-max-microvolt = <3000000>;
318d2a6af05SQuentin Schulz	regulator-name = "eldo3";
319d2a6af05SQuentin Schulz};
320d2a6af05SQuentin Schulz
321d2a6af05SQuentin Schulz&reg_usb1_vbus {
322d2a6af05SQuentin Schulz	pinctrl-names = "default";
323d2a6af05SQuentin Schulz	pinctrl-0 = <&usb1_vbus_pin_parrot>;
324d2a6af05SQuentin Schulz	gpio = <&pio 3 12 GPIO_ACTIVE_HIGH>; /* PD12 */
325d2a6af05SQuentin Schulz	status = "okay";
326d2a6af05SQuentin Schulz};
327d2a6af05SQuentin Schulz
328d2a6af05SQuentin Schulz&uart0 {
329d2a6af05SQuentin Schulz	pinctrl-names = "default";
330d2a6af05SQuentin Schulz	pinctrl-0 = <&uart0_pins_b>;
331d2a6af05SQuentin Schulz	status = "okay";
332d2a6af05SQuentin Schulz};
333d2a6af05SQuentin Schulz
334d2a6af05SQuentin Schulz&usb_otg {
335d2a6af05SQuentin Schulz	dr_mode = "otg";
336d2a6af05SQuentin Schulz	status = "okay";
337d2a6af05SQuentin Schulz};
338d2a6af05SQuentin Schulz
339d2a6af05SQuentin Schulz&usb_power_supply {
340d2a6af05SQuentin Schulz	status = "okay";
341d2a6af05SQuentin Schulz};
342d2a6af05SQuentin Schulz
343d2a6af05SQuentin Schulz&usbphy {
344d2a6af05SQuentin Schulz	status = "okay";
345d2a6af05SQuentin Schulz	pinctrl-names = "default";
346d2a6af05SQuentin Schulz	pinctrl-0 = <&usb0_id_det>;
347d2a6af05SQuentin Schulz	usb0_vbus-supply = <&reg_drivevbus>;
348d2a6af05SQuentin Schulz	usb0_id_det-gpios = <&pio 3 10 GPIO_ACTIVE_HIGH>; /* PD10 */
349d2a6af05SQuentin Schulz	usb0_vbus_power-supply = <&usb_power_supply>;
350d2a6af05SQuentin Schulz	usb1_vbus-supply = <&reg_usb1_vbus>;
351d2a6af05SQuentin Schulz};
352