Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 | # SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause # Copyright 2019 Linaro Ltd. %YAML 1.2 --- $id: http://devicetree.org/schemas/arm/arm,coresight-cti.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: ARM Coresight Cross Trigger Interface (CTI) device. description: | The CoreSight Embedded Cross Trigger (ECT) consists of CTI devices connected to one or more CoreSight components and/or a CPU, with CTIs interconnected in a star topology via the Cross Trigger Matrix (CTM), which is not programmable. The ECT components are not part of the trace generation data path and are thus not part of the CoreSight graph. The CTI component properties define the connections between the individual CTI and the components it is directly connected to, consisting of input and output hardware trigger signals. CTIs can have a maximum number of input and output hardware trigger signals (8 each for v1 CTI, 32 each for v2 CTI). The number is defined at design time, the maximum of each defined in the DEVID register. CTIs are interconnected in a star topology via the CTM, using a number of programmable channels, usually 4, but again implementation defined and described in the DEVID register. The star topology is not required to be described in the bindings as the actual connections are software programmable. In general the connections between CTI and components via the trigger signals are implementation defined, except when the CTI is connected to an ARM v8 architecture core and optional ETM. In this case the ARM v8 architecture defines the required signal connections between CTI and the CPU core and ETM if present. In the case of a v8 architecturally connected CTI an additional compatible string is used to indicate this feature (arm,coresight-cti-v8-arch). When CTI trigger connection information is unavailable then a minimal driver binding can be declared with no explicit trigger signals. This will result the driver detecting the maximum available triggers and channels from the DEVID register and make them all available for use as a single default connection. Any user / client application will require additional information on the connections between the CTI and other components for correct operation. This information might be found by enabling the Integration Test registers in the driver (set CONFIG_CORESIGHT_CTI_INTEGRATION_TEST in Kernel configuration). These registers may be used to explore the trigger connections between CTI and other CoreSight components. Certain triggers between CoreSight devices and the CTI have specific types and usages. These can be defined along with the signal indexes with the constants defined in <dt-bindings/arm/coresight-cti-dt.h> For example a CTI connected to a core will usually have a DBGREQ signal. This is defined in the binding as type PE_EDBGREQ. These types will appear in an optional array alongside the signal indexes. Omitting types will default all signals to GEN_IO. Note that some hardware trigger signals can be connected to non-CoreSight components (e.g. UART etc) depending on hardware implementation. maintainers: - Mike Leach <mike.leach@linaro.org> allOf: - $ref: /schemas/arm/primecell.yaml# # Need a custom select here or 'arm,primecell' will match on lots of nodes select: properties: compatible: contains: enum: - arm,coresight-cti required: - compatible properties: $nodename: pattern: "^cti(@[0-9a-f]+)$" compatible: oneOf: - items: - const: arm,coresight-cti - const: arm,primecell - items: - const: arm,coresight-cti-v8-arch - const: arm,coresight-cti - const: arm,primecell reg: maxItems: 1 cpu: $ref: /schemas/types.yaml#/definitions/phandle description: Handle to cpu this device is associated with. This must appear in the base cti node if compatible string arm,coresight-cti-v8-arch is used, or may appear in a trig-conns child node when appropriate. power-domains: maxItems: 1 arm,cti-ctm-id: $ref: /schemas/types.yaml#/definitions/uint32 description: Defines the CTM this CTI is connected to, in large systems with multiple separate CTI/CTM nets. Typically multi-socket systems where the CTM is propagated between sockets. arm,cs-dev-assoc: $ref: /schemas/types.yaml#/definitions/phandle description: defines a phandle reference to an associated CoreSight trace device. When the associated trace device is enabled, then the respective CTI will be enabled. Use in a trig-conns node, or in CTI base node when compatible string arm,coresight-cti-v8-arch used. If the associated device has not been registered then the node name will be stored as the connection name for later resolution. If the associated device is not a CoreSight device or not registered then the node name will remain the connection name and automatic enabling will not occur. # size cells and address cells required if trig-conns node present. "#size-cells": const: 0 "#address-cells": const: 1 patternProperties: '^trig-conns@([0-9]+)$': type: object description: A trigger connections child node which describes the trigger signals between this CTI and another hardware device. This device may be a CPU, CoreSight device, any other hardware device or simple external IO lines. The connection may have both input and output triggers, or only one or the other. properties: reg: maxItems: 1 arm,trig-in-sigs: $ref: /schemas/types.yaml#/definitions/uint32-array minItems: 1 maxItems: 32 description: List of CTI trigger in signal numbers in use by a trig-conns node. arm,trig-in-types: $ref: /schemas/types.yaml#/definitions/uint32-array minItems: 1 maxItems: 32 description: List of constants representing the types for the CTI trigger in signals. Types in this array match to the corresponding signal in the arm,trig-in-sigs array. If the -types array is smaller, or omitted completely, then the types will default to GEN_IO. arm,trig-out-sigs: $ref: /schemas/types.yaml#/definitions/uint32-array minItems: 1 maxItems: 32 description: List of CTI trigger out signal numbers in use by a trig-conns node. arm,trig-out-types: $ref: /schemas/types.yaml#/definitions/uint32-array minItems: 1 maxItems: 32 description: List of constants representing the types for the CTI trigger out signals. Types in this array match to the corresponding signal in the arm,trig-out-sigs array. If the "-types" array is smaller, or omitted completely, then the types will default to GEN_IO. arm,trig-filters: $ref: /schemas/types.yaml#/definitions/uint32-array minItems: 1 maxItems: 32 description: List of CTI trigger out signals that will be blocked from becoming active, unless filtering is disabled on the driver. arm,trig-conn-name: $ref: /schemas/types.yaml#/definitions/string description: Defines a connection name that will be displayed, if the cpu or arm,cs-dev-assoc properties are not being used in this connection. Principle use for CTI that are connected to non-CoreSight devices, or external IO. anyOf: - required: - arm,trig-in-sigs - required: - arm,trig-out-sigs oneOf: - required: - arm,trig-conn-name - required: - cpu - required: - arm,cs-dev-assoc required: - reg required: - compatible - reg - clocks - clock-names if: properties: compatible: contains: const: arm,coresight-cti-v8-arch then: required: - cpu unevaluatedProperties: false examples: # minimum CTI definition. DEVID register used to set number of triggers. - | cti@20020000 { compatible = "arm,coresight-cti", "arm,primecell"; reg = <0x20020000 0x1000>; clocks = <&soc_smc50mhz>; clock-names = "apb_pclk"; }; # v8 architecturally defined CTI - CPU + ETM connections generated by the # driver according to the v8 architecture specification. - | cti@859000 { compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti", "arm,primecell"; reg = <0x859000 0x1000>; clocks = <&soc_smc50mhz>; clock-names = "apb_pclk"; cpu = <&CPU1>; arm,cs-dev-assoc = <&etm1>; }; # Implementation defined CTI - CPU + ETM connections explicitly defined.. # Shows use of type constants from dt-bindings/arm/coresight-cti-dt.h # #size-cells and #address-cells are required if trig-conns@ nodes present. - | #include <dt-bindings/arm/coresight-cti-dt.h> cti@858000 { compatible = "arm,coresight-cti", "arm,primecell"; reg = <0x858000 0x1000>; clocks = <&soc_smc50mhz>; clock-names = "apb_pclk"; arm,cti-ctm-id = <1>; #address-cells = <1>; #size-cells = <0>; trig-conns@0 { reg = <0>; arm,trig-in-sigs = <4 5 6 7>; arm,trig-in-types = <ETM_EXTOUT ETM_EXTOUT ETM_EXTOUT ETM_EXTOUT>; arm,trig-out-sigs = <4 5 6 7>; arm,trig-out-types = <ETM_EXTIN ETM_EXTIN ETM_EXTIN ETM_EXTIN>; arm,cs-dev-assoc = <&etm0>; }; trig-conns@1 { reg = <1>; cpu = <&CPU0>; arm,trig-in-sigs = <0 1>; arm,trig-in-types = <PE_DBGTRIGGER PE_PMUIRQ>; arm,trig-out-sigs=<0 1 2 >; arm,trig-out-types = <PE_EDBGREQ PE_DBGRESTART PE_CTIIRQ>; arm,trig-filters = <0>; }; }; # Implementation defined CTI - non CoreSight component connections. - | cti@20110000 { compatible = "arm,coresight-cti", "arm,primecell"; reg = <0x20110000 0x1000>; clocks = <&soc_smc50mhz>; clock-names = "apb_pclk"; #address-cells = <1>; #size-cells = <0>; trig-conns@0 { reg = <0>; arm,trig-in-sigs=<0>; arm,trig-in-types=<GEN_INTREQ>; arm,trig-out-sigs=<0>; arm,trig-out-types=<GEN_HALTREQ>; arm,trig-conn-name = "sys_profiler"; }; trig-conns@1 { reg = <1>; arm,trig-out-sigs=<2 3>; arm,trig-out-types=<GEN_HALTREQ GEN_RESTARTREQ>; arm,trig-conn-name = "watchdog"; }; trig-conns@2 { reg = <2>; arm,trig-in-sigs=<1 6>; arm,trig-in-types=<GEN_HALTREQ GEN_RESTARTREQ>; arm,trig-conn-name = "g_counter"; }; }; ... |