// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * at91-sama5d27_wlsom1.dtsi - Device Tree file for SAMA5D27 WLSOM1
 *
 * Copyright (C) 2019 Microchip Technology Inc. and its subsidiaries
 *
 * Author: Nicolas Ferre <nicolas.ferre@microcihp.com>
 * Author: Eugen Hristev <eugen.hristev@microcihp.com>
 */
#include "sama5d2.dtsi"
#include "sama5d2-pinfunc.h"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/mfd/atmel-flexcom.h>
#include <dt-bindings/pinctrl/at91.h>

/ {
	model = "Microchip SAMA5D27 WLSOM1";
	compatible = "microchip,sama5d27-wlsom1", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5";

	aliases {
		i2c0 = &i2c0;
	};

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

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

&flx1 {
	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;

	uart6: serial@200 {
		pinctrl-0 = <&pinctrl_flx1_default>;
		pinctrl-names = "default";
	};
};

&i2c0 {
	pinctrl-0 = <&pinctrl_i2c0_default>;
	pinctrl-names = "default";
	status = "okay";
};

&i2c1 {
	dmas = <0>, <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1_default>;
	status = "okay";

	mcp16502@5b {
		compatible = "microchip,mcp16502";
		reg = <0x5b>;
		status = "okay";
		lpm-gpios = <&pioBU 0 GPIO_ACTIVE_LOW>;

		regulators {
			vdd_3v3: VDD_IO {
				regulator-name = "VDD_IO";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-initial-mode = <2>;
				regulator-allowed-modes = <2>, <4>;
				regulator-always-on;

				regulator-state-standby {
					regulator-on-in-suspend;
					regulator-mode = <4>;
				};

				regulator-state-mem {
					regulator-off-in-suspend;
					regulator-mode = <4>;
				};
			};

			vddio_ddr: VDD_DDR {
				regulator-name = "VDD_DDR";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-initial-mode = <2>;
				regulator-allowed-modes = <2>, <4>;
				regulator-always-on;

				regulator-state-standby {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1200000>;
					regulator-changeable-in-suspend;
					regulator-mode = <4>;
				};

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1200000>;
					regulator-changeable-in-suspend;
					regulator-mode = <4>;
				};
			};

			vdd_core: VDD_CORE {
				regulator-name = "VDD_CORE";
				regulator-min-microvolt = <1250000>;
				regulator-max-microvolt = <1250000>;
				regulator-initial-mode = <2>;
				regulator-allowed-modes = <2>, <4>;
				regulator-always-on;

				regulator-state-standby {
					regulator-on-in-suspend;
					regulator-mode = <4>;
				};

				regulator-state-mem {
					regulator-off-in-suspend;
					regulator-mode = <4>;
				};
			};

			vdd_ddr: VDD_OTHER {
				regulator-name = "VDD_OTHER";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-initial-mode = <2>;
				regulator-allowed-modes = <2>, <4>;
				regulator-always-on;

				regulator-state-standby {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
					regulator-changeable-in-suspend;
					regulator-mode = <4>;
				};

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
					regulator-changeable-in-suspend;
					regulator-mode = <4>;
				};
			};

			LDO1 {
				regulator-name = "LDO1";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;

				regulator-state-standby {
					regulator-on-in-suspend;
				};

				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			LDO2 {
				regulator-name = "LDO2";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;

				regulator-state-standby {
					regulator-on-in-suspend;
				};

				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};
		};
	};
};

&macb0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_macb0_default>;
	phy-mode = "rmii";

	ethernet-phy@0 {
		reg = <0x0>;
		interrupt-parent = <&pioA>;
		interrupts = <PIN_PB24 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_macb0_phy_irq>;
	};
};

&pmc {
	atmel,osc-bypass;
};

&qspi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_qspi1_default>;
	status = "disabled";

	qspi1_flash: spi_flash@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <80000000>;
		spi-rx-bus-width = <4>;
		spi-tx-bus-width = <4>;
		m25p,fast-read;
		status = "disabled";

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

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

		bootloaderenvred@100000 {
			label = "bootloader env redundant";
			reg = <0x100000 0x40000>;
		};

		bootloaderenv@140000 {
			label = "bootloader env";
			reg = <0x140000 0x40000>;
		};

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

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

&pioA {
	pinctrl_flx1_default: flx1_usart_default {
		pinmux = <PIN_PA24__FLEXCOM1_IO0>,
			 <PIN_PA23__FLEXCOM1_IO1>,
			 <PIN_PA25__FLEXCOM1_IO3>,
			 <PIN_PA26__FLEXCOM1_IO4>;
		bias-disable;
	};

	pinctrl_i2c0_default: i2c0_default {
		pinmux = <PIN_PD21__TWD0>,
			 <PIN_PD22__TWCK0>;
		bias-disable;
	};

	pinctrl_i2c1_default: i2c1_default {
		pinmux = <PIN_PD19__TWD1>,
			 <PIN_PD20__TWCK1>;
		bias-disable;
	};

	pinctrl_macb0_default: macb0_default {
		pinmux = <PIN_PB14__GTXCK>,
			 <PIN_PB15__GTXEN>,
			 <PIN_PB16__GRXDV>,
			 <PIN_PB17__GRXER>,
			 <PIN_PB18__GRX0>,
			 <PIN_PB19__GRX1>,
			 <PIN_PB20__GTX0>,
			 <PIN_PB21__GTX1>,
			 <PIN_PB22__GMDC>,
			 <PIN_PB23__GMDIO>;
		bias-disable;
	};

	pinctrl_macb0_phy_irq: macb0_phy_irq {
		pinmux = <PIN_PB24__GPIO>;
		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;
	};
};

