@@ -128,7 +128,6 @@ struct mei_csi {
128
128
int streaming ;
129
129
130
130
struct media_pad pads [CSI_NUM_PADS ];
131
- struct v4l2_mbus_framefmt format_mbus [CSI_NUM_PADS ];
132
131
133
132
/* number of data lanes used on the CSI-2 link */
134
133
u32 nr_of_lanes ;
@@ -329,79 +328,35 @@ static int mei_csi_set_stream(struct v4l2_subdev *sd, int enable)
329
328
return ret ;
330
329
}
331
330
332
- static struct v4l2_mbus_framefmt *
333
- mei_csi_get_pad_format (struct v4l2_subdev * sd ,
334
- struct v4l2_subdev_state * sd_state ,
335
- unsigned int pad , u32 which )
336
- {
337
- struct mei_csi * csi = sd_to_csi (sd );
338
-
339
- switch (which ) {
340
- case V4L2_SUBDEV_FORMAT_TRY :
341
- return v4l2_subdev_state_get_format (sd_state , pad );
342
- case V4L2_SUBDEV_FORMAT_ACTIVE :
343
- return & csi -> format_mbus [pad ];
344
- default :
345
- return NULL ;
346
- }
347
- }
348
-
349
331
static int mei_csi_init_state (struct v4l2_subdev * sd ,
350
332
struct v4l2_subdev_state * sd_state )
351
333
{
352
334
struct v4l2_mbus_framefmt * mbusformat ;
353
- struct mei_csi * csi = sd_to_csi (sd );
354
335
unsigned int i ;
355
336
356
- mutex_lock (& csi -> lock );
357
-
358
337
for (i = 0 ; i < sd -> entity .num_pads ; i ++ ) {
359
338
mbusformat = v4l2_subdev_state_get_format (sd_state , i );
360
339
* mbusformat = mei_csi_format_mbus_default ;
361
340
}
362
341
363
- mutex_unlock (& csi -> lock );
364
-
365
- return 0 ;
366
- }
367
-
368
- static int mei_csi_get_fmt (struct v4l2_subdev * sd ,
369
- struct v4l2_subdev_state * sd_state ,
370
- struct v4l2_subdev_format * format )
371
- {
372
- struct v4l2_mbus_framefmt * mbusformat ;
373
- struct mei_csi * csi = sd_to_csi (sd );
374
-
375
- mutex_lock (& csi -> lock );
376
-
377
- mbusformat = mei_csi_get_pad_format (sd , sd_state , format -> pad ,
378
- format -> which );
379
- if (mbusformat )
380
- format -> format = * mbusformat ;
381
-
382
- mutex_unlock (& csi -> lock );
383
-
384
342
return 0 ;
385
343
}
386
344
387
345
static int mei_csi_set_fmt (struct v4l2_subdev * sd ,
388
346
struct v4l2_subdev_state * sd_state ,
389
347
struct v4l2_subdev_format * format )
390
348
{
391
- struct v4l2_mbus_framefmt * source_mbusformat ;
392
- struct v4l2_mbus_framefmt * mbusformat ;
393
- struct mei_csi * csi = sd_to_csi (sd );
394
- struct media_pad * pad ;
349
+ struct v4l2_mbus_framefmt * source_fmt ;
350
+ struct v4l2_mbus_framefmt * sink_fmt ;
395
351
396
- mbusformat = mei_csi_get_pad_format (sd , sd_state , format -> pad ,
397
- format -> which );
398
- if (!mbusformat )
399
- return - EINVAL ;
352
+ sink_fmt = v4l2_subdev_state_get_format (sd_state , CSI_PAD_SINK );
353
+ source_fmt = v4l2_subdev_state_get_format (sd_state , CSI_PAD_SOURCE );
400
354
401
- source_mbusformat = mei_csi_get_pad_format (sd , sd_state , CSI_PAD_SOURCE ,
402
- format -> which );
403
- if (!source_mbusformat )
404
- return - EINVAL ;
355
+ if (format -> pad ) {
356
+ * source_fmt = * sink_fmt ;
357
+
358
+ return 0 ;
359
+ }
405
360
406
361
v4l_bound_align_image (& format -> format .width , 1 , 65536 , 0 ,
407
362
& format -> format .height , 1 , 65536 , 0 , 0 );
@@ -504,18 +459,8 @@ static int mei_csi_set_fmt(struct v4l2_subdev *sd,
504
459
if (format -> format .field == V4L2_FIELD_ANY )
505
460
format -> format .field = V4L2_FIELD_NONE ;
506
461
507
- mutex_lock (& csi -> lock );
508
-
509
- pad = & csi -> pads [format -> pad ];
510
- if (pad -> flags & MEDIA_PAD_FL_SOURCE )
511
- format -> format = csi -> format_mbus [CSI_PAD_SINK ];
512
-
513
- * mbusformat = format -> format ;
514
-
515
- if (pad -> flags & MEDIA_PAD_FL_SINK )
516
- * source_mbusformat = format -> format ;
517
-
518
- mutex_unlock (& csi -> lock );
462
+ * sink_fmt = format -> format ;
463
+ * source_fmt = * sink_fmt ;
519
464
520
465
return 0 ;
521
466
}
@@ -554,7 +499,7 @@ static const struct v4l2_subdev_video_ops mei_csi_video_ops = {
554
499
};
555
500
556
501
static const struct v4l2_subdev_pad_ops mei_csi_pad_ops = {
557
- .get_fmt = mei_csi_get_fmt ,
502
+ .get_fmt = v4l2_subdev_get_fmt ,
558
503
.set_fmt = mei_csi_set_fmt ,
559
504
};
560
505
@@ -749,6 +694,7 @@ static int mei_csi_probe(struct mei_cl_device *cldev,
749
694
goto err_disable ;
750
695
751
696
csi -> subdev .dev = & cldev -> dev ;
697
+ csi -> subdev .state_lock = & csi -> lock ;
752
698
v4l2_subdev_init (& csi -> subdev , & mei_csi_subdev_ops );
753
699
csi -> subdev .internal_ops = & mei_csi_internal_ops ;
754
700
v4l2_set_subdevdata (& csi -> subdev , csi );
@@ -764,9 +710,6 @@ static int mei_csi_probe(struct mei_cl_device *cldev,
764
710
if (ret )
765
711
goto err_ctrl_handler ;
766
712
767
- csi -> format_mbus [CSI_PAD_SOURCE ] = mei_csi_format_mbus_default ;
768
- csi -> format_mbus [CSI_PAD_SINK ] = mei_csi_format_mbus_default ;
769
-
770
713
csi -> pads [CSI_PAD_SOURCE ].flags = MEDIA_PAD_FL_SOURCE ;
771
714
csi -> pads [CSI_PAD_SINK ].flags = MEDIA_PAD_FL_SINK ;
772
715
ret = media_entity_pads_init (& csi -> subdev .entity , CSI_NUM_PADS ,
0 commit comments