[PATCH 1/6] dt-bindings: soc: qcom: Add QPaCE binding

From: Georgi Djakov

Date: Wed Sep 30 2026 - 11:24:56 EST


Add device-tree binding documentation for the Qualcomm Page Compression
Engine (QPaCE), including the resources needed to describe it in SoC device
trees.

QPaCE accelerates page compression and decompression for use with the zram
block device.

Signed-off-by: Georgi Djakov <georgi.djakov@xxxxxxxxxxxxxxxx>
---
.../bindings/soc/qcom/qcom,hawi-qpace.yaml | 94 +++++++++++++++++++
1 file changed, 94 insertions(+)
create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,hawi-qpace.yaml

diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,hawi-qpace.yaml b/Documentation/devicetree/bindings/soc/qcom/qcom,hawi-qpace.yaml
new file mode 100644
index 000000000000..b7ae50f34f16
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,hawi-qpace.yaml
@@ -0,0 +1,94 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/qcom/qcom,hawi-qpace.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Page Compression Engine (QPaCE)
+
+maintainers:
+ - Georgi Djakov <georgi.djakov@xxxxxxxxxxxxxxxx>
+
+description:
+ QPaCE is a page-oriented hardware compression engine found on Qualcomm
+ SoCs. It is composed of a number of compression, decompression and copy
+ engines and exposes both a low-latency urgent path for synchronous
+ single-page operations and a high-throughput ring-based path for batched
+ asynchronous requests.
+
+properties:
+ compatible:
+ items:
+ - enum:
+ - qcom,hawi-qpace
+
+ reg:
+ maxItems: 1
+ description:
+ Single contiguous register window covering all QPaCE sub-regions
+ from the GEN registers base through the EE registers.
+
+ iommus:
+ items:
+ - description: IOMMU mapping for compression engine read DMA
+ - description: IOMMU mapping for compression engine write DMA
+ - description: IOMMU mapping for decompression engine read DMA
+ - description: IOMMU mapping for decompression engine write DMA
+
+ dma-coherent: true
+
+ interconnects:
+ maxItems: 1
+
+ interconnect-names:
+ items:
+ - const: qpace-mem
+
+ interrupts:
+ items:
+ - description: Ring completion and bus error interrupt
+ - description: Urgent command completion interrupt
+
+ interrupt-names:
+ items:
+ - const: ring-and-bus-err
+ - const: urgent
+
+required:
+ - compatible
+ - reg
+ - iommus
+ - interconnects
+ - interconnect-names
+ - interrupts
+ - interrupt-names
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/interconnect/qcom,icc.h>
+ #include <dt-bindings/interconnect/qcom,hawi-rpmh.h>
+
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ compression@31400000 {
+ compatible = "qcom,hawi-qpace";
+ reg = <0x0 0x31400000 0x0 0x80000>;
+ iommus = <&apps_smmu 0x1c20 0x13>,
+ <&apps_smmu 0x1c24 0x13>,
+ <&apps_smmu 0x1c28 0x13>,
+ <&apps_smmu 0x1c2c 0x13>;
+ dma-coherent;
+ interconnects = <&gem_noc MASTER_QPACE QCOM_ICC_TAG_ALWAYS
+ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+ interconnect-names = "qpace-mem";
+ interrupts = <GIC_ESPI 72 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_ESPI 71 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "ring-and-bus-err",
+ "urgent";
+ };
+ };