Searched refs:vpfe (Results 1 - 21 of 21) sorted by relevance

/linux-4.1.27/drivers/media/platform/am437x/
H A Dam437x-vpfe.c41 #include "am437x-vpfe.h"
43 #define VPFE_MODULE_NAME "vpfe"
192 __vpfe_get_format(struct vpfe_device *vpfe,
224 mbus_to_pix(struct vpfe_device *vpfe, mbus_to_pix() argument
228 struct vpfe_subdev_info *sdinfo = vpfe->current_subdev; mbus_to_pix()
249 static void pix_to_mbus(struct vpfe_device *vpfe, pix_to_mbus() argument
258 vpfe_dbg(3, vpfe, "Invalid pixel code: %x, default used instead\n", pix_to_mbus()
383 struct vpfe_device *vpfe = to_vpfe(ccdc); vpfe_reg_dump() local
385 vpfe_dbg(3, vpfe, "ALAW: 0x%x\n", vpfe_reg_read(ccdc, VPFE_ALAW)); vpfe_reg_dump()
386 vpfe_dbg(3, vpfe, "CLAMP: 0x%x\n", vpfe_reg_read(ccdc, VPFE_CLAMP)); vpfe_reg_dump()
387 vpfe_dbg(3, vpfe, "DCSUB: 0x%x\n", vpfe_reg_read(ccdc, VPFE_DCSUB)); vpfe_reg_dump()
388 vpfe_dbg(3, vpfe, "BLKCMP: 0x%x\n", vpfe_reg_read(ccdc, VPFE_BLKCMP)); vpfe_reg_dump()
389 vpfe_dbg(3, vpfe, "COLPTN: 0x%x\n", vpfe_reg_read(ccdc, VPFE_COLPTN)); vpfe_reg_dump()
390 vpfe_dbg(3, vpfe, "SDOFST: 0x%x\n", vpfe_reg_read(ccdc, VPFE_SDOFST)); vpfe_reg_dump()
391 vpfe_dbg(3, vpfe, "SYN_MODE: 0x%x\n", vpfe_reg_dump()
393 vpfe_dbg(3, vpfe, "HSIZE_OFF: 0x%x\n", vpfe_reg_dump()
395 vpfe_dbg(3, vpfe, "HORZ_INFO: 0x%x\n", vpfe_reg_dump()
397 vpfe_dbg(3, vpfe, "VERT_START: 0x%x\n", vpfe_reg_dump()
399 vpfe_dbg(3, vpfe, "VERT_LINES: 0x%x\n", vpfe_reg_dump()
407 struct vpfe_device *vpfe = to_vpfe(ccdc); vpfe_ccdc_validate_param() local
419 vpfe_dbg(1, vpfe, "Invalid data line select\n"); vpfe_ccdc_validate_param()
496 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); vpfe_ccdc_set_params() local
505 vpfe_dbg(1, vpfe, vpfe_ccdc_set_params()
525 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); vpfe_ccdc_config_ycbcr() local
529 vpfe_dbg(3, vpfe, "vpfe_ccdc_config_ycbcr:\n"); vpfe_ccdc_config_ycbcr()
654 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); vpfe_ccdc_config_raw() local
661 vpfe_dbg(3, vpfe, "vpfe_ccdc_config_raw:\n"); vpfe_ccdc_config_raw()
691 vpfe_dbg(3, vpfe, "\nWriting 0x%x to ALAW...\n", val); vpfe_ccdc_config_raw()
715 vpfe_dbg(3, vpfe, "Writing %d (%x) to HSIZE_OFF\n", vpfe_ccdc_config_raw()
761 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); vpfe_ccdc_set_pixel_format() local
763 vpfe_dbg(1, vpfe, "vpfe_ccdc_set_pixel_format: if_type: %d, pixfmt:%s\n", vpfe_ccdc_set_pixel_format()
893 struct vpfe_device *vpfe = container_of(ccdc, struct vpfe_device, ccdc); vpfe_ccdc_set_hw_if_params() local
915 vpfe_dbg(1, vpfe, "params.bus_width: %d\n", vpfe_ccdc_set_hw_if_params()
917 vpfe_dbg(1, vpfe, "config_params.data_sz: %d\n", vpfe_ccdc_set_hw_if_params()
1008 static int vpfe_get_ccdc_image_format(struct vpfe_device *vpfe, vpfe_get_ccdc_image_format() argument
1017 vpfe_ccdc_get_image_window(&vpfe->ccdc, &image_win); vpfe_get_ccdc_image_format()
1020 f->fmt.pix.bytesperline = vpfe_ccdc_get_line_length(&vpfe->ccdc); vpfe_get_ccdc_image_format()
1023 buf_type = vpfe_ccdc_get_buftype(&vpfe->ccdc); vpfe_get_ccdc_image_format()
1024 f->fmt.pix.pixelformat = vpfe_ccdc_get_pixel_format(&vpfe->ccdc); vpfe_get_ccdc_image_format()
1025 frm_fmt = vpfe_ccdc_get_frame_format(&vpfe->ccdc); vpfe_get_ccdc_image_format()
1035 vpfe_err(vpfe, "Invalid buf_type\n"); vpfe_get_ccdc_image_format()
1039 vpfe_err(vpfe, "Invalid frm_fmt\n"); vpfe_get_ccdc_image_format()
1045 static int vpfe_config_ccdc_image_format(struct vpfe_device *vpfe) vpfe_config_ccdc_image_format() argument
1050 vpfe_dbg(2, vpfe, "vpfe_config_ccdc_image_format\n"); vpfe_config_ccdc_image_format()
1052 vpfe_dbg(1, vpfe, "pixelformat: %s\n", vpfe_config_ccdc_image_format()
1053 print_fourcc(vpfe->fmt.fmt.pix.pixelformat)); vpfe_config_ccdc_image_format()
1055 if (vpfe_ccdc_set_pixel_format(&vpfe->ccdc, vpfe_config_ccdc_image_format()
1056 vpfe->fmt.fmt.pix.pixelformat) < 0) { vpfe_config_ccdc_image_format()
1057 vpfe_err(vpfe, "couldn't set pix format in ccdc\n"); vpfe_config_ccdc_image_format()
1062 vpfe_ccdc_set_image_window(&vpfe->ccdc, &vpfe->crop, vpfe->bpp); vpfe_config_ccdc_image_format()
1064 switch (vpfe->fmt.fmt.pix.field) { vpfe_config_ccdc_image_format()
1068 &vpfe->ccdc, vpfe_config_ccdc_image_format()
1079 &vpfe->ccdc, vpfe_config_ccdc_image_format()
1090 return vpfe_ccdc_set_frame_format(&vpfe->ccdc, frm_fmt); vpfe_config_ccdc_image_format()
1096 * pix format & crop values in the vpfe device and ccdc. It first
1103 static int vpfe_config_image_format(struct vpfe_device *vpfe, vpfe_config_image_format() argument
1106 struct v4l2_pix_format *pix = &vpfe->fmt.fmt.pix; vpfe_config_image_format()
1111 vpfe->std_info.active_pixels = vpfe_config_image_format()
1113 vpfe->std_info.active_lines = vpfe_config_image_format()
1115 vpfe->std_info.frame_format = vpfe_config_image_format()
1117 vpfe->std_index = i; vpfe_config_image_format()
1124 vpfe_err(vpfe, "standard not supported\n"); vpfe_config_image_format()
1128 vpfe->crop.top = vpfe->crop.left = 0; vpfe_config_image_format()
1129 vpfe->crop.width = vpfe->std_info.active_pixels; vpfe_config_image_format()
1130 vpfe->crop.height = vpfe->std_info.active_lines; vpfe_config_image_format()
1131 pix->width = vpfe->crop.width; vpfe_config_image_format()
1132 pix->height = vpfe->crop.height; vpfe_config_image_format()
1136 if (vpfe->std_info.frame_format) vpfe_config_image_format()
1141 ret = __vpfe_get_format(vpfe, &vpfe->fmt, &vpfe->bpp); vpfe_config_image_format()
1146 vpfe->crop.width = pix->width; vpfe_config_image_format()
1147 vpfe->crop.height = pix->height; vpfe_config_image_format()
1149 return vpfe_config_ccdc_image_format(vpfe); vpfe_config_image_format()
1152 static int vpfe_initialize_device(struct vpfe_device *vpfe) vpfe_initialize_device() argument
1157 sdinfo = &vpfe->cfg->sub_devs[0]; vpfe_initialize_device()
1158 sdinfo->sd = vpfe->sd[0]; vpfe_initialize_device()
1159 vpfe->current_input = 0; vpfe_initialize_device()
1160 vpfe->std_index = 0; vpfe_initialize_device()
1162 ret = vpfe_config_image_format(vpfe, vpfe_initialize_device()
1163 vpfe_standards[vpfe->std_index].std_id); vpfe_initialize_device()
1167 pm_runtime_get_sync(vpfe->pdev); vpfe_initialize_device()
1169 vpfe_config_enable(&vpfe->ccdc, 1); vpfe_initialize_device()
1171 vpfe_ccdc_restore_defaults(&vpfe->ccdc); vpfe_initialize_device()
1174 vpfe_clear_intr(&vpfe->ccdc, -1); vpfe_initialize_device()
1187 struct vpfe_device *vpfe = video_drvdata(file); vpfe_release() local
1191 mutex_lock(&vpfe->lock); vpfe_release()
1204 vpfe_ccdc_close(&vpfe->ccdc, vpfe->pdev); vpfe_release()
1206 mutex_unlock(&vpfe->lock); vpfe_release()
1218 struct vpfe_device *vpfe = video_drvdata(file); vpfe_open() local
1221 mutex_lock(&vpfe->lock); vpfe_open()
1225 vpfe_err(vpfe, "v4l2_fh_open failed\n"); vpfe_open()
1232 if (vpfe_initialize_device(vpfe)) { vpfe_open()
1238 mutex_unlock(&vpfe->lock); vpfe_open()
1244 * @vpfe : ptr to vpfe device
1247 * set the buffer address in the vpfe register for capture.
1250 * Assumes caller is holding vpfe->dma_queue_lock already
1252 static inline void vpfe_schedule_next_buffer(struct vpfe_device *vpfe) vpfe_schedule_next_buffer() argument
1254 vpfe->next_frm = list_entry(vpfe->dma_queue.next, vpfe_schedule_next_buffer()
1256 list_del(&vpfe->next_frm->list); vpfe_schedule_next_buffer()
1258 vpfe_set_sdr_addr(&vpfe->ccdc, vpfe_schedule_next_buffer()
1259 vb2_dma_contig_plane_dma_addr(&vpfe->next_frm->vb, 0)); vpfe_schedule_next_buffer()
1262 static inline void vpfe_schedule_bottom_field(struct vpfe_device *vpfe) vpfe_schedule_bottom_field() argument
1266 addr = vb2_dma_contig_plane_dma_addr(&vpfe->next_frm->vb, 0) + vpfe_schedule_bottom_field()
1267 vpfe->field_off; vpfe_schedule_bottom_field()
1269 vpfe_set_sdr_addr(&vpfe->ccdc, addr); vpfe_schedule_bottom_field()
1274 * @vpfe : ptr to vpfe device
1280 static inline void vpfe_process_buffer_complete(struct vpfe_device *vpfe) vpfe_process_buffer_complete() argument
1282 v4l2_get_timestamp(&vpfe->cur_frm->vb.v4l2_buf.timestamp); vpfe_process_buffer_complete()
1283 vpfe->cur_frm->vb.v4l2_buf.field = vpfe->fmt.fmt.pix.field; vpfe_process_buffer_complete()
1284 vpfe->cur_frm->vb.v4l2_buf.sequence = vpfe->sequence++; vpfe_process_buffer_complete()
1285 vb2_buffer_done(&vpfe->cur_frm->vb, VB2_BUF_STATE_DONE); vpfe_process_buffer_complete()
1286 vpfe->cur_frm = vpfe->next_frm; vpfe_process_buffer_complete()
1290 * vpfe_isr : ISR handler for vpfe capture (VINT0)
1299 struct vpfe_device *vpfe = (struct vpfe_device *)dev; vpfe_isr() local
1304 intr_status = vpfe_reg_read(&vpfe->ccdc, VPFE_IRQ_STS); vpfe_isr()
1307 field = vpfe->fmt.fmt.pix.field; vpfe_isr()
1311 if (vpfe->cur_frm != vpfe->next_frm) vpfe_isr()
1312 vpfe_process_buffer_complete(vpfe); vpfe_isr()
1318 fid = vpfe_ccdc_getfid(&vpfe->ccdc); vpfe_isr()
1321 vpfe->field ^= 1; vpfe_isr()
1322 if (fid == vpfe->field) { vpfe_isr()
1330 if (vpfe->cur_frm != vpfe->next_frm) vpfe_isr()
1331 vpfe_process_buffer_complete(vpfe); vpfe_isr()
1338 vpfe_schedule_bottom_field(vpfe); vpfe_isr()
1348 spin_lock(&vpfe->dma_queue_lock); vpfe_isr()
1349 if (!list_empty(&vpfe->dma_queue) && vpfe_isr()
1350 vpfe->cur_frm == vpfe->next_frm) vpfe_isr()
1351 vpfe_schedule_next_buffer(vpfe); vpfe_isr()
1352 spin_unlock(&vpfe->dma_queue_lock); vpfe_isr()
1358 vpfe->field = fid; vpfe_isr()
1364 spin_lock(&vpfe->dma_queue_lock); vpfe_isr()
1365 if (vpfe->fmt.fmt.pix.field == V4L2_FIELD_NONE && vpfe_isr()
1366 !list_empty(&vpfe->dma_queue) && vpfe_isr()
1367 vpfe->cur_frm == vpfe->next_frm) vpfe_isr()
1368 vpfe_schedule_next_buffer(vpfe); vpfe_isr()
1369 spin_unlock(&vpfe->dma_queue_lock); vpfe_isr()
1372 vpfe_clear_intr(&vpfe->ccdc, intr_status); vpfe_isr()
1377 static inline void vpfe_detach_irq(struct vpfe_device *vpfe) vpfe_detach_irq() argument
1382 frame_format = vpfe_ccdc_get_frame_format(&vpfe->ccdc); vpfe_detach_irq()
1386 vpfe_reg_write(&vpfe->ccdc, intr, VPFE_IRQ_EN_CLR); vpfe_detach_irq()
1389 static inline void vpfe_attach_irq(struct vpfe_device *vpfe) vpfe_attach_irq() argument
1394 frame_format = vpfe_ccdc_get_frame_format(&vpfe->ccdc); vpfe_attach_irq()
1398 vpfe_reg_write(&vpfe->ccdc, intr, VPFE_IRQ_EN_SET); vpfe_attach_irq()
1404 struct vpfe_device *vpfe = video_drvdata(file); vpfe_querycap() local
1406 vpfe_dbg(2, vpfe, "vpfe_querycap\n"); vpfe_querycap()
1411 "platform:%s", vpfe->v4l2_dev.name); vpfe_querycap()
1420 static int __vpfe_get_format(struct vpfe_device *vpfe, __vpfe_get_format() argument
1428 sdinfo = vpfe->current_subdev; __vpfe_get_format()
1441 mbus_to_pix(vpfe, &fmt.format, &format->fmt.pix, bpp); __vpfe_get_format()
1443 ret = v4l2_device_call_until_err(&vpfe->v4l2_dev, __vpfe_get_format()
1450 mbus_to_pix(vpfe, &mbus_fmt, &format->fmt.pix, bpp); __vpfe_get_format()
1453 format->type = vpfe->fmt.type; __vpfe_get_format()
1455 vpfe_dbg(1, vpfe, __vpfe_get_format()
1465 static int __vpfe_set_format(struct vpfe_device *vpfe, __vpfe_set_format() argument
1473 vpfe_dbg(2, vpfe, "__vpfe_set_format\n"); __vpfe_set_format()
1475 sdinfo = vpfe->current_subdev; __vpfe_set_format()
1482 pix_to_mbus(vpfe, &format->fmt.pix, &fmt.format); __vpfe_set_format()
1490 mbus_to_pix(vpfe, &fmt.format, &format->fmt.pix, bpp); __vpfe_set_format()
1492 ret = v4l2_device_call_until_err(&vpfe->v4l2_dev, __vpfe_set_format()
1500 mbus_to_pix(vpfe, &mbus_fmt, &format->fmt.pix, bpp); __vpfe_set_format()
1503 format->type = vpfe->fmt.type; __vpfe_set_format()
1505 vpfe_dbg(1, vpfe, __vpfe_set_format()
1517 struct vpfe_device *vpfe = video_drvdata(file); vpfe_g_fmt() local
1519 vpfe_dbg(2, vpfe, "vpfe_g_fmt\n"); vpfe_g_fmt()
1521 *fmt = vpfe->fmt; vpfe_g_fmt()
1529 struct vpfe_device *vpfe = video_drvdata(file); vpfe_enum_fmt() local
1534 vpfe_dbg(2, vpfe, "vpfe_enum_format index:%d\n", vpfe_enum_fmt()
1537 sdinfo = vpfe->current_subdev; vpfe_enum_fmt()
1555 f->type = vpfe->fmt.type; vpfe_enum_fmt()
1557 vpfe_dbg(1, vpfe, "vpfe_enum_format: mbus index: %d code: %x pixelformat: %s [%s]\n", vpfe_enum_fmt()
1566 struct vpfe_device *vpfe = video_drvdata(file); vpfe_try_fmt() local
1569 vpfe_dbg(2, vpfe, "vpfe_try_fmt\n"); vpfe_try_fmt()
1571 return __vpfe_get_format(vpfe, fmt, &bpp); vpfe_try_fmt()
1577 struct vpfe_device *vpfe = video_drvdata(file); vpfe_s_fmt() local
1582 vpfe_dbg(2, vpfe, "vpfe_s_fmt\n"); vpfe_s_fmt()
1585 if (vb2_is_busy(&vpfe->buffer_queue)) { vpfe_s_fmt()
1586 vpfe_err(vpfe, "%s device busy\n", __func__); vpfe_s_fmt()
1599 ret = __vpfe_set_format(vpfe, fmt, &bpp); vpfe_s_fmt()
1606 vpfe_detach_irq(vpfe); vpfe_s_fmt()
1607 vpfe->fmt = *fmt; vpfe_s_fmt()
1608 vpfe->bpp = bpp; vpfe_s_fmt()
1611 vpfe->crop.width = fmt->fmt.pix.width; vpfe_s_fmt()
1612 vpfe->crop.height = fmt->fmt.pix.height; vpfe_s_fmt()
1615 return vpfe_config_ccdc_image_format(vpfe); vpfe_s_fmt()
1621 struct vpfe_device *vpfe = video_drvdata(file); vpfe_enum_size() local
1629 vpfe_dbg(2, vpfe, "vpfe_enum_size\n"); vpfe_enum_size()
1634 vpfe_dbg(3, vpfe, "Invalid pixel code: %x, default used instead\n", vpfe_enum_size()
1641 sdinfo = vpfe->current_subdev; vpfe_enum_size()
1652 pix_to_mbus(vpfe, &pix, &mbus); vpfe_enum_size()
1663 vpfe_dbg(1, vpfe, "vpfe_enum_size: index: %d code: %x W:[%d,%d] H:[%d,%d]\n", vpfe_enum_size()
1671 vpfe_dbg(1, vpfe, "vpfe_enum_size: index: %d pixformat: %s size: %dx%d\n", vpfe_enum_size()
1683 vpfe_get_subdev_input_index(struct vpfe_device *vpfe, vpfe_get_subdev_input_index() argument
1688 struct vpfe_config *cfg = vpfe->cfg; vpfe_get_subdev_input_index()
1692 for (i = 0; i < ARRAY_SIZE(vpfe->cfg->asd); i++) { vpfe_get_subdev_input_index()
1709 static int vpfe_get_app_input_index(struct vpfe_device *vpfe, vpfe_get_app_input_index() argument
1712 struct vpfe_config *cfg = vpfe->cfg; vpfe_get_app_input_index()
1718 curr_client = v4l2_get_subdevdata(vpfe->current_subdev->sd); vpfe_get_app_input_index()
1719 for (i = 0; i < ARRAY_SIZE(vpfe->cfg->asd); i++) { vpfe_get_app_input_index()
1724 if (vpfe->current_input >= 1) vpfe_get_app_input_index()
1726 *app_input_index = j + vpfe->current_input; vpfe_get_app_input_index()
1737 struct vpfe_device *vpfe = video_drvdata(file); vpfe_enum_input() local
1741 vpfe_dbg(2, vpfe, "vpfe_enum_input\n"); vpfe_enum_input()
1743 if (vpfe_get_subdev_input_index(vpfe, &subdev, &index, vpfe_enum_input()
1745 vpfe_dbg(1, vpfe, vpfe_enum_input()
1749 sdinfo = &vpfe->cfg->sub_devs[subdev]; vpfe_enum_input()
1757 struct vpfe_device *vpfe = video_drvdata(file); vpfe_g_input() local
1759 vpfe_dbg(2, vpfe, "vpfe_g_input\n"); vpfe_g_input()
1761 return vpfe_get_app_input_index(vpfe, index); vpfe_g_input()
1765 static int vpfe_set_input(struct vpfe_device *vpfe, unsigned int index) vpfe_set_input() argument
1773 vpfe_dbg(2, vpfe, "vpfe_set_input: index: %d\n", index); vpfe_set_input()
1776 if (vb2_is_busy(&vpfe->buffer_queue)) { vpfe_set_input()
1777 vpfe_err(vpfe, "%s device busy\n", __func__); vpfe_set_input()
1780 ret = vpfe_get_subdev_input_index(vpfe, vpfe_set_input()
1785 vpfe_err(vpfe, "invalid input index: %d\n", index); vpfe_set_input()
1789 sdinfo = &vpfe->cfg->sub_devs[subdev_index]; vpfe_set_input()
1790 sdinfo->sd = vpfe->sd[subdev_index]; vpfe_set_input()
1799 vpfe_err(vpfe, "s_routing failed\n"); vpfe_set_input()
1807 vpfe->current_subdev = sdinfo; vpfe_set_input()
1809 vpfe->v4l2_dev.ctrl_handler = sdinfo->sd->ctrl_handler; vpfe_set_input()
1810 vpfe->current_input = index; vpfe_set_input()
1811 vpfe->std_index = 0; vpfe_set_input()
1814 ret = vpfe_ccdc_set_hw_if_params(&vpfe->ccdc, &sdinfo->vpfe_param); vpfe_set_input()
1819 return vpfe_config_image_format(vpfe, vpfe_set_input()
1820 vpfe_standards[vpfe->std_index].std_id); vpfe_set_input()
1828 struct vpfe_device *vpfe = video_drvdata(file); vpfe_s_input() local
1830 vpfe_dbg(2, vpfe, vpfe_s_input()
1833 return vpfe_set_input(vpfe, index); vpfe_s_input()
1838 struct vpfe_device *vpfe = video_drvdata(file); vpfe_querystd() local
1841 vpfe_dbg(2, vpfe, "vpfe_querystd\n"); vpfe_querystd()
1843 sdinfo = vpfe->current_subdev; vpfe_querystd()
1848 return v4l2_device_call_until_err(&vpfe->v4l2_dev, sdinfo->grp_id, vpfe_querystd()
1854 struct vpfe_device *vpfe = video_drvdata(file); vpfe_s_std() local
1858 vpfe_dbg(2, vpfe, "vpfe_s_std\n"); vpfe_s_std()
1860 sdinfo = vpfe->current_subdev; vpfe_s_std()
1865 if (vb2_is_busy(&vpfe->buffer_queue)) { vpfe_s_std()
1866 vpfe_err(vpfe, "%s device busy\n", __func__); vpfe_s_std()
1871 ret = v4l2_device_call_until_err(&vpfe->v4l2_dev, sdinfo->grp_id, vpfe_s_std()
1874 vpfe_err(vpfe, "Failed to set standard\n"); vpfe_s_std()
1877 ret = vpfe_config_image_format(vpfe, std_id); vpfe_s_std()
1884 struct vpfe_device *vpfe = video_drvdata(file); vpfe_g_std() local
1887 vpfe_dbg(2, vpfe, "vpfe_g_std\n"); vpfe_g_std()
1889 sdinfo = vpfe->current_subdev; vpfe_g_std()
1893 *std_id = vpfe_standards[vpfe->std_index].std_id; vpfe_g_std()
1902 static void vpfe_calculate_offsets(struct vpfe_device *vpfe) vpfe_calculate_offsets() argument
1906 vpfe_dbg(2, vpfe, "vpfe_calculate_offsets\n"); vpfe_calculate_offsets()
1908 vpfe_ccdc_get_image_window(&vpfe->ccdc, &image_win); vpfe_calculate_offsets()
1909 vpfe->field_off = image_win.height * image_win.width; vpfe_calculate_offsets()
1929 struct vpfe_device *vpfe = vb2_get_drv_priv(vq); vpfe_queue_setup() local
1931 if (fmt && fmt->fmt.pix.sizeimage < vpfe->fmt.fmt.pix.sizeimage) vpfe_queue_setup()
1938 sizes[0] = fmt ? fmt->fmt.pix.sizeimage : vpfe->fmt.fmt.pix.sizeimage; vpfe_queue_setup()
1939 alloc_ctxs[0] = vpfe->alloc_ctx; vpfe_queue_setup()
1941 vpfe_dbg(1, vpfe, vpfe_queue_setup()
1945 vpfe_calculate_offsets(vpfe); vpfe_queue_setup()
1960 struct vpfe_device *vpfe = vb2_get_drv_priv(vb->vb2_queue); vpfe_buffer_prepare() local
1962 vb2_set_plane_payload(vb, 0, vpfe->fmt.fmt.pix.sizeimage); vpfe_buffer_prepare()
1967 vb->v4l2_buf.field = vpfe->fmt.fmt.pix.field; vpfe_buffer_prepare()
1978 struct vpfe_device *vpfe = vb2_get_drv_priv(vb->vb2_queue); vpfe_buffer_queue() local
1983 spin_lock_irqsave(&vpfe->dma_queue_lock, flags); vpfe_buffer_queue()
1984 list_add_tail(&buf->list, &vpfe->dma_queue); vpfe_buffer_queue()
1985 spin_unlock_irqrestore(&vpfe->dma_queue_lock, flags); vpfe_buffer_queue()
1995 struct vpfe_device *vpfe = vb2_get_drv_priv(vq); vpfe_start_streaming() local
2002 spin_lock_irqsave(&vpfe->dma_queue_lock, flags); vpfe_start_streaming()
2004 vpfe->field = 0; vpfe_start_streaming()
2005 vpfe->sequence = 0; vpfe_start_streaming()
2007 sdinfo = vpfe->current_subdev; vpfe_start_streaming()
2009 vpfe_attach_irq(vpfe); vpfe_start_streaming()
2011 if (vpfe->ccdc.ccdc_cfg.if_type == VPFE_RAW_BAYER) vpfe_start_streaming()
2012 vpfe_ccdc_config_raw(&vpfe->ccdc); vpfe_start_streaming()
2014 vpfe_ccdc_config_ycbcr(&vpfe->ccdc); vpfe_start_streaming()
2017 vpfe->next_frm = list_entry(vpfe->dma_queue.next, vpfe_start_streaming()
2019 vpfe->cur_frm = vpfe->next_frm; vpfe_start_streaming()
2021 list_del(&vpfe->cur_frm->list); vpfe_start_streaming()
2022 spin_unlock_irqrestore(&vpfe->dma_queue_lock, flags); vpfe_start_streaming()
2024 addr = vb2_dma_contig_plane_dma_addr(&vpfe->cur_frm->vb, 0); vpfe_start_streaming()
2026 vpfe_set_sdr_addr(&vpfe->ccdc, (unsigned long)(addr)); vpfe_start_streaming()
2028 vpfe_pcr_enable(&vpfe->ccdc, 1); vpfe_start_streaming()
2032 vpfe_err(vpfe, "Error in attaching interrupt handle\n"); vpfe_start_streaming()
2039 list_for_each_entry_safe(buf, tmp, &vpfe->dma_queue, list) { vpfe_start_streaming()
2056 struct vpfe_device *vpfe = vb2_get_drv_priv(vq); vpfe_stop_streaming() local
2061 vpfe_pcr_enable(&vpfe->ccdc, 0); vpfe_stop_streaming()
2063 vpfe_detach_irq(vpfe); vpfe_stop_streaming()
2065 sdinfo = vpfe->current_subdev; vpfe_stop_streaming()
2068 vpfe_dbg(1, vpfe, "stream off failed in subdev\n"); vpfe_stop_streaming()
2071 spin_lock_irqsave(&vpfe->dma_queue_lock, flags); vpfe_stop_streaming()
2072 if (vpfe->cur_frm == vpfe->next_frm) { vpfe_stop_streaming()
2073 vb2_buffer_done(&vpfe->cur_frm->vb, VB2_BUF_STATE_ERROR); vpfe_stop_streaming()
2075 if (vpfe->cur_frm != NULL) vpfe_stop_streaming()
2076 vb2_buffer_done(&vpfe->cur_frm->vb, vpfe_stop_streaming()
2078 if (vpfe->next_frm != NULL) vpfe_stop_streaming()
2079 vb2_buffer_done(&vpfe->next_frm->vb, vpfe_stop_streaming()
2083 while (!list_empty(&vpfe->dma_queue)) { vpfe_stop_streaming()
2084 vpfe->next_frm = list_entry(vpfe->dma_queue.next, vpfe_stop_streaming()
2086 list_del(&vpfe->next_frm->list); vpfe_stop_streaming()
2087 vb2_buffer_done(&vpfe->next_frm->vb, VB2_BUF_STATE_ERROR); vpfe_stop_streaming()
2089 spin_unlock_irqrestore(&vpfe->dma_queue_lock, flags); vpfe_stop_streaming()
2095 struct vpfe_device *vpfe = video_drvdata(file); vpfe_cropcap() local
2097 vpfe_dbg(2, vpfe, "vpfe_cropcap\n"); vpfe_cropcap()
2099 if (vpfe->std_index >= ARRAY_SIZE(vpfe_standards)) vpfe_cropcap()
2105 crop->defrect.width = vpfe_standards[vpfe->std_index].width; vpfe_cropcap()
2107 crop->defrect.height = vpfe_standards[vpfe->std_index].height; vpfe_cropcap()
2109 crop->pixelaspect = vpfe_standards[vpfe->std_index].pixelaspect; vpfe_cropcap()
2117 struct vpfe_device *vpfe = video_drvdata(file); vpfe_g_selection() local
2123 s->r.width = vpfe->crop.width; vpfe_g_selection()
2124 s->r.height = vpfe->crop.height; vpfe_g_selection()
2128 s->r = vpfe->crop; vpfe_g_selection()
2155 struct vpfe_device *vpfe = video_drvdata(file); vpfe_s_selection() local
2156 struct v4l2_rect cr = vpfe->crop; vpfe_s_selection()
2160 if (vb2_is_busy(&vpfe->buffer_queue)) { vpfe_s_selection()
2161 vpfe_err(vpfe, "%s device busy\n", __func__); vpfe_s_selection()
2181 s->r = vpfe->crop = r; vpfe_s_selection()
2183 vpfe_ccdc_set_image_window(&vpfe->ccdc, &r, vpfe->bpp); vpfe_s_selection()
2184 vpfe->fmt.fmt.pix.width = r.width; vpfe_s_selection()
2185 vpfe->fmt.fmt.pix.height = r.height; vpfe_s_selection()
2186 vpfe->fmt.fmt.pix.bytesperline = vpfe_ccdc_get_line_length(&vpfe->ccdc); vpfe_s_selection()
2187 vpfe->fmt.fmt.pix.sizeimage = vpfe->fmt.fmt.pix.bytesperline * vpfe_s_selection()
2188 vpfe->fmt.fmt.pix.height; vpfe_s_selection()
2190 vpfe_dbg(1, vpfe, "cropped (%d,%d)/%dx%d of %dx%d\n", vpfe_s_selection()
2199 struct vpfe_device *vpfe = video_drvdata(file); vpfe_ioctl_default() local
2202 vpfe_dbg(2, vpfe, "vpfe_ioctl_default\n"); vpfe_ioctl_default()
2205 vpfe_err(vpfe, "%s device busy\n", __func__); vpfe_ioctl_default()
2210 if (vb2_is_busy(&vpfe->buffer_queue)) { vpfe_ioctl_default()
2211 vpfe_err(vpfe, "%s device busy\n", __func__); vpfe_ioctl_default()
2217 ret = vpfe_ccdc_set_params(&vpfe->ccdc, (void __user *)param); vpfe_ioctl_default()
2219 vpfe_dbg(2, vpfe, vpfe_ioctl_default()
2223 ret = vpfe_get_ccdc_image_format(vpfe, vpfe_ioctl_default()
2224 &vpfe->fmt); vpfe_ioctl_default()
2226 vpfe_dbg(2, vpfe, vpfe_ioctl_default()
2250 /* vpfe capture driver file operations */
2261 /* vpfe capture ioctl operations */
2305 struct vpfe_device *vpfe = container_of(notifier->v4l2_dev, vpfe_async_bound() local
2312 vpfe_dbg(1, vpfe, "vpfe_async_bound\n"); vpfe_async_bound()
2314 for (i = 0; i < ARRAY_SIZE(vpfe->cfg->asd); i++) { vpfe_async_bound()
2315 if (vpfe->cfg->asd[i]->match.of.node == asd[i].match.of.node) { vpfe_async_bound()
2316 sdinfo = &vpfe->cfg->sub_devs[i]; vpfe_async_bound()
2317 vpfe->sd[i] = subdev; vpfe_async_bound()
2318 vpfe->sd[i]->grp_id = sdinfo->grp_id; vpfe_async_bound()
2325 vpfe_info(vpfe, "sub device (%s) not matched\n", subdev->name); vpfe_async_bound()
2329 vpfe->video_dev.tvnorms |= sdinfo->inputs[0].std; vpfe_async_bound()
2355 static int vpfe_probe_complete(struct vpfe_device *vpfe) vpfe_probe_complete() argument
2361 spin_lock_init(&vpfe->dma_queue_lock); vpfe_probe_complete()
2362 mutex_init(&vpfe->lock); vpfe_probe_complete()
2364 vpfe->fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; vpfe_probe_complete()
2367 vpfe->current_subdev = &vpfe->cfg->sub_devs[0]; vpfe_probe_complete()
2368 vpfe->v4l2_dev.ctrl_handler = vpfe->sd[0]->ctrl_handler; vpfe_probe_complete()
2370 err = vpfe_set_input(vpfe, 0); vpfe_probe_complete()
2375 vpfe->alloc_ctx = vb2_dma_contig_init_ctx(vpfe->pdev); vpfe_probe_complete()
2376 if (IS_ERR(vpfe->alloc_ctx)) { vpfe_probe_complete()
2377 vpfe_err(vpfe, "Failed to get the context\n"); vpfe_probe_complete()
2378 err = PTR_ERR(vpfe->alloc_ctx); vpfe_probe_complete()
2382 q = &vpfe->buffer_queue; vpfe_probe_complete()
2385 q->drv_priv = vpfe; vpfe_probe_complete()
2390 q->lock = &vpfe->lock; vpfe_probe_complete()
2395 vpfe_err(vpfe, "vb2_queue_init() failed\n"); vpfe_probe_complete()
2396 vb2_dma_contig_cleanup_ctx(vpfe->alloc_ctx); vpfe_probe_complete()
2400 INIT_LIST_HEAD(&vpfe->dma_queue); vpfe_probe_complete()
2402 vdev = &vpfe->video_dev; vpfe_probe_complete()
2407 vdev->v4l2_dev = &vpfe->v4l2_dev; vpfe_probe_complete()
2410 vdev->lock = &vpfe->lock; vpfe_probe_complete()
2411 video_set_drvdata(vdev, vpfe); vpfe_probe_complete()
2412 err = video_register_device(&vpfe->video_dev, VFL_TYPE_GRABBER, -1); vpfe_probe_complete()
2414 vpfe_err(vpfe, vpfe_probe_complete()
2422 v4l2_device_unregister(&vpfe->v4l2_dev); vpfe_probe_complete()
2428 struct vpfe_device *vpfe = container_of(notifier->v4l2_dev, vpfe_async_complete() local
2431 return vpfe_probe_complete(vpfe); vpfe_async_complete()
2475 of_property_read_u32(endpoint, "ti,am437x-vpfe-interface", vpfe_get_pdata()
2541 struct vpfe_device *vpfe; vpfe_probe() local
2551 vpfe = devm_kzalloc(&pdev->dev, sizeof(*vpfe), GFP_KERNEL); vpfe_probe()
2552 if (!vpfe) vpfe_probe()
2555 vpfe->pdev = &pdev->dev; vpfe_probe()
2556 vpfe->cfg = vpfe_cfg; vpfe_probe()
2557 ccdc = &vpfe->ccdc; vpfe_probe()
2564 vpfe->irq = platform_get_irq(pdev, 0); vpfe_probe()
2565 if (vpfe->irq <= 0) { vpfe_probe()
2570 ret = devm_request_irq(vpfe->pdev, vpfe->irq, vpfe_isr, 0, vpfe_probe()
2571 "vpfe_capture0", vpfe); vpfe_probe()
2577 ret = v4l2_device_register(&pdev->dev, &vpfe->v4l2_dev); vpfe_probe()
2579 vpfe_err(vpfe, vpfe_probe()
2585 platform_set_drvdata(pdev, vpfe); vpfe_probe()
2596 vpfe->sd = devm_kzalloc(&pdev->dev, sizeof(struct v4l2_subdev *) * vpfe_probe()
2597 ARRAY_SIZE(vpfe->cfg->asd), GFP_KERNEL); vpfe_probe()
2598 if (!vpfe->sd) { vpfe_probe()
2603 vpfe->notifier.subdevs = vpfe->cfg->asd; vpfe_probe()
2604 vpfe->notifier.num_subdevs = ARRAY_SIZE(vpfe->cfg->asd); vpfe_probe()
2605 vpfe->notifier.bound = vpfe_async_bound; vpfe_probe()
2606 vpfe->notifier.complete = vpfe_async_complete; vpfe_probe()
2607 ret = v4l2_async_notifier_register(&vpfe->v4l2_dev, vpfe_probe()
2608 &vpfe->notifier); vpfe_probe()
2610 vpfe_err(vpfe, "Error registering async notifier\n"); vpfe_probe()
2618 v4l2_device_unregister(&vpfe->v4l2_dev); vpfe_probe()
2627 struct vpfe_device *vpfe = platform_get_drvdata(pdev); vpfe_remove() local
2629 vpfe_dbg(2, vpfe, "vpfe_remove\n"); vpfe_remove()
2633 v4l2_async_notifier_unregister(&vpfe->notifier); vpfe_remove()
2634 v4l2_device_unregister(&vpfe->v4l2_dev); vpfe_remove()
2635 video_unregister_device(&vpfe->video_dev); vpfe_remove()
2674 struct vpfe_device *vpfe = platform_get_drvdata(pdev); vpfe_suspend() local
2675 struct vpfe_ccdc *ccdc = &vpfe->ccdc; vpfe_suspend()
2678 if (!vb2_start_streaming_called(&vpfe->buffer_queue)) vpfe_suspend()
2732 struct vpfe_device *vpfe = platform_get_drvdata(pdev); vpfe_resume() local
2733 struct vpfe_ccdc *ccdc = &vpfe->ccdc; vpfe_resume()
2736 if (!vb2_start_streaming_called(&vpfe->buffer_queue)) vpfe_resume()
2760 { .compatible = "ti,am437x-vpfe", },
H A Dam437x-vpfe.h24 #include <linux/am437x-vpfe.h>
228 /* vpfe cfg */
/linux-4.1.27/drivers/staging/media/davinci_vpfe/
H A Dvpfe.h32 #define CAPTURE_DRV_NAME "vpfe-capture"
72 /* Number of sub devices connected to vpfe */
82 /* clocks used for vpfe capture */
H A Dvpfe_mc_capture.c71 #include "vpfe.h"
192 * vpfe_disable_clock() - Disable clocks for vpfe capture driver
193 * @vpfe_dev - ptr to vpfe capture device
195 * Disables clocks defined in vpfe configuration. The function
209 v4l2_info(vpfe_dev->pdev->driver, "vpfe capture clocks disabled\n"); vpfe_disable_clock()
213 * vpfe_enable_clock() - Enable clocks for vpfe capture driver
214 * @vpfe_dev - ptr to vpfe capture device
216 * Enables clocks defined in vpfe configuration. The function
237 "clock %s is not defined in vpfe config\n", vpfe_enable_clock()
253 "vpfe clock %s not enabled\n", vpfe_enable_clock()
277 * vpfe_detach_irq() - Detach IRQs for vpfe capture driver
278 * @vpfe_dev - ptr to vpfe capture device
280 * Detach all IRQs defined in vpfe configuration.
290 * vpfe_attach_irq() - Attach IRQs for vpfe capture driver
291 * @vpfe_dev - ptr to vpfe capture device
293 * Attach all IRQs defined in vpfe configuration.
331 * @vpfe_dev - ptr to vpfe capture device
406 * @vpfe_dev - ptr to vpfe capture device
499 * @vpfe_dev - ptr to vpfe capture device
513 * @vpfe_dev - ptr to vpfe capture device
529 * @vpfe_dev - ptr to vpfe capture device
568 * vpfe_probe() : vpfe probe function
585 v4l2_err(pdev->dev.driver, "Unable to get vpfe config\n"); vpfe_probe()
H A Dvpfe_mc_capture.h57 /* vpfe cfg */
59 /* clock ptrs for vpfe capture */
H A Dvpfe_video.c27 #include "vpfe.h"
272 * @vpfe_dev: vpfe device
273 * @pipe: vpfe pipeline
312 * @vpfe_dev: vpfe device
500 * deletes buffer queue, frees the buffers and the vpfe file handle
574 /* vpfe capture driver file operations */
1541 /* vpfe capture ioctl operations */
1614 /* vpfe video device register function */ vpfe_video_register()
1629 /* vpfe video device unregister function */ vpfe_video_unregister()
H A Dvpfe_video.h80 /* vpfe device */
H A Ddm365_ipipeif.c789 * @vpfe_dev: vpfe device pointer
887 struct vpfe_device *vpfe = to_vpfe_device(ipipeif); ipipeif_link_setup() local
916 if (remote->entity == &vpfe->vpfe_ipipe.subdev.entity) ipipeif_link_setup()
919 else if (remote->entity == &vpfe->vpfe_resizer. ipipeif_link_setup()
H A Ddm365_resizer.c916 * @resizer: vpfe resizer device pointer.
935 * @resizer: vpfe resizer device pointer.
966 * @vpfe_dev: vpfe device pointer.
980 * @vpfe_dev: vpfe device pointer.
1036 * @resizer: vpfe resizer device pointer.
1085 * @resizer: vpfe resizer device pointer.
1150 * @resizer: vpfe resizer device pointer.
/linux-4.1.27/include/media/davinci/
H A Dvpfe_capture.h45 #define CAPTURE_DRV_NAME "vpfe-capture"
85 /* Number of sub devices connected to vpfe */
95 /* vpfe clock */
108 /* vpfe cfg */
/linux-4.1.27/drivers/media/platform/davinci/
H A Dccdc_hw_device.h105 /* Used by CCDC module to register & unregister with vpfe capture driver */
H A Dvpfe_capture.c107 /* This make sure vpfe is probed and ready to go */
193 * lookup an entry in the vpfe pix format table based on pix_format
208 * register with vpfe capture
236 * walk through it during vpfe probe vpfe_register_ccdc_device()
238 printk(KERN_ERR "vpfe capture not initialized\n"); vpfe_register_ccdc_device()
264 * unregister with vpfe capture
371 * pix format & crop values in the vpfe device and ccdc. It first
707 * buffers and the vpfe file handle
787 /* vpfe capture driver file operations */
803 * If given pixformat is not in the vpfe list of pix formats or not
826 * use current pixel format in the vpfe device. We vpfe_check_format()
848 * Since this is currently used in the vpfe device, we vpfe_check_format()
861 * if field is not same as current field in the vpfe device vpfe_check_format()
1740 /* vpfe capture ioctl operations */
1820 v4l2_err(pdev->dev.driver, "Unable to get vpfe config\n"); vpfe_probe()
1904 "trying to register vpfe device.\n"); vpfe_probe()
H A Disif.c24 * configures the ISIF upon commands from the vpfe bridge driver through
1044 * first try to register with vpfe. If not correct platform, then we isif_probe()
1095 printk(KERN_NOTICE "%s is registered with vpfe.\n", isif_probe()
H A Ddm355_ccdc.c970 * first try to register with vpfe. If not correct platform, then we dm355_ccdc_probe()
1007 printk(KERN_NOTICE "%s is registered with vpfe.\n", ccdc_hw_dev.name); dm355_ccdc_probe()
H A Ddm644x_ccdc.c959 * first try to register with vpfe. If not correct platform, then we dm644x_ccdc_probe()
985 printk(KERN_NOTICE "%s is registered with vpfe.\n", ccdc_hw_dev.name); dm644x_ccdc_probe()
/linux-4.1.27/drivers/clk/ti/
H A Dclk-3xxx.c297 DT_CLK("vpfe-capture", "master", "vpfe_ick"),
298 DT_CLK("vpfe-capture", "slave", "vpfe_fck"),
H A Dclk-3xxx-legacy.c4558 CLK("vpfe-capture", "master", &vpfe_ick),
4559 CLK("vpfe-capture", "slave", &vpfe_fck),
/linux-4.1.27/arch/arm/mach-davinci/
H A Dboard-dm355-evm.c205 * ouput that goes to vpfe. There is a one to one correspondence
H A Dboard-dm365-evm.c336 * ouput that goes to vpfe. There is a one to one correspondence
H A Dboard-dm644x-evm.c220 * ouput that goes to vpfe. There is a one to one correspondence
/linux-4.1.27/arch/arm/mach-omap2/
H A Domap_hwmod_43xx_data.c557 .name = "vpfe",

Completed in 539 milliseconds