/*
 * Copyright (c) 2020 DENX Software Engineering GmbH
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <nxp/MK66FN2M0VMD18.dtsi>

/ {
	model = "SEGGER MK66F IP Switch board";
	compatible = "nxp,mk66f18", "nxp,k66f", "nxp,k6x";

	aliases {
		led0 = &red0_led;
		led2 = &red2_led;
		dsa-spi = &spi1;
	};

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
	};

	leds {
		compatible = "gpio-leds";
		red0_led: led_0 {
			gpios = <&gpioa 8 GPIO_ACTIVE_HIGH>;
			label = "User LD1";
		};

		red2_led: led_2 {
			gpios = <&gpioa 10 GPIO_ACTIVE_HIGH>;
			label = "User LD2";
		};
	};
};

&cpu0 {
	clock-frequency = <120000000>;
};

&sim {
	pllfll-select = <KINETIS_SIM_PLLFLLSEL_MCGPLLCLK>;
	er32k-select = <KINETIS_SIM_ER32KSEL_RTC>;

	bus_clk {
		clock-div = <3>;
	};

	flash_clk {
		clock-div = <7>;
	};
};

&gpioa {
	status = "okay";
};

&gpiob {
	status = "okay";
};

&flash0 {

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0x00010000>;
			read-only;
		};

		/*
		 * The flash starting at 0x00010000 and ending at
		 * 0x0001ffff (sectors 16-31) is reserved for use
		 * by the application.
		 */
		storage_partition: partition@1e000 {
			label = "storage";
			reg = <0x0001e000 0x00002000>;
		};

		slot0_partition: partition@20000 {
			label = "image-0";
			reg = <0x00020000 0x00060000>;
		};
		slot1_partition: partition@80000 {
			label = "image-1";
			reg = <0x00080000 0x00060000>;
		};
		scratch_partition: partition@e0000 {
			label = "image-scratch";
			reg = <0x000e0000 0x00020000>;
		};
	};
};

&enet {
	status = "okay";
	pinctrl-0 = <&RMII0_RXD1_PTA12 &RMII0_RXD0_PTA13
		     &RMII0_CRS_DV_PTA14 &RMII0_TXEN_PTA15
		     &RMII0_TXD0_PTA16 &RMII0_TXD1_PTA17
		     &ENET_1588_CLKIN_PTE26 /* used for RMII ref clk */>;

	fixed-link {
		speed = <100>;
		full-duplex;
	};
};

&spi1 {
	status = "okay";
	pinctrl-0 = <&SPI1_PCS0_PTB10 &SPI1_SCK_PTB11
		     &SPI1_SOUT_PTB16 &SPI1_SIN_PTB17>;

	clock-frequency = <44000000>;
	cs-gpios = <&gpioe 4 GPIO_ACTIVE_LOW>;

	ksz8794: dsa@0 {
		compatible = "microchip,ksz8794";
		reg = <0>;

		label = "dsa";
		spi-max-frequency = <44000000>;
		reset-gpios = <&gpiob 22 GPIO_ACTIVE_LOW>;

		spi-cpol;
		spi-cpha;
		dsa-master-port = <&enet>;
		dsa-slave-ports = <3>;

		lan3: lan_3 {
			label = "lan3";
		};

		lan2: lan_2 {
			label = "lan2";
		};

		lan1: lan_1 {
			label = "lan1";
		};
	};
};

&gpioa {
	status = "okay";
};

&gpiob {
	status = "okay";
};

&gpioe {
	status = "okay";
};
