linux/drivers/media/platform/omap3isp/ispccp2.h
Javier Martinez Canillas b5f6df0607 [media] omap3isp: remove per ISP module link creation functions
The entities to video nodes links were created on separate functions for
each ISP module but since the only thing that these functions do is to
call media_create_pad_link(), there's no need for that indirection level
and all link creation logic can be just inlined in the caller function.

Also, since the only possible failure for the link creation is a memory
allocation, there is no need for error messages since the core already
reports a very verbose message in that case.

Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2016-01-11 12:19:07 -02:00

89 lines
2.0 KiB
C

/*
* ispccp2.h
*
* TI OMAP3 ISP - CCP2 module
*
* Copyright (C) 2010 Nokia Corporation
* Copyright (C) 2010 Texas Instruments, Inc.
*
* Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
* Sakari Ailus <sakari.ailus@iki.fi>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef OMAP3_ISP_CCP2_H
#define OMAP3_ISP_CCP2_H
#include <linux/videodev2.h>
struct isp_device;
struct isp_csiphy;
/* Sink and source ccp2 pads */
#define CCP2_PAD_SINK 0
#define CCP2_PAD_SOURCE 1
#define CCP2_PADS_NUM 2
/* CCP2 input media entity */
enum ccp2_input_entity {
CCP2_INPUT_NONE,
CCP2_INPUT_SENSOR,
CCP2_INPUT_MEMORY,
};
/* CCP2 output media entity */
enum ccp2_output_entity {
CCP2_OUTPUT_NONE,
CCP2_OUTPUT_CCDC,
CCP2_OUTPUT_MEMORY,
};
/* Logical channel configuration */
struct isp_interface_lcx_config {
int crc;
u32 data_start;
u32 data_size;
u32 format;
};
/* Memory channel configuration */
struct isp_interface_mem_config {
u32 dst_port;
u32 vsize_count;
u32 hsize_count;
u32 src_ofst;
u32 dst_ofst;
};
/* CCP2 device */
struct isp_ccp2_device {
struct v4l2_subdev subdev;
struct v4l2_mbus_framefmt formats[CCP2_PADS_NUM];
struct media_pad pads[CCP2_PADS_NUM];
enum ccp2_input_entity input;
enum ccp2_output_entity output;
struct isp_interface_lcx_config if_cfg;
struct isp_interface_mem_config mem_cfg;
struct isp_video video_in;
struct isp_csiphy *phy;
struct regulator *vdds_csib;
enum isp_pipeline_stream_state state;
wait_queue_head_t wait;
atomic_t stopping;
};
/* Function declarations */
int omap3isp_ccp2_init(struct isp_device *isp);
void omap3isp_ccp2_cleanup(struct isp_device *isp);
int omap3isp_ccp2_register_entities(struct isp_ccp2_device *ccp2,
struct v4l2_device *vdev);
void omap3isp_ccp2_unregister_entities(struct isp_ccp2_device *ccp2);
void omap3isp_ccp2_isr(struct isp_ccp2_device *ccp2);
#endif /* OMAP3_ISP_CCP2_H */