162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0 OR MIT)
262306a36Sopenharmony_ci/* Copyright (c) 2020 SiFive, Inc */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#include "fu740-c000.dtsi"
562306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h>
662306a36Sopenharmony_ci#include <dt-bindings/interrupt-controller/irq.h>
762306a36Sopenharmony_ci#include <dt-bindings/leds/common.h>
862306a36Sopenharmony_ci#include <dt-bindings/pwm/pwm.h>
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci/* Clock frequency (in Hz) of the PCB crystal for rtcclk */
1162306a36Sopenharmony_ci#define RTCCLK_FREQ		1000000
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci/ {
1462306a36Sopenharmony_ci	model = "SiFive HiFive Unmatched A00";
1562306a36Sopenharmony_ci	compatible = "sifive,hifive-unmatched-a00", "sifive,fu740-c000",
1662306a36Sopenharmony_ci		     "sifive,fu740";
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci	chosen {
1962306a36Sopenharmony_ci		stdout-path = "serial0";
2062306a36Sopenharmony_ci	};
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	cpus {
2362306a36Sopenharmony_ci		timebase-frequency = <RTCCLK_FREQ>;
2462306a36Sopenharmony_ci	};
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	memory@80000000 {
2762306a36Sopenharmony_ci		device_type = "memory";
2862306a36Sopenharmony_ci		reg = <0x0 0x80000000 0x4 0x00000000>;
2962306a36Sopenharmony_ci	};
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	hfclk: hfclk {
3262306a36Sopenharmony_ci		#clock-cells = <0>;
3362306a36Sopenharmony_ci		compatible = "fixed-clock";
3462306a36Sopenharmony_ci		clock-frequency = <26000000>;
3562306a36Sopenharmony_ci		clock-output-names = "hfclk";
3662306a36Sopenharmony_ci	};
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci	rtcclk: rtcclk {
3962306a36Sopenharmony_ci		#clock-cells = <0>;
4062306a36Sopenharmony_ci		compatible = "fixed-clock";
4162306a36Sopenharmony_ci		clock-frequency = <RTCCLK_FREQ>;
4262306a36Sopenharmony_ci		clock-output-names = "rtcclk";
4362306a36Sopenharmony_ci	};
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci	gpio-poweroff {
4662306a36Sopenharmony_ci		compatible = "gpio-poweroff";
4762306a36Sopenharmony_ci		gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
4862306a36Sopenharmony_ci	};
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci	led-controller-1 {
5162306a36Sopenharmony_ci		compatible = "pwm-leds";
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci		led-d12 {
5462306a36Sopenharmony_ci			pwms = <&pwm0 0 7812500 PWM_POLARITY_INVERTED>;
5562306a36Sopenharmony_ci			active-low;
5662306a36Sopenharmony_ci			color = <LED_COLOR_ID_GREEN>;
5762306a36Sopenharmony_ci			max-brightness = <255>;
5862306a36Sopenharmony_ci			label = "d12";
5962306a36Sopenharmony_ci		};
6062306a36Sopenharmony_ci	};
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci	led-controller-2 {
6362306a36Sopenharmony_ci		compatible = "pwm-leds-multicolor";
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci		multi-led {
6662306a36Sopenharmony_ci			color = <LED_COLOR_ID_RGB>;
6762306a36Sopenharmony_ci			max-brightness = <255>;
6862306a36Sopenharmony_ci			label = "d2";
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci			led-red {
7162306a36Sopenharmony_ci				pwms = <&pwm0 2 7812500 PWM_POLARITY_INVERTED>;
7262306a36Sopenharmony_ci				active-low;
7362306a36Sopenharmony_ci				color = <LED_COLOR_ID_RED>;
7462306a36Sopenharmony_ci			};
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci			led-green {
7762306a36Sopenharmony_ci				pwms = <&pwm0 1 7812500 PWM_POLARITY_INVERTED>;
7862306a36Sopenharmony_ci				active-low;
7962306a36Sopenharmony_ci				color = <LED_COLOR_ID_GREEN>;
8062306a36Sopenharmony_ci			};
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci			led-blue {
8362306a36Sopenharmony_ci				pwms = <&pwm0 3 7812500 PWM_POLARITY_INVERTED>;
8462306a36Sopenharmony_ci				active-low;
8562306a36Sopenharmony_ci				color = <LED_COLOR_ID_BLUE>;
8662306a36Sopenharmony_ci			};
8762306a36Sopenharmony_ci		};
8862306a36Sopenharmony_ci	};
8962306a36Sopenharmony_ci};
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci&uart0 {
9262306a36Sopenharmony_ci	status = "okay";
9362306a36Sopenharmony_ci};
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci&uart1 {
9662306a36Sopenharmony_ci	status = "okay";
9762306a36Sopenharmony_ci};
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci&i2c0 {
10062306a36Sopenharmony_ci	status = "okay";
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci	temperature-sensor@4c {
10362306a36Sopenharmony_ci		compatible = "ti,tmp451";
10462306a36Sopenharmony_ci		reg = <0x4c>;
10562306a36Sopenharmony_ci		vcc-supply = <&vdd_bpro>;
10662306a36Sopenharmony_ci		interrupt-parent = <&gpio>;
10762306a36Sopenharmony_ci		interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
10862306a36Sopenharmony_ci	};
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci	eeprom@54 {
11162306a36Sopenharmony_ci		compatible = "microchip,24c02", "atmel,24c02";
11262306a36Sopenharmony_ci		reg = <0x54>;
11362306a36Sopenharmony_ci		vcc-supply = <&vdd_bpro>;
11462306a36Sopenharmony_ci		label = "board-id";
11562306a36Sopenharmony_ci		pagesize = <16>;
11662306a36Sopenharmony_ci		read-only;
11762306a36Sopenharmony_ci		size = <256>;
11862306a36Sopenharmony_ci	};
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci	pmic@58 {
12162306a36Sopenharmony_ci		compatible = "dlg,da9063";
12262306a36Sopenharmony_ci		reg = <0x58>;
12362306a36Sopenharmony_ci		interrupt-parent = <&gpio>;
12462306a36Sopenharmony_ci		interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
12562306a36Sopenharmony_ci		interrupt-controller;
12662306a36Sopenharmony_ci		#interrupt-cells = <2>;
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci		onkey {
12962306a36Sopenharmony_ci			compatible = "dlg,da9063-onkey";
13062306a36Sopenharmony_ci		};
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci		rtc {
13362306a36Sopenharmony_ci			compatible = "dlg,da9063-rtc";
13462306a36Sopenharmony_ci		};
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci		watchdog {
13762306a36Sopenharmony_ci			compatible = "dlg,da9063-watchdog";
13862306a36Sopenharmony_ci		};
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci		regulators {
14162306a36Sopenharmony_ci			vdd_bcore: bcores-merged {
14262306a36Sopenharmony_ci				regulator-min-microvolt = <1050000>;
14362306a36Sopenharmony_ci				regulator-max-microvolt = <1050000>;
14462306a36Sopenharmony_ci				regulator-min-microamp = <4800000>;
14562306a36Sopenharmony_ci				regulator-max-microamp = <4800000>;
14662306a36Sopenharmony_ci				regulator-always-on;
14762306a36Sopenharmony_ci			};
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci			vdd_bpro: bpro {
15062306a36Sopenharmony_ci				regulator-min-microvolt = <1800000>;
15162306a36Sopenharmony_ci				regulator-max-microvolt = <1800000>;
15262306a36Sopenharmony_ci				regulator-min-microamp = <2400000>;
15362306a36Sopenharmony_ci				regulator-max-microamp = <2400000>;
15462306a36Sopenharmony_ci				regulator-always-on;
15562306a36Sopenharmony_ci			};
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci			vdd_bperi: bperi {
15862306a36Sopenharmony_ci				regulator-min-microvolt = <1060000>;
15962306a36Sopenharmony_ci				regulator-max-microvolt = <1060000>;
16062306a36Sopenharmony_ci				regulator-min-microamp = <1500000>;
16162306a36Sopenharmony_ci				regulator-max-microamp = <1500000>;
16262306a36Sopenharmony_ci				regulator-always-on;
16362306a36Sopenharmony_ci			};
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci			vdd_bmem_bio: bmem-bio-merged {
16662306a36Sopenharmony_ci				regulator-min-microvolt = <1200000>;
16762306a36Sopenharmony_ci				regulator-max-microvolt = <1200000>;
16862306a36Sopenharmony_ci				regulator-min-microamp = <3000000>;
16962306a36Sopenharmony_ci				regulator-max-microamp = <3000000>;
17062306a36Sopenharmony_ci				regulator-always-on;
17162306a36Sopenharmony_ci			};
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci			vdd_ldo1: ldo1 {
17462306a36Sopenharmony_ci				regulator-min-microvolt = <1800000>;
17562306a36Sopenharmony_ci				regulator-max-microvolt = <1800000>;
17662306a36Sopenharmony_ci				regulator-always-on;
17762306a36Sopenharmony_ci			};
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci			vdd_ldo2: ldo2 {
18062306a36Sopenharmony_ci				regulator-min-microvolt = <1800000>;
18162306a36Sopenharmony_ci				regulator-max-microvolt = <1800000>;
18262306a36Sopenharmony_ci				regulator-always-on;
18362306a36Sopenharmony_ci			};
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci			vdd_ldo3: ldo3 {
18662306a36Sopenharmony_ci				regulator-min-microvolt = <3300000>;
18762306a36Sopenharmony_ci				regulator-max-microvolt = <3300000>;
18862306a36Sopenharmony_ci				regulator-always-on;
18962306a36Sopenharmony_ci			};
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci			vdd_ldo4: ldo4 {
19262306a36Sopenharmony_ci				regulator-min-microvolt = <2500000>;
19362306a36Sopenharmony_ci				regulator-max-microvolt = <2500000>;
19462306a36Sopenharmony_ci				regulator-always-on;
19562306a36Sopenharmony_ci			};
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci			vdd_ldo5: ldo5 {
19862306a36Sopenharmony_ci				regulator-min-microvolt = <3300000>;
19962306a36Sopenharmony_ci				regulator-max-microvolt = <3300000>;
20062306a36Sopenharmony_ci				regulator-always-on;
20162306a36Sopenharmony_ci			};
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci			vdd_ldo6: ldo6 {
20462306a36Sopenharmony_ci				regulator-min-microvolt = <1800000>;
20562306a36Sopenharmony_ci				regulator-max-microvolt = <1800000>;
20662306a36Sopenharmony_ci				regulator-always-on;
20762306a36Sopenharmony_ci			};
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci			vdd_ldo7: ldo7 {
21062306a36Sopenharmony_ci				regulator-min-microvolt = <3300000>;
21162306a36Sopenharmony_ci				regulator-max-microvolt = <3300000>;
21262306a36Sopenharmony_ci				regulator-always-on;
21362306a36Sopenharmony_ci			};
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci			vdd_ldo8: ldo8 {
21662306a36Sopenharmony_ci				regulator-min-microvolt = <3300000>;
21762306a36Sopenharmony_ci				regulator-max-microvolt = <3300000>;
21862306a36Sopenharmony_ci				regulator-always-on;
21962306a36Sopenharmony_ci			};
22062306a36Sopenharmony_ci
22162306a36Sopenharmony_ci			vdd_ld09: ldo9 {
22262306a36Sopenharmony_ci				regulator-min-microvolt = <1050000>;
22362306a36Sopenharmony_ci				regulator-max-microvolt = <1050000>;
22462306a36Sopenharmony_ci				regulator-always-on;
22562306a36Sopenharmony_ci			};
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci			vdd_ldo10: ldo10 {
22862306a36Sopenharmony_ci				regulator-min-microvolt = <1000000>;
22962306a36Sopenharmony_ci				regulator-max-microvolt = <1000000>;
23062306a36Sopenharmony_ci				regulator-always-on;
23162306a36Sopenharmony_ci			};
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci			vdd_ldo11: ldo11 {
23462306a36Sopenharmony_ci				regulator-min-microvolt = <2500000>;
23562306a36Sopenharmony_ci				regulator-max-microvolt = <2500000>;
23662306a36Sopenharmony_ci				regulator-always-on;
23762306a36Sopenharmony_ci			};
23862306a36Sopenharmony_ci		};
23962306a36Sopenharmony_ci	};
24062306a36Sopenharmony_ci};
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ci&qspi0 {
24362306a36Sopenharmony_ci	status = "okay";
24462306a36Sopenharmony_ci	flash@0 {
24562306a36Sopenharmony_ci		compatible = "jedec,spi-nor";
24662306a36Sopenharmony_ci		reg = <0>;
24762306a36Sopenharmony_ci		spi-max-frequency = <50000000>;
24862306a36Sopenharmony_ci		m25p,fast-read;
24962306a36Sopenharmony_ci		spi-tx-bus-width = <4>;
25062306a36Sopenharmony_ci		spi-rx-bus-width = <4>;
25162306a36Sopenharmony_ci	};
25262306a36Sopenharmony_ci};
25362306a36Sopenharmony_ci
25462306a36Sopenharmony_ci&spi0 {
25562306a36Sopenharmony_ci	status = "okay";
25662306a36Sopenharmony_ci	mmc@0 {
25762306a36Sopenharmony_ci		compatible = "mmc-spi-slot";
25862306a36Sopenharmony_ci		reg = <0>;
25962306a36Sopenharmony_ci		spi-max-frequency = <20000000>;
26062306a36Sopenharmony_ci		voltage-ranges = <3300 3300>;
26162306a36Sopenharmony_ci		disable-wp;
26262306a36Sopenharmony_ci		gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
26362306a36Sopenharmony_ci	};
26462306a36Sopenharmony_ci};
26562306a36Sopenharmony_ci
26662306a36Sopenharmony_ci&eth0 {
26762306a36Sopenharmony_ci	status = "okay";
26862306a36Sopenharmony_ci	phy-mode = "gmii";
26962306a36Sopenharmony_ci	phy-handle = <&phy0>;
27062306a36Sopenharmony_ci	phy0: ethernet-phy@0 {
27162306a36Sopenharmony_ci		reg = <0>;
27262306a36Sopenharmony_ci	};
27362306a36Sopenharmony_ci};
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ci&pwm0 {
27662306a36Sopenharmony_ci	status = "okay";
27762306a36Sopenharmony_ci};
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ci&pwm1 {
28062306a36Sopenharmony_ci	status = "okay";
28162306a36Sopenharmony_ci};
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ci&gpio {
28462306a36Sopenharmony_ci	status = "okay";
28562306a36Sopenharmony_ci	gpio-line-names = "J29.1", "PMICNTB", "PMICSHDN", "J8.1", "J8.3",
28662306a36Sopenharmony_ci		"PCIe_PWREN", "THERM", "UBRDG_RSTN", "PCIe_PERSTN",
28762306a36Sopenharmony_ci		"ULPI_RSTN", "J8.2", "UHUB_RSTN", "GEMGXL_RST", "J8.4",
28862306a36Sopenharmony_ci		"EN_VDD_SD", "SD_CD";
28962306a36Sopenharmony_ci};
290