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="PBESTATE">
27bf215546Sopenharmony_ci
28bf215546Sopenharmony_ci	<enum name="COMP_IADDR_TYPE">
29bf215546Sopenharmony_ci		<value name="INDIRECT_1TILE" value="0"/>
30bf215546Sopenharmony_ci		<value name="INDIRECT_4TILE" value="1"/>
31bf215546Sopenharmony_ci	</enum>
32bf215546Sopenharmony_ci
33bf215546Sopenharmony_ci	<enum name="COMPRESS_SIZE">
34bf215546Sopenharmony_ci		<value name="BLOCK_8X8"  value="0"/>
35bf215546Sopenharmony_ci		<value name="BLOCK_16X4" value="1"/>
36bf215546Sopenharmony_ci	</enum>
37bf215546Sopenharmony_ci
38bf215546Sopenharmony_ci	<enum name="COMPRESS_SIZE_EXT">
39bf215546Sopenharmony_ci		<value name="BLOCK_8X8_16X4"   value="0"/>
40bf215546Sopenharmony_ci		<value name="BLOCK_32X2_RSRVD" value="1"/>
41bf215546Sopenharmony_ci	</enum>
42bf215546Sopenharmony_ci
43bf215546Sopenharmony_ci	<enum name="COMPRESSION">
44bf215546Sopenharmony_ci		<value name="DISABLED" value="0"/>
45bf215546Sopenharmony_ci		<value name="ENABLED"  value="1"/>
46bf215546Sopenharmony_ci	</enum>
47bf215546Sopenharmony_ci
48bf215546Sopenharmony_ci	<enum name="LOSSY">
49bf215546Sopenharmony_ci		<value name="DISABLED" value="0"/>
50bf215546Sopenharmony_ci		<value name="ENABLED"  value="1"/>
51bf215546Sopenharmony_ci	</enum>
52bf215546Sopenharmony_ci
53bf215546Sopenharmony_ci	<enum name="MEMLAYOUT">
54bf215546Sopenharmony_ci		<value name="LINEAR"     value="0"/>
55bf215546Sopenharmony_ci		<value name="TWIDDLE_2D" value="1"/>
56bf215546Sopenharmony_ci		<value name="TWIDDLE_3D" value="2"/>
57bf215546Sopenharmony_ci		<value name="TILED"      value="3"/>
58bf215546Sopenharmony_ci	</enum>
59bf215546Sopenharmony_ci
60bf215546Sopenharmony_ci	<enum name="PACKMODE">
61bf215546Sopenharmony_ci		<value name="U8U8U8U8"            value="0x0"/>
62bf215546Sopenharmony_ci		<value name="S8S8S8S8"            value="0x1"/>
63bf215546Sopenharmony_ci		<value name="X8U8S8S8"            value="0x2"/>
64bf215546Sopenharmony_ci		<value name="X8S8S8U8"            value="0x3"/>
65bf215546Sopenharmony_ci		<value name="A1R5G5B5"            value="0x4"/>
66bf215546Sopenharmony_ci		<value name="R5G5B5A1"            value="0x5"/>
67bf215546Sopenharmony_ci		<value name="A4R4G4B4"            value="0x6"/>
68bf215546Sopenharmony_ci		<value name="A8R3G3B2"            value="0x7"/>
69bf215546Sopenharmony_ci		<value name="U16U16U16U16"        value="0x8"/>
70bf215546Sopenharmony_ci		<value name="S16S16S16S16"        value="0x9"/>
71bf215546Sopenharmony_ci		<value name="F16F16F16F16"        value="0xa"/>
72bf215546Sopenharmony_ci		<value name="U32U32U32U32"        value="0xb"/>
73bf215546Sopenharmony_ci		<value name="S32S32S32S32"        value="0xc"/>
74bf215546Sopenharmony_ci		<value name="F32F32F32F32"        value="0xd"/>
75bf215546Sopenharmony_ci		<value name="A2R10B10G10"         value="0xe"/>
76bf215546Sopenharmony_ci		<value name="R10B10G10A2"         value="0xf"/>
77bf215546Sopenharmony_ci		<value name="A2F10F10F10"         value="0x10"/>
78bf215546Sopenharmony_ci		<value name="F10F10F10A2"         value="0x11"/>
79bf215546Sopenharmony_ci		<value name="U8U8U8"              value="0x12"/>
80bf215546Sopenharmony_ci		<value name="S8S8S8"              value="0x13"/>
81bf215546Sopenharmony_ci		<value name="R5G6B5"              value="0x14"/>
82bf215546Sopenharmony_ci		<value name="R5SG5SB6"            value="0x15"/>
83bf215546Sopenharmony_ci		<value name="B6G5SR5S"            value="0x16"/>
84bf215546Sopenharmony_ci		<value name="U16U16U16"           value="0x17"/>
85bf215546Sopenharmony_ci		<value name="S16S16S16"           value="0x18"/>
86bf215546Sopenharmony_ci		<value name="F16F16F16"           value="0x19"/>
87bf215546Sopenharmony_ci		<value name="U32U32U32"           value="0x1a"/>
88bf215546Sopenharmony_ci		<value name="S32S32S32"           value="0x1b"/>
89bf215546Sopenharmony_ci		<value name="F11F11F10"           value="0x1c"/>
90bf215546Sopenharmony_ci		<value name="F10F11F11"           value="0x1d"/>
91bf215546Sopenharmony_ci		<value name="SE9995"              value="0x1e"/>
92bf215546Sopenharmony_ci		<value name="F32F32F32"           value="0x1f"/>
93bf215546Sopenharmony_ci		<value name="X24U8F32"            value="0x20"/>
94bf215546Sopenharmony_ci		<value name="X24X8F32"            value="0x21"/>
95bf215546Sopenharmony_ci		<value name="X24G8X32"            value="0x22"/>
96bf215546Sopenharmony_ci		<value name="U8U8"                value="0x23"/>
97bf215546Sopenharmony_ci		<value name="S8S8"                value="0x24"/>
98bf215546Sopenharmony_ci		<value name="U16U16"              value="0x25"/>
99bf215546Sopenharmony_ci		<value name="S16S16"              value="0x26"/>
100bf215546Sopenharmony_ci		<value name="F16F16"              value="0x27"/>
101bf215546Sopenharmony_ci		<value name="U32U32"              value="0x28"/>
102bf215546Sopenharmony_ci		<value name="S32S32"              value="0x29"/>
103bf215546Sopenharmony_ci		<value name="F32F32"              value="0x2a"/>
104bf215546Sopenharmony_ci		<value name="U24ST8"              value="0x2b"/>
105bf215546Sopenharmony_ci		<value name="ST8U24"              value="0x2c"/>
106bf215546Sopenharmony_ci		<value name="X8U24"               value="0x2d"/>
107bf215546Sopenharmony_ci		<value name="U8X24"               value="0x2e"/>
108bf215546Sopenharmony_ci		<value name="U8"                  value="0x2f"/>
109bf215546Sopenharmony_ci		<value name="S8"                  value="0x30"/>
110bf215546Sopenharmony_ci		<value name="U16"                 value="0x31"/>
111bf215546Sopenharmony_ci		<value name="S16"                 value="0x32"/>
112bf215546Sopenharmony_ci		<value name="F16"                 value="0x33"/>
113bf215546Sopenharmony_ci		<value name="U32"                 value="0x34"/>
114bf215546Sopenharmony_ci		<value name="S32"                 value="0x35"/>
115bf215546Sopenharmony_ci		<value name="F32"                 value="0x36"/>
116bf215546Sopenharmony_ci		<value name="PBYTE"               value="0x37"/>
117bf215546Sopenharmony_ci		<value name="PWORD"               value="0x38"/>
118bf215546Sopenharmony_ci		<value name="ARGBV16_XR10"        value="0x39"/>
119bf215546Sopenharmony_ci		<value name="A2_XRBIAS_U10U10U10" value="0x3a"/>
120bf215546Sopenharmony_ci		<value name="YUV"                 value="0x3b"/>
121bf215546Sopenharmony_ci		<value name="U10U10U10_XRBIAS_A2" value="0x3c"/>
122bf215546Sopenharmony_ci		<value name="INVALID"             value="0xFFFFFFFF"/>
123bf215546Sopenharmony_ci	</enum>
124bf215546Sopenharmony_ci
125bf215546Sopenharmony_ci	<enum name="PAIR_TILES">
126bf215546Sopenharmony_ci		<value name="DISABLED" value="0"/>
127bf215546Sopenharmony_ci		<value name="ENABLED"  value="1"/>
128bf215546Sopenharmony_ci	</enum>
129bf215546Sopenharmony_ci
130bf215546Sopenharmony_ci	<enum name="ROTATION_TYPE">
131bf215546Sopenharmony_ci		<value name="0_DEG"   value="0"/>
132bf215546Sopenharmony_ci		<value name="90_DEG"  value="1"/>
133bf215546Sopenharmony_ci		<value name="180_DEG" value="2"/>
134bf215546Sopenharmony_ci		<value name="270_DEG" value="3"/>
135bf215546Sopenharmony_ci	</enum>
136bf215546Sopenharmony_ci
137bf215546Sopenharmony_ci	<enum name="SIZE">
138bf215546Sopenharmony_ci		<value name="1_PIXEL"   value="0"/>
139bf215546Sopenharmony_ci		<value name="2_PIXEL"   value="1"/>
140bf215546Sopenharmony_ci		<value name="4_PIXEL"   value="2"/>
141bf215546Sopenharmony_ci		<value name="8_PIXEL"   value="3"/>
142bf215546Sopenharmony_ci		<value name="16_PIXEL"  value="4"/>
143bf215546Sopenharmony_ci		<value name="32_PIXEL"  value="5"/>
144bf215546Sopenharmony_ci		<value name="64_PIXEL"  value="6"/>
145bf215546Sopenharmony_ci		<value name="128_PIXEL" value="7"/>
146bf215546Sopenharmony_ci		<value name="256_PIXEL" value="8"/>
147bf215546Sopenharmony_ci		<value name="512_PIXEL" value="9"/>
148bf215546Sopenharmony_ci		<value name="1K_PIXEL"  value="10"/>
149bf215546Sopenharmony_ci		<value name="2K_PIXEL"  value="11"/>
150bf215546Sopenharmony_ci		<value name="4K_PIXEL"  value="12"/>
151bf215546Sopenharmony_ci		<value name="8K_PIXEL"  value="13"/>
152bf215546Sopenharmony_ci		<value name="16K_PIXEL" value="14"/>
153bf215546Sopenharmony_ci	</enum>
154bf215546Sopenharmony_ci
155bf215546Sopenharmony_ci	<enum name="SOURCE_FORMAT">
156bf215546Sopenharmony_ci		<value name="F16_PER_CHANNEL" value="0"/>
157bf215546Sopenharmony_ci		<value name="8_PER_CHANNEL"   value="1"/>
158bf215546Sopenharmony_ci	</enum>
159bf215546Sopenharmony_ci
160bf215546Sopenharmony_ci	<enum name="SOURCE_POS">
161bf215546Sopenharmony_ci		<value name="START_BIT0"  value="0"/>
162bf215546Sopenharmony_ci		<value name="START_BIT32" value="1"/>
163bf215546Sopenharmony_ci		<value name="START_BIT64" value="2"/>
164bf215546Sopenharmony_ci		<value name="START_BIT96" value="3"/>
165bf215546Sopenharmony_ci	</enum>
166bf215546Sopenharmony_ci
167bf215546Sopenharmony_ci	<enum name="SWIZ">
168bf215546Sopenharmony_ci		<value name="SOURCE_CHAN0" value="0"/>
169bf215546Sopenharmony_ci		<value name="SOURCE_CHAN1" value="1"/>
170bf215546Sopenharmony_ci		<value name="SOURCE_CHAN2" value="2"/>
171bf215546Sopenharmony_ci		<value name="SOURCE_CHAN3" value="3"/>
172bf215546Sopenharmony_ci		<value name="ONE"          value="4"/>
173bf215546Sopenharmony_ci		<value name="ZERO"         value="5"/>
174bf215546Sopenharmony_ci	</enum>
175bf215546Sopenharmony_ci
176bf215546Sopenharmony_ci	<enum name="TFBC_LOSSY">
177bf215546Sopenharmony_ci		<value name="LOSSLESS" value="0"/>
178bf215546Sopenharmony_ci		<value name="LOSSY75"  value="1"/>
179bf215546Sopenharmony_ci		<value name="LOSSY50"  value="2"/>
180bf215546Sopenharmony_ci		<value name="LOSSY25"  value="3"/>
181bf215546Sopenharmony_ci	</enum>
182bf215546Sopenharmony_ci
183bf215546Sopenharmony_ci	<enum name="TWOCOMP_GAMMA">
184bf215546Sopenharmony_ci		<value name="GAMMA_BOTTOM_CHANNEL" value="0"/>
185bf215546Sopenharmony_ci		<value name="GAMMA_BOTH_CHANNELS"  value="1"/>
186bf215546Sopenharmony_ci	</enum>
187bf215546Sopenharmony_ci
188bf215546Sopenharmony_ci	<enum name="Y_FLIP">
189bf215546Sopenharmony_ci		<value name="DISABLED" value="0"/>
190bf215546Sopenharmony_ci		<value name="ENABLED"  value="1"/>
191bf215546Sopenharmony_ci	</enum>
192bf215546Sopenharmony_ci
193bf215546Sopenharmony_ci	<enum name="YUV_DOWNSCALE">
194bf215546Sopenharmony_ci		<value name="NO_DOWNSCALING"   value="0"/>
195bf215546Sopenharmony_ci		<value name="ONE_SAMPLE_LEFT"  value="1"/>
196bf215546Sopenharmony_ci		<value name="EMPTY"            value="2"/>
197bf215546Sopenharmony_ci		<value name="TWO_SAMPLES"      value="3"/>
198bf215546Sopenharmony_ci		<value name="FOUR_SAMPLES"     value="4"/>
199bf215546Sopenharmony_ci		<value name="ONE_SAMPLE_RIGHT" value="5"/>
200bf215546Sopenharmony_ci	</enum>
201bf215546Sopenharmony_ci
202bf215546Sopenharmony_ci	<enum name="YUV_PMODE">
203bf215546Sopenharmony_ci		<value name="UV8_420_2PLANE"   value="0"/>
204bf215546Sopenharmony_ci		<value name="U8_420_3PLANE"    value="1"/>
205bf215546Sopenharmony_ci		<value name="V8_420_3PLANE"    value="2"/>
206bf215546Sopenharmony_ci		<value name="YUV8_422_1PLANE"  value="3"/>
207bf215546Sopenharmony_ci		<value name="UV8_422_2PLANE"   value="4"/>
208bf215546Sopenharmony_ci		<value name="UV8_444_2PLANE"   value="5"/>
209bf215546Sopenharmony_ci		<value name="Y8_23PLANE"       value="6"/>
210bf215546Sopenharmony_ci		<value name="U8_444_3PLANE"    value="7"/>
211bf215546Sopenharmony_ci		<value name="V8_444_3PLANE"    value="8"/>
212bf215546Sopenharmony_ci		<value name="YUV10_444_1PLANE" value="9"/>
213bf215546Sopenharmony_ci		<value name="RESERVED_YUV1"    value="10"/>
214bf215546Sopenharmony_ci		<value name="RESERVED_YUV2"    value="11"/>
215bf215546Sopenharmony_ci		<value name="YUV10_422_1PLANE" value="12"/>
216bf215546Sopenharmony_ci		<value name="UV10_420_2PLANE"  value="13"/>
217bf215546Sopenharmony_ci		<value name="Y10_23PLANE"      value="14"/>
218bf215546Sopenharmony_ci		<value name="UV16_420_2PLANE"  value="15"/>
219bf215546Sopenharmony_ci		<value name="UV16_422_2PLANE"  value="16"/>
220bf215546Sopenharmony_ci		<value name="UV16_444_2PLANE"  value="17"/>
221bf215546Sopenharmony_ci		<value name="Y16_23PLANE"      value="18"/>
222bf215546Sopenharmony_ci		<value name="U16_444_3PLANE"   value="19"/>
223bf215546Sopenharmony_ci		<value name="V16_444_3PLANE"   value="20"/>
224bf215546Sopenharmony_ci	</enum>
225bf215546Sopenharmony_ci
226bf215546Sopenharmony_ci	<struct name="STATE_WORD0" length="1">
227bf215546Sopenharmony_ci		<field name="address_low" start="0" end="31" shift="2" type="address"/>
228bf215546Sopenharmony_ci	</struct>
229bf215546Sopenharmony_ci
230bf215546Sopenharmony_ci	<struct name="STATE_WORD1" length="1">
231bf215546Sopenharmony_ci		<condition type="if" check="8_OUTPUT_REGISTERS"/>
232bf215546Sopenharmony_ci			<field name="source_pos_offset_128" start="28" end="28" type="bool"/>
233bf215546Sopenharmony_ci		<condition type="endif" check="8_OUTPUT_REGISTERS"/>
234bf215546Sopenharmony_ci		<field name="yuv_pmode" start="23" end="27" type="YUV_PMODE"/>
235bf215546Sopenharmony_ci		<field name="yuv_downscale" start="20" end="22" type="YUV_DOWNSCALE"/>
236bf215546Sopenharmony_ci		<field name="source_format" start="19" end="19" type="SOURCE_FORMAT"/>
237bf215546Sopenharmony_ci		<field name="mrt_index" start="16" end="18" type="uint"/>
238bf215546Sopenharmony_ci		<field name="source_pos" start="14" end="15" type="SOURCE_POS"/>
239bf215546Sopenharmony_ci		<field name="norm" start="13" end="13" type="bool"/>
240bf215546Sopenharmony_ci		<field name="packmode" start="7" end="12" type="PACKMODE"/>
241bf215546Sopenharmony_ci		<field name="emptytile" start="6" end="6" type="bool"/>
242bf215546Sopenharmony_ci		<field name="address_high" start="0" end="5" shift="34" type="address"/>
243bf215546Sopenharmony_ci	</struct>
244bf215546Sopenharmony_ci
245bf215546Sopenharmony_ci	<struct name="REG_WORD0" length="2">
246bf215546Sopenharmony_ci		<field name="tfbc_lossy" start="62" end="63" type="TFBC_LOSSY">
247bf215546Sopenharmony_ci			<define name="LOSSY37_75_TFBC_LOSSY_37_PERCENT_ENABLED" value="1"/>
248bf215546Sopenharmony_ci		</field>
249bf215546Sopenharmony_ci		<field name="lossy" start="62" end="62" type="LOSSY"/>
250bf215546Sopenharmony_ci		<field name="compress_size_ext" start="61" end="61" type="COMPRESS_SIZE_EXT"/>
251bf215546Sopenharmony_ci		<field name="comp_iaddr_mode" start="60" end="60" type="COMP_IADDR_TYPE"/>
252bf215546Sopenharmony_ci		<field name="comp_cor_enable" start="59" end="59" type="bool"/>
253bf215546Sopenharmony_ci		<field name="dither" start="58" end="58" type="bool"/>
254bf215546Sopenharmony_ci		<field name="tilerelative" start="57" end="57" type="bool"/>
255bf215546Sopenharmony_ci		<field name="downscale" start="56" end="56" type="bool"/>
256bf215546Sopenharmony_ci		<field name="size_z" start="52" end="55" type="SIZE"/>
257bf215546Sopenharmony_ci		<field name="rotation" start="50" end="51" type="ROTATION_TYPE"/>
258bf215546Sopenharmony_ci		<field name="linestride" start="34" end="49" type="uint">
259bf215546Sopenharmony_ci			<!-- FIXME: When pbe_stride_align_1pixel is present, this should be 1. -->
260bf215546Sopenharmony_ci			<define name="UNIT_SIZE" value="2"/>
261bf215546Sopenharmony_ci		</field>
262bf215546Sopenharmony_ci		<field name="memlayout" start="32" end="33" type="MEMLAYOUT"/>
263bf215546Sopenharmony_ci		<field name="swiz_chan3" start="29" end="31" type="SWIZ"/>
264bf215546Sopenharmony_ci		<field name="swiz_chan2" start="26" end="28" type="SWIZ"/>
265bf215546Sopenharmony_ci		<field name="swiz_chan1" start="23" end="25" type="SWIZ"/>
266bf215546Sopenharmony_ci		<field name="swiz_chan0" start="20" end="22" type="SWIZ"/>
267bf215546Sopenharmony_ci		<field name="minclip_x" start="6" end="19" type="uint"/>
268bf215546Sopenharmony_ci		<field name="twocomp_gamma" start="5" end="5" type="TWOCOMP_GAMMA"/>
269bf215546Sopenharmony_ci		<field name="gamma" start="4" end="4" type="bool"/>
270bf215546Sopenharmony_ci		<field name="compression" start="3" end="3" type="COMPRESSION"/>
271bf215546Sopenharmony_ci		<field name="compress_size" start="2" end="2" type="COMPRESS_SIZE"/>
272bf215546Sopenharmony_ci		<field name="comp_indirect_table" start="1" end="1" type="bool"/>
273bf215546Sopenharmony_ci		<field name="y_flip" start="0" end="0" type="Y_FLIP"/>
274bf215546Sopenharmony_ci	</struct>
275bf215546Sopenharmony_ci
276bf215546Sopenharmony_ci	<struct name="REG_WORD1" length="2">
277bf215546Sopenharmony_ci		<field name="size_x" start="60" end="63" type="SIZE"/>
278bf215546Sopenharmony_ci		<field name="minclip_y" start="46" end="59" type="uint"/>
279bf215546Sopenharmony_ci		<field name="maxclip_x" start="32" end="45" type="uint"/>
280bf215546Sopenharmony_ci		<field name="size_y" start="28" end="31" type="SIZE"/>
281bf215546Sopenharmony_ci		<field name="zslice" start="14" end="27" type="uint"/>
282bf215546Sopenharmony_ci		<field name="maxclip_y" start="0" end="13" type="uint"/>
283bf215546Sopenharmony_ci	</struct>
284bf215546Sopenharmony_ci
285bf215546Sopenharmony_ci	<struct name="REG_WORD2" length="2">
286bf215546Sopenharmony_ci		<field name="pair_tiles" start="46" end="46" type="PAIR_TILES">
287bf215546Sopenharmony_ci			<!-- TODO: Do we need this? -->
288bf215546Sopenharmony_ci			<define name="SHIFT" value="46"/>
289bf215546Sopenharmony_ci		</field>
290bf215546Sopenharmony_ci		<field name="surface_y_size" start="32" end="45" type="uint"/>
291bf215546Sopenharmony_ci		<field name="sw_bytemask" start="0" end="31" type="uint"/>
292bf215546Sopenharmony_ci	</struct>
293bf215546Sopenharmony_ci
294bf215546Sopenharmony_ci</csbgen>
295