/*
 * Copyright 2022, NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <nxp/nxp_rt5xx.dtsi>
#include <zephyr/dt-bindings/regulator/pca9420_i2c.h>

#include "mimxrt595_evk_cm33-pinctrl.dtsi"

/ {
	model = "NXP MIMXRT595-EVK board";
	compatible = "nxp,mimxrt595";

	aliases {
		sw0 = &user_button_1;
		sw1 = &user_button_2;
		led0 = &green_led;
		led1 = &blue_led;
		led2 = &red_led;
		usart-0 = &flexcomm0;
		watchdog0 = &wwdt0;
		magn0 = &fxos8700;
		accel0 = &fxos8700;
	};

	chosen {
		zephyr,flash-controller = &mx25um51345g;
		zephyr,flash = &mx25um51345g;
		zephyr,code-partition = &slot0_partition;
		zephyr,sram = &sram0;
		zephyr,console = &flexcomm0;
		zephyr,shell-uart = &flexcomm0;
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button_1: button_0 {
			label = "User SW1";
			gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
		};
		user_button_2: button_1 {
			label = "User SW2";
			gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
		};
	};

	leds {
		compatible = "gpio-leds";
		green_led: led_1 {
			gpios = <&gpio1 0 0>;
			label = "User LED_GREEN";
		};
		blue_led: led_2 {
			gpios = <&gpio3 17 0>;
			label = "User LED_BLUE";
		};
		red_led: led_3 {
			gpios = <&gpio0 14 0>;
			label = "User LED_RED";
		};
	};

	arduino_header: arduino-connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map =	<0 0 &gpio0 5 0>,	/* A0 */
				<1 0 &gpio0 6 0>,	/* A1 */
				<2 0 &gpio0 19 0>,	/* A2 */
				<3 0 &gpio0 13 0>,	/* A3 */
				<4 0 &gpio4 22 0>,	/* A4 */
				<5 0 &gpio4 21 0>,	/* A5 */
				<6 0 &gpio4 31 0>,	/* D0 */
				<7 0 &gpio4 30 0>,	/* D1 */
				<8 0 &gpio4 20 0>,	/* D2 */
				<9 0 &gpio4 23 0>,	/* D3 */
				<10 0 &gpio4 24 0>,	/* D4 */
				<11 0 &gpio4 25 0>,	/* D5 */
				<12 0 &gpio4 26 0>,	/* D6 */
				<13 0 &gpio4 27 0>,	/* D7 */
				<14 0 &gpio4 28 0>,	/* D8 */
				<15 0 &gpio4 29 0>,	/* D9 */
				<16 0 &gpio5 0 0>,	/* D10 */
				<17 0 &gpio5 1 0>,	/* D11 */
				<18 0 &gpio5 2 0>,	/* D12 */
				<19 0 &gpio5 3 0>,	/* D13 */
				<20 0 &gpio4 22 0>,	/* D14 */
				<21 0 &gpio4 21 0>;	/* D15 */
	};
};

/*
 * RT595 EVK board uses OS timer as the kernel timer
 * In case we need to switch to SYSTICK timer, then
 * replace &os_timer with &systick
 */
&os_timer {
	status = "okay";
};

&rtc {
	status = "okay";
};

&flexcomm0 {
	compatible = "nxp,lpc-usart";
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&pinmux_flexcomm0_usart>;
	pinctrl-names = "default";
};

arduino_i2c: &flexcomm4 {
	compatible = "nxp,lpc-i2c";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
	#address-cells = <1>;
	#size-cells = <0>;
	pinctrl-0 = <&pinmux_flexcomm4_i2c>;
	pinctrl-names = "default";

	fxos8700: fxos8700@1e {
		compatible = "nxp,fxos8700";
		reg = <0x1e>;
		int1-gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
		reset-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
	};
};

hs_spi1: &hs_lspi1 {
	compatible = "nxp,lpc-spi";
	pinctrl-0 = <&pinmux_flexcomm16_spi>;
	pinctrl-names = "default";
	dmas = <&dma0 28>, <&dma0 29>;
	dma-names = "rx", "tx";
	status = "okay";
};

