1/* 2 * Copyright (C) 2012 Texas Instruments Inc 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License as 6 * published by the Free Software Foundation version 2. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program; if not, write to the Free Software 15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 16 * 17 * Contributors: 18 * Manjunath Hadli <manjunath.hadli@ti.com> 19 * Prabhakar Lad <prabhakar.lad@ti.com> 20 */ 21 22#ifndef _DAVINCI_VPFE_MC_CAPTURE_H 23#define _DAVINCI_VPFE_MC_CAPTURE_H 24 25#include "dm365_ipipe.h" 26#include "dm365_ipipeif.h" 27#include "dm365_isif.h" 28#include "dm365_resizer.h" 29#include "vpfe_video.h" 30 31#define VPFE_MAJOR_RELEASE 0 32#define VPFE_MINOR_RELEASE 0 33#define VPFE_BUILD 1 34#define VPFE_CAPTURE_VERSION_CODE ((VPFE_MAJOR_RELEASE << 16) | \ 35 (VPFE_MINOR_RELEASE << 8) | \ 36 VPFE_BUILD) 37 38/* IPIPE hardware limits */ 39#define IPIPE_MAX_OUTPUT_WIDTH_A 2176 40#define IPIPE_MAX_OUTPUT_WIDTH_B 640 41 42/* Based on max resolution supported. QXGA */ 43#define IPIPE_MAX_OUTPUT_HEIGHT_A 1536 44/* Based on max resolution supported. VGA */ 45#define IPIPE_MAX_OUTPUT_HEIGHT_B 480 46 47#define to_vpfe_device(ptr_module) \ 48 container_of(ptr_module, struct vpfe_device, vpfe_##ptr_module) 49#define to_device(ptr_module) \ 50 (to_vpfe_device(ptr_module)->dev) 51 52struct vpfe_device { 53 /* external registered sub devices */ 54 struct v4l2_subdev **sd; 55 /* number of registered external subdevs */ 56 unsigned int num_ext_subdevs; 57 /* vpfe cfg */ 58 struct vpfe_config *cfg; 59 /* clock ptrs for vpfe capture */ 60 struct clk **clks; 61 /* V4l2 device */ 62 struct v4l2_device v4l2_dev; 63 /* parent device */ 64 struct device *pdev; 65 /* IRQ number for DMA transfer completion at the image processor */ 66 unsigned int imp_dma_irq; 67 /* CCDC IRQs used when CCDC/ISIF output to SDRAM */ 68 unsigned int ccdc_irq0; 69 unsigned int ccdc_irq1; 70 /* maximum video memory that is available*/ 71 unsigned int video_limit; 72 /* media device */ 73 struct media_device media_dev; 74 /* ccdc subdevice */ 75 struct vpfe_isif_device vpfe_isif; 76 /* ipipeif subdevice */ 77 struct vpfe_ipipeif_device vpfe_ipipeif; 78 /* ipipe subdevice */ 79 struct vpfe_ipipe_device vpfe_ipipe; 80 /* resizer subdevice */ 81 struct vpfe_resizer_device vpfe_resizer; 82}; 83 84/* File handle structure */ 85struct vpfe_fh { 86 struct v4l2_fh vfh; 87 struct vpfe_video_device *video; 88 /* Indicates whether this file handle is doing IO */ 89 u8 io_allowed; 90 /* Used to keep track priority of this instance */ 91 enum v4l2_priority prio; 92}; 93 94void mbus_to_pix(const struct v4l2_mbus_framefmt *mbus, 95 struct v4l2_pix_format *pix); 96 97#endif /* _DAVINCI_VPFE_MC_CAPTURE_H */ 98