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