// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * at91sam9x5ek.dtsi - Device Tree file for AT91SAM9x5CM Base board
 *
 *  Copyright (C) 2012 Atmel,
 *                2012 Nicolas Ferre <nicolas.ferre@atmel.com>
 */
#include "at91sam9x5cm.dtsi"

/ {
	model = "Atmel AT91SAM9X5-EK";
	compatible = "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9";

	chosen {
		bootargs = "root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs";
		stdout-path = "serial0:115200n8";
	};

	ahb {
		apb {
			mmc0: mmc@f0008000 {
				pinctrl-0 = <
					&pinctrl_board_mmc0
					&pinctrl_mmc0_slot0_clk_cmd_dat0
					&pinctrl_mmc0_slot0_dat1_3>;
				status = "okay";
				slot@0 {
					reg = <0>;
					bus-width = <4>;
					cd-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>;
				};
			};

			mmc1: mmc@f000c000 {
				pinctrl-0 = <
					&pinctrl_board_mmc1
					&pinctrl_mmc1_slot0_clk_cmd_dat0
					&pinctrl_mmc1_slot0_dat1_3>;
				status = "okay";
				slot@0 {
					reg = <0>;
					bus-width = <4>;
					cd-gpios = <&pioD 14 GPIO_ACTIVE_HIGH>;
				};
			};

			dbgu: serial@fffff200 {
				status = "okay";
			};

			usart0: serial@f801c000 {
				atmel,use-dma-rx;
				atmel,use-dma-tx;
				status = "okay";
			};

			usb2: gadget@f803c000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_board_usb2>;
				atmel,vbus-gpio = <&pioB 16 GPIO_ACTIVE_HIGH>;
				status = "okay";
			};

			i2c0: i2c@f8010000 {
				status = "okay";

				wm8731: wm8731@1a {
					compatible = "wm8731";
					reg = <0x1a>;
				};
			};

			adc0: adc@f804c000 {
				atmel,adc-ts-wires = <4>;
				atmel,adc-ts-pressure-threshold = <10000>;
				status = "okay";
			};

			pinctrl@fffff400 {
				camera_sensor {
					pinctrl_pck0_as_isi_mck: pck0_as_isi_mck-0 {
						atmel,pins =
							<AT91_PIOC 15 AT91_PERIPH_C AT91_PINCTRL_NONE>;	/* ISI_MCK */
					};

					pinctrl_sensor_power: sensor_power-0 {
						atmel,pins =
							<AT91_PIOA 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
					};

					pinctrl_sensor_reset: sensor_reset-0 {
						atmel,pins =
							<AT91_PIOA 7 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
					};
				};

				mmc0 {
					pinctrl_board_mmc0: mmc0-board {
						atmel,pins =
							<AT91_PIOD 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;	/* PD15 gpio CD pin pull up and deglitch */
					};
				};

				mmc1 {
					pinctrl_board_mmc1: mmc1-board {
						atmel,pins =
							<AT91_PIOD 14 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;	/* PD14 gpio CD pin pull up and deglitch */
					};
				};

				usb2 {
					pinctrl_board_usb2: usb2-board {
						atmel,pins =
							<AT91_PIOB 16 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;		/* PB16 gpio vbus sense, deglitch */
					};
				};
			};

			spi0: spi@f0000000 {
				status = "disabled"; /* conflicts with mmc1 */
				cs-gpios = <&pioA 14 0>, <0>, <0>, <0>;
				m25p80@0 {
					compatible = "atmel,at25df321a";
					spi-max-frequency = <50000000>;
					reg = <0>;
				};
			};

			watchdog@fffffe40 {
				status = "okay";
			};

			ssc0: ssc@f0010000 {
				status = "okay";
			};
		};

		usb0: ohci@600000 {
			status = "okay";
			num-ports = <3>;
			atmel,vbus-gpio = <0 /* &pioD 18 GPIO_ACTIVE_LOW *//* Activate to have access to port A */
					   &pioD 19 GPIO_ACTIVE_LOW
					   &pioD 20 GPIO_ACTIVE_LOW
					  >;
		};

		usb1: ehci@700000 {
			status = "okay";
		};
	};

	sound {
		compatible = "atmel,sam9x5-wm8731-audio";

		atmel,model = "wm8731 @ AT91SAM9X5EK";

		atmel,audio-routing =
			"Headphone Jack", "RHPOUT",
			"Headphone Jack", "LHPOUT",
			"LLINEIN", "Line In Jack",
			"RLINEIN", "Line In Jack";

		atmel,ssc-controller = <&ssc0>;
		atmel,audio-codec = <&wm8731>;
	};
};
