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