// 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 = "atmel,sama5d2-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 {
					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>;
					};

			};
		};
	};
};

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