Lines Matching full:layer
42 struct vpbe_layer *layer);
63 struct vpbe_layer *layer) in vpbe_isr_even_field() argument
65 if (layer->cur_frm == layer->next_frm) in vpbe_isr_even_field()
68 layer->cur_frm->vb.vb2_buf.timestamp = ktime_get_ns(); in vpbe_isr_even_field()
69 vb2_buffer_done(&layer->cur_frm->vb.vb2_buf, VB2_BUF_STATE_DONE); in vpbe_isr_even_field()
71 layer->cur_frm = layer->next_frm; in vpbe_isr_even_field()
75 struct vpbe_layer *layer) in vpbe_isr_odd_field() argument
81 if (list_empty(&layer->dma_queue) || in vpbe_isr_odd_field()
82 (layer->cur_frm != layer->next_frm)) { in vpbe_isr_odd_field()
92 layer->next_frm = list_entry(layer->dma_queue.next, in vpbe_isr_odd_field()
95 list_del(&layer->next_frm->list); in vpbe_isr_odd_field()
98 layer->next_frm->vb.vb2_buf.state = VB2_BUF_STATE_ACTIVE; in vpbe_isr_odd_field()
99 addr = vb2_dma_contig_plane_dma_addr(&layer->next_frm->vb.vb2_buf, 0); in vpbe_isr_odd_field()
101 layer->layer_info.id, in vpbe_isr_odd_field()
110 struct vpbe_layer *layer; in venc_isr() local
140 layer = disp_dev->dev[i]; in venc_isr()
142 if (!vb2_start_streaming_called(&layer->buffer_queue)) in venc_isr()
145 if (layer->layer_first_int) { in venc_isr()
146 layer->layer_first_int = 0; in venc_isr()
150 if ((V4L2_FIELD_NONE == layer->pix_fmt.field) && in venc_isr()
154 vpbe_isr_even_field(disp_dev, layer); in venc_isr()
155 vpbe_isr_odd_field(disp_dev, layer); in venc_isr()
159 layer->field_id ^= 1; in venc_isr()
169 if (fid != layer->field_id) { in venc_isr()
171 layer->field_id = fid; in venc_isr()
179 vpbe_isr_even_field(disp_dev, layer); in venc_isr()
181 vpbe_isr_odd_field(disp_dev, layer); in venc_isr()
197 struct vpbe_layer *layer = vb2_get_drv_priv(q); in vpbe_buffer_prepare() local
198 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_buffer_prepare()
204 vb2_set_plane_payload(vb, 0, layer->pix_fmt.sizeimage); in vpbe_buffer_prepare()
227 /* Get the file handle object and layer object */ in vpbe_buffer_queue_setup()
228 struct vpbe_layer *layer = vb2_get_drv_priv(vq); in vpbe_buffer_queue_setup() local
229 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_buffer_queue_setup()
238 return sizes[0] < layer->pix_fmt.sizeimage ? -EINVAL : 0; in vpbe_buffer_queue_setup()
241 sizes[0] = layer->pix_fmt.sizeimage; in vpbe_buffer_queue_setup()
253 /* Get the file handle object and layer object */ in vpbe_buffer_queue()
256 struct vpbe_layer *layer = vb2_get_drv_priv(vb->vb2_queue); in vpbe_buffer_queue() local
257 struct vpbe_display *disp = layer->disp_dev; in vpbe_buffer_queue()
258 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_buffer_queue()
266 list_add_tail(&buf->list, &layer->dma_queue); in vpbe_buffer_queue()
272 struct vpbe_layer *layer = vb2_get_drv_priv(vq); in vpbe_start_streaming() local
273 struct osd_state *osd_device = layer->disp_dev->osd_device; in vpbe_start_streaming()
276 osd_device->ops.disable_layer(osd_device, layer->layer_info.id); in vpbe_start_streaming()
279 layer->next_frm = layer->cur_frm = list_entry(layer->dma_queue.next, in vpbe_start_streaming()
282 list_del(&layer->cur_frm->list); in vpbe_start_streaming()
284 layer->cur_frm->vb.vb2_buf.state = VB2_BUF_STATE_ACTIVE; in vpbe_start_streaming()
286 layer->field_id = 0; in vpbe_start_streaming()
289 ret = vpbe_set_osd_display_params(layer->disp_dev, layer); in vpbe_start_streaming()
293 vb2_buffer_done(&layer->cur_frm->vb.vb2_buf, in vpbe_start_streaming()
295 list_for_each_entry_safe(buf, tmp, &layer->dma_queue, list) { in vpbe_start_streaming()
308 layer->layer_first_int = 1; in vpbe_start_streaming()
315 struct vpbe_layer *layer = vb2_get_drv_priv(vq); in vpbe_stop_streaming() local
316 struct osd_state *osd_device = layer->disp_dev->osd_device; in vpbe_stop_streaming()
317 struct vpbe_display *disp = layer->disp_dev; in vpbe_stop_streaming()
323 osd_device->ops.disable_layer(osd_device, layer->layer_info.id); in vpbe_stop_streaming()
327 if (layer->cur_frm == layer->next_frm) { in vpbe_stop_streaming()
328 vb2_buffer_done(&layer->cur_frm->vb.vb2_buf, in vpbe_stop_streaming()
331 if (layer->cur_frm) in vpbe_stop_streaming()
332 vb2_buffer_done(&layer->cur_frm->vb.vb2_buf, in vpbe_stop_streaming()
334 if (layer->next_frm) in vpbe_stop_streaming()
335 vb2_buffer_done(&layer->next_frm->vb.vb2_buf, in vpbe_stop_streaming()
339 while (!list_empty(&layer->dma_queue)) { in vpbe_stop_streaming()
340 layer->next_frm = list_entry(layer->dma_queue.next, in vpbe_stop_streaming()
342 list_del(&layer->next_frm->list); in vpbe_stop_streaming()
343 vb2_buffer_done(&layer->next_frm->vb.vb2_buf, in vpbe_stop_streaming()
362 struct vpbe_layer *layer) in _vpbe_display_get_other_win_layer() argument
365 thiswin = layer->device_id; in _vpbe_display_get_other_win_layer()
373 struct vpbe_layer *layer) in vpbe_set_osd_display_params() argument
375 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_set_osd_display_params()
381 addr = vb2_dma_contig_plane_dma_addr(&layer->cur_frm->vb.vb2_buf, 0); in vpbe_set_osd_display_params()
384 layer->layer_info.id, in vpbe_set_osd_display_params()
389 layer->layer_info.id, 0); in vpbe_set_osd_display_params()
392 "Error in enabling osd window layer 0\n"); in vpbe_set_osd_display_params()
397 layer->layer_info.enable = 1; in vpbe_set_osd_display_params()
400 _vpbe_display_get_other_win_layer(disp_dev, layer); in vpbe_set_osd_display_params()
406 "Error in enabling osd window layer 1\n"); in vpbe_set_osd_display_params()
416 struct vpbe_layer *layer, in vpbe_disp_calculate_scale_factor() argument
419 struct display_layer_info *layer_info = &layer->layer_info; in vpbe_disp_calculate_scale_factor()
420 struct v4l2_pix_format *pixfmt = &layer->pix_fmt; in vpbe_disp_calculate_scale_factor()
421 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_disp_calculate_scale_factor()
523 struct vpbe_layer *layer, in vpbe_disp_adj_position() argument
526 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_disp_adj_position()
629 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_querycap() local
630 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_querycap()
644 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_selection() local
645 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_s_selection()
647 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_s_selection()
653 "VIDIOC_S_SELECTION, layer id = %d\n", layer->device_id); in vpbe_display_s_selection()
667 layer->layer_info.id, cfg); in vpbe_display_s_selection()
669 vpbe_disp_calculate_scale_factor(disp_dev, layer, in vpbe_display_s_selection()
672 vpbe_disp_adj_position(disp_dev, layer, rect.top, in vpbe_display_s_selection()
675 layer->layer_info.id, cfg); in vpbe_display_s_selection()
678 "Error in set layer config:\n"); in vpbe_display_s_selection()
684 layer->layer_info.id, in vpbe_display_s_selection()
685 layer->layer_info.h_zoom, in vpbe_display_s_selection()
686 layer->layer_info.v_zoom); in vpbe_display_s_selection()
688 layer->layer_info.h_exp, in vpbe_display_s_selection()
689 layer->layer_info.v_exp); in vpbe_display_s_selection()
696 if ((layer->layer_info.h_zoom != ZOOM_X1) || in vpbe_display_s_selection()
697 (layer->layer_info.v_zoom != ZOOM_X1) || in vpbe_display_s_selection()
698 (layer->layer_info.h_exp != H_EXP_OFF) || in vpbe_display_s_selection()
699 (layer->layer_info.v_exp != V_EXP_OFF)) in vpbe_display_s_selection()
712 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_selection() local
713 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_g_selection()
714 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_selection()
715 struct osd_state *osd_device = layer->disp_dev->osd_device; in vpbe_display_g_selection()
719 "VIDIOC_G_SELECTION, layer id = %d\n", in vpbe_display_g_selection()
720 layer->device_id); in vpbe_display_g_selection()
728 layer->layer_info.id, cfg); in vpbe_display_g_selection()
751 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_pixelaspect() local
752 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_pixelaspect()
766 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_fmt() local
767 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_fmt()
770 "VIDIOC_G_FMT, layer id = %d\n", in vpbe_display_g_fmt()
771 layer->device_id); in vpbe_display_g_fmt()
779 fmt->fmt.pix = layer->pix_fmt; in vpbe_display_g_fmt()
787 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_enum_fmt() local
788 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_enum_fmt()
791 "VIDIOC_ENUM_FMT, layer id = %d\n", in vpbe_display_enum_fmt()
792 layer->device_id); in vpbe_display_enum_fmt()
810 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_fmt() local
811 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_s_fmt()
813 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_s_fmt()
819 "VIDIOC_S_FMT, layer id = %d\n", in vpbe_display_s_fmt()
820 layer->device_id); in vpbe_display_s_fmt()
822 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_fmt()
837 layer->pix_fmt = *pixfmt; in vpbe_display_s_fmt()
841 otherlayer = _vpbe_display_get_other_win_layer(disp_dev, layer); in vpbe_display_s_fmt()
842 /* if other layer is available, only in vpbe_display_s_fmt()
849 "Display Manager failed to allocate layer\n"); in vpbe_display_s_fmt()
854 /* Get osd layer config */ in vpbe_display_s_fmt()
856 layer->layer_info.id, cfg); in vpbe_display_s_fmt()
857 /* Store the pixel format in the layer object */ in vpbe_display_s_fmt()
873 layer); in vpbe_display_s_fmt()
877 /* Set the layer config in the osd window */ in vpbe_display_s_fmt()
879 layer->layer_info.id, cfg); in vpbe_display_s_fmt()
888 layer->layer_info.id, cfg); in vpbe_display_s_fmt()
896 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_try_fmt() local
897 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_try_fmt()
898 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_try_fmt()
922 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_std() local
923 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_s_std()
928 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_std()
954 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_std() local
955 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_std()
977 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_enum_output() local
978 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_enum_output()
1004 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_output() local
1005 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_s_output()
1010 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_output()
1033 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_output() local
1034 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_output()
1053 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_enum_dv_timings() local
1054 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_enum_dv_timings()
1083 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_dv_timings() local
1084 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_s_dv_timings()
1089 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_dv_timings()
1116 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_dv_timings() local
1117 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_dv_timings()
1140 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_open() local
1141 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_open()
1153 /* leaving if layer is already initialized */ in vpbe_display_open()
1157 if (!layer->usrs) { in vpbe_display_open()
1158 if (mutex_lock_interruptible(&layer->opslock)) in vpbe_display_open()
1160 /* First claim the layer for this device */ in vpbe_display_open()
1162 layer->layer_info.id); in vpbe_display_open()
1163 mutex_unlock(&layer->opslock); in vpbe_display_open()
1165 /* Couldn't get layer */ in vpbe_display_open()
1167 "Display Manager failed to allocate layer\n"); in vpbe_display_open()
1172 /* Increment layer usrs counter */ in vpbe_display_open()
1173 layer->usrs++; in vpbe_display_open()
1186 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_release() local
1187 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_release()
1188 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_release()
1194 mutex_lock(&layer->opslock); in vpbe_display_release()
1197 layer->layer_info.id); in vpbe_display_release()
1198 /* Decrement layer usrs counter */ in vpbe_display_release()
1199 layer->usrs--; in vpbe_display_release()
1201 if (!layer->usrs) { in vpbe_display_release()
1205 _vpbe_display_get_other_win_layer(disp_dev, layer); in vpbe_display_release()
1212 layer->layer_info.id); in vpbe_display_release()
1214 layer->layer_info.id); in vpbe_display_release()
1218 mutex_unlock(&layer->opslock); in vpbe_display_release()
1295 /* Get the pointer to the layer object */ in init_vpbe_layer()
1336 "layer=%p,layer->video_dev=%p\n", in register_device()
1361 * and initializes fields of each layer objects
1470 * It un-register hardware layer from V4L2 driver
1486 /* Get the pointer to the layer object */ in vpbe_display_remove()