Lines Matching refs:vout
31 static int omap_vout_allocate_vrfb_buffers(struct omap_vout_device *vout, in omap_vout_allocate_vrfb_buffers() argument
37 if (!vout->smsshado_virt_addr[i]) { in omap_vout_allocate_vrfb_buffers()
38 vout->smsshado_virt_addr[i] = in omap_vout_allocate_vrfb_buffers()
39 omap_vout_alloc_buffer(vout->smsshado_size, in omap_vout_allocate_vrfb_buffers()
40 &vout->smsshado_phy_addr[i]); in omap_vout_allocate_vrfb_buffers()
42 if (!vout->smsshado_virt_addr[i] && startindex != -1) { in omap_vout_allocate_vrfb_buffers()
43 if (V4L2_MEMORY_MMAP == vout->memory && i >= startindex) in omap_vout_allocate_vrfb_buffers()
46 if (!vout->smsshado_virt_addr[i]) { in omap_vout_allocate_vrfb_buffers()
49 vout->smsshado_virt_addr[j], in omap_vout_allocate_vrfb_buffers()
50 vout->smsshado_size); in omap_vout_allocate_vrfb_buffers()
51 vout->smsshado_virt_addr[j] = 0; in omap_vout_allocate_vrfb_buffers()
52 vout->smsshado_phy_addr[j] = 0; in omap_vout_allocate_vrfb_buffers()
57 memset((void *) vout->smsshado_virt_addr[i], 0, in omap_vout_allocate_vrfb_buffers()
58 vout->smsshado_size); in omap_vout_allocate_vrfb_buffers()
77 void omap_vout_free_vrfb_buffers(struct omap_vout_device *vout) in omap_vout_free_vrfb_buffers() argument
82 omap_vout_free_buffer(vout->smsshado_virt_addr[j], in omap_vout_free_vrfb_buffers()
83 vout->smsshado_size); in omap_vout_free_vrfb_buffers()
84 vout->smsshado_virt_addr[j] = 0; in omap_vout_free_vrfb_buffers()
85 vout->smsshado_phy_addr[j] = 0; in omap_vout_free_vrfb_buffers()
93 struct omap_vout_device *vout; in omap_vout_setup_vrfb_bufs() local
101 vout = vid_dev->vouts[vid_num]; in omap_vout_setup_vrfb_bufs()
102 vfd = vout->vfd; in omap_vout_setup_vrfb_bufs()
105 if (omap_vrfb_request_ctx(&vout->vrfb_context[i])) { in omap_vout_setup_vrfb_bufs()
108 omap_vrfb_release_ctx(&vout->vrfb_context[j]); in omap_vout_setup_vrfb_bufs()
127 vout->smsshado_size = PAGE_ALIGN(image_width * image_height * 2 * 2); in omap_vout_setup_vrfb_bufs()
132 vout->vrfb_dma_tx.dev_id = OMAP_DMA_NO_DEVICE; in omap_vout_setup_vrfb_bufs()
133 vout->vrfb_dma_tx.dma_ch = -1; in omap_vout_setup_vrfb_bufs()
134 vout->vrfb_dma_tx.req_status = DMA_CHAN_ALLOTED; in omap_vout_setup_vrfb_bufs()
135 ret = omap_request_dma(vout->vrfb_dma_tx.dev_id, "VRFB DMA TX", in omap_vout_setup_vrfb_bufs()
137 (void *) &vout->vrfb_dma_tx, &vout->vrfb_dma_tx.dma_ch); in omap_vout_setup_vrfb_bufs()
139 vout->vrfb_dma_tx.req_status = DMA_CHAN_NOT_ALLOTED; in omap_vout_setup_vrfb_bufs()
143 init_waitqueue_head(&vout->vrfb_dma_tx.wait); in omap_vout_setup_vrfb_bufs()
148 if (omap_vout_allocate_vrfb_buffers(vout, &vrfb_num_bufs, -1)) { in omap_vout_setup_vrfb_bufs()
152 vout->vrfb_static_allocation = true; in omap_vout_setup_vrfb_bufs()
158 omap_vrfb_release_ctx(&vout->vrfb_context[j]); in omap_vout_setup_vrfb_bufs()
160 omap_vout_free_buffers(vout); in omap_vout_setup_vrfb_bufs()
168 void omap_vout_release_vrfb(struct omap_vout_device *vout) in omap_vout_release_vrfb() argument
173 omap_vrfb_release_ctx(&vout->vrfb_context[i]); in omap_vout_release_vrfb()
175 if (vout->vrfb_dma_tx.req_status == DMA_CHAN_ALLOTED) { in omap_vout_release_vrfb()
176 vout->vrfb_dma_tx.req_status = DMA_CHAN_NOT_ALLOTED; in omap_vout_release_vrfb()
177 omap_free_dma(vout->vrfb_dma_tx.dma_ch); in omap_vout_release_vrfb()
185 int omap_vout_vrfb_buffer_setup(struct omap_vout_device *vout, in omap_vout_vrfb_buffer_setup() argument
191 if (!is_rotation_enabled(vout)) in omap_vout_vrfb_buffer_setup()
200 if (!vout->vrfb_static_allocation) in omap_vout_vrfb_buffer_setup()
201 if (omap_vout_allocate_vrfb_buffers(vout, count, startindex)) in omap_vout_vrfb_buffer_setup()
204 if (vout->dss_mode == OMAP_DSS_COLOR_YUV2 || in omap_vout_vrfb_buffer_setup()
205 vout->dss_mode == OMAP_DSS_COLOR_UYVY) in omap_vout_vrfb_buffer_setup()
211 omap_vrfb_setup(&vout->vrfb_context[i], in omap_vout_vrfb_buffer_setup()
212 vout->smsshado_phy_addr[i], vout->pix.width, in omap_vout_vrfb_buffer_setup()
213 vout->pix.height, vout->bpp, yuv_mode); in omap_vout_vrfb_buffer_setup()
218 int omap_vout_prepare_vrfb(struct omap_vout_device *vout, in omap_vout_prepare_vrfb() argument
228 if (!is_rotation_enabled(vout)) in omap_vout_prepare_vrfb()
231 dmabuf = vout->buf_phy_addr[vb->i]; in omap_vout_prepare_vrfb()
237 pixsize = vout->bpp * vout->vrfb_bpp; in omap_vout_prepare_vrfb()
244 (vout->pix.width * vout->bpp)) + 1; in omap_vout_prepare_vrfb()
251 elem_count = vout->pix.width * vout->bpp; in omap_vout_prepare_vrfb()
252 frame_count = vout->pix.height; in omap_vout_prepare_vrfb()
253 tx = &vout->vrfb_dma_tx; in omap_vout_prepare_vrfb()
263 rotation = calc_rotation(vout); in omap_vout_prepare_vrfb()
267 vout->vrfb_context[vb->i].paddr[0], dest_element_index, in omap_vout_prepare_vrfb()
283 vout->queued_buf_addr[vb->i] = (u8 *) in omap_vout_prepare_vrfb()
284 vout->vrfb_context[vb->i].paddr[rotation]; in omap_vout_prepare_vrfb()
293 void omap_vout_calculate_vrfb_offset(struct omap_vout_device *vout) in omap_vout_calculate_vrfb_offset() argument
296 bool mirroring = vout->mirror; in omap_vout_calculate_vrfb_offset()
297 struct v4l2_rect *crop = &vout->crop; in omap_vout_calculate_vrfb_offset()
298 struct v4l2_pix_format *pix = &vout->pix; in omap_vout_calculate_vrfb_offset()
299 int *cropped_offset = &vout->cropped_offset; in omap_vout_calculate_vrfb_offset()
303 rotation = calc_rotation(vout); in omap_vout_calculate_vrfb_offset()
307 if (is_rotation_enabled(vout)) { in omap_vout_calculate_vrfb_offset()
324 vout->ps = ps; in omap_vout_calculate_vrfb_offset()
325 vout->vr_ps = vr_ps; in omap_vout_calculate_vrfb_offset()
327 if (is_rotation_enabled(vout)) { in omap_vout_calculate_vrfb_offset()
334 vout->line_length = line_length; in omap_vout_calculate_vrfb_offset()
337 offset = vout->vrfb_context[0].yoffset * in omap_vout_calculate_vrfb_offset()
338 vout->vrfb_context[0].bytespp; in omap_vout_calculate_vrfb_offset()
350 offset = ((MAX_PIXELS_PER_LINE * vout->vrfb_context[0].yoffset * in omap_vout_calculate_vrfb_offset()
351 vout->vrfb_context[0].bytespp) + in omap_vout_calculate_vrfb_offset()
352 (vout->vrfb_context[0].xoffset * in omap_vout_calculate_vrfb_offset()
353 vout->vrfb_context[0].bytespp)); in omap_vout_calculate_vrfb_offset()
365 offset = MAX_PIXELS_PER_LINE * vout->vrfb_context[0].xoffset * in omap_vout_calculate_vrfb_offset()
366 vout->vrfb_context[0].bytespp; in omap_vout_calculate_vrfb_offset()