arduino_serial: &flexcomm12 {
	compatible = "nxp,lpc-usart";
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&pinmux_flexcomm12_usart>;
	pinctrl-names = "default";
};

/* PCA9420 PMIC */
&pmic_i2c {
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
	#address-cells = <1>;
	#size-cells = <0>;
	pinctrl-0 = <&pinmux_pmic_i2c>;
	pinctrl-names = "default";

	pca9420: pca9420@61 {
		reg = <0x61>;
		compatible = "nxp,pca9420";
		/*
		 * This mode-reg setting will permit mode control by
		 * pins, a feature of the PCA9240. If mode control via
		 * I2C is desired, the following settings
		 * should be used:
		 * regulator-initial-mode = <PCA9420_MODECFG0_I2C>;
		 * regulator-allowed-modes = <PCA9420_MODECFG0_I2C>,
		 *			<PCA9420_MODECFG1_I2C>,
		 *			<PCA9420_MODECFG2_I2C>,
		 *			<PCA9420_MODECFG3_I2C>;
		 * modesel-reg = <PCA9420_TOP_CNTL3>;
		 * modesel-mask = <PCA9420_TOP_CNTL3_MODE_I2C_MASK>;
		 */
		regulator-allowed-modes = <PCA9420_MODECFG0_PIN>,
					<PCA9420_MODECFG1_PIN>,
					<PCA9420_MODECFG2_PIN>,
					<PCA9420_MODECFG3_PIN>;
		regulator-initial-mode = <PCA9420_MODECFG0_PIN>;
		modesel-reg = <PCA9420_MODECFG_0_0>;
		modesel-mask = <PCA9420_MODECFG_0_MODE_CTRL_SEL_MASK>;
		pca9420_sw1: sw1_buck {
			voltage-range = <PCA9420_SW1_VOLTAGE_RANGE>;
			current-levels = <PCA9420_CURRENT_LIMIT_LEVELS>;
			num-voltages = <42>;
			ilim-reg = <PCA9420_TOP_CNTL0>;
			ilim-mask = <PCA9420_TOP_CNTL0_VIN_ILIM_SEL_MASK>;
			num-current-levels = <7>;
			vsel-reg = <PCA9420_MODECFG_0_0>;
			vsel-mask = <PCA9420_MODECFG_0_SW1_OUT_MASK>;
			enable-reg = <PCA9420_MODECFG_0_2>;
			enable-mask = <PCA9420_MODECFG_2_SW1_EN_MASK>;
			enable-val = <PCA9420_MODECFG_2_SW1_EN_VAL>;
			min-uV = <500000>;
			max-uV = <1800000>;
			regulator-boot-on;
		};

		pca9420_sw2: sw2_buck {
			voltage-range = <PCA9420_SW2_VOLTAGE_RANGE>;
			num-voltages = <50>;
			current-levels = <PCA9420_CURRENT_LIMIT_LEVELS>;
			ilim-reg = <PCA9420_TOP_CNTL0>;
			ilim-mask = <PCA9420_TOP_CNTL0_VIN_ILIM_SEL_MASK>;
			num-current-levels = <7>;
			vsel-reg = <PCA9420_MODECFG_0_1>;
			vsel-mask = <PCA9420_MODECFG_1_SW2_OUT_MASK>;
			enable-reg = <PCA9420_MODECFG_0_2>;
			enable-mask = <PCA9420_MODECFG_2_SW2_EN_MASK>;
			enable-val = <PCA9420_MODECFG_2_SW2_EN_VAL>;
			min-uV = <1500000>;
			max-uV = <3300000>;
			regulator-boot-on;
		};

		pca9420_ldo1: ldo1_reg {
			voltage-range = <PCA9420_LDO1_VOLTAGE_RANGE>;
			num-voltages = <9>;
			current-levels = <PCA9420_CURRENT_LIMIT_LEVELS>;
			ilim-reg = <PCA9420_TOP_CNTL0>;
			ilim-mask = <PCA9420_TOP_CNTL0_VIN_ILIM_SEL_MASK>;
			num-current-levels = <7>;
			vsel-reg = <PCA9420_MODECFG_0_2>;
			vsel-mask = <PCA9420_MODECFG_2_LDO1_OUT_MASK>;
			enable-reg = <PCA9420_MODECFG_0_2>;
			enable-mask = <PCA9420_MODECFG_2_LDO1_EN_MASK>;
			enable-val = <PCA9420_MODECFG_2_LDO1_EN_VAL>;
			min-uV = <1700000>;
			max-uV = <1900000>;
			regulator-boot-on;
		};

		pca9420_ldo2: ldo2_reg {
			voltage-range = <PCA9420_LDO2_VOLTAGE_RANGE>;
			num-voltages = <51>;
			current-levels = <PCA9420_CURRENT_LIMIT_LEVELS>;
			ilim-reg = <PCA9420_TOP_CNTL0>;
			ilim-mask = <PCA9420_TOP_CNTL0_VIN_ILIM_SEL_MASK>;
			num-current-levels = <7>;
			vsel-reg = <PCA9420_MODECFG_0_3>;
			vsel-mask = <PCA9420_MODECFG_3_LDO2_OUT_MASK>;
			enable-reg = <PCA9420_MODECFG_0_2>;
			enable-mask = <PCA9420_MODECFG_2_LDO2_EN_MASK>;
			enable-val = <PCA9420_MODECFG_2_LDO2_EN_VAL>;
			min-uV = <1500000>;
			max-uV = <3300000>;
			regulator-boot-on;
		};


	};
};


