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

/dts-v1/;

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

/ {
	model = "Hexiwear K64 board";
	compatible = "nxp,hexiwear", "nxp,k64f", "nxp,k6x";

	aliases {
		led0 = &green_led;
		led1 = &blue_led;
		led2 = &red_led;
		pwm-led0 = &green_pwm_led;
		red-pwm-led = &red_pwm_led;
		green-pwm-led = &green_pwm_led;
		blue-pwm-led = &blue_pwm_led;
	};

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,bt-uart = &uart4;
	};

	leds {
		compatible = "gpio-leds";
		red_led: led_0 {
			gpios = <&gpioc 8 GPIO_ACTIVE_LOW>;
			label = "User LD1";
		};
		green_led: led_1 {
			gpios = <&gpiod 0 GPIO_ACTIVE_LOW>;
			label = "User LD2";
		};
		blue_led: led_2 {
			gpios = <&gpioc 9 GPIO_ACTIVE_LOW>;
			label = "User LD3";
		};
	};

	pwmleds {
		compatible = "pwm-leds";

		red_pwm_led: red_pwm_led {
			pwms = <&ftm3 4 15625000 PWM_POLARITY_INVERTED>;
		};
		green_pwm_led: green_pwm_led {
			pwms = <&ftm3 0 15625000 PWM_POLARITY_INVERTED>;
		};
		blue_pwm_led: blue_pwm_led {
			pwms = <&ftm3 5 15625000 PWM_POLARITY_INVERTED>;
		};
	};

	en_bat_sens: enable-battery-sense {
		compatible = "regulator-fixed-sync", "regulator-fixed";
		label = "en_bat_sens";
		regulator-name = "en_bat_sens";
		enable-gpios = <&gpioc 14 GPIO_ACTIVE_LOW>;
		regulator-boot-on;
	};

	en_ldo: enable-ldo {
		compatible = "regulator-fixed-sync", "regulator-fixed";
		label = "en_ldo";
		regulator-name = "en_ldo";
		enable-gpios = <&gpioa 29 GPIO_ACTIVE_HIGH>;
		regulator-boot-on;
	};

	en_3v3b: enable-3v3b {
		compatible = "regulator-fixed-sync", "regulator-fixed";
		label = "en_3v3b";
		regulator-name = "en_3v3b";
		enable-gpios = <&gpiob 12 GPIO_ACTIVE_LOW>;
		regulator-boot-on;
	};
};

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

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

&adc0 {
	status = "okay";
};

&adc1 {
	status = "okay";
};

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

&i2c0 {
	status = "okay";
	pinctrl-0 = <&i2c0_default>;
	pinctrl-names = "default";

	max30101@57 {
		status = "disabled";
		compatible = "maxim,max30101";
		reg = <0x57>;
		label = "MAX30101";
	};
};

&i2c1 {
	status = "okay";
	pinctrl-0 = <&i2c1_default>;
	pinctrl-names = "default";

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

	fxas21002@20 {
		compatible = "nxp,fxas21002";
		reg = <0x20>;
		label = "FXAS21002";
		int1-gpios = <&gpiod 1 GPIO_ACTIVE_LOW>;
		int2-gpios = <&gpioc 18 GPIO_ACTIVE_LOW>;
	};
};

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

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

&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.
		 */

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