/* SPDX-License-Identifier: Apache-2.0 */

/dts-v1/;

#include <nxp/MK64FN1M0VLL12.dtsi>

/ {
	model = "NXP Freedom MK64F board";
	compatible = "nxp,mk64f12", "nxp,k64f", "nxp,k6x";

	aliases {
		led0 = &green_led;
		led1 = &blue_led;
		led2 = &red_led;
		sw0 = &user_button_3;
		sw1 = &user_button_2;
	};

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,uart-pipe = &uart0;
		zephyr,can-primary = &flexcan0;
	};

	leds {
		compatible = "gpio-leds";
		red_led: led_0 {
			gpios = <&gpiob 22 GPIO_ACTIVE_LOW>;
			label = "User LD1";
		};
		green_led: led_1 {
			gpios = <&gpioe 26 GPIO_ACTIVE_LOW>;
			label = "User LD2";
		};
		blue_led: led_2 {
			gpios = <&gpiob 21 GPIO_ACTIVE_LOW>;
			label = "User LD3";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button_2: button_0 {
			label = "User SW2";
			gpios = <&gpioc 6 GPIO_ACTIVE_LOW>;
		};
		user_button_3: button_1 {
			label = "User SW3";
			gpios = <&gpioa 4 GPIO_ACTIVE_LOW>;
		};
	};

	arduino_header: connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <0 0 &gpiob 2 0>,	/* A0 */
			   <1 0 &gpiob 3 0>,	/* A1 */
			   <2 0 &gpiob 10 0>,	/* A2 */
			   <3 0 &gpiob 11 0>,	/* A3 */
			   <4 0 &gpioc 11 0>,	/* A4 */
			   <5 0 &gpioc 10 0>,	/* A5 */
			   <6 0 &gpioc 16 0>,	/* D0 */
			   <7 0 &gpioc 17 0>,	/* D1 */
			   <8 0 &gpiob 9 0>,	/* D2 */
			   <9 0 &gpioa 1 0>,	/* D3 */
			   <10 0 &gpiob 23 0>,	/* D4 */
			   <11 0 &gpioa 2 0>,	/* D5 */
			   <12 0 &gpioc 2 0>,	/* D6 */
			   <13 0 &gpioc 3 0>,	/* D7 */
			   /* NOTE: HW Rev D and below use: */
			   /* <14 0 &gpioa 0 0>, */
			   /* NOTE: HW Rev E and on use: */
			   <14 0 &gpioc 12 0>,	/* D8 */
			   <15 0 &gpioc 4 0>,	/* D9 */
			   <16 0 &gpiod 0 0>,	/* D10 */
			   <17 0 &gpiod 2 0>,	/* D11 */
			   <18 0 &gpiod 3 0>,	/* D12 */
			   <19 0 &gpiod 1 0>,	/* D13 */
			   <20 0 &gpioe 25 0>,	/* D14 */
			   <21 0 &gpioe 24 0>;	/* D15 */
	};
};

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

arduino_serial: &uart3 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&UART3_RX_PTC16 &UART3_TX_PTC17>;
};

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

&adc0 {
	status = "okay";
};

&adc1 {
	status = "okay";
};

&temp1 {
	status = "okay";
};

&dac0 {
	status = "okay";
	voltage-reference = <2>;
};

arduino_i2c: &i2c0 {
	status = "okay";
	pinctrl-0 = <&I2C0_SCL_PTE24 &I2C0_SDA_PTE25>;

	fxos8700@1d {
		compatible = "nxp,fxos8700";
		reg = <0x1d>;
		label = "FXOS8700";
		int1-gpios = <&gpioc 6 GPIO_ACTIVE_LOW>;
		int2-gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
	};
};

arduino_spi: &spi0 {
	status = "okay";
	pinctrl-0 = <&SPI0_PCS0_PTD0 &SPI0_SCK_PTD1 &SPI0_SOUT_PTD2 &SPI0_SIN_PTD3>;
};

&ftm0 {
	status = "okay";
	compatible = "nxp,kinetis-ftm-pwm";
	#pwm-cells = <3>;
	pinctrl-0 = <&FTM0_CH0_PTC1>;
};

&ftm3 {
	status = "okay";
	compatible = "nxp,kinetis-ftm-pwm";
	#pwm-cells = <3>;
	pinctrl-0 = <&FTM3_CH4_PTC8 &FTM3_CH5_PTC9>;
};

&uart0 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&UART0_RX_PTB16 &UART0_TX_PTB17>;
};

&uart2 {
	pinctrl-0 = <&UART2_RTS_b_PTD0 &UART2_CTS_b_PTD1 &UART2_RX_PTD2 &UART2_TX_PTD3>;
};

zephyr_udc0: &usbotg {
	compatible = "nxp,kinetis-usbd";
	status = "okay";
	num-bidir-endpoints = <8>;
};

&gpioa {
	status = "okay";
};

&gpiob {
	status = "okay";
};

&gpioc {
	status = "okay";
};

&gpiod {
	status = "okay";
};

&gpioe {
	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_RXER_PTA5 &RMII0_RXD1_PTA12
		     &RMII0_RXD0_PTA13 &RMII0_CRS_DV_PTA14
		     &RMII0_TXEN_PTA15 &RMII0_TXD0_PTA16
		     &RMII0_TXD1_PTA17 &RMII0_MDIO_PTB0
		     &RMII0_MDC_PTB1>;
	ptp {
		status = "okay";
		pinctrl-0 = <&ENET0_1588_TMR0_PTC16 &ENET0_1588_TMR1_PTC17
			     &ENET0_1588_TMR2_PTC18>;
	};
};

&RMII0_MDIO_PTB0 {
	bias-pull-up;
	drive-open-drain;
};

&flexcan0 {
	status = "okay";
	pinctrl-0 = <&CAN0_TX_PTB18 &CAN0_RX_PTB19>;
	bus-speed = <125000>;
};

&CAN0_RX_PTB19 {
	bias-pull-up;
};

&edma0 {
	status = "okay";
};

&pit0 {
	status = "okay";
};
