// 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@20000000 {
		/* 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>;
	pinctrl-names = "default";
	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";
};
