/* Copyright (c) 2018 SiFive, Inc. */
/* SPDX-License-Identifier: Apache-2.0 */

/dts-v1/;

#include <sifive/riscv32-fe310.dtsi>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include "hifive1-pinctrl.dtsi"

/ {
	model = "SiFive HiFive 1";
	compatible = "sifive,hifive1";

	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		pwm-led0 = &pwmled0;
		pwm-led1 = &pwmled1;
		pwm-led2 = &pwmled2;
		watchdog0 = &wdog0;
	};

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,sram = &dtim;
		zephyr,flash = &flash0;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio0 19 GPIO_ACTIVE_LOW>;
			label = "Green LED";
		};
		led1: led_1 {
			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
			label = "Blue LED";
		};
		led2: led_2 {
			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
			label = "Red LED";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		pwmled0: pwmled_0 {
			pwms = <&pwm1 1 PWM_MSEC(20)>;
			label = "Green LED";
		};
		pwmled1: pwmled_1 {
			pwms = <&pwm1 2 PWM_MSEC(20)>;
			label = "Blue LED";
		};
		pwmled2: pwmled_2 {
			pwms = <&pwm1 3 PWM_MSEC(20)>;
			label = "Red LED";
		};
	};

	arduino_header: connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = /* A0 not connected */
			   <1 0 &gpio0 9 0>,	/* A1, also CS2 */
			   <2 0 &gpio0 10 0>,	/* A2, also WF_INT */
			   <3 0 &gpio0 11 0>,	/* A3 */
			   <4 0 &gpio0 12 0>,	/* A4 */
			   <5 0 &gpio0 13 0>,	/* A5 */
			   <6 0 &gpio0 16 0>,	/* D0, also TX */
			   <7 0 &gpio0 17 0>,	/* D1, also RX */
			   <8 0 &gpio0 18 0>,	/* D2 */
			   <9 0 &gpio0 19 0>,	/* D3 */
			   <10 0 &gpio0 20 0>,	/* D4 */
			   <11 0 &gpio0 21 0>,	/* D5 */
			   <12 0 &gpio0 22 0>,	/* D6 */
			   <13 0 &gpio0 23 0>,	/* D7 */
			   <14 0 &gpio0 0 0>,	/* D8 */
			   <15 0 &gpio0 1 0>,	/* D9 */
			   <16 0 &gpio0 2 0>,	/* D10 */
			   <17 0 &gpio0 3 0>,	/* D11, also MOSI */
			   <18 0 &gpio0 4 0>,	/* D12, also MISO */
			   <19 0 &gpio0 5 0>,	/* D13, also SCK */
			   <20 0 &gpio0 12 0>,	/* D14, also SDA */
			   <21 0 &gpio0 13 0>;	/* D15, also SCL */
	};
};

&gpio0 {
	status = "okay";
};

&uart0 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart0_rx_default &uart0_tx_default>;
	pinctrl-names = "default";
};

/* disabled (used by Flash ROM by default) */
&spi0 {
	reg = <0x10014000 0x1000 0x20400000 0xc00000>;
	flash0: flash@0 {
		compatible = "issi,is25lp128", "jedec,spi-nor";
		status = "disabled";
		size = <134217728>;
		jedec-id = [96 60 18];
		reg = <0>;
		spi-max-frequency = <133000000>;
	};
};

&spi1 {
	status = "okay";
	pinctrl-0 = <&spi1_cs0_default &spi1_cs2_default &spi1_cs3_default
		     &spi1_mosi_default &spi1_miso_default &spi1_sck_default>;
	pinctrl-names = "default";
};

&spi2 {
	status = "okay";
};

&pwm0 {
	status = "okay";
};

&pwm1 {
	status = "okay";
	pinctrl-0 = <&pwm1_1_default &pwm1_2_default &pwm1_3_default>;
	pinctrl-names = "default";
};

&pwm2 {
	status = "okay";
	pinctrl-0 = <&pwm2_1_default &pwm2_2_default &pwm2_3_default>;
	pinctrl-names = "default";
};

arduino_i2c: &i2c0 {
	status = "okay";
	clock-frequency = <100000>;
	pinctrl-0 = <&i2c0_0_default &i2c0_1_default>;
	pinctrl-names = "default";
};
