@@ -83,7 +83,7 @@ int rkisp_rockit_buf_queue(struct rockit_cfg *input_rockit_cfg)
83
83
struct rkisp_rockit_buffer * isprk_buf = NULL ;
84
84
struct rkisp_device * ispdev = NULL ;
85
85
const struct vb2_mem_ops * g_ops = NULL ;
86
- int i , ret , height , offset ;
86
+ int i , ret , height , offset , dev_id ;
87
87
struct rkisp_stream_cfg * stream_cfg = NULL ;
88
88
void * mem = NULL ;
89
89
struct sg_table * sg_tbl ;
@@ -96,22 +96,27 @@ int rkisp_rockit_buf_queue(struct rockit_cfg *input_rockit_cfg)
96
96
return - EINVAL ;
97
97
}
98
98
99
- stream_cfg = & rockit_cfg -> rkisp_stream_cfg [stream -> id ];
99
+ dev_id = stream -> ispdev -> dev_id ;
100
+ ispdev = stream -> ispdev ;
101
+ g_ops = ispdev -> hw_dev -> mem_ops ;
100
102
101
- for (i = 0 ; i < ROCKIT_BUF_NUM_MAX ; i ++ ) {
102
- if (stream_cfg -> buff_id [i ] == input_rockit_cfg -> mpi_id ) {
103
- input_rockit_cfg -> is_alloc = 0 ;
104
- break ;
105
- }
103
+ if (!rockit_cfg -> rkisp_dev_cfg [dev_id ].rkisp_stream_cfg [stream -> id ]) {
104
+ rockit_cfg -> rkisp_dev_cfg [dev_id ].rkisp_stream_cfg [stream -> id ] =
105
+ kzalloc (sizeof (struct rkisp_stream_cfg ), GFP_KERNEL );
106
106
}
107
107
108
+ stream_cfg = rockit_cfg -> rkisp_dev_cfg [dev_id ].rkisp_stream_cfg [stream -> id ];
108
109
stream_cfg -> node = input_rockit_cfg -> node ;
109
110
110
111
if (!input_rockit_cfg -> buf )
111
112
return - EINVAL ;
112
113
113
- ispdev = stream -> ispdev ;
114
- g_ops = ispdev -> hw_dev -> mem_ops ;
114
+ for (i = 0 ; i < ROCKIT_BUF_NUM_MAX ; i ++ ) {
115
+ if (stream_cfg -> buff_id [i ] == input_rockit_cfg -> mpi_id ) {
116
+ input_rockit_cfg -> is_alloc = 0 ;
117
+ break ;
118
+ }
119
+ }
115
120
116
121
if (input_rockit_cfg -> is_alloc ) {
117
122
for (i = 0 ; i < ROCKIT_BUF_NUM_MAX ; i ++ ) {
@@ -202,10 +207,12 @@ int rkisp_rockit_buf_done(struct rkisp_stream *stream, int cmd)
202
207
{
203
208
struct rkisp_device * dev = stream -> ispdev ;
204
209
struct rkisp_rockit_buffer * isprk_buf = NULL ;
205
- struct rkisp_stream_cfg * stream_cfg = & rockit_cfg -> rkisp_stream_cfg [ stream -> id ] ;
206
- u32 seq ;
210
+ struct rkisp_stream_cfg * stream_cfg = NULL ;
211
+ u32 seq , dev_id = stream -> ispdev -> dev_id ;
207
212
u64 ns = 0 ;
208
213
214
+ stream_cfg = rockit_cfg -> rkisp_dev_cfg [dev_id ].rkisp_stream_cfg [stream -> id ];
215
+
209
216
if (!rockit_cfg -> rkisp_rockit_mpibuf_done )
210
217
return - EINVAL ;
211
218
@@ -367,23 +374,25 @@ EXPORT_SYMBOL(rkisp_rockit_resume_stream);
367
374
int rkisp_rockit_buf_free (struct rkisp_stream * stream )
368
375
{
369
376
struct rkisp_rockit_buffer * isprk_buf = NULL ;
370
- int i = 0 ;
377
+ u32 i = 0 , dev_id = stream -> ispdev -> dev_id ;
371
378
const struct vb2_mem_ops * g_ops = stream -> ispdev -> hw_dev -> mem_ops ;
372
- struct rkisp_stream_cfg * stream_cfg = & rockit_cfg -> rkisp_stream_cfg [stream -> id ];
373
-
374
- stream_cfg -> is_discard = false;
379
+ struct rkisp_stream_cfg * stream_cfg = NULL ;
375
380
376
- for (i = 0 ; i < ROCKIT_BUF_NUM_MAX ; i ++ ) {
377
- if (stream_cfg -> rkisp_buff [i ]) {
378
- isprk_buf = (struct rkisp_rockit_buffer * )stream_cfg -> rkisp_buff [i ];
379
- if (isprk_buf -> mpi_mem ) {
380
- g_ops -> unmap_dmabuf (isprk_buf -> mpi_mem );
381
- g_ops -> detach_dmabuf (isprk_buf -> mpi_mem );
382
- dma_buf_put (isprk_buf -> dmabuf );
381
+ stream_cfg = rockit_cfg -> rkisp_dev_cfg [dev_id ].rkisp_stream_cfg [stream -> id ];
382
+ if (stream_cfg ) {
383
+ stream_cfg -> is_discard = false;
384
+ for (i = 0 ; i < ROCKIT_BUF_NUM_MAX ; i ++ ) {
385
+ if (stream_cfg -> rkisp_buff [i ]) {
386
+ isprk_buf = (struct rkisp_rockit_buffer * )stream_cfg -> rkisp_buff [i ];
387
+ if (isprk_buf -> mpi_mem ) {
388
+ g_ops -> unmap_dmabuf (isprk_buf -> mpi_mem );
389
+ g_ops -> detach_dmabuf (isprk_buf -> mpi_mem );
390
+ dma_buf_put (isprk_buf -> dmabuf );
391
+ }
392
+ kfree (stream_cfg -> rkisp_buff [i ]);
393
+ stream_cfg -> rkisp_buff [i ] = NULL ;
394
+ stream_cfg -> buff_id [i ] = 0 ;
383
395
}
384
- kfree (stream_cfg -> rkisp_buff [i ]);
385
- stream_cfg -> rkisp_buff [i ] = NULL ;
386
- stream_cfg -> buff_id [i ] = 0 ;
387
396
}
388
397
}
389
398
return 0 ;
@@ -409,9 +418,12 @@ void rkisp_rockit_dev_init(struct rkisp_device *dev)
409
418
}
410
419
}
411
420
412
- void rkisp_rockit_fps_set (int * dst_fps , unsigned int id )
421
+ void rkisp_rockit_fps_set (int * dst_fps , struct rkisp_stream * stream )
413
422
{
414
- if (id >= ROCKIT_STREAM_NUM_MAX ) {
423
+ int dev_id = stream -> ispdev -> dev_id ;
424
+ int id = stream -> id ;
425
+
426
+ if (stream -> id >= ROCKIT_STREAM_NUM_MAX ) {
415
427
pr_err ("fps_set stream id %u exceeds maximum\n" , id );
416
428
return ;
417
429
}
@@ -421,12 +433,15 @@ void rkisp_rockit_fps_set(int *dst_fps, unsigned int id)
421
433
return ;
422
434
}
423
435
424
- rockit_cfg -> rkisp_stream_cfg [id ]. dst_fps = * dst_fps ;
425
- rockit_cfg -> rkisp_stream_cfg [id ]. fps_cnt = * dst_fps ;
436
+ rockit_cfg -> rkisp_dev_cfg [ dev_id ]. rkisp_stream_cfg [id ]-> dst_fps = * dst_fps ;
437
+ rockit_cfg -> rkisp_dev_cfg [ dev_id ]. rkisp_stream_cfg [id ]-> fps_cnt = * dst_fps ;
426
438
}
427
439
428
- void rkisp_rockit_fps_get (int * dst_fps , unsigned int id )
440
+ void rkisp_rockit_fps_get (int * dst_fps , struct rkisp_stream * stream )
429
441
{
442
+ int dev_id = stream -> ispdev -> dev_id ;
443
+ int id = stream -> id ;
444
+
430
445
if (id >= ROCKIT_STREAM_NUM_MAX ) {
431
446
pr_err ("fps_get stream id %u exceeds maximum\n" , id );
432
447
return ;
@@ -437,21 +452,24 @@ void rkisp_rockit_fps_get(int *dst_fps, unsigned int id)
437
452
return ;
438
453
}
439
454
440
- * dst_fps = rockit_cfg -> rkisp_stream_cfg [id ]. cur_fps ;
455
+ * dst_fps = rockit_cfg -> rkisp_dev_cfg [ dev_id ]. rkisp_stream_cfg [id ]-> cur_fps ;
441
456
}
442
457
443
458
bool rkisp_rockit_ctrl_fps (struct rkisp_stream * stream )
444
459
{
445
460
struct rkisp_device * dev = stream -> ispdev ;
446
461
struct rkisp_sensor_info * sensor = NULL ;
447
- int * fps_cnt = & rockit_cfg -> rkisp_stream_cfg [stream -> id ].fps_cnt ;
462
+ int dev_id = stream -> ispdev -> dev_id , id = stream -> id ;
463
+ struct rkisp_stream_cfg * stream_cfg =
464
+ rockit_cfg -> rkisp_dev_cfg [dev_id ].rkisp_stream_cfg [id ];
465
+ int * fps_cnt = & stream_cfg -> fps_cnt ;
448
466
int ret , dst_fps ;
449
467
static int fps_in , cur_fps [ROCKIT_STREAM_NUM_MAX ];
450
468
u32 denominator = 0 , numerator = 0 ;
451
- bool * is_discard = & rockit_cfg -> rkisp_stream_cfg [ stream -> id ]. is_discard ;
452
- u64 cur_time , * old_time = & rockit_cfg -> rkisp_stream_cfg [ stream -> id ]. old_time ;
469
+ bool * is_discard = & stream_cfg -> is_discard ;
470
+ u64 cur_time , * old_time = & stream_cfg -> old_time ;
453
471
454
- dst_fps = rockit_cfg -> rkisp_stream_cfg [ stream -> id ]. dst_fps ;
472
+ dst_fps = stream_cfg -> dst_fps ;
455
473
if (dst_fps == 0 || !stream -> streaming ) {
456
474
* is_discard = false;
457
475
return false;
@@ -495,8 +513,7 @@ bool rkisp_rockit_ctrl_fps(struct rkisp_stream *stream)
495
513
cur_time = ktime_get_ns ();
496
514
if (cur_time - * old_time >= 1000000000 ) {
497
515
* old_time = cur_time ;
498
- rockit_cfg -> rkisp_stream_cfg [stream -> id ].cur_fps =
499
- cur_fps [stream -> id ];
516
+ stream_cfg -> cur_fps = cur_fps [stream -> id ];
500
517
cur_fps [stream -> id ] = 0 ;
501
518
}
502
519
}
0 commit comments