/*
 * Copyright (c) 2020 Henrik Brix Andersen <henrik@brixandersen.dk>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include "lpcxpresso55s16-pinctrl.dtsi"

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

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

	leds {
		compatible = "gpio-leds";
		red_led: led_0 {
			gpios = <&gpio1 4 0>;
			label = "Red LED";
		};
		green_led: led_1 {
			gpios = <&gpio1 7 0>;
			label = "Green LED";
		};
		blue_led: led_2 {
			gpios = <&gpio1 6 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 = <&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 &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 */
				/* R63 DNP, A3 not connected  */
				/* <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 */
	};
};

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

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

	fxos8700@1e {
		compatible = "nxp,fxos8700";
		reg = <0x1e>;
		label = "FXOS8700";
		int1-gpios = <&gpio1 26 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
	};
};

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

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

&hs_lspi {
	status = "okay";
	pinctrl-0 = <&pinmux_hs_lspi>;
	pinctrl-names = "default";
};

arduino_i2c: &flexcomm4 {};

arduino_spi: &hs_lspi {};

mikrobus_i2c: &flexcomm4 {};

mikrobus_spi: &hs_lspi {};
