// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * at91-sama5d29_curiosity.dts - Device Tree file for SAMA5D29 CURIOSITY board
 *
 * Copyright (C) 2023 Microchip Technology Inc. and its subsidiaries
 *
 * Author: Mihai Sain <mihai.sain@microchip.com>
 *
 */
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/at91.h>
#include "sama5d2.dtsi"
#include "sama5d2-pinfunc.h"

/ {
	model = "Microchip SAMA5D29-Curiosity";
	compatible = "atmel,sama5d29-curiosity", "atmel,sama5d2", "atmel,sama5";

	chosen {
		bootargs = "console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait";
		stdout-path = &uart0;
	};

	memory {
		reg = <0x20000000 0x20000000>; // 512 MiB LPDDR2-333
	};

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

		main_xtal: main_xtal {
			clock-frequency = <24000000>;
		};
	};

	onewire_tm: onewire {
		gpios = <&pioA PIN_PC9 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_onewire_tm_default>;
		status = "okay";

		w1_eeprom: w1_eeprom@0 {
			compatible = "maxim,ds24b33";
			status = "okay";
		};
	};

	ahb {
		usb1: ohci@400000 {
			num-ports = <3>;
			atmel,vbus-gpio = <&pioA PIN_PB13 GPIO_ACTIVE_HIGH>;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_usb_default>;
			status = "okay";
		};

		usb2: ehci@500000 {
			status = "okay";
		};

		sdmmc0: sdio-host@a0000000 {
			bus-width = <4>;
			disable-wp;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_sdmmc0_default>;
			status = "okay";
		};

		sdmmc1: sdio-host@b0000000 {
			bus-width = <4>;
			disable-wp;
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_sdmmc1_default>;
			status = "okay";
		};

		apb {
			hlcdc: hlcdc@f0000000 {
				atmel,vl-bpix = <4>;
				atmel,output-mode = <24>;
				atmel,guard-time = <1>;
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_pwm &pinctrl_lcd_rgb666>;
				status = "okay";

				display-timings { // PDA TM5000
					800x480 {
						clock-frequency = <33000000>;
						xres = <800>;
						yres = <480>;
						hactive = <800>;
						vactive = <480>;
						hsync-len = <64>;
						hfront-porch = <1>;
						hback-porch = <64>;
						vfront-porch = <1>;
						vback-porch = <22>;
						vsync-len = <23>;
					};
				};
			};

			qspi1: spi@f0024000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_qspi1_default>;
				status = "okay";

				flash@0 {
					compatible = "jedec,spi-nor";
					reg = <0>;
					spi-max-frequency = <80000000>;
					spi-rx-bus-width = <4>;
					spi-tx-bus-width = <4>;
					m25p,fast-read;
				};
			};

			uart0: serial@f801c000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_uart0_default>;
				status = "okay";
			};

			pioA: pinctrl@fc038000 {
				pinctrl_lcd_base: lcd_base {
					pinmux = <PIN_PC30__LCDVSYNC>,
						 <PIN_PC31__LCDHSYNC>,
						 <PIN_PD1__LCDDEN>,
						 <PIN_PD0__LCDPCK>;
					bias-disable;
				};

				pinctrl_lcd_pwm: lcd_pwm {
					pinmux = <PIN_PC28__LCDPWM>;
					bias-disable;
				};

				pinctrl_lcd_rgb666: lcd_rgb666 {
					pinmux = <PIN_PC10__LCDDAT2>,
						 <PIN_PC11__LCDDAT3>,
						 <PIN_PC12__LCDDAT4>,
						 <PIN_PC13__LCDDAT5>,
						 <PIN_PC14__LCDDAT6>,
						 <PIN_PC15__LCDDAT7>,
						 <PIN_PC16__LCDDAT10>,
						 <PIN_PC17__LCDDAT11>,
						 <PIN_PC18__LCDDAT12>,
						 <PIN_PC19__LCDDAT13>,
						 <PIN_PC20__LCDDAT14>,
						 <PIN_PC21__LCDDAT15>,
						 <PIN_PC22__LCDDAT18>,
						 <PIN_PC23__LCDDAT19>,
						 <PIN_PC24__LCDDAT20>,
						 <PIN_PC25__LCDDAT21>,
						 <PIN_PC26__LCDDAT22>,
						 <PIN_PC27__LCDDAT23>;
					bias-disable;
				};

				pinctrl_qspi1_default: qspi1_default {
					pinmux = <PIN_PB5__QSPI1_SCK>,
						 <PIN_PB6__QSPI1_CS>,
						 <PIN_PB7__QSPI1_IO0>,
						 <PIN_PB8__QSPI1_IO1>,
						 <PIN_PB9__QSPI1_IO2>,
						 <PIN_PB10__QSPI1_IO3>;
					bias-pull-up;
				};

				pinctrl_sdmmc0_default: sdmmc0_default {
					pinmux = <PIN_PA0__SDMMC0_CK>,
						 <PIN_PA1__SDMMC0_CMD>,
						 <PIN_PA2__SDMMC0_DAT0>,
						 <PIN_PA3__SDMMC0_DAT1>,
						 <PIN_PA4__SDMMC0_DAT2>,
						 <PIN_PA5__SDMMC0_DAT3>,
						 <PIN_PA11__SDMMC0_VDDSEL>,
						 <PIN_PA13__SDMMC0_CD>;
					bias-disable;
				};

				pinctrl_sdmmc1_default: sdmmc1_default {
					pinmux = <PIN_PA18__SDMMC1_DAT0>,
						 <PIN_PA19__SDMMC1_DAT1>,
						 <PIN_PA20__SDMMC1_DAT2>,
						 <PIN_PA21__SDMMC1_DAT3>,
						 <PIN_PA22__SDMMC1_CK>,
						 <PIN_PA28__SDMMC1_CMD>,
						 <PIN_PA30__SDMMC1_CD>;
					bias-disable;
				};

				pinctrl_uart0_default: uart0_default {
					pinmux = <PIN_PB26__URXD0>,
						 <PIN_PB27__UTXD0>;
					bias-disable;
				};

				pinctrl_usb_default: usb_default {
					pinmux = <PIN_PA6__GPIO>;
					bias-disable;
				};

				pinctrl_usba_vbus: usba_vbus {
					pinmux = <PIN_PB13__GPIO>;
					bias-disable;
				};

				pinctrl_onewire_tm_default: onewire_tm_default {
					pinmux = <PIN_PC9__GPIO>;
					bias-pull-up;
				};
			};
		};
	};
};
