@@ -100,7 +100,8 @@ static int sun6i_video_queue_setup(struct vb2_queue *queue,
100100 unsigned int sizes [],
101101 struct device * alloc_devs [])
102102{
103- struct sun6i_video * video = vb2_get_drv_priv (queue );
103+ struct sun6i_csi_device * csi_dev = vb2_get_drv_priv (queue );
104+ struct sun6i_video * video = & csi_dev -> video ;
104105 unsigned int size = video -> format .fmt .pix .sizeimage ;
105106
106107 if (* planes_count )
@@ -114,8 +115,8 @@ static int sun6i_video_queue_setup(struct vb2_queue *queue,
114115
115116static int sun6i_video_buffer_prepare (struct vb2_buffer * buffer )
116117{
117- struct sun6i_video * video = vb2_get_drv_priv (buffer -> vb2_queue );
118- struct sun6i_csi_device * csi_dev = video -> csi_dev ;
118+ struct sun6i_csi_device * csi_dev = vb2_get_drv_priv (buffer -> vb2_queue );
119+ struct sun6i_video * video = & csi_dev -> video ;
119120 struct v4l2_device * v4l2_dev = & csi_dev -> v4l2 .v4l2_dev ;
120121 struct vb2_v4l2_buffer * v4l2_buffer = to_vb2_v4l2_buffer (buffer );
121122 struct sun6i_csi_buffer * csi_buffer =
@@ -138,7 +139,8 @@ static int sun6i_video_buffer_prepare(struct vb2_buffer *buffer)
138139
139140static void sun6i_video_buffer_queue (struct vb2_buffer * buffer )
140141{
141- struct sun6i_video * video = vb2_get_drv_priv (buffer -> vb2_queue );
142+ struct sun6i_csi_device * csi_dev = vb2_get_drv_priv (buffer -> vb2_queue );
143+ struct sun6i_video * video = & csi_dev -> video ;
142144 struct vb2_v4l2_buffer * v4l2_buffer = to_vb2_v4l2_buffer (buffer );
143145 struct sun6i_csi_buffer * csi_buffer =
144146 container_of (v4l2_buffer , struct sun6i_csi_buffer , v4l2_buffer );
@@ -153,7 +155,8 @@ static void sun6i_video_buffer_queue(struct vb2_buffer *buffer)
153155static int sun6i_video_start_streaming (struct vb2_queue * queue ,
154156 unsigned int count )
155157{
156- struct sun6i_video * video = vb2_get_drv_priv (queue );
158+ struct sun6i_csi_device * csi_dev = vb2_get_drv_priv (queue );
159+ struct sun6i_video * video = & csi_dev -> video ;
157160 struct video_device * video_dev = & video -> video_dev ;
158161 struct sun6i_csi_buffer * buf ;
159162 struct sun6i_csi_buffer * next_buf ;
@@ -185,7 +188,7 @@ static int sun6i_video_start_streaming(struct vb2_queue *queue,
185188 config .width = video -> format .fmt .pix .width ;
186189 config .height = video -> format .fmt .pix .height ;
187190
188- ret = sun6i_csi_update_config (video -> csi_dev , & config );
191+ ret = sun6i_csi_update_config (csi_dev , & config );
189192 if (ret < 0 )
190193 goto error_media_pipeline ;
191194
@@ -194,9 +197,9 @@ static int sun6i_video_start_streaming(struct vb2_queue *queue,
194197 buf = list_first_entry (& video -> dma_queue ,
195198 struct sun6i_csi_buffer , list );
196199 buf -> queued_to_csi = true;
197- sun6i_csi_update_buf_addr (video -> csi_dev , buf -> dma_addr );
200+ sun6i_csi_update_buf_addr (csi_dev , buf -> dma_addr );
198201
199- sun6i_csi_set_stream (video -> csi_dev , true);
202+ sun6i_csi_set_stream (csi_dev , true);
200203
201204 /*
202205 * CSI will lookup the next dma buffer for next frame before the
@@ -217,7 +220,7 @@ static int sun6i_video_start_streaming(struct vb2_queue *queue,
217220 */
218221 next_buf = list_next_entry (buf , list );
219222 next_buf -> queued_to_csi = true;
220- sun6i_csi_update_buf_addr (video -> csi_dev , next_buf -> dma_addr );
223+ sun6i_csi_update_buf_addr (csi_dev , next_buf -> dma_addr );
221224
222225 spin_unlock_irqrestore (& video -> dma_queue_lock , flags );
223226
@@ -228,7 +231,7 @@ static int sun6i_video_start_streaming(struct vb2_queue *queue,
228231 return 0 ;
229232
230233error_stream :
231- sun6i_csi_set_stream (video -> csi_dev , false);
234+ sun6i_csi_set_stream (csi_dev , false);
232235
233236error_media_pipeline :
234237 video_device_pipeline_stop (video_dev );
@@ -246,7 +249,8 @@ static int sun6i_video_start_streaming(struct vb2_queue *queue,
246249
247250static void sun6i_video_stop_streaming (struct vb2_queue * queue )
248251{
249- struct sun6i_video * video = vb2_get_drv_priv (queue );
252+ struct sun6i_csi_device * csi_dev = vb2_get_drv_priv (queue );
253+ struct sun6i_video * video = & csi_dev -> video ;
250254 struct v4l2_subdev * subdev ;
251255 unsigned long flags ;
252256 struct sun6i_csi_buffer * buf ;
@@ -255,7 +259,7 @@ static void sun6i_video_stop_streaming(struct vb2_queue *queue)
255259 if (subdev )
256260 v4l2_subdev_call (subdev , video , s_stream , 0 );
257261
258- sun6i_csi_set_stream (video -> csi_dev , false);
262+ sun6i_csi_set_stream (csi_dev , false);
259263
260264 video_device_pipeline_stop (& video -> video_dev );
261265
@@ -267,8 +271,9 @@ static void sun6i_video_stop_streaming(struct vb2_queue *queue)
267271 spin_unlock_irqrestore (& video -> dma_queue_lock , flags );
268272}
269273
270- void sun6i_video_frame_done (struct sun6i_video * video )
274+ void sun6i_video_frame_done (struct sun6i_csi_device * csi_dev )
271275{
276+ struct sun6i_video * video = & csi_dev -> video ;
272277 struct sun6i_csi_buffer * buf ;
273278 struct sun6i_csi_buffer * next_buf ;
274279 struct vb2_v4l2_buffer * v4l2_buffer ;
@@ -278,7 +283,7 @@ void sun6i_video_frame_done(struct sun6i_video *video)
278283 buf = list_first_entry (& video -> dma_queue ,
279284 struct sun6i_csi_buffer , list );
280285 if (list_is_last (& buf -> list , & video -> dma_queue )) {
281- dev_dbg (video -> csi_dev -> dev , "Frame dropped!\n" );
286+ dev_dbg (csi_dev -> dev , "Frame dropped!\n" );
282287 goto complete ;
283288 }
284289
@@ -290,8 +295,8 @@ void sun6i_video_frame_done(struct sun6i_video *video)
290295 */
291296 if (!next_buf -> queued_to_csi ) {
292297 next_buf -> queued_to_csi = true;
293- sun6i_csi_update_buf_addr (video -> csi_dev , next_buf -> dma_addr );
294- dev_dbg (video -> csi_dev -> dev , "Frame dropped!\n" );
298+ sun6i_csi_update_buf_addr (csi_dev , next_buf -> dma_addr );
299+ dev_dbg (csi_dev -> dev , "Frame dropped!\n" );
295300 goto complete ;
296301 }
297302
@@ -305,9 +310,9 @@ void sun6i_video_frame_done(struct sun6i_video *video)
305310 if (!list_is_last (& next_buf -> list , & video -> dma_queue )) {
306311 next_buf = list_next_entry (next_buf , list );
307312 next_buf -> queued_to_csi = true;
308- sun6i_csi_update_buf_addr (video -> csi_dev , next_buf -> dma_addr );
313+ sun6i_csi_update_buf_addr (csi_dev , next_buf -> dma_addr );
309314 } else {
310- dev_dbg (video -> csi_dev -> dev , "Next frame will be dropped!\n" );
315+ dev_dbg (csi_dev -> dev , "Next frame will be dropped!\n" );
311316 }
312317
313318complete :
@@ -330,9 +335,8 @@ static const struct vb2_ops sun6i_video_queue_ops = {
330335static int sun6i_video_querycap (struct file * file , void * private ,
331336 struct v4l2_capability * capability )
332337{
333- struct sun6i_video * video = video_drvdata (file );
334- struct sun6i_csi_device * csi_dev = video -> csi_dev ;
335- struct video_device * video_dev = & video -> video_dev ;
338+ struct sun6i_csi_device * csi_dev = video_drvdata (file );
339+ struct video_device * video_dev = & csi_dev -> video .video_dev ;
336340
337341 strscpy (capability -> driver , SUN6I_CSI_NAME , sizeof (capability -> driver ));
338342 strscpy (capability -> card , video_dev -> name , sizeof (capability -> card ));
@@ -358,7 +362,8 @@ static int sun6i_video_enum_fmt(struct file *file, void *private,
358362static int sun6i_video_g_fmt (struct file * file , void * private ,
359363 struct v4l2_format * format )
360364{
361- struct sun6i_video * video = video_drvdata (file );
365+ struct sun6i_csi_device * csi_dev = video_drvdata (file );
366+ struct sun6i_video * video = & csi_dev -> video ;
362367
363368 * format = video -> format ;
364369
@@ -413,7 +418,8 @@ static int sun6i_video_format_set(struct sun6i_video *video,
413418static int sun6i_video_s_fmt (struct file * file , void * private ,
414419 struct v4l2_format * format )
415420{
416- struct sun6i_video * video = video_drvdata (file );
421+ struct sun6i_csi_device * csi_dev = video_drvdata (file );
422+ struct sun6i_video * video = & csi_dev -> video ;
417423
418424 if (vb2_is_busy (& video -> queue ))
419425 return - EBUSY ;
@@ -424,7 +430,8 @@ static int sun6i_video_s_fmt(struct file *file, void *private,
424430static int sun6i_video_try_fmt (struct file * file , void * private ,
425431 struct v4l2_format * format )
426432{
427- struct sun6i_video * video = video_drvdata (file );
433+ struct sun6i_csi_device * csi_dev = video_drvdata (file );
434+ struct sun6i_video * video = & csi_dev -> video ;
428435
429436 return sun6i_video_format_try (video , format );
430437}
@@ -489,7 +496,8 @@ static const struct v4l2_ioctl_ops sun6i_video_ioctl_ops = {
489496
490497static int sun6i_video_open (struct file * file )
491498{
492- struct sun6i_video * video = video_drvdata (file );
499+ struct sun6i_csi_device * csi_dev = video_drvdata (file );
500+ struct sun6i_video * video = & csi_dev -> video ;
493501 int ret = 0 ;
494502
495503 if (mutex_lock_interruptible (& video -> lock ))
@@ -505,7 +513,7 @@ static int sun6i_video_open(struct file *file)
505513
506514 /* Power on at first open. */
507515 if (v4l2_fh_is_singular_file (file )) {
508- ret = sun6i_csi_set_power (video -> csi_dev , true);
516+ ret = sun6i_csi_set_power (csi_dev , true);
509517 if (ret < 0 )
510518 goto error_v4l2_fh ;
511519 }
@@ -525,7 +533,8 @@ static int sun6i_video_open(struct file *file)
525533
526534static int sun6i_video_close (struct file * file )
527535{
528- struct sun6i_video * video = video_drvdata (file );
536+ struct sun6i_csi_device * csi_dev = video_drvdata (file );
537+ struct sun6i_video * video = & csi_dev -> video ;
529538 bool last_close ;
530539
531540 mutex_lock (& video -> lock );
@@ -537,7 +546,7 @@ static int sun6i_video_close(struct file *file)
537546
538547 /* Power off at last close. */
539548 if (last_close )
540- sun6i_csi_set_power (video -> csi_dev , false);
549+ sun6i_csi_set_power (csi_dev , false);
541550
542551 mutex_unlock (& video -> lock );
543552
@@ -574,26 +583,27 @@ static int sun6i_video_link_validate(struct media_link *link)
574583{
575584 struct video_device * vdev = container_of (link -> sink -> entity ,
576585 struct video_device , entity );
577- struct sun6i_video * video = video_get_drvdata (vdev );
586+ struct sun6i_csi_device * csi_dev = video_get_drvdata (vdev );
587+ struct sun6i_video * video = & csi_dev -> video ;
578588 struct v4l2_subdev_format source_fmt ;
579589 int ret ;
580590
581591 video -> mbus_code = 0 ;
582592
583593 if (!media_pad_remote_pad_first (link -> sink -> entity -> pads )) {
584- dev_info (video -> csi_dev -> dev ,
585- "video node %s pad not connected\n" , vdev -> name );
594+ dev_info (csi_dev -> dev , "video node %s pad not connected\n" ,
595+ vdev -> name );
586596 return - ENOLINK ;
587597 }
588598
589599 ret = sun6i_video_link_validate_get_format (link -> source , & source_fmt );
590600 if (ret < 0 )
591601 return ret ;
592602
593- if (!sun6i_csi_is_format_supported (video -> csi_dev ,
603+ if (!sun6i_csi_is_format_supported (csi_dev ,
594604 video -> format .fmt .pix .pixelformat ,
595605 source_fmt .format .code )) {
596- dev_err (video -> csi_dev -> dev ,
606+ dev_err (csi_dev -> dev ,
597607 "Unsupported pixformat: 0x%x with mbus code: 0x%x!\n" ,
598608 video -> format .fmt .pix .pixelformat ,
599609 source_fmt .format .code );
@@ -602,7 +612,7 @@ static int sun6i_video_link_validate(struct media_link *link)
602612
603613 if (source_fmt .format .width != video -> format .fmt .pix .width ||
604614 source_fmt .format .height != video -> format .fmt .pix .height ) {
605- dev_err (video -> csi_dev -> dev ,
615+ dev_err (csi_dev -> dev ,
606616 "Wrong width or height %ux%u (%ux%u expected)\n" ,
607617 video -> format .fmt .pix .width , video -> format .fmt .pix .height ,
608618 source_fmt .format .width , source_fmt .format .height );
@@ -620,9 +630,9 @@ static const struct media_entity_operations sun6i_video_media_ops = {
620630
621631/* Video */
622632
623- int sun6i_video_setup (struct sun6i_video * video ,
624- struct sun6i_csi_device * csi_dev )
633+ int sun6i_video_setup (struct sun6i_csi_device * csi_dev )
625634{
635+ struct sun6i_video * video = & csi_dev -> video ;
626636 struct v4l2_device * v4l2_dev = & csi_dev -> v4l2 .v4l2_dev ;
627637 struct video_device * video_dev = & video -> video_dev ;
628638 struct vb2_queue * queue = & video -> queue ;
@@ -631,8 +641,6 @@ int sun6i_video_setup(struct sun6i_video *video,
631641 struct v4l2_pix_format * pix_format = & format .fmt .pix ;
632642 int ret ;
633643
634- video -> csi_dev = csi_dev ;
635-
636644 /* Media Entity */
637645
638646 video_dev -> entity .ops = & sun6i_video_media_ops ;
@@ -664,7 +672,7 @@ int sun6i_video_setup(struct sun6i_video *video,
664672 queue -> timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC ;
665673 queue -> lock = & video -> lock ;
666674 queue -> dev = csi_dev -> dev ;
667- queue -> drv_priv = video ;
675+ queue -> drv_priv = csi_dev ;
668676
669677 /* Make sure non-dropped frame. */
670678 queue -> min_buffers_needed = 3 ;
@@ -697,7 +705,7 @@ int sun6i_video_setup(struct sun6i_video *video,
697705 video_dev -> queue = queue ;
698706 video_dev -> lock = & video -> lock ;
699707
700- video_set_drvdata (video_dev , video );
708+ video_set_drvdata (video_dev , csi_dev );
701709
702710 ret = video_register_device (video_dev , VFL_TYPE_VIDEO , -1 );
703711 if (ret < 0 ) {
@@ -716,8 +724,9 @@ int sun6i_video_setup(struct sun6i_video *video,
716724 return ret ;
717725}
718726
719- void sun6i_video_cleanup (struct sun6i_video * video )
727+ void sun6i_video_cleanup (struct sun6i_csi_device * csi_dev )
720728{
729+ struct sun6i_video * video = & csi_dev -> video ;
721730 struct video_device * video_dev = & video -> video_dev ;
722731
723732 vb2_video_unregister_device (video_dev );
0 commit comments