/*
 * Copyright 2018 Foundries.io Ltd
 * SPDX-License-Identifier: Apache-2.0
 */

#include "rv32m1_vega-pinctrl.dtsi"

/ {
	aliases {
		led0 = &green_led;
		led1 = &blue_led;
		led2 = &red_led;
		led3 = &sts_led;
		pwm-led0 = &blue_pwm_led;
		pwm-led1 = &green_pwm_led;
		pwm-led2 = &red_pwm_led;
		blue-pwm-led = &blue_pwm_led;
		green-pwm-led = &green_pwm_led;
		red-pwm-led = &red_pwm_led;
		sw0 = &user_button_2;
		sw1 = &user_button_3;
		sw2 = &user_button_4;
		sw3 = &user_button_5;
		magn0 = &fxos8700;
	};

	leds {
		compatible = "gpio-leds";
		blue_led: led_0 {
			gpios = <&gpioa 22 GPIO_ACTIVE_HIGH>;
			label = "User LD1";
		};
		green_led: led_1 {
			gpios = <&gpioa 23 GPIO_ACTIVE_HIGH>;
			label = "User LD2";
		};
		red_led: led_2 {
			gpios = <&gpioa 24 GPIO_ACTIVE_HIGH>;
			label = "User LD3";
		};
		sts_led: led_3 {
			gpios = <&gpioe 0 GPIO_ACTIVE_HIGH>;
			label = "User LD4";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		blue_pwm_led: pwm_led_0 {
			pwms = <&tpm2 2 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
			label = "User PWM LD1";
		};
		green_pwm_led: pwm_led_1 {
			pwms = <&tpm2 1 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
			label = "User PWM LD2";
		};
		red_pwm_led: pwm_led_2 {
			pwms = <&tpm2 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
			label = "User PWM LD3";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button_2: button_0 {
			label = "User SW2";
			gpios = <&gpioa 0 GPIO_ACTIVE_LOW>;
		};
		user_button_3: button_1 {
			label = "User SW3";
			gpios = <&gpioe 8 GPIO_ACTIVE_LOW>;
		};
		user_button_4: button_2 {
			label = "User SW4";
			gpios = <&gpioe 9 GPIO_ACTIVE_LOW>;
		};
		user_button_5: button_3 {
			label = "User SW5";
			gpios = <&gpioe 12 GPIO_ACTIVE_LOW>;
		};
	};

	arduino_header: connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <0 0 &gpioc 11 0>,	/* A0 */
			   <1 0 &gpioc 12 0>,	/* A1 */
			   <2 0 &gpiob 9 0>,	/* A2 */
			   <3 0 &gpioe 4 0>,	/* A3 */
			   <4 0 &gpioe 10 0>,	/* A4 */
			   <5 0 &gpioe 11 0>,	/* A5 */
			   <6 0 &gpioa 25 0>,	/* D0 */
			   <7 0 &gpioa 26 0>,	/* D1 */
			   <8 0 &gpioa 27 0>,	/* D2 */
			   <9 0 &gpiob 13 0>,	/* D3 */
			   <10 0 &gpiob 14 0>,	/* D4 */
			   <11 0 &gpioa 30 0>,	/* D5 */
			   <12 0 &gpioa 31 0>,	/* D6 */
			   <13 0 &gpiob 1 0>,	/* D7 */
			   <14 0 &gpiob 2 0>,	/* D8 */
			   <15 0 &gpiob 3 0>,	/* D9 */
			   <16 0 &gpiob 6 0>,	/* D10 */
			   <17 0 &gpiob 5 0>,	/* D11 */
			   <18 0 &gpiob 7 0>,	/* D12 */
			   <19 0 &gpiob 4 0>,	/* D13 */
			   <20 0 &gpioc 9 0>,	/* D14 */
			   <21 0 &gpioc 10 0>;	/* D15 */
	};
};

arduino_serial: &lpuart1 {
	pinctrl-0 = <&lpuart1_default>;
	pinctrl-names = "default";
};

&lpuart0 {
	current-speed = <115200>;
	status = "okay";
	pinctrl-0 = <&lpuart0_default>;
	pinctrl-names = "default";
};

arduino_i2c: &lpi2c0 {
	status = "okay";
	pinctrl-0 = <&lpi2c0_default>;
	pinctrl-names = "default";
};

&lpi2c3 {
	status = "okay";
	pinctrl-0 = <&lpi2c3_default>;
	pinctrl-names = "default";

	fxos8700: fxos8700@1e {
		compatible = "nxp,fxos8700";
		reg = <0x1e>;
		label = "FXOS8700";
		reset-gpios = <&gpioe 27 GPIO_ACTIVE_HIGH>;
		int1-gpios = <&gpioe 1 GPIO_ACTIVE_LOW>;
		int2-gpios = <&gpioe 22 GPIO_ACTIVE_LOW>;
	};
};

arduino_spi: &lpspi0 {
	status = "okay";
	pinctrl-0 = <&lpspi0_default>;
	pinctrl-names = "default";
};

&lpspi1 {
	status = "okay";
	cs-gpios = <&gpiob 22 GPIO_ACTIVE_LOW>;
	pinctrl-0 = <&lpspi1_default>;
	pinctrl-names = "default";

	mx25r32: mx25r3235f@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <80000000>;
		label = "MX25R32";
		jedec-id = [c2 28 16];
		size = <33554432>;
	};
};

&tpm2 {
	status = "okay";
	pinctrl-0 = <&tpm2_default>;
	pinctrl-names = "default";
};
