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

/dts-v1/;

#include <nxp/nxp_k2x.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;
	};

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

	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 */
	};
};

&adc0 {
	status = "okay";
};

&i2c0 {
	status = "okay";

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

arduino_spi: &spi0 {
	status = "okay";
};

&pwm3 {
	status = "okay";
};

&uart1 {
	status = "okay";
	current-speed = <115200>;
};

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

&flash0 {
	/*
	 * For more information, see:
	 * http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html
	 */
	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>;
		};

	};
};
