2011-08-12 19:09:34 +02:00
/*
* omap3isp . h
*
2015-05-20 04:08:30 -03:00
* TI OMAP3 ISP - Bus Configuration
2011-08-12 19:09:34 +02:00
*
* Copyright ( C ) 2011 Nokia Corporation
*
* 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 .
*
* 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 .
*/
2015-05-20 04:08:30 -03:00
# ifndef __OMAP3ISP_H__
# define __OMAP3ISP_H__
2011-08-12 19:09:34 +02:00
enum isp_interface_type {
ISP_INTERFACE_PARALLEL ,
ISP_INTERFACE_CSI2A_PHY2 ,
ISP_INTERFACE_CCP2B_PHY1 ,
ISP_INTERFACE_CCP2B_PHY2 ,
ISP_INTERFACE_CSI2C_PHY1 ,
} ;
/**
2015-03-25 19:57:30 -03:00
* struct isp_parallel_cfg - Parallel interface configuration
2011-08-12 19:09:34 +02:00
* @ data_lane_shift : Data lane shifter
2015-05-20 04:08:30 -03:00
* 0 - CAMEXT [ 13 : 0 ] - > CAM [ 13 : 0 ]
* 1 - CAMEXT [ 13 : 2 ] - > CAM [ 11 : 0 ]
* 2 - CAMEXT [ 13 : 4 ] - > CAM [ 9 : 0 ]
* 3 - CAMEXT [ 13 : 6 ] - > CAM [ 7 : 0 ]
2011-08-12 19:09:34 +02:00
* @ clk_pol : Pixel clock polarity
2011-11-16 16:59:05 -03:00
* 0 - Sample on rising edge , 1 - Sample on falling edge
2011-08-12 19:09:34 +02:00
* @ hs_pol : Horizontal synchronization polarity
* 0 - Active high , 1 - Active low
* @ vs_pol : Vertical synchronization polarity
* 0 - Active high , 1 - Active low
2014-05-19 16:37:38 -03:00
* @ fld_pol : Field signal polarity
* 0 - Positive , 1 - Negative
2011-08-31 10:53:41 -03:00
* @ data_pol : Data polarity
* 0 - Normal , 1 - One ' s complement
2011-08-12 19:09:34 +02:00
*/
2015-03-25 19:57:30 -03:00
struct isp_parallel_cfg {
2011-08-12 19:09:34 +02:00
unsigned int data_lane_shift : 2 ;
unsigned int clk_pol : 1 ;
unsigned int hs_pol : 1 ;
unsigned int vs_pol : 1 ;
2014-05-19 16:37:38 -03:00
unsigned int fld_pol : 1 ;
2011-08-31 10:53:41 -03:00
unsigned int data_pol : 1 ;
2011-08-12 19:09:34 +02:00
} ;
enum {
ISP_CCP2_PHY_DATA_CLOCK = 0 ,
ISP_CCP2_PHY_DATA_STROBE = 1 ,
} ;
enum {
ISP_CCP2_MODE_MIPI = 0 ,
ISP_CCP2_MODE_CCP2 = 1 ,
} ;
2011-10-10 14:13:26 -03:00
/**
* struct isp_csiphy_lane : CCP2 / CSI2 lane position and polarity
* @ pos : position of the lane
* @ pol : polarity of the lane
*/
struct isp_csiphy_lane {
u8 pos ;
u8 pol ;
} ;
# define ISP_CSIPHY1_NUM_DATA_LANES 1
# define ISP_CSIPHY2_NUM_DATA_LANES 2
/**
* struct isp_csiphy_lanes_cfg - CCP2 / CSI2 lane configuration
* @ data : Configuration of one or two data lanes
* @ clk : Clock lane configuration
*/
struct isp_csiphy_lanes_cfg {
struct isp_csiphy_lane data [ ISP_CSIPHY2_NUM_DATA_LANES ] ;
struct isp_csiphy_lane clk ;
} ;
2011-08-12 19:09:34 +02:00
/**
2015-03-25 19:57:30 -03:00
* struct isp_ccp2_cfg - CCP2 interface configuration
2011-08-12 19:09:34 +02:00
* @ strobe_clk_pol : Strobe / clock polarity
* 0 - Non Inverted , 1 - Inverted
* @ crc : Enable the cyclic redundancy check
* @ ccp2_mode : Enable CCP2 compatibility mode
* ISP_CCP2_MODE_MIPI - MIPI - CSI1 mode
* ISP_CCP2_MODE_CCP2 - CCP2 mode
* @ phy_layer : Physical layer selection
* ISP_CCP2_PHY_DATA_CLOCK - Data / clock physical layer
* ISP_CCP2_PHY_DATA_STROBE - Data / strobe physical layer
* @ vpclk_div : Video port output clock control
*/
2015-03-25 19:57:30 -03:00
struct isp_ccp2_cfg {
2011-08-12 19:09:34 +02:00
unsigned int strobe_clk_pol : 1 ;
unsigned int crc : 1 ;
unsigned int ccp2_mode : 1 ;
unsigned int phy_layer : 1 ;
unsigned int vpclk_div : 2 ;
2011-10-10 14:13:26 -03:00
struct isp_csiphy_lanes_cfg lanecfg ;
2011-08-12 19:09:34 +02:00
} ;
/**
2015-03-25 19:57:30 -03:00
* struct isp_csi2_cfg - CSI2 interface configuration
2011-08-12 19:09:34 +02:00
* @ crc : Enable the cyclic redundancy check
*/
2015-03-25 19:57:30 -03:00
struct isp_csi2_cfg {
2011-08-12 19:09:34 +02:00
unsigned crc : 1 ;
2011-10-10 14:13:26 -03:00
struct isp_csiphy_lanes_cfg lanecfg ;
2011-08-12 19:09:34 +02:00
} ;
2015-03-25 19:57:30 -03:00
struct isp_bus_cfg {
2011-08-12 19:09:34 +02:00
enum isp_interface_type interface ;
union {
2015-03-25 19:57:30 -03:00
struct isp_parallel_cfg parallel ;
struct isp_ccp2_cfg ccp2 ;
struct isp_csi2_cfg csi2 ;
2011-08-12 19:09:34 +02:00
} bus ; /* gcc < 4.6.0 chokes on anonymous union initializers */
} ;
2015-05-20 04:08:30 -03:00
# endif /* __OMAP3ISP_H__ */