// SPDX-License-Identifier: GPL-2.0
#include "bcm2835-rpi.dtsi"

#include <dt-bindings/reset/raspberrypi,firmware-reset.h>

/ {
	/* Will be filled by the bootloader */
	memory@0 {
		device_type = "memory";
		reg = <0 0 0>;
	};

	aliases {
		emmc2bus = &emmc2bus;
		ethernet0 = &genet;
		pcie0 = &pcie0;
		blconfig = &blconfig;
	};
};

&firmware {
	firmware_clocks: clocks {
		compatible = "raspberrypi,firmware-clocks";
		#clock-cells = <1>;
	};

	expgpio: gpio {
		compatible = "raspberrypi,firmware-gpio";
		gpio-controller;
		#gpio-cells = <2>;
		status = "okay";
	};

	reset: reset {
		compatible = "raspberrypi,firmware-reset";
		#reset-cells = <1>;
	};
};

&hdmi0 {
	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
	clock-names = "hdmi", "bvb", "audio", "cec";
	wifi-2.4ghz-coexistence;
};

&hdmi1 {
	clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
	clock-names = "hdmi", "bvb", "audio", "cec";
	wifi-2.4ghz-coexistence;
};

&hvs {
	clocks = <&firmware_clocks 4>;
};

&rmem {
	/*
	 * RPi4's co-processor will copy the board's bootloader configuration
	 * into memory for the OS to consume. It'll also update this node with
	 * its placement information.
	 */
	blconfig: nvram@0 {
		compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0x0 0x0 0x0>;
		no-map;
		status = "disabled";
	};
};

&v3d {
	clocks = <&firmware_clocks 5>;
};

&vchiq {
	interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
};