// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2019 Jagan Teki <jagan@amarulasolutions.com>
 */
#define USB_CLASS_HUB			9

#include "rockchip-u-boot.dtsi"

/ {
	aliases {
		mmc0 = &sdhci;
		mmc1 = &sdmmc;
		pci0 = &pcie0;
		spi1 = &spi1;
	};

	cic: syscon@ff620000 {
		bootph-all;
		compatible = "rockchip,rk3399-cic", "syscon";
		reg = <0x0 0xff620000 0x0 0x100>;
	};

	dfi: dfi@ff630000 {
		bootph-all;
		reg = <0x00 0xff630000 0x00 0x4000>;
		compatible = "rockchip,rk3399-dfi";
		rockchip,pmu = <&pmugrf>;
		clocks = <&cru PCLK_DDR_MON>;
		clock-names = "pclk_ddr_mon";
	};

	rng: rng@ff8b8000 {
		compatible = "rockchip,cryptov1-rng";
		reg = <0x0 0xff8b8000 0x0 0x1000>;
		status = "okay";
	};

	dmc: dmc {
		bootph-all;
		compatible = "rockchip,rk3399-dmc";
		devfreq-events = <&dfi>;
		interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH 0>;
		clocks = <&cru SCLK_DDRCLK>;
		clock-names = "dmc_clk";
		reg = <0x0 0xffa80000 0x0 0x0800
		       0x0 0xffa80800 0x0 0x1800
		       0x0 0xffa82000 0x0 0x2000
		       0x0 0xffa84000 0x0 0x1000
		       0x0 0xffa88000 0x0 0x0800
		       0x0 0xffa88800 0x0 0x1800
		       0x0 0xffa8a000 0x0 0x2000
		       0x0 0xffa8c000 0x0 0x1000>;
	};

	pmusgrf: syscon@ff330000 {
		bootph-all;
		compatible = "rockchip,rk3399-pmusgrf", "syscon";
		reg = <0x0 0xff330000 0x0 0xe3d4>;
	};

};

#if defined(CONFIG_ROCKCHIP_SPI_IMAGE) && defined(CONFIG_HAS_ROM)
&binman {
	multiple-images;
	rom {
		filename = "u-boot.rom";
		size = <0x400000>;
		pad-byte = <0xff>;

		mkimage {
			args = "-n rk3399 -T rkspi";
			u-boot-spl {
			};
		};
		u-boot-img {
			offset = <0x40000>;
		};
		u-boot {
			offset = <0x300000>;
		};
		fdtmap {
		};
	};
};
#endif /* CONFIG_ROCKCHIP_SPI_IMAGE && CONFIG_HAS_ROM */

&cru {
	bootph-all;
};

&emmc_phy {
	bootph-all;
};

&grf {
	bootph-all;
};

&pinctrl {
	bootph-all;
};

&pmu {
	bootph-all;
};

&pmugrf {
	bootph-all;
};

&pmu {
	bootph-all;
};

&pmucru {
	bootph-all;
};

&sdhci {
	max-frequency = <200000000>;
	bootph-all;
	u-boot,spl-fifo-mode;
};

&sdmmc {
	bootph-all;

	/* mmc to sram can't do dma, prevent aborts transferring TF-A parts */
	u-boot,spl-fifo-mode;
};

&spi1 {
	bootph-all;
};

&uart0 {
	bootph-all;
};

&uart2 {
	bootph-all;
};

&vopb {
	bootph-all;
};

&vopl {
	bootph-all;
};
