// SPDX-License-Identifier: GPL-2.0
/*
 * Device Tree file for HP t5325 Thin Client"
 *
 * Copyright (C) 2014
 *
 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 * Andrew Lunn <andrew@lunn.ch>
 *
*/

/dts-v1/;

#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"

/ {
	model = "HP t5325 Thin Client";
	compatible = "hp,t5325", "marvell,kirkwood-88f6281", "marvell,kirkwood";

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

	chosen {
		bootargs = "console=ttyS0,115200n8";
		stdout-path = &uart0;
	};

	ocp@f1000000 {
		pinctrl: pin-controller@10000 {
			pinctrl-0 = <&pmx_i2s &pmx_sysrst>;
			pinctrl-names = "default";

			pmx_button_power: pmx-button_power {
				marvell,pins = "mpp45";
				marvell,function = "gpio";
			};

			pmx_power_off: pmx-power-off {
				marvell,pins = "mpp48";
				marvell,function = "gpio";
			};

			pmx_led: pmx-led {
				marvell,pins = "mpp21";
				marvell,function = "gpio";
			};

			pmx_usb_sata_power_enable: pmx-usb-sata-power-enable {
				marvell,pins = "mpp44";
				marvell,function = "gpio";
			};

			pmx_spi: pmx-spi {
				marvell,pins = "mpp1", "mpp2", "mpp3", "mpp7";
				marvell,function = "spi";
			};

			pmx_sysrst: pmx-sysrst {
				marvell,pins = "mpp6";
				marvell,function = "sysrst";
			};

			pmx_i2s: pmx-i2s {
				marvell,pins = "mpp39", "mpp40", "mpp41", "mpp42",
					       "mpp43";
				marvell,function = "audio";
			};
		};

		spi@10600 {
			status = "okay";

			flash@0 {
				#address-cells = <1>;
				#size-cells = <1>;
				compatible = "st,m25p80", "jedec,spi-nor";
				spi-max-frequency = <86000000>;
				reg = <0>;
				mode = <0>;

				partition@0 {
					reg = <0x0 0x80000>;
					label = "u-boot";
				};

				partition@1 {
					reg = <0x80000 0x40000>;
					label = "SSD firmware";
				};

				partition@2 {
					reg = <0xc0000 0x10000>;
					label = "u-boot env";
				};

				partition@3 {
					reg = <0xd0000 0x10000>;
					label = "permanent u-boot env";
				};

				partition@4 {
					reg = <0xd0000 0x10000>;
					label = "permanent u-boot env";
				};
			};
		};

		i2c@11000 {
			status = "okay";

			alc5621: alc5621@1a {
				compatible = "realtek,alc5621";
				reg = <0x1a>;
				#sound-dai-cells = <0>;
				add-ctrl = <0x3700>;
				jack-det-ctrl = <0x4810>;
			};
		};

		serial@12000 {
			status = "okay";
		};

		sata@80000 {
			status = "okay";
			nr-ports = <2>;
		};

		audio: audio-controller@a0000 {
			status = "okay";
		};
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-0 = <&pmx_usb_sata_power_enable>;
		pinctrl-names = "default";

		usb_power: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			regulator-name = "USB-SATA Power";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
			gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-0 = <&pmx_button_power>;
		pinctrl-names = "default";

		power {
			label = "Power Button";
			linux,code = <KEY_POWER>;
			gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio_poweroff {
		compatible = "gpio-poweroff";
		pinctrl-0 = <&pmx_power_off>;
		pinctrl-names = "default";
		gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,routing =
			"Headphone Jack", "HPL",
			"Headphone Jack", "HPR",
			"Speaker", "SPKOUT",
			"Speaker", "SPKOUTN",
			"MIC1", "Mic Jack",
			"MIC2", "Mic Jack";
		simple-audio-card,widgets =
			"Headphone", "Headphone Jack",
			"Speaker", "Speaker",
			"Microphone", "Mic Jack";

		simple-audio-card,mclk-fs = <256>;

		simple-audio-card,cpu {
			sound-dai = <&audio>;
		};

		simple-audio-card,codec {
			sound-dai = <&alc5621>;
		};
	};
};

&mdio {
	status = "okay";

	ethphy0: ethernet-phy@8 {
		device_type = "ethernet-phy";
		reg = <8>;
	};
};

&eth0 {
	status = "okay";
	ethernet0-port@0 {
		phy-handle = <&ethphy0>;
	};
};

&pciec {
	status = "okay";
};

&pcie0 {
	status = "okay";
};