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

/dts-v1/;

#include <riscv32-fe310.dtsi>
#include "hifive1-pinctrl.dtsi"

/ {
	model = "SiFive HiFive 1";
	compatible = "sifive,hifive1";
	aliases {
		pwm-led0 = &led0;
		pwm-led1 = &led1;
		pwm-led2 = &led2;
	};

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

	leds {
		compatible = "pwm-leds";
		led0: led_0 {
			pwms = <&pwm1 1 0>;
			label = "Green LED";
		};
		led1: led_1 {
			pwms = <&pwm1 2 0>;
			label = "Blue LED";
		};
		led2: led_2 {
			pwms = <&pwm1 3 0>;
			label = "Red LED";
		};
	};
};

&gpio0 {
	status = "okay";
};

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

&spi0 {
	status = "okay";

	reg = <0x10014000 0x1000 0x20400000 0xc00000>;
	flash0: flash@0 {
		compatible = "issi,is25lp128", "jedec,spi-nor";
		size = <134217728>;
		label = "FLASH0";
		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";
};
