Lines Matching full:layer
41 struct vpbe_layer *layer);
62 struct vpbe_layer *layer) in vpbe_isr_even_field() argument
64 if (layer->cur_frm == layer->next_frm) in vpbe_isr_even_field()
67 layer->cur_frm->vb.vb2_buf.timestamp = ktime_get_ns(); in vpbe_isr_even_field()
68 vb2_buffer_done(&layer->cur_frm->vb.vb2_buf, VB2_BUF_STATE_DONE); in vpbe_isr_even_field()
70 layer->cur_frm = layer->next_frm; in vpbe_isr_even_field()
74 struct vpbe_layer *layer) in vpbe_isr_odd_field() argument
80 if (list_empty(&layer->dma_queue) || in vpbe_isr_odd_field()
81 (layer->cur_frm != layer->next_frm)) { in vpbe_isr_odd_field()
91 layer->next_frm = list_entry(layer->dma_queue.next, in vpbe_isr_odd_field()
94 list_del(&layer->next_frm->list); in vpbe_isr_odd_field()
97 layer->next_frm->vb.vb2_buf.state = VB2_BUF_STATE_ACTIVE; in vpbe_isr_odd_field()
98 addr = vb2_dma_contig_plane_dma_addr(&layer->next_frm->vb.vb2_buf, 0); in vpbe_isr_odd_field()
100 layer->layer_info.id, in vpbe_isr_odd_field()
109 struct vpbe_layer *layer; in venc_isr() local
139 layer = disp_dev->dev[i]; in venc_isr()
141 if (!vb2_start_streaming_called(&layer->buffer_queue)) in venc_isr()
144 if (layer->layer_first_int) { in venc_isr()
145 layer->layer_first_int = 0; in venc_isr()
149 if ((V4L2_FIELD_NONE == layer->pix_fmt.field) && in venc_isr()
153 vpbe_isr_even_field(disp_dev, layer); in venc_isr()
154 vpbe_isr_odd_field(disp_dev, layer); in venc_isr()
158 layer->field_id ^= 1; in venc_isr()
168 if (fid != layer->field_id) { in venc_isr()
170 layer->field_id = fid; in venc_isr()
178 vpbe_isr_even_field(disp_dev, layer); in venc_isr()
180 vpbe_isr_odd_field(disp_dev, layer); in venc_isr()
196 struct vpbe_layer *layer = vb2_get_drv_priv(q); in vpbe_buffer_prepare() local
197 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_buffer_prepare()
203 vb2_set_plane_payload(vb, 0, layer->pix_fmt.sizeimage); in vpbe_buffer_prepare()
226 /* Get the file handle object and layer object */ in vpbe_buffer_queue_setup()
227 struct vpbe_layer *layer = vb2_get_drv_priv(vq); in vpbe_buffer_queue_setup() local
228 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_buffer_queue_setup()
237 return sizes[0] < layer->pix_fmt.sizeimage ? -EINVAL : 0; in vpbe_buffer_queue_setup()
240 sizes[0] = layer->pix_fmt.sizeimage; in vpbe_buffer_queue_setup()
252 /* Get the file handle object and layer object */ in vpbe_buffer_queue()
255 struct vpbe_layer *layer = vb2_get_drv_priv(vb->vb2_queue); in vpbe_buffer_queue() local
256 struct vpbe_display *disp = layer->disp_dev; in vpbe_buffer_queue()
257 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_buffer_queue()
265 list_add_tail(&buf->list, &layer->dma_queue); in vpbe_buffer_queue()
271 struct vpbe_layer *layer = vb2_get_drv_priv(vq); in vpbe_start_streaming() local
272 struct osd_state *osd_device = layer->disp_dev->osd_device; in vpbe_start_streaming()
275 osd_device->ops.disable_layer(osd_device, layer->layer_info.id); in vpbe_start_streaming()
278 layer->next_frm = layer->cur_frm = list_entry(layer->dma_queue.next, in vpbe_start_streaming()
281 list_del(&layer->cur_frm->list); in vpbe_start_streaming()
283 layer->cur_frm->vb.vb2_buf.state = VB2_BUF_STATE_ACTIVE; in vpbe_start_streaming()
285 layer->field_id = 0; in vpbe_start_streaming()
288 ret = vpbe_set_osd_display_params(layer->disp_dev, layer); in vpbe_start_streaming()
292 vb2_buffer_done(&layer->cur_frm->vb.vb2_buf, in vpbe_start_streaming()
294 list_for_each_entry_safe(buf, tmp, &layer->dma_queue, list) { in vpbe_start_streaming()
307 layer->layer_first_int = 1; in vpbe_start_streaming()
314 struct vpbe_layer *layer = vb2_get_drv_priv(vq); in vpbe_stop_streaming() local
315 struct osd_state *osd_device = layer->disp_dev->osd_device; in vpbe_stop_streaming()
316 struct vpbe_display *disp = layer->disp_dev; in vpbe_stop_streaming()
322 osd_device->ops.disable_layer(osd_device, layer->layer_info.id); in vpbe_stop_streaming()
326 if (layer->cur_frm == layer->next_frm) { in vpbe_stop_streaming()
327 vb2_buffer_done(&layer->cur_frm->vb.vb2_buf, in vpbe_stop_streaming()
330 if (layer->cur_frm) in vpbe_stop_streaming()
331 vb2_buffer_done(&layer->cur_frm->vb.vb2_buf, in vpbe_stop_streaming()
333 if (layer->next_frm) in vpbe_stop_streaming()
334 vb2_buffer_done(&layer->next_frm->vb.vb2_buf, in vpbe_stop_streaming()
338 while (!list_empty(&layer->dma_queue)) { in vpbe_stop_streaming()
339 layer->next_frm = list_entry(layer->dma_queue.next, in vpbe_stop_streaming()
341 list_del(&layer->next_frm->list); in vpbe_stop_streaming()
342 vb2_buffer_done(&layer->next_frm->vb.vb2_buf, in vpbe_stop_streaming()
361 struct vpbe_layer *layer) in _vpbe_display_get_other_win_layer() argument
364 thiswin = layer->device_id; in _vpbe_display_get_other_win_layer()
372 struct vpbe_layer *layer) in vpbe_set_osd_display_params() argument
374 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_set_osd_display_params()
380 addr = vb2_dma_contig_plane_dma_addr(&layer->cur_frm->vb.vb2_buf, 0); in vpbe_set_osd_display_params()
383 layer->layer_info.id, in vpbe_set_osd_display_params()
388 layer->layer_info.id, 0); in vpbe_set_osd_display_params()
391 "Error in enabling osd window layer 0\n"); in vpbe_set_osd_display_params()
396 layer->layer_info.enable = 1; in vpbe_set_osd_display_params()
399 _vpbe_display_get_other_win_layer(disp_dev, layer); in vpbe_set_osd_display_params()
405 "Error in enabling osd window layer 1\n"); in vpbe_set_osd_display_params()
415 struct vpbe_layer *layer, in vpbe_disp_calculate_scale_factor() argument
418 struct display_layer_info *layer_info = &layer->layer_info; in vpbe_disp_calculate_scale_factor()
419 struct v4l2_pix_format *pixfmt = &layer->pix_fmt; in vpbe_disp_calculate_scale_factor()
420 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_disp_calculate_scale_factor()
522 struct vpbe_layer *layer, in vpbe_disp_adj_position() argument
525 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_disp_adj_position()
628 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_querycap() local
629 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_querycap()
641 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_selection() local
642 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_s_selection()
644 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_s_selection()
650 "VIDIOC_S_SELECTION, layer id = %d\n", layer->device_id); in vpbe_display_s_selection()
664 layer->layer_info.id, cfg); in vpbe_display_s_selection()
666 vpbe_disp_calculate_scale_factor(disp_dev, layer, in vpbe_display_s_selection()
669 vpbe_disp_adj_position(disp_dev, layer, rect.top, in vpbe_display_s_selection()
672 layer->layer_info.id, cfg); in vpbe_display_s_selection()
675 "Error in set layer config:\n"); in vpbe_display_s_selection()
681 layer->layer_info.id, in vpbe_display_s_selection()
682 layer->layer_info.h_zoom, in vpbe_display_s_selection()
683 layer->layer_info.v_zoom); in vpbe_display_s_selection()
685 layer->layer_info.h_exp, in vpbe_display_s_selection()
686 layer->layer_info.v_exp); in vpbe_display_s_selection()
693 if ((layer->layer_info.h_zoom != ZOOM_X1) || in vpbe_display_s_selection()
694 (layer->layer_info.v_zoom != ZOOM_X1) || in vpbe_display_s_selection()
695 (layer->layer_info.h_exp != H_EXP_OFF) || in vpbe_display_s_selection()
696 (layer->layer_info.v_exp != V_EXP_OFF)) in vpbe_display_s_selection()
709 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_selection() local
710 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_g_selection()
711 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_selection()
712 struct osd_state *osd_device = layer->disp_dev->osd_device; in vpbe_display_g_selection()
716 "VIDIOC_G_SELECTION, layer id = %d\n", in vpbe_display_g_selection()
717 layer->device_id); in vpbe_display_g_selection()
725 layer->layer_info.id, cfg); in vpbe_display_g_selection()
748 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_pixelaspect() local
749 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_pixelaspect()
763 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_fmt() local
764 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_fmt()
767 "VIDIOC_G_FMT, layer id = %d\n", in vpbe_display_g_fmt()
768 layer->device_id); in vpbe_display_g_fmt()
776 fmt->fmt.pix = layer->pix_fmt; in vpbe_display_g_fmt()
784 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_enum_fmt() local
785 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_enum_fmt()
788 "VIDIOC_ENUM_FMT, layer id = %d\n", in vpbe_display_enum_fmt()
789 layer->device_id); in vpbe_display_enum_fmt()
807 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_fmt() local
808 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_s_fmt()
810 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_s_fmt()
816 "VIDIOC_S_FMT, layer id = %d\n", in vpbe_display_s_fmt()
817 layer->device_id); in vpbe_display_s_fmt()
819 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_fmt()
834 layer->pix_fmt = *pixfmt; in vpbe_display_s_fmt()
838 otherlayer = _vpbe_display_get_other_win_layer(disp_dev, layer); in vpbe_display_s_fmt()
839 /* if other layer is available, only in vpbe_display_s_fmt()
846 "Display Manager failed to allocate layer\n"); in vpbe_display_s_fmt()
851 /* Get osd layer config */ in vpbe_display_s_fmt()
853 layer->layer_info.id, cfg); in vpbe_display_s_fmt()
854 /* Store the pixel format in the layer object */ in vpbe_display_s_fmt()
870 layer); in vpbe_display_s_fmt()
874 /* Set the layer config in the osd window */ in vpbe_display_s_fmt()
876 layer->layer_info.id, cfg); in vpbe_display_s_fmt()
885 layer->layer_info.id, cfg); in vpbe_display_s_fmt()
893 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_try_fmt() local
894 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_try_fmt()
895 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_try_fmt()
919 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_std() local
920 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_s_std()
925 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_std()
951 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_std() local
952 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_std()
974 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_enum_output() local
975 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_enum_output()
1001 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_output() local
1002 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_s_output()
1007 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_output()
1030 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_output() local
1031 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_output()
1050 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_enum_dv_timings() local
1051 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_enum_dv_timings()
1080 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_dv_timings() local
1081 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_s_dv_timings()
1086 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_dv_timings()
1113 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_dv_timings() local
1114 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_dv_timings()
1137 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_open() local
1138 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_open()
1150 /* leaving if layer is already initialized */ in vpbe_display_open()
1154 if (!layer->usrs) { in vpbe_display_open()
1155 if (mutex_lock_interruptible(&layer->opslock)) in vpbe_display_open()
1157 /* First claim the layer for this device */ in vpbe_display_open()
1159 layer->layer_info.id); in vpbe_display_open()
1160 mutex_unlock(&layer->opslock); in vpbe_display_open()
1162 /* Couldn't get layer */ in vpbe_display_open()
1164 "Display Manager failed to allocate layer\n"); in vpbe_display_open()
1169 /* Increment layer usrs counter */ in vpbe_display_open()
1170 layer->usrs++; in vpbe_display_open()
1183 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_release() local
1184 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_release()
1185 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_release()
1191 mutex_lock(&layer->opslock); in vpbe_display_release()
1194 layer->layer_info.id); in vpbe_display_release()
1195 /* Decrement layer usrs counter */ in vpbe_display_release()
1196 layer->usrs--; in vpbe_display_release()
1198 if (!layer->usrs) { in vpbe_display_release()
1202 _vpbe_display_get_other_win_layer(disp_dev, layer); in vpbe_display_release()
1209 layer->layer_info.id); in vpbe_display_release()
1211 layer->layer_info.id); in vpbe_display_release()
1215 mutex_unlock(&layer->opslock); in vpbe_display_release()
1292 /* Get the pointer to the layer object */ in init_vpbe_layer()
1333 "layer=%p,layer->video_dev=%p\n", in register_device()
1358 * and initializes fields of each layer objects
1467 * It un-register hardware layer from V4L2 driver
1483 /* Get the pointer to the layer object */ in vpbe_display_remove()