/*
 * Copyright (c) 2018 Prevas A/S
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <nxp/nxp_k2x.dtsi>
#include <zephyr/dt-bindings/pwm/pwm.h>
#include "frdm_k22f-pinctrl.dtsi"

/ {
	model = "NXP Freedom MK22F board";
	compatible = "nxp,mk22f12", "nxp,k22f", "nxp,k2x";

	aliases {
		led0 = &green_led;
		led1 = &blue_led;
		led2 = &red_led;
		sw0 = &user_button_3;
		sw1 = &user_button_2;
		pwm-led0 = &green_pwm_led;
		green-pwm-led = &green_pwm_led;
		blue-pwm-led = &blue_pwm_led;
		red-pwm-led = &red_pwm_led;
		magn0 = &fxos8700;
	};

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

	leds {
		compatible = "gpio-leds";
		red_led: led_0 {
			gpios = <&gpioa 1 0>;
			label = "User LD1";
		};
		green_led: led_1 {
			gpios = <&gpioa 2 0>;
			label = "User LD2";
		};
		blue_led: led_2 {
			gpios = <&gpiod 5 0>;
			label = "User LD3";
		};
	};

	pwmleds {
		compatible = "pwm-leds";

		red_pwm_led: red_pwm_led {
			label = "red_led";
			pwms = <&ftm0 6 15625000 PWM_POLARITY_INVERTED>;
		};
		green_pwm_led: green_pwm_led {
			label = "green_led";
			pwms = <&ftm0 7 15625000 PWM_POLARITY_INVERTED>;
		};
		blue_pwm_led: blue_pwm_led {
			label = "blue_led";
			pwms = <&ftm0 5 15625000 PWM_POLARITY_INVERTED>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button_2: button_0 {
			label = "User SW2";
			gpios = <&gpioc 1 GPIO_ACTIVE_LOW>;
		};
		user_button_3: button_1 {
			label = "User SW3";
			gpios = <&gpiob 17 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 0 0>,	/* A0 */
			   <1 0 &gpiob 1 0>,	/* A1 */
			   <2 0 &gpioc 1 0>,	/* A2 */
			   <3 0 &gpioc 2 0>,	/* A3 */
			   <4 0 &gpiob 3 0>,	/* A4 */
			   <5 0 &gpiob 2 0>,	/* A5 */
			   <6 0 &gpiod 2 0>,	/* D0 */
			   <7 0 &gpiod 3 0>,	/* D1 */
			   <8 0 &gpiob 16 0>,	/* D2 */
			   <9 0 &gpioa 2 0>,	/* D3 */
			   <10 0 &gpioa 4 0>,	/* D4 */
			   <11 0 &gpiob 18 0>,	/* D5 */
			   <12 0 &gpioc 3 0>,	/* D6 */
			   <13 0 &gpioc 6 0>,	/* D7 */
			   <14 0 &gpiob 19 0>,	/* D8 */
			   <15 0 &gpioa 1 0>,	/* D9 */
			   <16 0 &gpiod 4 0>,	/* D10 */
			   <17 0 &gpiod 6 0>,	/* D11 */
			   <18 0 &gpiod 7 0>,	/* D12 */
			   <19 0 &gpiod 5 0>,	/* D13 */
			   <20 0 &gpioe 0 0>,	/* D14 */
			   <21 0 &gpioe 1 0>;	/* D15 */
	};
};

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

&adc0 {
	status = "okay";
};

&dac0 {
	status = "okay";
	voltage-reference = <2>;
};
arduino_i2c: &i2c0 {
	status = "okay";
	pinctrl-0 = <&i2c0_default>;
	pinctrl-names = "default";

	fxos8700: fxos8700@1c {
		compatible = "nxp,fxos8700";
		reg = <0x1c>;
		label = "FXOS8700";
		int1-gpios = <&gpiod 0 GPIO_ACTIVE_LOW>;
		int2-gpios = <&gpiod 1 GPIO_ACTIVE_LOW>;
	};
};


arduino_spi: &spi0 {
	status = "okay";
	pinctrl-0 = <&spi0_default>;
	pinctrl-names = "default";
};

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

&uart1 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart1_default>;
	pinctrl-names = "default";
};

&uart2 {
	pinctrl-0 = <&uart2_default>;
	pinctrl-names = "default";
};

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;
		};
		slot0_partition: partition@10000 {
			label = "image-0";
			reg = <0x00010000 0x00020000>;
		};
		slot1_partition: partition@30000 {
			label = "image-1";
			reg = <0x00030000 0x00020000>;
		};
		scratch_partition: partition@50000 {
			label = "image-scratch";
			reg = <0x00050000 0x00010000>;
		};

		/*
		 * The flash starting at 0x00060000 and ending at
		 * 0x0007ffff (sectors 16-31) is reserved for use
		 * by the application.
		 */
		storage_partition: partition@60000 {
			label = "storage";
			reg = <0x00060000 0x00020000>;
		};

	};
};
