162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * sama5d3xmb_cmp.dts - Device Tree file for SAMA5D3x CMP mother board
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *  Copyright (C) 2016 Atmel,
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci#include "sama5d3xcm_cmp.dtsi"
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci/ {
1062306a36Sopenharmony_ci	compatible = "atmel,sama5d3xmb-cmp", "atmel,sama5d3xcm-cmp", "atmel,sama5d3", "atmel,sama5";
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci	ahb {
1362306a36Sopenharmony_ci		apb {
1462306a36Sopenharmony_ci			mmc0: mmc@f0000000 {
1562306a36Sopenharmony_ci				pinctrl-names = "default";
1662306a36Sopenharmony_ci				pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_cd>;
1762306a36Sopenharmony_ci				status = "okay";
1862306a36Sopenharmony_ci				slot@0 {
1962306a36Sopenharmony_ci					reg = <0>;
2062306a36Sopenharmony_ci					bus-width = <4>;
2162306a36Sopenharmony_ci					cd-gpios = <&pioD 17 GPIO_ACTIVE_HIGH>;
2262306a36Sopenharmony_ci				};
2362306a36Sopenharmony_ci			};
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci			spi0: spi@f0004000 {
2662306a36Sopenharmony_ci				dmas = <0>, <0>;	/*  Do not use DMA for spi0 */
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci				flash@0 {
2962306a36Sopenharmony_ci					compatible = "atmel,at25df321a";
3062306a36Sopenharmony_ci					spi-max-frequency = <50000000>;
3162306a36Sopenharmony_ci					reg = <0>;
3262306a36Sopenharmony_ci				};
3362306a36Sopenharmony_ci			};
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci			ssc0: ssc@f0008000 {
3662306a36Sopenharmony_ci				atmel,clk-from-rk-pin;
3762306a36Sopenharmony_ci			};
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci			/*
4062306a36Sopenharmony_ci			 * i2c0 conflicts with ISI:
4162306a36Sopenharmony_ci			 * disable it to allow the use of ISI
4262306a36Sopenharmony_ci			 * can not enable audio when i2c0 disabled
4362306a36Sopenharmony_ci			 */
4462306a36Sopenharmony_ci			i2c0: i2c@f0014000 {
4562306a36Sopenharmony_ci				wm8904: wm8904@1a {
4662306a36Sopenharmony_ci					compatible = "wlf,wm8904";
4762306a36Sopenharmony_ci					reg = <0x1a>;
4862306a36Sopenharmony_ci					clocks = <&pmc PMC_TYPE_SYSTEM 8>;
4962306a36Sopenharmony_ci					clock-names = "mclk";
5062306a36Sopenharmony_ci				};
5162306a36Sopenharmony_ci			};
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci			i2c1: i2c@f0018000 {
5462306a36Sopenharmony_ci				ov2640: camera@30 {
5562306a36Sopenharmony_ci					compatible = "ovti,ov2640";
5662306a36Sopenharmony_ci					reg = <0x30>;
5762306a36Sopenharmony_ci					pinctrl-names = "default";
5862306a36Sopenharmony_ci					pinctrl-0 = <&pinctrl_pck1_as_isi_mck &pinctrl_sensor_power &pinctrl_sensor_reset>;
5962306a36Sopenharmony_ci					resetb-gpios = <&pioE 24 GPIO_ACTIVE_LOW>;
6062306a36Sopenharmony_ci					pwdn-gpios = <&pioE 29 GPIO_ACTIVE_HIGH>;
6162306a36Sopenharmony_ci					/* use pck1 for the master clock of ov2640 */
6262306a36Sopenharmony_ci					clocks = <&pmc PMC_TYPE_SYSTEM 9>;
6362306a36Sopenharmony_ci					clock-names = "xvclk";
6462306a36Sopenharmony_ci					assigned-clocks = <&pmc PMC_TYPE_SYSTEM 9>;
6562306a36Sopenharmony_ci					assigned-clock-rates = <25000000>;
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci					port {
6862306a36Sopenharmony_ci						ov2640_0: endpoint {
6962306a36Sopenharmony_ci							remote-endpoint = <&isi_0>;
7062306a36Sopenharmony_ci							bus-width = <8>;
7162306a36Sopenharmony_ci						};
7262306a36Sopenharmony_ci					};
7362306a36Sopenharmony_ci				};
7462306a36Sopenharmony_ci			};
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci			usart1: serial@f0020000 {
7762306a36Sopenharmony_ci				dmas = <0>, <0>;	/*  Do not use DMA for usart1 */
7862306a36Sopenharmony_ci				pinctrl-names = "default";
7962306a36Sopenharmony_ci				pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
8062306a36Sopenharmony_ci				status = "okay";
8162306a36Sopenharmony_ci			};
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci			isi: isi@f0034000 {
8462306a36Sopenharmony_ci				port {
8562306a36Sopenharmony_ci					isi_0: endpoint {
8662306a36Sopenharmony_ci						remote-endpoint = <&ov2640_0>;
8762306a36Sopenharmony_ci						bus-width = <8>;
8862306a36Sopenharmony_ci						vsync-active = <1>;
8962306a36Sopenharmony_ci						hsync-active = <1>;
9062306a36Sopenharmony_ci					};
9162306a36Sopenharmony_ci				};
9262306a36Sopenharmony_ci			};
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci			mmc1: mmc@f8000000 {
9562306a36Sopenharmony_ci				pinctrl-names = "default";
9662306a36Sopenharmony_ci				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
9762306a36Sopenharmony_ci				status = "okay";
9862306a36Sopenharmony_ci				slot@0 {
9962306a36Sopenharmony_ci					reg = <0>;
10062306a36Sopenharmony_ci					bus-width = <4>;
10162306a36Sopenharmony_ci					cd-gpios = <&pioD 18 GPIO_ACTIVE_HIGH>;
10262306a36Sopenharmony_ci				};
10362306a36Sopenharmony_ci			};
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci			adc0: adc@f8018000 {
10662306a36Sopenharmony_ci				pinctrl-names = "default", "sleep";
10762306a36Sopenharmony_ci				pinctrl-0 = <
10862306a36Sopenharmony_ci					&pinctrl_adc0_adtrg
10962306a36Sopenharmony_ci					&pinctrl_adc0_ad0
11062306a36Sopenharmony_ci					&pinctrl_adc0_ad1
11162306a36Sopenharmony_ci					&pinctrl_adc0_ad2
11262306a36Sopenharmony_ci					&pinctrl_adc0_ad3
11362306a36Sopenharmony_ci					&pinctrl_adc0_ad4
11462306a36Sopenharmony_ci					>;
11562306a36Sopenharmony_ci				pinctrl-1 = <
11662306a36Sopenharmony_ci					&pinctrl_adc0_adtrg_sleep
11762306a36Sopenharmony_ci					&pinctrl_adc0_ad0_sleep
11862306a36Sopenharmony_ci					&pinctrl_adc0_ad1_sleep
11962306a36Sopenharmony_ci					&pinctrl_adc0_ad2_sleep
12062306a36Sopenharmony_ci					&pinctrl_adc0_ad3_sleep
12162306a36Sopenharmony_ci					&pinctrl_adc0_ad4_sleep
12262306a36Sopenharmony_ci					>;
12362306a36Sopenharmony_ci				status = "okay";
12462306a36Sopenharmony_ci			};
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci			macb1: ethernet@f802c000 {
12762306a36Sopenharmony_ci				phy-mode = "rmii";
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci				#address-cells = <1>;
13062306a36Sopenharmony_ci				#size-cells = <0>;
13162306a36Sopenharmony_ci				phy0: ethernet-phy@1 {
13262306a36Sopenharmony_ci					/*interrupt-parent = <&pioE>;*/
13362306a36Sopenharmony_ci					/*interrupts = <30 IRQ_TYPE_EDGE_FALLING>;*/
13462306a36Sopenharmony_ci					reg = <1>;
13562306a36Sopenharmony_ci				};
13662306a36Sopenharmony_ci			};
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci			pinctrl@fffff200 {
13962306a36Sopenharmony_ci				adc0 {
14062306a36Sopenharmony_ci					pinctrl_adc0_adtrg_sleep: adc0_adtrg_1 {
14162306a36Sopenharmony_ci						atmel,pins =
14262306a36Sopenharmony_ci							<AT91_PIOD 19 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>;
14362306a36Sopenharmony_ci					};
14462306a36Sopenharmony_ci					pinctrl_adc0_ad0_sleep: adc0_ad0_1 {
14562306a36Sopenharmony_ci						atmel,pins =
14662306a36Sopenharmony_ci							<AT91_PIOD 20 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>;
14762306a36Sopenharmony_ci					};
14862306a36Sopenharmony_ci					pinctrl_adc0_ad1_sleep: adc0_ad1_1 {
14962306a36Sopenharmony_ci						atmel,pins =
15062306a36Sopenharmony_ci							<AT91_PIOD 21 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>;
15162306a36Sopenharmony_ci					};
15262306a36Sopenharmony_ci					pinctrl_adc0_ad2_sleep: adc0_ad2_1 {
15362306a36Sopenharmony_ci						atmel,pins =
15462306a36Sopenharmony_ci							<AT91_PIOD 22 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>;
15562306a36Sopenharmony_ci					};
15662306a36Sopenharmony_ci					pinctrl_adc0_ad3_sleep: adc0_ad3_1 {
15762306a36Sopenharmony_ci						atmel,pins =
15862306a36Sopenharmony_ci							<AT91_PIOD 23 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>;
15962306a36Sopenharmony_ci					};
16062306a36Sopenharmony_ci					pinctrl_adc0_ad4_sleep: adc0_ad4_1 {
16162306a36Sopenharmony_ci						atmel,pins =
16262306a36Sopenharmony_ci							<AT91_PIOD 24 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>;
16362306a36Sopenharmony_ci					};
16462306a36Sopenharmony_ci				};
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ci				board {
16762306a36Sopenharmony_ci					pinctrl_gpio_keys: gpio_keys {
16862306a36Sopenharmony_ci						atmel,pins =
16962306a36Sopenharmony_ci							<AT91_PIOE 27 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
17062306a36Sopenharmony_ci					};
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci					pinctrl_mmc0_cd: mmc0_cd {
17362306a36Sopenharmony_ci						atmel,pins =
17462306a36Sopenharmony_ci							<AT91_PIOD 17 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
17562306a36Sopenharmony_ci					};
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci					pinctrl_mmc1_cd: mmc1_cd {
17862306a36Sopenharmony_ci						atmel,pins =
17962306a36Sopenharmony_ci							<AT91_PIOD 18 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
18062306a36Sopenharmony_ci					};
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci					pinctrl_pck0_as_audio_mck: pck0_as_audio_mck {
18362306a36Sopenharmony_ci						atmel,pins =
18462306a36Sopenharmony_ci							<AT91_PIOD 30 AT91_PERIPH_B AT91_PINCTRL_NONE>;
18562306a36Sopenharmony_ci					};
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci					pinctrl_pck1_as_isi_mck: pck1_as_isi_mck-0 {
18862306a36Sopenharmony_ci						atmel,pins =
18962306a36Sopenharmony_ci							<AT91_PIOD 31 AT91_PERIPH_B AT91_PINCTRL_NONE>;
19062306a36Sopenharmony_ci					};
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci					pinctrl_sensor_reset: sensor_reset-0 {
19362306a36Sopenharmony_ci						atmel,pins =
19462306a36Sopenharmony_ci							<AT91_PIOE 24 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
19562306a36Sopenharmony_ci					};
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci					pinctrl_sensor_power: sensor_power-0 {
19862306a36Sopenharmony_ci						atmel,pins =
19962306a36Sopenharmony_ci							<AT91_PIOE 29 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
20062306a36Sopenharmony_ci					};
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci					pinctrl_usba_vbus: usba_vbus {
20362306a36Sopenharmony_ci						atmel,pins =
20462306a36Sopenharmony_ci							<AT91_PIOD 29 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
20562306a36Sopenharmony_ci					};
20662306a36Sopenharmony_ci				};
20762306a36Sopenharmony_ci			};
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci			dbgu: serial@ffffee00 {
21062306a36Sopenharmony_ci				dmas = <0>, <0>;	/*  Do not use DMA for dbgu */
21162306a36Sopenharmony_ci				status = "okay";
21262306a36Sopenharmony_ci			};
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci			watchdog@fffffe40 {
21562306a36Sopenharmony_ci				status = "okay";
21662306a36Sopenharmony_ci			};
21762306a36Sopenharmony_ci		};
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci		usb0: gadget@500000 {
22062306a36Sopenharmony_ci			atmel,vbus-gpio = <&pioD 29 GPIO_ACTIVE_HIGH>;
22162306a36Sopenharmony_ci			pinctrl-names = "default";
22262306a36Sopenharmony_ci			pinctrl-0 = <&pinctrl_usba_vbus>;
22362306a36Sopenharmony_ci			status = "okay";
22462306a36Sopenharmony_ci		};
22562306a36Sopenharmony_ci	};
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci	sound {
22862306a36Sopenharmony_ci		compatible = "atmel,asoc-wm8904";
22962306a36Sopenharmony_ci		pinctrl-names = "default";
23062306a36Sopenharmony_ci		pinctrl-0 = <&pinctrl_pck0_as_audio_mck>;
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci		atmel,model = "wm8904 @ SAMA5D3EK";
23362306a36Sopenharmony_ci		atmel,audio-routing =
23462306a36Sopenharmony_ci			"Headphone Jack", "HPOUTL",
23562306a36Sopenharmony_ci			"Headphone Jack", "HPOUTR",
23662306a36Sopenharmony_ci			"IN2L", "Line In Jack",
23762306a36Sopenharmony_ci			"IN2R", "Line In Jack",
23862306a36Sopenharmony_ci			"Mic", "MICBIAS",
23962306a36Sopenharmony_ci			"IN1L", "Mic";
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci		atmel,ssc-controller = <&ssc0>;
24262306a36Sopenharmony_ci		atmel,audio-codec = <&wm8904>;
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_ci		status = "disabled";
24562306a36Sopenharmony_ci	};
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ci	/* Conflict with LCD pins */
24862306a36Sopenharmony_ci	gpio_keys {
24962306a36Sopenharmony_ci		compatible = "gpio-keys";
25062306a36Sopenharmony_ci		status = "okay";
25162306a36Sopenharmony_ci
25262306a36Sopenharmony_ci		#address-cells = <1>;
25362306a36Sopenharmony_ci		#size-cells = <0>;
25462306a36Sopenharmony_ci		pinctrl-names = "default";
25562306a36Sopenharmony_ci		pinctrl-0 = <&pinctrl_gpio_keys>;
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ci		pb_user1 {
25862306a36Sopenharmony_ci			label = "pb_user1";
25962306a36Sopenharmony_ci			gpios = <&pioE 27 GPIO_ACTIVE_HIGH>;
26062306a36Sopenharmony_ci			linux,code = <0x100>;
26162306a36Sopenharmony_ci			wakeup-source;
26262306a36Sopenharmony_ci		};
26362306a36Sopenharmony_ci	};
26462306a36Sopenharmony_ci};
265