// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2023-2024, Qualcomm Innovation Center, Inc. All rights reserved.
 */

#include "sm8550.dtsi"

/delete-node/ &reserved_memory;

/ {
	reserved_memory: reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;


		/* These are 3 types of reserved memory regions here:
		 * 1. Firmware related regions which aren't shared with kernel.
		 *     The device tree source in kernel doesn't need to have node to
		 * indicate the firmware related reserved information. Bootloader
		 * conveys the information by updating devicetree at runtime.
		 *     This will be described as: UEFI saves the physical address of
		 * the UEFI System Table to dts file's chosen node. Kernel read this
		 * table and add reserved memory regions to efi config table. Current
		 * reserved memory region may have reserved region which was not yet
		 * used, release note of the firmware have such kind of information.
		 * 2. Firmware related memory regions which are shared with Kernel
		 *     The device tree source in the kernel needs to include nodes
		 * that indicate fimware-related shared information. A label name
		 * is suggested because this type of shared information needs to
		 * be referenced by specific drivers for handling purposes.
		 *     Unlike previous platforms, QCS8550 boots using EFI and describes
		 * most reserved regions in the ESRT memory map. As a result, reserved
		 * memory regions which aren't relevant to the kernel(like the hypervisor
		 ( region) don't need to be described in DT.
		 * 3. Remoteproc regions.
		 *     Remoteproc regions will be reserved and then assigned to
		 * subsystem firmware later.
		 * Here is a reserved memory map for this platform:
		 *  0x80000000 +-------------------+
		 *             |                   |
		 *             | Firmware Related  |
		 *             |                   |
		 *  0x8a800000 +-------------------+
		 *             |                   |
		 *             | Remoteproc Region |
		 *             |                   |
		 *  0xa7000000 +-------------------+
		 *             |                   |
		 *             | Kernel Available  |
		 *             |                   |
		 *  0xd4d00000 +-------------------+
		 *             |                   |
		 *             | Firmware Related  |
		 *             |                   |
		 * 0x100000000 +-------------------+
		 */

		aop_image_mem: aop-image-region@81c00000 {
			reg = <0x0 0x81c00000 0x0 0x60000>;
			no-map;
		};

		aop_cmd_db_mem: aop-cmd-db-region@81c60000 {
			compatible = "qcom,cmd-db";
			reg = <0x0 0x81c60000 0x0 0x20000>;
			no-map;
		};

		aop_config_mem: aop-config-region@81c80000 {
			no-map;
			reg = <0x0 0x81c80000 0x0 0x20000>;
		};

		smem_mem: smem-region@81d00000 {
			compatible = "qcom,smem";
			reg = <0x0 0x81d00000 0x0 0x200000>;
			hwlocks = <&tcsr_mutex 3>;
			no-map;
		};

		adsp_mhi_mem: adsp-mhi-region@81f00000 {
			reg = <0x0 0x81f00000 0x0 0x20000>;
			no-map;
		};

		mpss_mem: mpss-region@8a800000 {
			reg = <0x0 0x8a800000 0x0 0x10800000>;
			no-map;
		};

		q6_mpss_dtb_mem: q6-mpss-dtb-region@9b000000 {
			reg = <0x0 0x9b000000 0x0 0x80000>;
			no-map;
		};

		ipa_fw_mem: ipa-fw-region@9b080000 {
			reg = <0x0 0x9b080000 0x0 0x10000>;
			no-map;
		};

		ipa_gsi_mem: ipa-gsi-region@9b090000 {
			reg = <0x0 0x9b090000 0x0 0xa000>;
			no-map;
		};

		gpu_micro_code_mem: gpu-micro-code-region@9b09a000 {
			reg = <0x0 0x9b09a000 0x0 0x2000>;
			no-map;
		};

		spss_region_mem: spss-region@9b100000 {
			reg = <0x0 0x9b100000 0x0 0x180000>;
			no-map;
		};

		spu_secure_shared_memory_mem: spu-secure-shared-memory-region@9b280000 {
			reg = <0x0 0x9b280000 0x0 0x80000>;
			no-map;
		};

		camera_mem: camera-region@9b300000 {
			reg = <0x0 0x9b300000 0x0 0x800000>;
			no-map;
		};

		video_mem: video-region@9bb00000 {
			reg = <0x0 0x9bb00000 0x0 0x700000>;
			no-map;
		};

		cvp_mem: cvp-region@9c200000 {
			reg = <0x0 0x9c200000 0x0 0x700000>;
			no-map;
		};

		cdsp_mem: cdsp-region@9c900000 {
			reg = <0x0 0x9c900000 0x0 0x2000000>;
			no-map;
		};

		q6_cdsp_dtb_mem: q6-cdsp-dtb-region@9e900000 {
			reg = <0x0 0x9e900000 0x0 0x80000>;
			no-map;
		};

		q6_adsp_dtb_mem: q6-adsp-dtb-region@9e980000 {
			reg = <0x0 0x9e980000 0x0 0x80000>;
			no-map;
		};

		adspslpi_mem: adspslpi-region@9ea00000 {
			reg = <0x0 0x9ea00000 0x0 0x4080000>;
			no-map;
		};

		mpss_dsm_mem: mpss_dsm_region@d4d00000 {
			reg = <0x0 0xd4d00000 0x0 0x3300000>;
			no-map;
		};
	};
};