&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&gpio2 {
	status = "okay";
};

&gpio3 {
	status = "okay";
};

&gpio4 {
	status = "okay";
};

&gpio5 {
	status = "okay";
};

&gpio6 {
	status = "okay";
};

&user_button_1 {
	status = "okay";
};

&user_button_2 {
	status = "okay";
};

&green_led {
	status = "okay";
};

&blue_led {
	status = "okay";
};

&red_led {
	status = "okay";
};

&dma0 {
	/*
	 * The total number of dma channels available is defined by
	 * FSL_FEATURE_DMA_NUMBER_OF_CHANNELS in the SoC features file.
	 * Since memory from the heap pool is allocated based on the number
	 * of DMA channels, set this property to as many channels is needed
	 * for the platform. Adjust HEAP_MEM_POOL_SIZE in case you need more
	 * memory.
	 */
	dma-channels = <37>;
	status = "okay";
};

zephyr_udc0: &usbhs {
	status = "okay";
};

&ctimer0 {
	status = "okay";
};

&ctimer1 {
	status = "okay";
};

&ctimer2 {
	status = "okay";
};

&ctimer3 {
	status = "okay";
};

&ctimer4 {
	status = "okay";
};

&wwdt0 {
	status = "okay";
};

&flexspi {
	status = "okay";
	mx25um51345g: mx25um51345g@0 {
		compatible = "nxp,imx-flexspi-mx25um51345g";
		/* MX25UM51245G is 64MB, 512MBit flash part */
		size = <DT_SIZE_M(64 * 8)>;
		reg = <0>;
		spi-max-frequency = <200000000>;
		status = "okay";
		jedec-id = [c2 81 3a];
		erase-block-size = <4096>;
		/*
		 * Note- ECC will be disabled with a
		 * write block size of 1 byte. To enable ECC, ensure
		 * writes are in multiples of 16 bytes. This reduced
		 * block size is required for MCUBoot support.
		 */
		write-block-size = <1>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			boot_partition: partition@0 {
				label = "mcuboot";
				reg = <0x00000000 DT_SIZE_K(64)>;
			};
			slot0_partition: partition@10000 {
				label = "image-0";
				reg = <0x00010000 DT_SIZE_M(24)>;
			};
			slot1_partition: partition@1810000 {
				label = "image-1";
				reg = <0x01810000 DT_SIZE_M(24)>;
			};
			scratch_partition: partition@3010000 {
				label = "image-scratch";
				reg = <0x03010000 DT_SIZE_K(8128)>;
			};
			storage_partition: partition@3f00000 {
				label = "storage";
				reg = <0x03f00000 DT_SIZE_M(1)>;
			};
		};
	};
};
