// SPDX-License-Identifier: GPL-2.0
/dts-v1/;

#include "dove.dtsi"

/ {
	model = "SolidRun CuBox";
	compatible = "solidrun,cubox", "marvell,dove";

	memory {
		device_type = "memory";
		reg = <0x00000000 0x40000000>;
	};

	chosen {
		bootargs = "console=ttyS0,115200n8 earlyprintk";
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-0 = <&pmx_gpio_18>;
		pinctrl-names = "default";

		led-power {
			label = "Power";
			gpios = <&gpio0 18 1>;
			default-state = "keep";
		};
	};

	usb_power: regulator-1 {
		compatible = "regulator-fixed";
		regulator-name = "USB Power";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		regulator-always-on;
		regulator-boot-on;
		gpio = <&gpio0 1 0>;
		pinctrl-0 = <&pmx_gpio_1>;
		pinctrl-names = "default";
	};

	clocks {
		/* 25MHz reference crystal */
		ref25: oscillator {
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <25000000>;
		};
	};

	ir_recv: ir-receiver {
		compatible = "gpio-ir-receiver";
		gpios = <&gpio0 19 1>;
		pinctrl-0 = <&pmx_gpio_19>;
		pinctrl-names = "default";
	};

	gpu-subsystem {
		status = "okay";
	};
};

&uart0 { status = "okay"; };
&sata0 { status = "okay"; };
&mdio { status = "okay"; };
&eth {
	status = "okay";
	ethernet-port@0 {
		phy-handle = <&ethphy>;
	};
};

&mdio {
	ethphy: ethernet-phy@1 {
		compatible = "marvell,88e1310";
		reg = <1>;
	};
};

&gpu {
	status = "okay";
};

&i2c0 {
	status = "okay";
	clock-frequency = <100000>;

	si5351: clock-generator@60 {
		compatible = "silabs,si5351a-msop";
		reg = <0x60>;
		#address-cells = <1>;
		#size-cells = <0>;
		#clock-cells = <1>;

		/* connect xtal input to 25MHz reference */
		clocks = <&ref25>;
		clock-names = "xtal";

		/* connect xtal input as source of pll0 and pll1 */
		silabs,pll-source = <0 0>, <1 0>;

		clkout0 {
			reg = <0>;
			silabs,drive-strength = <8>;
			silabs,multisynth-source = <0>;
			silabs,clock-source = <0>;
			silabs,pll-master;
		};

		clkout2 {
			reg = <2>;
			silabs,drive-strength = <8>;
			silabs,multisynth-source = <1>;
			silabs,clock-source = <0>;
			silabs,pll-master;
		};
	};
};

&sdio0 {
	status = "okay";
};

&spi0 {
	status = "okay";

	/* spi0.0: 4M Flash Winbond W25Q32BV */
	flash@0 {
		compatible = "st,w25q32";
		spi-max-frequency = <20000000>;
		reg = <0>;
	};
};

&audio1 {
	status = "okay";
	clocks = <&gate_clk 13>, <&si5351 2>;
	clock-names = "internal", "extclk";
	pinctrl-0 = <&pmx_audio1_i2s1_spdifo &pmx_audio1_extclk>;
	pinctrl-names = "default";
};