mirror of https://gitee.com/openkylin/linux.git
252 lines
6.2 KiB
Plaintext
252 lines
6.2 KiB
Plaintext
* CoreSight Components:
|
|
|
|
CoreSight components are compliant with the ARM CoreSight architecture
|
|
specification and can be connected in various topologies to suit a particular
|
|
SoCs tracing needs. These trace components can generally be classified as
|
|
sinks, links and sources. Trace data produced by one or more sources flows
|
|
through the intermediate links connecting the source to the currently selected
|
|
sink. Each CoreSight component device should use these properties to describe
|
|
its hardware characteristcs.
|
|
|
|
* Required properties for all components *except* non-configurable replicators:
|
|
|
|
* compatible: These have to be supplemented with "arm,primecell" as
|
|
drivers are using the AMBA bus interface. Possible values include:
|
|
- Embedded Trace Buffer (version 1.0):
|
|
"arm,coresight-etb10", "arm,primecell";
|
|
|
|
- Trace Port Interface Unit:
|
|
"arm,coresight-tpiu", "arm,primecell";
|
|
|
|
- Trace Memory Controller, used for Embedded Trace Buffer(ETB),
|
|
Embedded Trace FIFO(ETF) and Embedded Trace Router(ETR)
|
|
configuration. The configuration mode (ETB, ETF, ETR) is
|
|
discovered at boot time when the device is probed.
|
|
"arm,coresight-tmc", "arm,primecell";
|
|
|
|
- Trace Funnel:
|
|
"arm,coresight-funnel", "arm,primecell";
|
|
|
|
- Embedded Trace Macrocell (version 3.x) and
|
|
Program Flow Trace Macrocell:
|
|
"arm,coresight-etm3x", "arm,primecell";
|
|
|
|
- Embedded Trace Macrocell (version 4.x):
|
|
"arm,coresight-etm4x", "arm,primecell";
|
|
|
|
- Coresight programmable Replicator :
|
|
"arm,coresight-dynamic-replicator", "arm,primecell";
|
|
|
|
- System Trace Macrocell:
|
|
"arm,coresight-stm", "arm,primecell"; [1]
|
|
|
|
* reg: physical base address and length of the register
|
|
set(s) of the component.
|
|
|
|
* clocks: the clocks associated to this component.
|
|
|
|
* clock-names: the name of the clocks referenced by the code.
|
|
Since we are using the AMBA framework, the name of the clock
|
|
providing the interconnect should be "apb_pclk", and some
|
|
coresight blocks also have an additional clock "atclk", which
|
|
clocks the core of that coresight component. The latter clock
|
|
is optional.
|
|
|
|
* port or ports: The representation of the component's port
|
|
layout using the generic DT graph presentation found in
|
|
"bindings/graph.txt".
|
|
|
|
* Additional required properties for System Trace Macrocells (STM):
|
|
* reg: along with the physical base address and length of the register
|
|
set as described above, another entry is required to describe the
|
|
mapping of the extended stimulus port area.
|
|
|
|
* reg-names: the only acceptable values are "stm-base" and
|
|
"stm-stimulus-base", each corresponding to the areas defined in "reg".
|
|
|
|
* Required properties for devices that don't show up on the AMBA bus, such as
|
|
non-configurable replicators:
|
|
|
|
* compatible: Currently supported value is (note the absence of the
|
|
AMBA markee):
|
|
- "arm,coresight-replicator"
|
|
|
|
* port or ports: same as above.
|
|
|
|
* Optional properties for ETM/PTMs:
|
|
|
|
* arm,cp14: must be present if the system accesses ETM/PTM management
|
|
registers via co-processor 14.
|
|
|
|
* cpu: the cpu phandle this ETM/PTM is affined to. When omitted the
|
|
source is considered to belong to CPU0.
|
|
|
|
* Optional property for TMC:
|
|
|
|
* arm,buffer-size: size of contiguous buffer space for TMC ETR
|
|
(embedded trace router)
|
|
|
|
|
|
Example:
|
|
|
|
1. Sinks
|
|
etb@20010000 {
|
|
compatible = "arm,coresight-etb10", "arm,primecell";
|
|
reg = <0 0x20010000 0 0x1000>;
|
|
|
|
clocks = <&oscclk6a>;
|
|
clock-names = "apb_pclk";
|
|
port {
|
|
etb_in_port: endpoint@0 {
|
|
slave-mode;
|
|
remote-endpoint = <&replicator_out_port0>;
|
|
};
|
|
};
|
|
};
|
|
|
|
tpiu@20030000 {
|
|
compatible = "arm,coresight-tpiu", "arm,primecell";
|
|
reg = <0 0x20030000 0 0x1000>;
|
|
|
|
clocks = <&oscclk6a>;
|
|
clock-names = "apb_pclk";
|
|
port {
|
|
tpiu_in_port: endpoint@0 {
|
|
slave-mode;
|
|
remote-endpoint = <&replicator_out_port1>;
|
|
};
|
|
};
|
|
};
|
|
|
|
2. Links
|
|
replicator {
|
|
/* non-configurable replicators don't show up on the
|
|
* AMBA bus. As such no need to add "arm,primecell".
|
|
*/
|
|
compatible = "arm,coresight-replicator";
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
/* replicator output ports */
|
|
port@0 {
|
|
reg = <0>;
|
|
replicator_out_port0: endpoint {
|
|
remote-endpoint = <&etb_in_port>;
|
|
};
|
|
};
|
|
|
|
port@1 {
|
|
reg = <1>;
|
|
replicator_out_port1: endpoint {
|
|
remote-endpoint = <&tpiu_in_port>;
|
|
};
|
|
};
|
|
|
|
/* replicator input port */
|
|
port@2 {
|
|
reg = <0>;
|
|
replicator_in_port0: endpoint {
|
|
slave-mode;
|
|
remote-endpoint = <&funnel_out_port0>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
funnel@20040000 {
|
|
compatible = "arm,coresight-funnel", "arm,primecell";
|
|
reg = <0 0x20040000 0 0x1000>;
|
|
|
|
clocks = <&oscclk6a>;
|
|
clock-names = "apb_pclk";
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
/* funnel output port */
|
|
port@0 {
|
|
reg = <0>;
|
|
funnel_out_port0: endpoint {
|
|
remote-endpoint =
|
|
<&replicator_in_port0>;
|
|
};
|
|
};
|
|
|
|
/* funnel input ports */
|
|
port@1 {
|
|
reg = <0>;
|
|
funnel_in_port0: endpoint {
|
|
slave-mode;
|
|
remote-endpoint = <&ptm0_out_port>;
|
|
};
|
|
};
|
|
|
|
port@2 {
|
|
reg = <1>;
|
|
funnel_in_port1: endpoint {
|
|
slave-mode;
|
|
remote-endpoint = <&ptm1_out_port>;
|
|
};
|
|
};
|
|
|
|
port@3 {
|
|
reg = <2>;
|
|
funnel_in_port2: endpoint {
|
|
slave-mode;
|
|
remote-endpoint = <&etm0_out_port>;
|
|
};
|
|
};
|
|
|
|
};
|
|
};
|
|
|
|
3. Sources
|
|
ptm@2201c000 {
|
|
compatible = "arm,coresight-etm3x", "arm,primecell";
|
|
reg = <0 0x2201c000 0 0x1000>;
|
|
|
|
cpu = <&cpu0>;
|
|
clocks = <&oscclk6a>;
|
|
clock-names = "apb_pclk";
|
|
port {
|
|
ptm0_out_port: endpoint {
|
|
remote-endpoint = <&funnel_in_port0>;
|
|
};
|
|
};
|
|
};
|
|
|
|
ptm@2201d000 {
|
|
compatible = "arm,coresight-etm3x", "arm,primecell";
|
|
reg = <0 0x2201d000 0 0x1000>;
|
|
|
|
cpu = <&cpu1>;
|
|
clocks = <&oscclk6a>;
|
|
clock-names = "apb_pclk";
|
|
port {
|
|
ptm1_out_port: endpoint {
|
|
remote-endpoint = <&funnel_in_port1>;
|
|
};
|
|
};
|
|
};
|
|
|
|
4. STM
|
|
stm@20100000 {
|
|
compatible = "arm,coresight-stm", "arm,primecell";
|
|
reg = <0 0x20100000 0 0x1000>,
|
|
<0 0x28000000 0 0x180000>;
|
|
reg-names = "stm-base", "stm-stimulus-base";
|
|
|
|
clocks = <&soc_smc50mhz>;
|
|
clock-names = "apb_pclk";
|
|
port {
|
|
stm_out_port: endpoint {
|
|
remote-endpoint = <&main_funnel_in_port2>;
|
|
};
|
|
};
|
|
};
|
|
|
|
[1]. There is currently two version of STM: STM32 and STM500. Both
|
|
have the same HW interface and as such don't need an explicit binding name.
|