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

&flash0 {

	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;
		/* Please enable mcuboot's swap move, no scratch */

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0x00008000>;
			read-only;
		};
		slot0_partition: partition@8000 {
			label = "image-0";
			reg = <0x00008000 0x00028000>;
		};
		slot1_partition: partition@30000 {
			label = "image-1";
			reg = <0x00030000 0x00018000>;
		};
		slot2_partition: partition@48000 {
			label = "image-2";
			reg = <0x00048000 0x00028000>;
		};
		slot3_partition: partition@70000 {
			label = "image-3";
			reg = <0x00070000 0x00018000>;
		};
		/*
		 * The flash starting at 0x88000 and ending at
		 * 0x949FF is reserved for the application.
		 */
		storage_partition: partition@88000 {
			label = "storage";
			reg = <0x00088000 0x0000ca00>;
		};
	};
};

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