@@ -168,10 +168,10 @@ int intel_guc_ct_init(struct intel_guc_ct *ct)
168168 struct intel_guc * guc = ct_to_guc (ct );
169169 struct guc_ct_buffer_desc * desc ;
170170 u32 blob_size ;
171+ u32 cmds_size ;
171172 void * blob ;
172173 u32 * cmds ;
173174 int err ;
174- int i ;
175175
176176 GEM_BUG_ON (ct -> vma );
177177
@@ -207,15 +207,23 @@ int intel_guc_ct_init(struct intel_guc_ct *ct)
207207
208208 CT_DEBUG (ct , "base=%#x size=%u\n" , intel_guc_ggtt_offset (guc , ct -> vma ), blob_size );
209209
210- /* store pointers to desc and cmds */
211- for (i = 0 ; i < ARRAY_SIZE (ct -> ctbs ); i ++ ) {
212- GEM_BUG_ON ((i != CTB_SEND ) && (i != CTB_RECV ));
210+ /* store pointers to desc and cmds for send ctb */
211+ desc = blob ;
212+ cmds = blob + PAGE_SIZE / 2 ;
213+ cmds_size = PAGE_SIZE / 4 ;
214+ CT_DEBUG (ct , "%s desc %#tx cmds %#tx size %u\n" , "send" ,
215+ ptrdiff (desc , blob ), ptrdiff (cmds , blob ), cmds_size );
213216
214- desc = blob + PAGE_SIZE / 4 * i ;
215- cmds = blob + PAGE_SIZE / 4 * i + PAGE_SIZE / 2 ;
217+ guc_ct_buffer_init (& ct -> ctbs .send , desc , cmds , cmds_size );
216218
217- guc_ct_buffer_init (& ct -> ctbs [i ], desc , cmds , PAGE_SIZE / 4 );
218- }
219+ /* store pointers to desc and cmds for recv ctb */
220+ desc = blob + PAGE_SIZE / 4 ;
221+ cmds = blob + PAGE_SIZE / 4 + PAGE_SIZE / 2 ;
222+ cmds_size = PAGE_SIZE / 4 ;
223+ CT_DEBUG (ct , "%s desc %#tx cmds %#tx size %u\n" , "recv" ,
224+ ptrdiff (desc , blob ), ptrdiff (cmds , blob ), cmds_size );
225+
226+ guc_ct_buffer_init (& ct -> ctbs .recv , desc , cmds , cmds_size );
219227
220228 return 0 ;
221229}
@@ -246,7 +254,6 @@ int intel_guc_ct_enable(struct intel_guc_ct *ct)
246254 u32 base , cmds ;
247255 void * blob ;
248256 int err ;
249- int i ;
250257
251258 GEM_BUG_ON (ct -> enabled );
252259
@@ -257,28 +264,25 @@ int intel_guc_ct_enable(struct intel_guc_ct *ct)
257264
258265 /* blob should start with send descriptor */
259266 blob = __px_vaddr (ct -> vma -> obj );
260- GEM_BUG_ON (blob != ct -> ctbs [ CTB_SEND ] .desc );
267+ GEM_BUG_ON (blob != ct -> ctbs . send .desc );
261268
262269 /* (re)initialize descriptors */
263- for ( i = 0 ; i < ARRAY_SIZE (ct -> ctbs ); i ++ ) {
264- GEM_BUG_ON (( i != CTB_SEND ) && ( i != CTB_RECV ) );
270+ cmds = base + ptrdiff (ct -> ctbs . send . cmds , blob );
271+ guc_ct_buffer_reset ( & ct -> ctbs . send , cmds );
265272
266- cmds = base + ptrdiff (ct -> ctbs [i ].cmds , blob );
267- CT_DEBUG (ct , "%d: cmds addr=%#x\n" , i , cmds );
268-
269- guc_ct_buffer_reset (& ct -> ctbs [i ], cmds );
270- }
273+ cmds = base + ptrdiff (ct -> ctbs .recv .cmds , blob );
274+ guc_ct_buffer_reset (& ct -> ctbs .recv , cmds );
271275
272276 /*
273277 * Register both CT buffers starting with RECV buffer.
274278 * Descriptors are in first half of the blob.
275279 */
276- err = ct_register_buffer (ct , base + ptrdiff (ct -> ctbs [ CTB_RECV ] .desc , blob ),
280+ err = ct_register_buffer (ct , base + ptrdiff (ct -> ctbs . recv .desc , blob ),
277281 INTEL_GUC_CT_BUFFER_TYPE_RECV );
278282 if (unlikely (err ))
279283 goto err_out ;
280284
281- err = ct_register_buffer (ct , base + ptrdiff (ct -> ctbs [ CTB_SEND ] .desc , blob ),
285+ err = ct_register_buffer (ct , base + ptrdiff (ct -> ctbs . send .desc , blob ),
282286 INTEL_GUC_CT_BUFFER_TYPE_SEND );
283287 if (unlikely (err ))
284288 goto err_deregister ;
@@ -341,7 +345,7 @@ static int ct_write(struct intel_guc_ct *ct,
341345 u32 len /* in dwords */ ,
342346 u32 fence )
343347{
344- struct intel_guc_ct_buffer * ctb = & ct -> ctbs [ CTB_SEND ] ;
348+ struct intel_guc_ct_buffer * ctb = & ct -> ctbs . send ;
345349 struct guc_ct_buffer_desc * desc = ctb -> desc ;
346350 u32 head = desc -> head ;
347351 u32 tail = desc -> tail ;
@@ -557,7 +561,7 @@ static inline bool ct_header_is_response(u32 header)
557561
558562static int ct_read (struct intel_guc_ct * ct , u32 * data )
559563{
560- struct intel_guc_ct_buffer * ctb = & ct -> ctbs [ CTB_RECV ] ;
564+ struct intel_guc_ct_buffer * ctb = & ct -> ctbs . recv ;
561565 struct guc_ct_buffer_desc * desc = ctb -> desc ;
562566 u32 head = desc -> head ;
563567 u32 tail = desc -> tail ;
0 commit comments