/*
 * Copyright (c) 2019, NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include "lpcxpresso55s69-pinctrl.dtsi"

/ {
	aliases{
		led0 = &red_led;
		led1 = &green_led;
		led2 = &blue_led;
		spi-8 = &hs_lspi;
		usart-0 = &flexcomm0;
	};

	leds {
		compatible = "gpio-leds";
		green_led: led_1 {
			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
			label = "User LD2";
			status = "disabled";
		};
		blue_led: led_2 {
			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
			label = "User LD3";
			status = "disabled";
		};
		red_led: led_3 {
			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
			label = "User LD4";
			status = "disabled";
		};
	};

	mikrobus_header: mikrobus-connector {
		compatible = "mikro-bus";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map =	<0 0 &gpio0 16 0>,	/* AN  */
				/* Not a GPIO*/		/* RST */
				<2 0 &gpio1 1 0>,	/* CS   */
				<3 0 &gpio1 2 0>,	/* SCK  */
				<4 0 &gpio1 3 0>,	/* MISO */
				<5 0 &gpio0 26 0>,	/* MOSI */
							/* +3.3V */
							/* GND */
				<6 0 &gpio1 5 0>,	/* PWM  */
				<7 0 &gpio1 18 0>,	/* INT  */
				<8 0 &gpio1 24 0>,	/* RX   */
				<9 0 &gpio0 27 0>,	/* TX   */
				<10 0 &gpio1 20 0>,	/* SCL  */
				<11 0 &gpio1 21 0>;	/* SDA  */
							/* +5V */
							/* GND */
	};

	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 16 0>,	/* A0 */
				<1 0 &gpio0 23 0>,	/* A1 */
				<2 0 &gpio0 0 0>,	/* A2 */
				<3 0 &gpio1 31 0>,	/* A3 */
				<4 0 &gpio0 13 0>,	/* A4 */
				<5 0 &gpio0 14 0>,	/* A5 */
				<6 0 &gpio1 24 0>,	/* D0 */
				<7 0 &gpio0 27 0>,	/* D1 */
				<8 0 &gpio0 15 0>,	/* D2 */
				<9 0 &gpio1 6 0>,	/* D3 */
				<10 0 &gpio1 7 0>,	/* D4 */
				<11 0 &gpio1 4 0>,	/* D5 */
				<12 0 &gpio1 10 0>,	/* D6 */
				<13 0 &gpio1 9 0>,	/* D7 */
				<14 0 &gpio1 8 0>,	/* D8 */
				<15 0 &gpio1 5 0>,	/* D9 */
				<16 0 &gpio1 1 0>,	/* D10 */
				<17 0 &gpio0 26 0>,	/* D11 */
				<18 0 &gpio1 3 0>,	/* D12 */
				<19 0 &gpio1 2 0>,	/* D13 */
				<20 0 &gpio1 21 0>,	/* D14 */
				<21 0 &gpio1 20 0>;	/* D15 */
	};

	reserved-memory {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		/* RAM split used by TFM */
		secure_ram: partition@20000000 {
			label = "secure-memory";
			reg = <0x20000000 DT_SIZE_K(136)>;
		};

		non_secure_ram: partition@20022000 {
			label = "non-secure-memory";
			reg = <0x20022000 DT_SIZE_K(136)>;
		};
	};
};

&flexcomm0 {
	compatible = "nxp,lpc-usart";
	current-speed = <115200>;
	dmas = <&dma0 4>, <&dma0 5>;
	dma-names = "rx", "tx";
};

&flash0 {

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 DT_SIZE_K(32)>;
			read-only;
		};
		slot0_partition: partition@8000 {
			label = "image-0";
			reg = <0x00008000 DT_SIZE_K(160)>;
		};
		slot0_ns_partition: partition@30000 {
			label = "image-0-nonsecure";
			reg = <0x00030000 DT_SIZE_K(96)>;
		};
		slot1_partition: partition@48000 {
			label = "image-1";
			reg = <0x00048000 DT_SIZE_K(160)>;
		};
		slot1_ns_partition: partition@70000 {
			label = "image-1-nonsecure";
			reg = <0x00070000 DT_SIZE_K(96)>;
		};
		/*
		 * The flash starting at 0x88000 and ending at
		 * 0x949FF is reserved for the application.
		 */
		storage_partition: partition@88000 {
			label = "storage";
			reg = <0x00088000 DT_SIZE_K(50)>;
		};
	};
};

arduino_i2c: &flexcomm4 {
	compatible = "nxp,lpc-i2c";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	#address-cells = <1>;
	#size-cells = <0>;

	mma8652fc: mma8652fc@1d {
		compatible = "nxp,fxos8700","nxp,mma8652fc";
		reg = <0x1d>;
		int1-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
	};
};

arduino_serial: &flexcomm2 {
	compatible = "nxp,lpc-usart";
	current-speed = <115200>;
};

arduino_spi: &hs_lspi {
};

arduino_gpio: &gpio1 {
};

mikrobus_serial: &flexcomm2 {
};

mikrobus_spi: &hs_lspi {
};

&flexcomm0 {
	pinctrl-0 = <&pinmux_flexcomm0_usart>;
	pinctrl-names = "default";
};

&flexcomm2 {
	pinctrl-0 = <&pinmux_flexcomm2_usart>;
	pinctrl-names = "default";
};

&flexcomm4 {
	pinctrl-0 = <&pinmux_flexcomm4_i2c>;
	pinctrl-names = "default";
};

&flexcomm6 {
	pinctrl-0 = <&pinmux_flexcomm6_i2s>;
	pinctrl-names = "default";
};

&flexcomm7 {
	pinctrl-0 = <&pinmux_flexcomm7_i2s>;
	pinctrl-names = "default";
};

&hs_lspi {
	pinctrl-0 = <&pinmux_hs_lspi_default>;
	pinctrl-names = "default";
};

&sc_timer {
	pinctrl-0 = <&pinmux_sctimer_default>;
	pinctrl-names = "default";
};
