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

/dts-v1/;

#include <nxp/nxp_lpc55S36_ns.dtsi>
#include "lpcxpresso55s36-pinctrl.dtsi"

/ {
	model = "NXP LPCXpresso55S36 board";
	compatible = "nxp,lpc55xxx", "nxp,lpc";

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &sramx;
		zephyr,console = &flexcomm0;
		zephyr,shell-uart = &flexcomm0;
		zephyr,canbus = &can0;
		zephyr,flash-controller = &iap;
	};

	aliases{
		led0 = &red_led;
		led1 = &green_led;
		led2 = &blue_led;
		sw0 = &btn_wk;
		sw1 = &btn_usr;
		usart-0 = &flexcomm0;
		pwm-0 = &flexpwm1_pwm0;
	};

	leds {
		compatible = "gpio-leds";
		red_led: led_0 {
			gpios = <&gpio1 28 0>;
			label = "Red LED";
		};
		green_led: led_1 {
			gpios = <&gpio0 22 0>;
			label = "Green LED";
		};
		blue_led: led_2 {
			gpios = <&gpio1 11 0>;
			label = "Blue LED";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		btn_wk: button_0 {
			label = "Wakeup button";
			gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
		};
		btn_usr: button_1 {
			label = "USR button";
			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
		};
	};

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

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

&can0 {
	bus-speed = <125000>;
	bus-speed-data = <1000000>;
	pinctrl-0 = <&pinmux_mcan_can0>;
	pinctrl-names = "default";
	status = "ok";
};

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;
		slot0_partition: partition@0 {
			label = "executable";
				reg = <0x00000000 DT_SIZE_K(182)>;
			};

		storage_partition: partition@88000 {
			label = "storage";
			reg = <0x0002d800 DT_SIZE_K(64)>;
		};
	};
};

&flexpwm1_pwm0 {
	status = "okay";
	pinctrl-0 = <&pinmux_flexpwm1_pwm0>;
	pinctrl-names = "default";
};
