blob: 1f8e011fc1620a024befa2edb48f4cc1275b8e1b [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2012 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 version 2.
*
* 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.
*
* Contributors:
* Manjunath Hadli <manjunath.hadli@ti.com>
* Prabhakar Lad <prabhakar.lad@ti.com>
*/
#ifndef _VPFE_H
#define _VPFE_H
#ifdef __KERNEL__
#include <linux/v4l2-subdev.h>
#include <linux/clk.h>
#include <linux/i2c.h>
#include <media/davinci/vpfe_types.h>
#define CAPTURE_DRV_NAME "vpfe-capture"
struct vpfe_route {
__u32 input;
__u32 output;
};
enum vpfe_subdev_id {
VPFE_SUBDEV_TVP5146 = 1,
VPFE_SUBDEV_MT9T031 = 2,
VPFE_SUBDEV_TVP7002 = 3,
VPFE_SUBDEV_MT9P031 = 4,
};
struct vpfe_ext_subdev_info {
/* v4l2 subdev */
struct v4l2_subdev *subdev;
/* Sub device module name */
char module_name[32];
/* Sub device group id */
int grp_id;
/* Number of inputs supported */
int num_inputs;
/* inputs available at the sub device */
struct v4l2_input *inputs;
/* Sub dev routing information for each input */
struct vpfe_route *routes;
/* ccdc bus/interface configuration */
struct vpfe_hw_if_param ccdc_if_params;
/* i2c subdevice board info */
struct i2c_board_info board_info;
/* Is this a camera sub device ? */
unsigned is_camera:1;
/* check if sub dev supports routing */
unsigned can_route:1;
/* registered ? */
unsigned registered:1;
};
struct vpfe_config {
/* Number of sub devices connected to vpfe */
int num_subdevs;
/* information about each subdev */
struct vpfe_ext_subdev_info *sub_devs;
/* evm card info */
char *card_name;
/* setup function for the input path */
int (*setup_input)(enum vpfe_subdev_id id);
/* number of clocks */
int num_clocks;
/* clocks used for vpfe capture */
char *clocks[];
};
#endif
#endif