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()
643 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_selection() local
644 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_s_selection()
646 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_s_selection()
652 "VIDIOC_S_SELECTION, layer id = %d\n", layer->device_id); in vpbe_display_s_selection()
666 layer->layer_info.id, cfg); in vpbe_display_s_selection()
668 vpbe_disp_calculate_scale_factor(disp_dev, layer, in vpbe_display_s_selection()
671 vpbe_disp_adj_position(disp_dev, layer, rect.top, in vpbe_display_s_selection()
674 layer->layer_info.id, cfg); in vpbe_display_s_selection()
677 "Error in set layer config:\n"); in vpbe_display_s_selection()
683 layer->layer_info.id, in vpbe_display_s_selection()
684 layer->layer_info.h_zoom, in vpbe_display_s_selection()
685 layer->layer_info.v_zoom); in vpbe_display_s_selection()
687 layer->layer_info.h_exp, in vpbe_display_s_selection()
688 layer->layer_info.v_exp); in vpbe_display_s_selection()
695 if ((layer->layer_info.h_zoom != ZOOM_X1) || in vpbe_display_s_selection()
696 (layer->layer_info.v_zoom != ZOOM_X1) || in vpbe_display_s_selection()
697 (layer->layer_info.h_exp != H_EXP_OFF) || in vpbe_display_s_selection()
698 (layer->layer_info.v_exp != V_EXP_OFF)) in vpbe_display_s_selection()
711 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_selection() local
712 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_g_selection()
713 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_selection()
714 struct osd_state *osd_device = layer->disp_dev->osd_device; in vpbe_display_g_selection()
718 "VIDIOC_G_SELECTION, layer id = %d\n", in vpbe_display_g_selection()
719 layer->device_id); in vpbe_display_g_selection()
727 layer->layer_info.id, cfg); in vpbe_display_g_selection()
750 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_pixelaspect() local
751 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_pixelaspect()
765 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_fmt() local
766 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_fmt()
769 "VIDIOC_G_FMT, layer id = %d\n", in vpbe_display_g_fmt()
770 layer->device_id); in vpbe_display_g_fmt()
778 fmt->fmt.pix = layer->pix_fmt; in vpbe_display_g_fmt()
786 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_enum_fmt() local
787 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_enum_fmt()
790 "VIDIOC_ENUM_FMT, layer id = %d\n", in vpbe_display_enum_fmt()
791 layer->device_id); in vpbe_display_enum_fmt()
809 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_fmt() local
810 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_s_fmt()
812 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_s_fmt()
818 "VIDIOC_S_FMT, layer id = %d\n", in vpbe_display_s_fmt()
819 layer->device_id); in vpbe_display_s_fmt()
821 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_fmt()
836 layer->pix_fmt = *pixfmt; in vpbe_display_s_fmt()
840 otherlayer = _vpbe_display_get_other_win_layer(disp_dev, layer); in vpbe_display_s_fmt()
841 /* if other layer is available, only in vpbe_display_s_fmt()
848 "Display Manager failed to allocate layer\n"); in vpbe_display_s_fmt()
853 /* Get osd layer config */ in vpbe_display_s_fmt()
855 layer->layer_info.id, cfg); in vpbe_display_s_fmt()
856 /* Store the pixel format in the layer object */ in vpbe_display_s_fmt()
872 layer); in vpbe_display_s_fmt()
876 /* Set the layer config in the osd window */ in vpbe_display_s_fmt()
878 layer->layer_info.id, cfg); in vpbe_display_s_fmt()
887 layer->layer_info.id, cfg); in vpbe_display_s_fmt()
895 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_try_fmt() local
896 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_try_fmt()
897 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_try_fmt()
921 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_std() local
922 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_s_std()
927 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_std()
953 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_std() local
954 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_std()
976 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_enum_output() local
977 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_enum_output()
1003 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_output() local
1004 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_s_output()
1009 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_output()
1032 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_output() local
1033 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_output()
1052 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_enum_dv_timings() local
1053 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_enum_dv_timings()
1082 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_s_dv_timings() local
1083 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_s_dv_timings()
1088 if (vb2_is_busy(&layer->buffer_queue)) in vpbe_display_s_dv_timings()
1115 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_g_dv_timings() local
1116 struct vpbe_device *vpbe_dev = layer->disp_dev->vpbe_dev; in vpbe_display_g_dv_timings()
1139 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_open() local
1140 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_open()
1152 /* leaving if layer is already initialized */ in vpbe_display_open()
1156 if (!layer->usrs) { in vpbe_display_open()
1157 if (mutex_lock_interruptible(&layer->opslock)) in vpbe_display_open()
1159 /* First claim the layer for this device */ in vpbe_display_open()
1161 layer->layer_info.id); in vpbe_display_open()
1162 mutex_unlock(&layer->opslock); in vpbe_display_open()
1164 /* Couldn't get layer */ in vpbe_display_open()
1166 "Display Manager failed to allocate layer\n"); in vpbe_display_open()
1171 /* Increment layer usrs counter */ in vpbe_display_open()
1172 layer->usrs++; in vpbe_display_open()
1185 struct vpbe_layer *layer = video_drvdata(file); in vpbe_display_release() local
1186 struct osd_layer_config *cfg = &layer->layer_info.config; in vpbe_display_release()
1187 struct vpbe_display *disp_dev = layer->disp_dev; in vpbe_display_release()
1193 mutex_lock(&layer->opslock); in vpbe_display_release()
1196 layer->layer_info.id); in vpbe_display_release()
1197 /* Decrement layer usrs counter */ in vpbe_display_release()
1198 layer->usrs--; in vpbe_display_release()
1200 if (!layer->usrs) { in vpbe_display_release()
1204 _vpbe_display_get_other_win_layer(disp_dev, layer); in vpbe_display_release()
1211 layer->layer_info.id); in vpbe_display_release()
1213 layer->layer_info.id); in vpbe_display_release()
1217 mutex_unlock(&layer->opslock); in vpbe_display_release()
1294 /* Get the pointer to the layer object */ in init_vpbe_layer()
1335 "layer=%p,layer->video_dev=%p\n", in register_device()
1360 * and initializes fields of each layer objects
1469 * It un-register hardware layer from V4L2 driver
1485 /* Get the pointer to the layer object */ in vpbe_display_remove()