coresight: binding for ETMv4 coresight drivers
[deliverable/linux.git] / Documentation / devicetree / bindings / arm / coresight.txt
1 * CoreSight Components:
2
3 CoreSight components are compliant with the ARM CoreSight architecture
4 specification and can be connected in various topologies to suit a particular
5 SoCs tracing needs. These trace components can generally be classified as
6 sinks, links and sources. Trace data produced by one or more sources flows
7 through the intermediate links connecting the source to the currently selected
8 sink. Each CoreSight component device should use these properties to describe
9 its hardware characteristcs.
10
11 * Required properties for all components *except* non-configurable replicators:
12
13 * compatible: These have to be supplemented with "arm,primecell" as
14 drivers are using the AMBA bus interface. Possible values include:
15 - "arm,coresight-etb10", "arm,primecell";
16 - "arm,coresight-tpiu", "arm,primecell";
17 - "arm,coresight-tmc", "arm,primecell";
18 - "arm,coresight-funnel", "arm,primecell";
19 - "arm,coresight-etm3x", "arm,primecell";
20 - "arm,coresight-etm4x", "arm,primecell";
21 - "qcom,coresight-replicator1x", "arm,primecell";
22
23 * reg: physical base address and length of the register
24 set(s) of the component.
25
26 * clocks: the clocks associated to this component.
27
28 * clock-names: the name of the clocks referenced by the code.
29 Since we are using the AMBA framework, the name of the clock
30 providing the interconnect should be "apb_pclk", and some
31 coresight blocks also have an additional clock "atclk", which
32 clocks the core of that coresight component. The latter clock
33 is optional.
34
35 * port or ports: The representation of the component's port
36 layout using the generic DT graph presentation found in
37 "bindings/graph.txt".
38
39 * Required properties for devices that don't show up on the AMBA bus, such as
40 non-configurable replicators:
41
42 * compatible: Currently supported value is (note the absence of the
43 AMBA markee):
44 - "arm,coresight-replicator"
45
46 * port or ports: same as above.
47
48 * Optional properties for ETM/PTMs:
49
50 * arm,cp14: must be present if the system accesses ETM/PTM management
51 registers via co-processor 14.
52
53 * cpu: the cpu phandle this ETM/PTM is affined to. When omitted the
54 source is considered to belong to CPU0.
55
56 * Optional property for TMC:
57
58 * arm,buffer-size: size of contiguous buffer space for TMC ETR
59 (embedded trace router)
60
61
62 Example:
63
64 1. Sinks
65 etb@20010000 {
66 compatible = "arm,coresight-etb10", "arm,primecell";
67 reg = <0 0x20010000 0 0x1000>;
68
69 clocks = <&oscclk6a>;
70 clock-names = "apb_pclk";
71 port {
72 etb_in_port: endpoint@0 {
73 slave-mode;
74 remote-endpoint = <&replicator_out_port0>;
75 };
76 };
77 };
78
79 tpiu@20030000 {
80 compatible = "arm,coresight-tpiu", "arm,primecell";
81 reg = <0 0x20030000 0 0x1000>;
82
83 clocks = <&oscclk6a>;
84 clock-names = "apb_pclk";
85 port {
86 tpiu_in_port: endpoint@0 {
87 slave-mode;
88 remote-endpoint = <&replicator_out_port1>;
89 };
90 };
91 };
92
93 2. Links
94 replicator {
95 /* non-configurable replicators don't show up on the
96 * AMBA bus. As such no need to add "arm,primecell".
97 */
98 compatible = "arm,coresight-replicator";
99
100 ports {
101 #address-cells = <1>;
102 #size-cells = <0>;
103
104 /* replicator output ports */
105 port@0 {
106 reg = <0>;
107 replicator_out_port0: endpoint {
108 remote-endpoint = <&etb_in_port>;
109 };
110 };
111
112 port@1 {
113 reg = <1>;
114 replicator_out_port1: endpoint {
115 remote-endpoint = <&tpiu_in_port>;
116 };
117 };
118
119 /* replicator input port */
120 port@2 {
121 reg = <0>;
122 replicator_in_port0: endpoint {
123 slave-mode;
124 remote-endpoint = <&funnel_out_port0>;
125 };
126 };
127 };
128 };
129
130 funnel@20040000 {
131 compatible = "arm,coresight-funnel", "arm,primecell";
132 reg = <0 0x20040000 0 0x1000>;
133
134 clocks = <&oscclk6a>;
135 clock-names = "apb_pclk";
136 ports {
137 #address-cells = <1>;
138 #size-cells = <0>;
139
140 /* funnel output port */
141 port@0 {
142 reg = <0>;
143 funnel_out_port0: endpoint {
144 remote-endpoint =
145 <&replicator_in_port0>;
146 };
147 };
148
149 /* funnel input ports */
150 port@1 {
151 reg = <0>;
152 funnel_in_port0: endpoint {
153 slave-mode;
154 remote-endpoint = <&ptm0_out_port>;
155 };
156 };
157
158 port@2 {
159 reg = <1>;
160 funnel_in_port1: endpoint {
161 slave-mode;
162 remote-endpoint = <&ptm1_out_port>;
163 };
164 };
165
166 port@3 {
167 reg = <2>;
168 funnel_in_port2: endpoint {
169 slave-mode;
170 remote-endpoint = <&etm0_out_port>;
171 };
172 };
173
174 };
175 };
176
177 3. Sources
178 ptm@2201c000 {
179 compatible = "arm,coresight-etm3x", "arm,primecell";
180 reg = <0 0x2201c000 0 0x1000>;
181
182 cpu = <&cpu0>;
183 clocks = <&oscclk6a>;
184 clock-names = "apb_pclk";
185 port {
186 ptm0_out_port: endpoint {
187 remote-endpoint = <&funnel_in_port0>;
188 };
189 };
190 };
191
192 ptm@2201d000 {
193 compatible = "arm,coresight-etm3x", "arm,primecell";
194 reg = <0 0x2201d000 0 0x1000>;
195
196 cpu = <&cpu1>;
197 clocks = <&oscclk6a>;
198 clock-names = "apb_pclk";
199 port {
200 ptm1_out_port: endpoint {
201 remote-endpoint = <&funnel_in_port1>;
202 };
203 };
204 };
This page took 0.04056 seconds and 5 git commands to generate.