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

/dts-v1/;

#include <nxp/MKW41Z512VHT4.dtsi>

/ {
	model = "NXP Freedom KW41Z board";
	compatible = "nxp,kw41z", "nxp,mkw41z4";

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

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,console = &lpuart0;
		zephyr,shell-uart = &lpuart0;
	};

	leds {
		compatible = "gpio-leds";
		red_led: led_0 {
			gpios = <&gpioc 1 GPIO_ACTIVE_LOW>;
			label = "User LD1";
		};
		green_led: led_1 {
			gpios = <&gpioa 19 GPIO_ACTIVE_LOW>;
			label = "User LD2";
		};
		blue_led: led_2 {
			gpios = <&gpioa 18 GPIO_ACTIVE_LOW>;
			label = "User LD3";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		blue_pwm_led: pwm_led_0 {
			pwms = <&tpm2 0 0 0>;
			label = "User PWM LD1";
		};
		green_pwm_led: pwm_led_1 {
			pwms = <&tpm2 1 0 0>;
			label = "User PWM LD2";
		};
		red_pwm_led: pwm_led_2 {
			pwms = <&tpm0 2 0 0>;
			label = "User PWM LD3";
		};
	};

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

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

&adc0 {
	status = "okay";
	pinctrl-0 = <&ADC0_SE3_PTB2>;
};

&i2c1 {
	status = "okay";
	pinctrl-0 = <&I2C1_SCL_PTC2 &I2C1_SDA_PTC3>;

	fxos8700@1f {
		compatible = "nxp,fxos8700";
		reg = <0x1f>;
		label = "FXOS8700";
		int1-gpios = <&gpioc 1 GPIO_ACTIVE_LOW>;
	};
};

&I2C1_SCL_PTC2 {
	bias-pull-up;
};

&I2C1_SDA_PTC3 {
	bias-pull-up;
};

&lpuart0 {
	status = "okay";
	pinctrl-0 = <&UART0_RX_PTC6 &UART0_TX_PTC7>;
	current-speed = <115200>;
};

&gpioa {
	status = "okay";
};

&gpioc {
	status = "okay";
};

&spi0 {
	status = "okay";
	pinctrl-0 = <&SPI0_SCK_PTC16 &SPI0_SOUT_PTC17
		     &SPI0_SIN_PTC18 &SPI0_PCS0_PTC19>;
};

&tpm0 {
	status = "okay";
	pinctrl-0 = <&TPM0_CH2_PTC1>;
};

&tpm1 {
	status = "disabled";
};

&tpm2 {
	status = "okay";
	pinctrl-0 = <&TPM2_CH1_PTA19 &TPM2_CH0_PTA18>;
};
