162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/arm/tegra/nvidia,tegra194-cbb.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: NVIDIA Tegra194 CBB 1.0
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Sumit Gupta <sumitg@nvidia.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |+
1362306a36Sopenharmony_ci  The Control Backbone (CBB) is comprised of the physical path from an
1462306a36Sopenharmony_ci  initiator to a target's register configuration space. CBB 1.0 has
1562306a36Sopenharmony_ci  multiple hierarchical sub-NOCs (Network-on-Chip) and connects various
1662306a36Sopenharmony_ci  initiators and targets using different bridges like AXIP2P, AXI2APB.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci  This driver handles errors due to illegal register accesses reported
1962306a36Sopenharmony_ci  by the NOCs inside the CBB. NOCs reporting errors are cluster NOCs
2062306a36Sopenharmony_ci  "AON-NOC, SCE-NOC, RCE-NOC, BPMP-NOC, CV-NOC" and "CBB Central NOC"
2162306a36Sopenharmony_ci  which is the main NOC.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  By default, the access issuing initiator is informed about the error
2462306a36Sopenharmony_ci  using SError or Data Abort exception unless the ERD (Error Response
2562306a36Sopenharmony_ci  Disable) is enabled/set for that initiator. If the ERD is enabled, then
2662306a36Sopenharmony_ci  SError or Data Abort is masked and the error is reported with interrupt.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  - For CCPLEX (CPU Complex) initiator, the driver sets ERD bit. So, the
2962306a36Sopenharmony_ci    errors due to illegal accesses from CCPLEX are reported by interrupts.
3062306a36Sopenharmony_ci    If ERD is not set, then error is reported by SError.
3162306a36Sopenharmony_ci  - For other initiators, the ERD is disabled. So, the access issuing
3262306a36Sopenharmony_ci    initiator is informed about the illegal access by Data Abort exception.
3362306a36Sopenharmony_ci    In addition, an interrupt is also generated to CCPLEX. These initiators
3462306a36Sopenharmony_ci    include all engines using Cortex-R5 (which is ARMv7 CPU cluster) and
3562306a36Sopenharmony_ci    engines like TSEC (Security co-processor), NVDEC (NVIDIA Video Decoder
3662306a36Sopenharmony_ci    engine) etc which can initiate transactions.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  The driver prints relevant debug information like Error Code, Error
3962306a36Sopenharmony_ci  Description, Master, Address, AXI ID, Cache, Protection, Security Group
4062306a36Sopenharmony_ci  etc on receiving error notification.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciproperties:
4362306a36Sopenharmony_ci  $nodename:
4462306a36Sopenharmony_ci    pattern: "^[a-z]+-noc@[0-9a-f]+$"
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  compatible:
4762306a36Sopenharmony_ci    enum:
4862306a36Sopenharmony_ci      - nvidia,tegra194-cbb-noc
4962306a36Sopenharmony_ci      - nvidia,tegra194-aon-noc
5062306a36Sopenharmony_ci      - nvidia,tegra194-bpmp-noc
5162306a36Sopenharmony_ci      - nvidia,tegra194-rce-noc
5262306a36Sopenharmony_ci      - nvidia,tegra194-sce-noc
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  reg:
5562306a36Sopenharmony_ci    maxItems: 1
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  interrupts:
5862306a36Sopenharmony_ci    description:
5962306a36Sopenharmony_ci      CCPLEX receives secure or nonsecure interrupt depending on error type.
6062306a36Sopenharmony_ci      A secure interrupt is received for SEC(firewall) & SLV errors and a
6162306a36Sopenharmony_ci      non-secure interrupt is received for TMO & DEC errors.
6262306a36Sopenharmony_ci    items:
6362306a36Sopenharmony_ci      - description: non-secure interrupt
6462306a36Sopenharmony_ci      - description: secure interrupt
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci  nvidia,axi2apb:
6762306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
6862306a36Sopenharmony_ci    description:
6962306a36Sopenharmony_ci      Specifies the node having all axi2apb bridges which need to be checked
7062306a36Sopenharmony_ci      for any error logged in their status register.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci  nvidia,apbmisc:
7362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
7462306a36Sopenharmony_ci    description:
7562306a36Sopenharmony_ci      Specifies the apbmisc node which need to be used for reading the ERD
7662306a36Sopenharmony_ci      register.
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciadditionalProperties: false
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_cirequired:
8162306a36Sopenharmony_ci  - compatible
8262306a36Sopenharmony_ci  - reg
8362306a36Sopenharmony_ci  - interrupts
8462306a36Sopenharmony_ci  - nvidia,apbmisc
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciexamples:
8762306a36Sopenharmony_ci  - |
8862306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci    cbb-noc@2300000 {
9162306a36Sopenharmony_ci        compatible = "nvidia,tegra194-cbb-noc";
9262306a36Sopenharmony_ci        reg = <0x02300000 0x1000>;
9362306a36Sopenharmony_ci        interrupts = <GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>,
9462306a36Sopenharmony_ci                     <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>;
9562306a36Sopenharmony_ci        nvidia,axi2apb = <&axi2apb>;
9662306a36Sopenharmony_ci        nvidia,apbmisc = <&apbmisc>;
9762306a36Sopenharmony_ci    };
98