/* * Copyright (C) 2008-2009 Texas Instruments Inc * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * ccdc device API */ #ifndef _CCDC_HW_DEVICE_H #define _CCDC_HW_DEVICE_H #ifdef __KERNEL__ #include #include #include #include /* * ccdc hw operations */ struct ccdc_hw_ops { /* Pointer to initialize function to initialize ccdc device */ int (*open) (struct device *dev); /* Pointer to deinitialize function */ int (*close) (struct device *dev); /* set ccdc base address */ void (*set_ccdc_base)(void *base, int size); /* Pointer to function to enable or disable ccdc */ void (*enable) (int en); /* reset sbl. only for 6446 */ void (*reset) (void); /* enable output to sdram */ void (*enable_out_to_sdram) (int en); /* Pointer to function to set hw parameters */ int (*set_hw_if_params) (struct vpfe_hw_if_param *param); /* get interface parameters */ int (*get_hw_if_params) (struct vpfe_hw_if_param *param); /* * Pointer to function to set parameters. Used * for implementing VPFE_S_CCDC_PARAMS */ int (*set_params) (void *params); /* * Pointer to function to get parameter. Used * for implementing VPFE_G_CCDC_PARAMS */ int (*get_params) (void *params); /* Pointer to function to configure ccdc */ int (*configure) (void); /* Pointer to function to set buffer type */ int (*set_buftype) (enum ccdc_buftype buf_type); /* Pointer to function to get buffer type */ enum ccdc_buftype (*get_buftype) (void); /* Pointer to function to set frame format */ int (*set_frame_format) (enum ccdc_frmfmt frm_fmt); /* Pointer to function to get frame format */ enum ccdc_frmfmt (*get_frame_format) (void); /* enumerate hw pix formats */ int (*enum_pix)(u32 *hw_pix, int i); /* Pointer to function to set buffer type */ u32 (*get_pixel_format) (void); /* Pointer to function to get pixel format. */ int (*set_pixel_format) (u32 pixfmt); /* Pointer to function to set image window */ int (*set_image_window) (struct v4l2_rect *win); /* Pointer to function to set image window */ void (*get_image_window) (struct v4l2_rect *win); /* Pointer to function to get line length */ unsigned int (*get_line_length) (void); /* Query CCDC control IDs */ int (*queryctrl)(struct v4l2_queryctrl *qctrl); /* Set CCDC control */ int (*set_control)(struct v4l2_control *ctrl); /* Get CCDC control */ int (*get_control)(struct v4l2_control *ctrl); /* Pointer to function to set frame buffer address */ void (*setfbaddr) (unsigned long addr); /* Pointer to function to get field id */ int (*getfid) (void); }; struct ccdc_hw_device { /* ccdc device name */ char name[32]; /* module owner */ struct module *owner; /* hw ops */ struct ccdc_hw_ops hw_ops; }; /* Used by CCDC module to register & unregister with vpfe capture driver */ int vpfe_register_ccdc_device(struct ccdc_hw_device *dev); void vpfe_unregister_ccdc_device(struct ccdc_hw_device *dev); #endif #endif