@@ -294,16 +294,30 @@ void iris_get_internal_buffers(struct iris_inst *inst, u32 plane)
294294 const u32 * internal_buf_type ;
295295 u32 internal_buffer_count , i ;
296296
297- if (V4L2_TYPE_IS_OUTPUT (plane )) {
298- internal_buf_type = platform_data -> dec_ip_int_buf_tbl ;
299- internal_buffer_count = platform_data -> dec_ip_int_buf_tbl_size ;
300- for (i = 0 ; i < internal_buffer_count ; i ++ )
301- iris_fill_internal_buf_info (inst , internal_buf_type [i ]);
297+ if (inst -> domain == DECODER ) {
298+ if (V4L2_TYPE_IS_OUTPUT (plane )) {
299+ internal_buf_type = platform_data -> dec_ip_int_buf_tbl ;
300+ internal_buffer_count = platform_data -> dec_ip_int_buf_tbl_size ;
301+ for (i = 0 ; i < internal_buffer_count ; i ++ )
302+ iris_fill_internal_buf_info (inst , internal_buf_type [i ]);
303+ } else {
304+ internal_buf_type = platform_data -> dec_op_int_buf_tbl ;
305+ internal_buffer_count = platform_data -> dec_op_int_buf_tbl_size ;
306+ for (i = 0 ; i < internal_buffer_count ; i ++ )
307+ iris_fill_internal_buf_info (inst , internal_buf_type [i ]);
308+ }
302309 } else {
303- internal_buf_type = platform_data -> dec_op_int_buf_tbl ;
304- internal_buffer_count = platform_data -> dec_op_int_buf_tbl_size ;
305- for (i = 0 ; i < internal_buffer_count ; i ++ )
306- iris_fill_internal_buf_info (inst , internal_buf_type [i ]);
310+ if (V4L2_TYPE_IS_OUTPUT (plane )) {
311+ internal_buf_type = platform_data -> enc_ip_int_buf_tbl ;
312+ internal_buffer_count = platform_data -> enc_ip_int_buf_tbl_size ;
313+ for (i = 0 ; i < internal_buffer_count ; i ++ )
314+ iris_fill_internal_buf_info (inst , internal_buf_type [i ]);
315+ } else {
316+ internal_buf_type = platform_data -> enc_op_int_buf_tbl ;
317+ internal_buffer_count = platform_data -> enc_op_int_buf_tbl_size ;
318+ for (i = 0 ; i < internal_buffer_count ; i ++ )
319+ iris_fill_internal_buf_info (inst , internal_buf_type [i ]);
320+ }
307321 }
308322}
309323
@@ -344,12 +358,22 @@ int iris_create_internal_buffers(struct iris_inst *inst, u32 plane)
344358 const u32 * internal_buf_type ;
345359 int ret ;
346360
347- if (V4L2_TYPE_IS_OUTPUT (plane )) {
348- internal_buf_type = platform_data -> dec_ip_int_buf_tbl ;
349- internal_buffer_count = platform_data -> dec_ip_int_buf_tbl_size ;
361+ if (inst -> domain == DECODER ) {
362+ if (V4L2_TYPE_IS_OUTPUT (plane )) {
363+ internal_buf_type = platform_data -> dec_ip_int_buf_tbl ;
364+ internal_buffer_count = platform_data -> dec_ip_int_buf_tbl_size ;
365+ } else {
366+ internal_buf_type = platform_data -> dec_op_int_buf_tbl ;
367+ internal_buffer_count = platform_data -> dec_op_int_buf_tbl_size ;
368+ }
350369 } else {
351- internal_buf_type = platform_data -> dec_op_int_buf_tbl ;
352- internal_buffer_count = platform_data -> dec_op_int_buf_tbl_size ;
370+ if (V4L2_TYPE_IS_OUTPUT (plane )) {
371+ internal_buf_type = platform_data -> enc_ip_int_buf_tbl ;
372+ internal_buffer_count = platform_data -> enc_ip_int_buf_tbl_size ;
373+ } else {
374+ internal_buf_type = platform_data -> enc_op_int_buf_tbl ;
375+ internal_buffer_count = platform_data -> enc_op_int_buf_tbl_size ;
376+ }
353377 }
354378
355379 for (i = 0 ; i < internal_buffer_count ; i ++ ) {
@@ -411,12 +435,22 @@ int iris_queue_internal_buffers(struct iris_inst *inst, u32 plane)
411435 u32 internal_buffer_count , i ;
412436 int ret ;
413437
414- if (V4L2_TYPE_IS_OUTPUT (plane )) {
415- internal_buf_type = platform_data -> dec_ip_int_buf_tbl ;
416- internal_buffer_count = platform_data -> dec_ip_int_buf_tbl_size ;
438+ if (inst -> domain == DECODER ) {
439+ if (V4L2_TYPE_IS_OUTPUT (plane )) {
440+ internal_buf_type = platform_data -> dec_ip_int_buf_tbl ;
441+ internal_buffer_count = platform_data -> dec_ip_int_buf_tbl_size ;
442+ } else {
443+ internal_buf_type = platform_data -> dec_op_int_buf_tbl ;
444+ internal_buffer_count = platform_data -> dec_op_int_buf_tbl_size ;
445+ }
417446 } else {
418- internal_buf_type = platform_data -> dec_op_int_buf_tbl ;
419- internal_buffer_count = platform_data -> dec_op_int_buf_tbl_size ;
447+ if (V4L2_TYPE_IS_OUTPUT (plane )) {
448+ internal_buf_type = platform_data -> enc_ip_int_buf_tbl ;
449+ internal_buffer_count = platform_data -> enc_ip_int_buf_tbl_size ;
450+ } else {
451+ internal_buf_type = platform_data -> enc_op_int_buf_tbl ;
452+ internal_buffer_count = platform_data -> enc_op_int_buf_tbl_size ;
453+ }
420454 }
421455
422456 for (i = 0 ; i < internal_buffer_count ; i ++ ) {
@@ -460,12 +494,22 @@ static int iris_destroy_internal_buffers(struct iris_inst *inst, u32 plane, bool
460494 u32 i , len ;
461495 int ret ;
462496
463- if (V4L2_TYPE_IS_OUTPUT (plane )) {
464- internal_buf_type = platform_data -> dec_ip_int_buf_tbl ;
465- len = platform_data -> dec_ip_int_buf_tbl_size ;
497+ if (inst -> domain == DECODER ) {
498+ if (V4L2_TYPE_IS_OUTPUT (plane )) {
499+ internal_buf_type = platform_data -> dec_ip_int_buf_tbl ;
500+ len = platform_data -> dec_ip_int_buf_tbl_size ;
501+ } else {
502+ internal_buf_type = platform_data -> dec_op_int_buf_tbl ;
503+ len = platform_data -> dec_op_int_buf_tbl_size ;
504+ }
466505 } else {
467- internal_buf_type = platform_data -> dec_op_int_buf_tbl ;
468- len = platform_data -> dec_op_int_buf_tbl_size ;
506+ if (V4L2_TYPE_IS_OUTPUT (plane )) {
507+ internal_buf_type = platform_data -> enc_ip_int_buf_tbl ;
508+ len = platform_data -> enc_ip_int_buf_tbl_size ;
509+ } else {
510+ internal_buf_type = platform_data -> enc_op_int_buf_tbl ;
511+ len = platform_data -> enc_op_int_buf_tbl_size ;
512+ }
469513 }
470514
471515 for (i = 0 ; i < len ; i ++ ) {
@@ -486,7 +530,10 @@ static int iris_destroy_internal_buffers(struct iris_inst *inst, u32 plane, bool
486530 }
487531
488532 if (force ) {
489- buffers = & inst -> buffers [BUF_PERSIST ];
533+ if (inst -> domain == DECODER )
534+ buffers = & inst -> buffers [BUF_PERSIST ];
535+ else
536+ buffers = & inst -> buffers [BUF_ARP ];
490537
491538 list_for_each_entry_safe (buf , next , & buffers -> list , list ) {
492539 ret = iris_destroy_internal_buffer (inst , buf );
@@ -537,8 +584,13 @@ static int iris_release_input_internal_buffers(struct iris_inst *inst)
537584 u32 internal_buffer_count , i ;
538585 int ret ;
539586
540- internal_buf_type = platform_data -> dec_ip_int_buf_tbl ;
541- internal_buffer_count = platform_data -> dec_ip_int_buf_tbl_size ;
587+ if (inst -> domain == DECODER ) {
588+ internal_buf_type = platform_data -> dec_ip_int_buf_tbl ;
589+ internal_buffer_count = platform_data -> dec_ip_int_buf_tbl_size ;
590+ } else {
591+ internal_buf_type = platform_data -> enc_ip_int_buf_tbl ;
592+ internal_buffer_count = platform_data -> enc_ip_int_buf_tbl_size ;
593+ }
542594
543595 for (i = 0 ; i < internal_buffer_count ; i ++ ) {
544596 ret = iris_release_internal_buffers (inst , internal_buf_type [i ]);
@@ -549,20 +601,20 @@ static int iris_release_input_internal_buffers(struct iris_inst *inst)
549601 return 0 ;
550602}
551603
552- int iris_alloc_and_queue_persist_bufs (struct iris_inst * inst )
604+ int iris_alloc_and_queue_persist_bufs (struct iris_inst * inst , enum iris_buffer_type buffer_type )
553605{
554- struct iris_buffers * buffers = & inst -> buffers [BUF_PERSIST ];
606+ struct iris_buffers * buffers = & inst -> buffers [buffer_type ];
555607 struct iris_buffer * buffer , * next ;
556608 int ret ;
557609 u32 i ;
558610
559611 if (!list_empty (& buffers -> list ))
560612 return 0 ;
561613
562- iris_fill_internal_buf_info (inst , BUF_PERSIST );
614+ iris_fill_internal_buf_info (inst , buffer_type );
563615
564616 for (i = 0 ; i < buffers -> min_count ; i ++ ) {
565- ret = iris_create_internal_buffer (inst , BUF_PERSIST , i );
617+ ret = iris_create_internal_buffer (inst , buffer_type , i );
566618 if (ret )
567619 return ret ;
568620 }
0 commit comments