/*
 * Copyright (c) 2022 metraTec
 * Copyright 2022 NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include "lpcxpresso55s06-pinctrl.dtsi"

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

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

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

	gpio_keys {
		compatible = "gpio-keys";
		btn_wk: button_0 {
			label = "Wakeup button";
			gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
		};
		btn_usr: button_1 {
			label = "User button";
			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
		};
		btn_isp: button_2 {
			label = "ISP button";
			gpios = <&gpio0 5 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 &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 &gpio0 28 0>,	/* INT  */
				<8 0 &gpio1 10 0>,	/* RX   */
				<9 0 &gpio1 11 0>,	/* TX   */
				<10 0 &gpio0 24 0>,	/* SCL  */
				<11 0 &gpio0 25 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 9 0>,	/* A2 */
				<3 0 &gpio0 0 0>,	/* A3 */
				<4 0 &gpio0 13 0>,	/* A4 */
				<5 0 &gpio0 14 0>,	/* A5 */
				<6 0 &gpio1 10 0>,	/* D0 */
				<7 0 &gpio1 11 0>,	/* D1 */
				<8 0 &gpio0 15 0>,	/* D2 */
				<9 0 &gpio0 23 0>,	/* D3 */
				<10 0 &gpio0 22 0>,	/* D4 */
				<11 0 &gpio0 19 0>,	/* D5 */
				<12 0 &gpio0 18 0>,	/* D6 */
				<13 0 &gpio0 2 0>,	/* D7 */
				<14 0 &gpio0 10 0>,	/* D8 */
				<15 0 &gpio0 25 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 */
	};
};

&flash0 {
	/*
	 * LPC flash controller requires minimum 512 byte
	 * write to flash, so MCUBoot is not supported. Just
	 * provide storage and code partition.
	 */
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;
		slot0_partition: partition@0 {
			label = "image-0";
			reg = <0x00000000 DT_SIZE_K(196)>;
		};
		storage_partition: partition@30000 {
			label = "storage";
			reg = <0x00030000 DT_SIZE_K(64)>;
		};
	};
};

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

&can0 {
	status = "okay";
	bus-speed = <125000>;
	bus-speed-data = <1000000>;
	pinctrl-0 = <&pinmux_can0>;
	pinctrl-names = "default";

	can-transceiver {
		max-bitrate = <5000000>;
	};
};
