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

/dts-v1/;

#include <nxp/nxp_k66.dtsi>

#include "ip_k66f-pinctrl.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 = <&enet_default>;
	pinctrl-names = "default";

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

&spi1 {
	status = "okay";
	pinctrl-0 = <&spi1_default>;
	pinctrl-names = "default";

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

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

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

		lan2: lan_2 {
		};

		lan1: lan_1 {
		};
	};
};

&gpioa {
	status = "okay";
};

&gpiob {
	status = "okay";
};

&gpioe {
	status = "okay";
};
