// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * at91-ariag25.dts - Device Tree file for Acme Systems Aria G25 (AT91SAM9G25 based)
 *
 * Copyright (C) 2013 Douglas Gilbert <dgilbert@interlog.com>,
 *                    Robert Nelson <robertcnelson@gmail.com>
 */
/dts-v1/;
#include "at91sam9g25.dtsi"

/ {
	model = "Acme Systems Aria G25";
	compatible = "acme,ariag25", "atmel,at91sam9x5ek",
		     "atmel,at91sam9x5", "atmel,at91sam9";

	aliases {
		serial5 = &uart0;
		serial6 = &uart1;
	};

	chosen {
		bootargs = "console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait";
	};

	memory {
		/* 128 MB, change this for 256 MB revision */
		reg = <0x20000000 0x8000000>;
	};

	clocks {
		slow_xtal {
			clock-frequency = <32768>;
		};

		main_xtal {
			clock-frequency = <12000000>;
		};
	};

	leds {
		compatible = "gpio-leds";

		/* little green LED in middle of Aria G25 module */
		aria_led {
			label = "aria_led";
			gpios = <&pioB 8 GPIO_ACTIVE_HIGH>; /* PB8 */
			linux,default-trigger = "heartbeat";
		};

	};

	onewire {
		compatible = "w1-gpio";
		gpios = <&pioA 21 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_w1_0>;
	};
};

&adc0 {
	status = "okay";
	atmel,adc-channels-used = <0xf>;
};

&dbgu {
	status = "okay";
};

&i2c0 {
	status = "okay";
};

&i2c1 {
	status = "okay";
};

/* TWD2+TCLK2 hidden behind ethernet, so no i2c2 */

&macb0 {
	phy-mode = "rmii";
	/*
	 * following can be overwritten by bootloader:
	 * for example u-boot 'ftd set' command
	 */
	local-mac-address = [00 00 00 00 00 00];
	status = "okay";
};


&mmc0 {
	/* N.B. Aria has no SD card detect (CD), assumed present */

	pinctrl-0 = <
		&pinctrl_mmc0_slot0_clk_cmd_dat0
		&pinctrl_mmc0_slot0_dat1_3>;
	status = "okay";

	slot@0 {
		reg = <0>;
		bus-width = <4>;
	};
};

&pinctrl {
	w1_0 {
		pinctrl_w1_0: w1_0-0 {
			atmel,pins = <0 21 0x0 0x1>; /* PA21 PIO, pull-up */
		};
	};
};

&rtc {
	status = "okay";
};

&tcb0 {
	timer@0 {
		compatible = "atmel,tcb-timer";
		reg = <0>;
	};

	timer@1 {
		compatible = "atmel,tcb-timer";
		reg = <1>;
	};
};

/*
 * UART0/1 pins are marked as GPIO on
 * Aria documentation.
 * Change to "okay" if you need additional serial ports
 */
&uart0 {
	status = "disabled";
};

&uart1 {
	status = "disabled";
};

&usart0 {
	pinctrl-0 = <&pinctrl_usart0
		     &pinctrl_usart0_rts
		     &pinctrl_usart0_cts>;
	status = "okay";
};

&usart1 {
	pinctrl-0 = <&pinctrl_usart1
		     /* &pinctrl_usart1_rts */
		     /* &pinctrl_usart1_cts */
		    >;
	status = "okay";
};

&usart2 {
	/* cannot activate RTS2+CTS2, clash with
	 * ethernet on PB0 and PB1 */
	pinctrl-0 = <&pinctrl_usart2>;
	status = "okay";
};

&usart3 {
	compatible = "atmel,at91sam9260-usart";
	reg = <0xf8028000 0x200>;
	interrupts = <8 4 5>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usart3
		     /* &pinctrl_usart3_rts */
		     /* &pinctrl_usart3_cts */
		    >;
	status = "okay";
};

&usb0 {
	status = "okay";
	num-ports = <3>;
};

&usb1 {
	status = "okay";
};
