Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.9-rc6 112 lines 3.3 kB view raw
1/* 2 * Samsung S5P/Exynos4 SoC series camera interface driver header 3 * 4 * Copyright (C) 2010 - 2013 Samsung Electronics Co., Ltd. 5 * Sylwester Nawrocki <s.nawrocki@samsung.com> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as 9 * published by the Free Software Foundation. 10 */ 11 12#ifndef S5P_FIMC_H_ 13#define S5P_FIMC_H_ 14 15#include <media/media-entity.h> 16 17/* 18 * Enumeration of the FIMC data bus types. 19 */ 20enum fimc_bus_type { 21 /* Camera parallel bus */ 22 FIMC_BUS_TYPE_ITU_601 = 1, 23 /* Camera parallel bus with embedded synchronization */ 24 FIMC_BUS_TYPE_ITU_656, 25 /* Camera MIPI-CSI2 serial bus */ 26 FIMC_BUS_TYPE_MIPI_CSI2, 27 /* FIFO link from LCD controller (WriteBack A) */ 28 FIMC_BUS_TYPE_LCD_WRITEBACK_A, 29 /* FIFO link from LCD controller (WriteBack B) */ 30 FIMC_BUS_TYPE_LCD_WRITEBACK_B, 31 /* FIFO link from FIMC-IS */ 32 FIMC_BUS_TYPE_ISP_WRITEBACK = FIMC_BUS_TYPE_LCD_WRITEBACK_B, 33}; 34 35struct i2c_board_info; 36 37/** 38 * struct fimc_source_info - video source description required for the host 39 * interface configuration 40 * 41 * @board_info: pointer to I2C subdevice's board info 42 * @clk_frequency: frequency of the clock the host interface provides to sensor 43 * @fimc_bus_type: FIMC camera input type 44 * @sensor_bus_type: image sensor bus type, MIPI, ITU-R BT.601 etc. 45 * @flags: the parallel sensor bus flags defining signals polarity (V4L2_MBUS_*) 46 * @i2c_bus_num: i2c control bus id the sensor is attached to 47 * @mux_id: FIMC camera interface multiplexer index (separate for MIPI and ITU) 48 * @clk_id: index of the SoC peripheral clock for sensors 49 */ 50struct fimc_source_info { 51 struct i2c_board_info *board_info; 52 unsigned long clk_frequency; 53 enum fimc_bus_type fimc_bus_type; 54 enum fimc_bus_type sensor_bus_type; 55 u16 flags; 56 u16 i2c_bus_num; 57 u16 mux_id; 58 u8 clk_id; 59}; 60 61/** 62 * struct s5p_platform_fimc - camera host interface platform data 63 * 64 * @source_info: properties of an image source for the host interface setup 65 * @num_clients: the number of attached image sources 66 */ 67struct s5p_platform_fimc { 68 struct fimc_source_info *source_info; 69 int num_clients; 70}; 71 72/* 73 * v4l2_device notification id. This is only for internal use in the kernel. 74 * Sensor subdevs should issue S5P_FIMC_TX_END_NOTIFY notification in single 75 * frame capture mode when there is only one VSYNC pulse issued by the sensor 76 * at begining of the frame transmission. 77 */ 78#define S5P_FIMC_TX_END_NOTIFY _IO('e', 0) 79 80enum fimc_subdev_index { 81 IDX_SENSOR, 82 IDX_CSIS, 83 IDX_FLITE, 84 IDX_FIMC, 85 IDX_MAX, 86}; 87 88struct media_pipeline; 89struct v4l2_subdev; 90 91struct fimc_pipeline { 92 struct v4l2_subdev *subdevs[IDX_MAX]; 93 struct media_pipeline *m_pipeline; 94}; 95 96/* 97 * Media pipeline operations to be called from within the fimc(-lite) 98 * video node when it is the last entity of the pipeline. Implemented 99 * by corresponding media device driver. 100 */ 101struct fimc_pipeline_ops { 102 int (*open)(struct fimc_pipeline *p, struct media_entity *me, 103 bool resume); 104 int (*close)(struct fimc_pipeline *p); 105 int (*set_stream)(struct fimc_pipeline *p, bool state); 106}; 107 108#define fimc_pipeline_call(f, op, p, args...) \ 109 (!(f) ? -ENODEV : (((f)->pipeline_ops && (f)->pipeline_ops->op) ? \ 110 (f)->pipeline_ops->op((p), ##args) : -ENOIOCTLCMD)) 111 112#endif /* S5P_FIMC_H_ */