// SPDX-License-Identifier: GPL-2.0-only
/*
 * at91sam9rlek.dts - Device Tree file for Atmel at91sam9rl reference board
 *
 *  Copyright (C) 2014 Microchip
 *  Alexandre Belloni <alexandre.belloni@free-electrons.com>
 */
/dts-v1/;
#include "at91sam9rl.dtsi"

/ {
	model = "Atmel at91sam9rlek";
	compatible = "atmel,at91sam9rlek", "atmel,at91sam9rl", "atmel,at91sam9";

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

	memory@20000000 {
		reg = <0x20000000 0x4000000>;
	};

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

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

	ahb {
		fb0: fb@500000 {
			display = <&display0>;
			status = "okay";

			display0: panel {
				bits-per-pixel = <16>;
				atmel,lcdcon-backlight;
				atmel,dmacon = <0x1>;
				atmel,lcdcon2 = <0x80008002>;
				atmel,guard-time = <1>;
				atmel,lcd-wiring-mode = "RGB";

				display-timings {
					native-mode = <&timing0>;
					timing0: timing0 {
						clock-frequency = <4965000>;
						hactive = <240>;
						vactive = <320>;
						hback-porch = <1>;
						hfront-porch = <33>;
						vback-porch = <1>;
						vfront-porch = <0>;
						hsync-len = <5>;
						vsync-len = <1>;
						hsync-active = <1>;
						vsync-active = <1>;
					};
				};
			};
		};

		ebi: ebi@10000000 {
			pinctrl-0 = <&pinctrl_ebi_addr_nand>;
			pinctrl-names = "default";
			status = "okay";

			nand_controller: nand-controller {
				status = "okay";
				pinctrl-0 = <&pinctrl_nand_oe_we
					     &pinctrl_nand_cs
					     &pinctrl_nand_rb>;
				pinctrl-names = "default";

				nand@3 {
					reg = <0x3 0x0 0x800000>;
					rb-gpios = <&pioD 17 GPIO_ACTIVE_HIGH>;
					cs-gpios = <&pioB 6 GPIO_ACTIVE_HIGH>;
					nand-bus-width = <8>;
					nand-ecc-mode = "soft";
					nand-on-flash-bbt;
					label = "atmel_nand";

					partitions {
						compatible = "fixed-partitions";
						#address-cells = <1>;
						#size-cells = <1>;

						at91bootstrap@0 {
							label = "at91bootstrap";
							reg = <0x0 0x40000>;
						};

						bootloader@40000 {
							label = "bootloader";
							reg = <0x40000 0x80000>;
						};

						bootloaderenv@c0000 {
							label = "bootloader env";
							reg = <0xc0000 0xc0000>;
						};

						dtb@180000 {
							label = "device tree";
							reg = <0x180000 0x80000>;
						};

						kernel@200000 {
							label = "kernel";
							reg = <0x200000 0x600000>;
						};

						rootfs@800000 {
							label = "rootfs";
							reg = <0x800000 0x0f800000>;
						};
					};
				};
			};
		};

		apb {
			tcb0: timer@fffa0000 {
				timer@0 {
					compatible = "atmel,tcb-timer";
					reg = <0>, <1>;
				};

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

			mmc0: mmc@fffa4000 {
				pinctrl-0 = <
					&pinctrl_board_mmc0
					&pinctrl_mmc0_clk
					&pinctrl_mmc0_slot0_cmd_dat0
					&pinctrl_mmc0_slot0_dat1_3>;
				status = "okay";
				slot@0 {
					reg = <0>;
					bus-width = <4>;
					cd-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>;
				};
			};

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

			adc0: adc@fffd0000 {
				pinctrl-names = "default";
				pinctrl-0 = <
					&pinctrl_adc0_ad0
					&pinctrl_adc0_ad1
					&pinctrl_adc0_ad2
					&pinctrl_adc0_ad3
					&pinctrl_adc0_ad4
					&pinctrl_adc0_ad5
					&pinctrl_adc0_adtrg>;
				atmel,adc-ts-wires = <4>;
				status = "okay";
			};

			usb0: gadget@fffd4000 {
				atmel,vbus-gpio = <&pioA 8 GPIO_ACTIVE_HIGH>;
				status = "okay";
			};

			spi0: spi@fffcc000 {
				status = "okay";
				cs-gpios = <&pioA 28 0>, <0>, <0>, <0>;
				mtd_dataflash@0 {
					compatible = "atmel,at45", "atmel,dataflash";
					spi-max-frequency = <15000000>;
					reg = <0>;
				};
			};

			pwm0: pwm@fffc8000 {
				status = "okay";

				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_pwm0_pwm1_2>,
					<&pinctrl_pwm0_pwm2_2>;
			};

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

			pinctrl@fffff400 {
				mmc0 {
					pinctrl_board_mmc0: mmc0-board {
						atmel,pins =
							<AT91_PIOA 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
					};
				};
			};

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

			rtc@fffffe00 {
				status = "okay";
			};
		};
	};

	led-controller-1 {
		compatible = "pwm-leds";

		led-1 {
			label = "ds1";
			pwms = <&pwm0 1 5000 PWM_POLARITY_INVERTED>;
			max-brightness = <255>;
		};

		led-2 {
			label = "ds2";
			pwms = <&pwm0 2 5000 PWM_POLARITY_INVERTED>;
			max-brightness = <255>;
		};
	};

	led-controller-2 {
		compatible = "gpio-leds";

		led-3 {
			label = "ds3";
			gpios = <&pioD 14 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";

		right_click {
			label = "right_click";
			gpios = <&pioB 0 GPIO_ACTIVE_LOW>;
			linux,code = <273>;
			wakeup-source;
		};

		left_click {
			label = "left_click";
			gpios = <&pioB 1 GPIO_ACTIVE_LOW>;
			linux,code = <272>;
			wakeup-source;
		};
	};

	i2c-gpio-0 {
		status = "okay";
	};

	i2c-gpio-1 {
		status = "okay";
	};
};
