66 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
	
		
			1.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#ifndef ARCH_ARM_PLAT_OMAP4_ISS_H
							 | 
						||
| 
								 | 
							
								#define ARCH_ARM_PLAT_OMAP4_ISS_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <linux/i2c.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct iss_device;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								enum iss_interface_type {
							 | 
						||
| 
								 | 
							
									ISS_INTERFACE_CSI2A_PHY1,
							 | 
						||
| 
								 | 
							
									ISS_INTERFACE_CSI2B_PHY2,
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct iss_csiphy_lane: CSI2 lane position and polarity
							 | 
						||
| 
								 | 
							
								 * @pos: position of the lane
							 | 
						||
| 
								 | 
							
								 * @pol: polarity of the lane
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct iss_csiphy_lane {
							 | 
						||
| 
								 | 
							
									u8 pos;
							 | 
						||
| 
								 | 
							
									u8 pol;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define ISS_CSIPHY1_NUM_DATA_LANES	4
							 | 
						||
| 
								 | 
							
								#define ISS_CSIPHY2_NUM_DATA_LANES	1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct iss_csiphy_lanes_cfg - CSI2 lane configuration
							 | 
						||
| 
								 | 
							
								 * @data: Configuration of one or two data lanes
							 | 
						||
| 
								 | 
							
								 * @clk: Clock lane configuration
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct iss_csiphy_lanes_cfg {
							 | 
						||
| 
								 | 
							
									struct iss_csiphy_lane data[ISS_CSIPHY1_NUM_DATA_LANES];
							 | 
						||
| 
								 | 
							
									struct iss_csiphy_lane clk;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct iss_csi2_platform_data - CSI2 interface platform data
							 | 
						||
| 
								 | 
							
								 * @crc: Enable the cyclic redundancy check
							 | 
						||
| 
								 | 
							
								 * @vpclk_div: Video port output clock control
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct iss_csi2_platform_data {
							 | 
						||
| 
								 | 
							
									unsigned crc:1;
							 | 
						||
| 
								 | 
							
									unsigned vpclk_div:2;
							 | 
						||
| 
								 | 
							
									struct iss_csiphy_lanes_cfg lanecfg;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct iss_subdev_i2c_board_info {
							 | 
						||
| 
								 | 
							
									struct i2c_board_info *board_info;
							 | 
						||
| 
								 | 
							
									int i2c_adapter_id;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct iss_v4l2_subdevs_group {
							 | 
						||
| 
								 | 
							
									struct iss_subdev_i2c_board_info *subdevs;
							 | 
						||
| 
								 | 
							
									enum iss_interface_type interface;
							 | 
						||
| 
								 | 
							
									union {
							 | 
						||
| 
								 | 
							
										struct iss_csi2_platform_data csi2;
							 | 
						||
| 
								 | 
							
									} bus; /* gcc < 4.6.0 chokes on anonymous union initializers */
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct iss_platform_data {
							 | 
						||
| 
								 | 
							
									struct iss_v4l2_subdevs_group *subdevs;
							 | 
						||
| 
								 | 
							
									void (*set_constraints)(struct iss_device *iss, bool enable);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |