aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/media/xilinx/xlnx,v-axi4s-switch.txt
blob: fb5ed47d959a8938536a4598df1ef7b6808b5e95 (plain)
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
Xilinx AXI4-Stream Switch
-------------------------------

The AXI4-Stream Switch provides configurable routing between masters and slaves.
It supports up to 16 masters/sources and 16 slaves/sinks and two routing options.
There is atleast one slave/sink port and two master/source ports.

The two routing options available are TDEST routing and control register routing.
The TDEST based routing uses design parameters and hence there no software control.
Each port is mapped as a pad and has its own format specified.

Control register routing introduces an AXI4-Lite interface to configure the
routing table. There is one register for each of the master interfaces to
control each of the selectors. This routing mode requires that there is
precisely only one path between master and slave. When attempting to map the
same slave interface to multiple master interfaces, only the lowest master
interface is able to access the slave interface.
Here only the slave/sink ports have formats as master/source ports will inherit
the corresponding slave ports formats. A routing table is maintained in this case.

Please refer to PG085 AXI4-Stream Infrastructure IP Suite v2.2 for more details.

Required properties:

 - compatible: Must be "xlnx,axis-switch-1.1".
 - xlnx,routing-mode: Can be 0 (TDEST routing) or 1 (Control reg routing)
 - xlnx,num-si-slots: Number of slave / input ports. Min 1 Max 16 .
 - xlnx,num-mi-slots: Number of master / output ports. Min 1 Max 16.
 - ports: Video ports, using the DT bindings defined in ../video-interfaces.txt.
 - clocks: Reference to the AXI Streaming clock feeding the ACLK and
   AXI4 Lite control interface clock when control routing is enabled.
 - clock-names: Must have "aclk".

Optional properties:
 - reg: Physical base address and length of the registers set for the device.
	This is required only if xlnx,routing-mode is 1.
 - clocks: Reference to AXI4 Lite control interface clock when routing-mode is 1.
 - clock-names: "s_axi_ctl_clk" clock for AXI4 Lite interface when routing-mode is 1.

Example:

For TDEST routing, from 1 slave port to 4 master ports

	axis_switch_0: axis_switch@0 {
		compatible = "xlnx,axis-switch-1.1";
		xlnx,routing-mode = <0x0>;
		xlnx,num-si-slots = <0x1>;
		xlnx,num-mi-slots = <0x4>;
		clocks = <&vid_stream_clk>;
		clock-names = "aclk";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			port@0 {
				reg = <0>;
				switch_in0: endpoint {
					remote-endpoint = <&csirxss_out>;
				};
			};
			port@1 {
				reg = <1>;
				switch_out0: endpoint {
					remote-endpoint = <&vcap_csirxss0_in>;
				};
			};
			port@2 {
				reg = <2>;
				switch_out1: endpoint {
					remote-endpoint = <&vcap_csirxss1_in>;
				};
			};
			port@3 {
				reg = <3>;
				switch_out2: endpoint {
					remote-endpoint = <&vcap_csirxss2_in>;
				};
			};
			port@4 {
				reg = <4>;
				switch_out3: endpoint {
					remote-endpoint = <&vcap_csirxss3_in>;
				};
			};
		};

	};

For Control reg based routing, from 2 slave ports to 4 master ports

	axis_switch_0: axis_switch@a0050000 {
		compatible = "xlnx,axis-switch-1.1";
		reg = <0x0 0xa0050000 0x0 0x1000>;
		xlnx,routing-mode = <0x1>;
		xlnx,num-si-slots = <0x2>;
		xlnx,num-mi-slots = <0x4>;
		clocks = <&vid_stream_clk>, <&misc_clk_0>;
		clock-names = "aclk", "s_axi_ctl_clk;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			port@0 {
				reg = <0>;
				switch_in0: endpoint {
					remote-endpoint = <&csirxss_out>;
				};
			};
			port@1 {
				reg = <1>;
				switch_in1: endpoint {
					remote-endpoint = <&tpg_out>;
				};
			};
			port@2 {
				reg = <2>;
				switch_out0: endpoint {
					remote-endpoint = <&vcap_csirxss0_in>;
				};
			};
			port@3 {
				reg = <3>;
				switch_out1: endpoint {
					remote-endpoint = <&vcap_csirxss1_in>;
				};
			};
			port@4 {
				reg = <4>;
				switch_out2: endpoint {
					remote-endpoint = <&vcap_csirxss2_in>;
				};
			};
			port@5 {
				reg = <5>;
				switch_out3: endpoint {
					remote-endpoint = <&vcap_csirxss3_in>;
				};
			};
		};

	};