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

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

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

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

&can0 {
	status = "okay";
	bus-speed = <125000>;
	bus-speed-data = <1000000>;
};

&hs_lspi {
	status = "okay";
};

arduino_i2c: &flexcomm4 {};

arduino_spi: &hs_lspi {};

mikrobus_i2c: &flexcomm4 {};

mikrobus_spi: &hs_lspi {};
