/*
 * 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 */>;
	pinctrl-names = "default";

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

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

	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";
};
