mirror of
https://github.com/torvalds/linux.git
synced 2024-12-22 19:01:37 +00:00
f2f6da0d77
The omap3isp driver initializes the entities and creates the pads links before the entities are registered with the media device. This does not work now that object IDs are used to create links so the media_device has to be set. Split out the pads links creation from the entity initialization so the links are created after the entities have been registered with the media device. Suggested-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com> Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
90 lines
2.1 KiB
C
90 lines
2.1 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);
|
|
int omap3isp_ccp2_create_pads_links(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 */
|