linux/arch/arm64/boot/dts/qcom/qcs8550.dtsi

// 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;
		};
	};
};