// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * sam9x60ek.dts - Device Tree file for SAM9X60 EK board
 *
 * Copyright (C) 2018 Microchip Technology Inc. and its subsidiaries
 *
 * Author: Sandeep Sheriker M <Sandeepsheriker.mallikarjun@microchip.com>
 */
/dts-v1/;
#include <dt-bindings/mfd/atmel-flexcom.h>
#include "sam9x60.dtsi"

/ {
	model = "Microchip SAM9X60-Ek";
	compatible = "microchip,sam9x60ek", "microchip,sam9x60", "atmel,at91sam9";

	chosen {
		stdout-path = &dbgu;
		i2c0 = &flx0;
	};

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

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

	onewire_tm: onewire {
		gpios = <&pioD 14 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 {
		apb {
			qspi: spi@f0014000 {
				pinctrl-names = "default";
				pinctrl-0 = <&pinctrl_qspi>;
				status = "okay";

				nor_flash: sst26vf064@0 {
					compatible = "jedec,spi-nor";
					reg = <0>;
					spi-max-frequency = <80000000>;
					spi-rx-bus-width = <4>;
					spi-tx-bus-width = <4>;
				};
			};

			flx0: flexcom@f801c600 {
				atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
				status = "okay";

				i2c@600 {
					compatible = "microchip,sam9x60-i2c";
					reg = <0x600 0x200>;
					pinctrl-names = "default";
					pinctrl-0 = <&pinctrl_flx0>;
					#address-cells = <1>;
					#size-cells = <0>;
					clocks = <&pmc PMC_TYPE_PERIPHERAL 5>;
					status = "okay";

					eeprom@53 {
						compatible = "atmel,24c02"; /* EEPROM is 2Kbits microchip 24aa025e48, an at24c02 with page size of 16 */
						reg = <0x53>;
						pagesize = <16>;
					};
				};
			};

			pinctrl {
				nand {
					pinctrl_nand_oe_we: nand-oe-we-0 {
						atmel,pins =
							<AT91_PIOD 0 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
							 AT91_PIOD 1 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)>;
					};

					pinctrl_nand_rb: nand-rb-0 {
						atmel,pins =
							<AT91_PIOD 5 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
					};

					pinctrl_nand_cs: nand-cs-0 {
						atmel,pins =
							<AT91_PIOD 4 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
					};
				};

				ebi {
					pinctrl_ebi_data_0_7: ebi-data-lsb-0 {
						atmel,pins =
							<AT91_PIOD 6 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
							 AT91_PIOD 7 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
							 AT91_PIOD 8 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
							 AT91_PIOD 9 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
							 AT91_PIOD 10 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
							 AT91_PIOD 11 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
							 AT91_PIOD 12 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
							 AT91_PIOD 13 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)>;
					};

					pinctrl_ebi_addr_nand: ebi-addr-0 {
						atmel,pins =
							<AT91_PIOD 2 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
							 AT91_PIOD 3 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)>;
					};
				};

				pinctrl_qspi: qspi {
					atmel,pins =
						<AT91_PIOB 19 AT91_PERIPH_A AT91_PINCTRL_NONE
						 AT91_PIOB 20 AT91_PERIPH_A AT91_PINCTRL_NONE
						 AT91_PIOB 21 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
						 AT91_PIOB 22 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
						 AT91_PIOB 23 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
						 AT91_PIOB 24 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
				};

				pinctrl_flx0: flx0_default {
					atmel,pins =
						<AT91_PIOA 0 AT91_PERIPH_A AT91_PINCTRL_NONE
						 AT91_PIOA 1 AT91_PERIPH_A AT91_PINCTRL_NONE>;
				};

				pinctrl_onewire_tm_default: onewire_tm_default {
					atmel,pins =
						<AT91_PIOD 14 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
				};

				usb1 {
					pinctrl_usb_default: usb_default {
						atmel,pins = <AT91_PIOD 15 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
								AT91_PIOD 16 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
					};
				};

			};
		};
	};
};

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

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

		nand@3 {
			reg = <0x3 0x0 0x800000>;
			rb-gpios = <&pioD 5 GPIO_ACTIVE_HIGH>;
			cs-gpios = <&pioD 4 GPIO_ACTIVE_HIGH>;
			nand-bus-width = <8>;
			nand-ecc-mode = "hw";
			nand-ecc-strength = <8>;
			nand-ecc-step-size = <512>;
			nand-on-flash-bbt;
			label = "atmel_nand";

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

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

				uboot@40000 {
					label = "u-boot";
					reg = <0x40000 0xc0000>;
				};

				ubootenvred@100000 {
					label = "U-Boot Env Redundant";
					reg = <0x100000 0x40000>;
				};

				ubootenv@140000 {
					label = "U-Boot Env";
					reg = <0x140000 0x40000>;
				};

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

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

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

&macb0 {
	phy-mode = "rmii";
	status = "okay";
};

&usb1 {
	num-ports = <3>;
	atmel,vbus-gpio = <0
			   &pioD 15 GPIO_ACTIVE_HIGH
			   &pioD 16 GPIO_ACTIVE_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usb_default>;
	status = "okay";
};

&usb2 {
	status = "okay";
};
