1bf215546Sopenharmony_ci<?xml version="1.0" ?>
2bf215546Sopenharmony_ci
3bf215546Sopenharmony_ci<!--
4bf215546Sopenharmony_ciCopyright © 2022 Imagination Technologies Ltd.
5bf215546Sopenharmony_ci
6bf215546Sopenharmony_ciPermission is hereby granted, free of charge, to any person obtaining a copy
7bf215546Sopenharmony_ciof this software and associated documentation files (the "Software"), to deal
8bf215546Sopenharmony_ciin the Software without restriction, including without limitation the rights
9bf215546Sopenharmony_cito use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10bf215546Sopenharmony_cicopies of the Software, and to permit persons to whom the Software is
11bf215546Sopenharmony_cifurnished to do so, subject to the following conditions:
12bf215546Sopenharmony_ci
13bf215546Sopenharmony_ciThe above copyright notice and this permission notice (including the next
14bf215546Sopenharmony_ciparagraph) shall be included in all copies or substantial portions of the
15bf215546Sopenharmony_ciSoftware.
16bf215546Sopenharmony_ci
17bf215546Sopenharmony_ciTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18bf215546Sopenharmony_ciIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19bf215546Sopenharmony_ciFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20bf215546Sopenharmony_ciAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21bf215546Sopenharmony_ciLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22bf215546Sopenharmony_ciOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23bf215546Sopenharmony_ciSOFTWARE.
24bf215546Sopenharmony_ci-->
25bf215546Sopenharmony_ci
26bf215546Sopenharmony_ci<csbgen name="ROGUE" prefix="CDMCTRL">
27bf215546Sopenharmony_ci
28bf215546Sopenharmony_ci	<enum name="BLOCK_TYPE">
29bf215546Sopenharmony_ci		<value name="COMPUTE_KERNEL"   value="0"/>
30bf215546Sopenharmony_ci		<value name="STREAM_LINK"      value="1"/>
31bf215546Sopenharmony_ci		<value name="STREAM_TERMINATE" value="2"/>
32bf215546Sopenharmony_ci	</enum>
33bf215546Sopenharmony_ci
34bf215546Sopenharmony_ci	<enum name="USC_TARGET">
35bf215546Sopenharmony_ci		<value name="ALL" value="0"/>
36bf215546Sopenharmony_ci		<value name="ANY" value="1"/>
37bf215546Sopenharmony_ci	</enum>
38bf215546Sopenharmony_ci
39bf215546Sopenharmony_ci	<enum name="SD_TYPE">
40bf215546Sopenharmony_ci		<value name="NONE" value="0"/>
41bf215546Sopenharmony_ci		<value name="PDS"  value="1"/>
42bf215546Sopenharmony_ci		<value name="USC"  value="2"/>
43bf215546Sopenharmony_ci	</enum>
44bf215546Sopenharmony_ci
45bf215546Sopenharmony_ci	<struct name="KERNEL0" length="1">
46bf215546Sopenharmony_ci		<field name="block_type" start="30" end="31" type="BLOCK_TYPE" default="COMPUTE_KERNEL"/>
47bf215546Sopenharmony_ci		<field name="indirect_present" start="29" end="29" type="bool"/>
48bf215546Sopenharmony_ci		<field name="global_offsets_present" start="28" end="28" type="bool"/>
49bf215546Sopenharmony_ci		<field name="event_object_present" start="27" end="27" type="bool"/>
50bf215546Sopenharmony_ci		<field name="usc_common_size" start="18" end="26" type="uint">
51bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="64"/>
52bf215546Sopenharmony_ci			<define name="MAX_SIZE" value="256"/>
53bf215546Sopenharmony_ci		</field>
54bf215546Sopenharmony_ci		<field name="usc_unified_size" start="12" end="17" type="uint">
55bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="16"/>
56bf215546Sopenharmony_ci		</field>
57bf215546Sopenharmony_ci		<field name="pds_temp_size" start="8" end="11" type="uint">
58bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="16"/>
59bf215546Sopenharmony_ci		</field>
60bf215546Sopenharmony_ci		<field name="pds_data_size" start="2" end="7" type="uint">
61bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="16"/>
62bf215546Sopenharmony_ci		</field>
63bf215546Sopenharmony_ci		<field name="usc_target" start="1" end="1" type="USC_TARGET"/>
64bf215546Sopenharmony_ci		<field name="fence" start="0" end="0" type="bool"/>
65bf215546Sopenharmony_ci	</struct>
66bf215546Sopenharmony_ci
67bf215546Sopenharmony_ci	<struct name="KERNEL1" length="1">
68bf215546Sopenharmony_ci		<field name="data_addr" start="4" end="31" shift="4" type="address"/>
69bf215546Sopenharmony_ci		<field name="sd_type" start="2" end="3" type="SD_TYPE"/>
70bf215546Sopenharmony_ci		<field name="usc_common_shared" start="1" end="1" type="bool"/>
71bf215546Sopenharmony_ci	</struct>
72bf215546Sopenharmony_ci
73bf215546Sopenharmony_ci	<struct name="KERNEL2" length="1">
74bf215546Sopenharmony_ci		<field name="code_addr" start="4" end="31" shift="4" type="address"/>
75bf215546Sopenharmony_ci		<field name="one_wg_per_task" start="0" end="0" type="bool"/>
76bf215546Sopenharmony_ci	</struct>
77bf215546Sopenharmony_ci
78bf215546Sopenharmony_ci	<struct name="KERNEL3" length="1">
79bf215546Sopenharmony_ci		<field name="workgroup_x" start="0" end="31" type="uint"/>
80bf215546Sopenharmony_ci	</struct>
81bf215546Sopenharmony_ci
82bf215546Sopenharmony_ci	<struct name="KERNEL4" length="1">
83bf215546Sopenharmony_ci		<field name="workgroup_y" start="0" end="31" type="uint"/>
84bf215546Sopenharmony_ci	</struct>
85bf215546Sopenharmony_ci
86bf215546Sopenharmony_ci	<struct name="KERNEL5" length="1">
87bf215546Sopenharmony_ci		<field name="workgroup_z" start="0" end="31" type="uint"/>
88bf215546Sopenharmony_ci	</struct>
89bf215546Sopenharmony_ci
90bf215546Sopenharmony_ci	<struct name="KERNEL6" length="1">
91bf215546Sopenharmony_ci		<field name="indirect_addrmsb" start="0" end="7" shift="32" type="address"/>
92bf215546Sopenharmony_ci	</struct>
93bf215546Sopenharmony_ci
94bf215546Sopenharmony_ci	<struct name="KERNEL7" length="1">
95bf215546Sopenharmony_ci		<field name="indirect_addrlsb" start="2" end="31" shift="2" type="address"/>
96bf215546Sopenharmony_ci	</struct>
97bf215546Sopenharmony_ci
98bf215546Sopenharmony_ci	<struct name="KERNEL8" length="1">
99bf215546Sopenharmony_ci		<field name="max_instances" start="27" end="31" type="uint">
100bf215546Sopenharmony_ci			<define name="MAX_SIZE" value="31"/>
101bf215546Sopenharmony_ci		</field>
102bf215546Sopenharmony_ci		<field name="workgroup_size_x" start="18" end="26" type="uint"/>
103bf215546Sopenharmony_ci		<field name="workgroup_size_y" start="9" end="17" type="uint"/>
104bf215546Sopenharmony_ci		<field name="workgroup_size_z" start="0" end="8" type="uint"/>
105bf215546Sopenharmony_ci	</struct>
106bf215546Sopenharmony_ci
107bf215546Sopenharmony_ci	<struct name="KERNEL9" length="1">
108bf215546Sopenharmony_ci		<field name="global_offset_x" start="0" end="31" type="uint"/>
109bf215546Sopenharmony_ci	</struct>
110bf215546Sopenharmony_ci
111bf215546Sopenharmony_ci	<struct name="KERNEL10" length="1">
112bf215546Sopenharmony_ci		<field name="global_offset_y" start="0" end="31" type="uint"/>
113bf215546Sopenharmony_ci	</struct>
114bf215546Sopenharmony_ci
115bf215546Sopenharmony_ci	<struct name="KERNEL11" length="1">
116bf215546Sopenharmony_ci		<field name="global_offset_z" start="0" end="31" type="uint"/>
117bf215546Sopenharmony_ci	</struct>
118bf215546Sopenharmony_ci
119bf215546Sopenharmony_ci	<struct name="STREAM_LINK0" length="1">
120bf215546Sopenharmony_ci		<field name="block_type" start="30" end="31" type="BLOCK_TYPE" default="STREAM_LINK"/>
121bf215546Sopenharmony_ci		<field name="link_addrmsb" start="0" end="7" shift="32" type="address"/>
122bf215546Sopenharmony_ci	</struct>
123bf215546Sopenharmony_ci
124bf215546Sopenharmony_ci	<struct name="STREAM_LINK1" length="1">
125bf215546Sopenharmony_ci		<field name="link_addrlsb" start="2" end="31" shift="2" type="address"/>
126bf215546Sopenharmony_ci	</struct>
127bf215546Sopenharmony_ci
128bf215546Sopenharmony_ci	<struct name="STREAM_TERMINATE" length="1">
129bf215546Sopenharmony_ci		<field name="block_type" start="30" end="31" type="BLOCK_TYPE" default="STREAM_TERMINATE"/>
130bf215546Sopenharmony_ci	</struct>
131bf215546Sopenharmony_ci
132bf215546Sopenharmony_ci</csbgen>
133