omap3isp.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /*
  2. * omap3isp.h
  3. *
  4. * TI OMAP3 ISP - Bus Configuration
  5. *
  6. * Copyright (C) 2011 Nokia Corporation
  7. *
  8. * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  9. * Sakari Ailus <sakari.ailus@iki.fi>
  10. *
  11. * This program is free software; you can redistribute it and/or modify
  12. * it under the terms of the GNU General Public License version 2 as
  13. * published by the Free Software Foundation.
  14. *
  15. * This program is distributed in the hope that it will be useful, but
  16. * WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  18. * General Public License for more details.
  19. */
  20. #ifndef __OMAP3ISP_H__
  21. #define __OMAP3ISP_H__
  22. enum isp_interface_type {
  23. ISP_INTERFACE_PARALLEL,
  24. ISP_INTERFACE_CSI2A_PHY2,
  25. ISP_INTERFACE_CCP2B_PHY1,
  26. ISP_INTERFACE_CCP2B_PHY2,
  27. ISP_INTERFACE_CSI2C_PHY1,
  28. };
  29. /**
  30. * struct isp_parallel_cfg - Parallel interface configuration
  31. * @data_lane_shift: Data lane shifter
  32. * 0 - CAMEXT[13:0] -> CAM[13:0]
  33. * 2 - CAMEXT[13:2] -> CAM[11:0]
  34. * 4 - CAMEXT[13:4] -> CAM[9:0]
  35. * 6 - CAMEXT[13:6] -> CAM[7:0]
  36. * @clk_pol: Pixel clock polarity
  37. * 0 - Sample on rising edge, 1 - Sample on falling edge
  38. * @hs_pol: Horizontal synchronization polarity
  39. * 0 - Active high, 1 - Active low
  40. * @vs_pol: Vertical synchronization polarity
  41. * 0 - Active high, 1 - Active low
  42. * @fld_pol: Field signal polarity
  43. * 0 - Positive, 1 - Negative
  44. * @data_pol: Data polarity
  45. * 0 - Normal, 1 - One's complement
  46. * @bt656: Data contain BT.656 embedded synchronization
  47. */
  48. struct isp_parallel_cfg {
  49. unsigned int data_lane_shift:3;
  50. unsigned int clk_pol:1;
  51. unsigned int hs_pol:1;
  52. unsigned int vs_pol:1;
  53. unsigned int fld_pol:1;
  54. unsigned int data_pol:1;
  55. unsigned int bt656:1;
  56. };
  57. enum {
  58. ISP_CCP2_PHY_DATA_CLOCK = 0,
  59. ISP_CCP2_PHY_DATA_STROBE = 1,
  60. };
  61. enum {
  62. ISP_CCP2_MODE_MIPI = 0,
  63. ISP_CCP2_MODE_CCP2 = 1,
  64. };
  65. /**
  66. * struct isp_csiphy_lane: CCP2/CSI2 lane position and polarity
  67. * @pos: position of the lane
  68. * @pol: polarity of the lane
  69. */
  70. struct isp_csiphy_lane {
  71. u8 pos;
  72. u8 pol;
  73. };
  74. #define ISP_CSIPHY1_NUM_DATA_LANES 1
  75. #define ISP_CSIPHY2_NUM_DATA_LANES 2
  76. /**
  77. * struct isp_csiphy_lanes_cfg - CCP2/CSI2 lane configuration
  78. * @data: Configuration of one or two data lanes
  79. * @clk: Clock lane configuration
  80. */
  81. struct isp_csiphy_lanes_cfg {
  82. struct isp_csiphy_lane data[ISP_CSIPHY2_NUM_DATA_LANES];
  83. struct isp_csiphy_lane clk;
  84. };
  85. /**
  86. * struct isp_ccp2_cfg - CCP2 interface configuration
  87. * @strobe_clk_pol: Strobe/clock polarity
  88. * 0 - Non Inverted, 1 - Inverted
  89. * @crc: Enable the cyclic redundancy check
  90. * @ccp2_mode: Enable CCP2 compatibility mode
  91. * ISP_CCP2_MODE_MIPI - MIPI-CSI1 mode
  92. * ISP_CCP2_MODE_CCP2 - CCP2 mode
  93. * @phy_layer: Physical layer selection
  94. * ISP_CCP2_PHY_DATA_CLOCK - Data/clock physical layer
  95. * ISP_CCP2_PHY_DATA_STROBE - Data/strobe physical layer
  96. * @vpclk_div: Video port output clock control
  97. */
  98. struct isp_ccp2_cfg {
  99. unsigned int strobe_clk_pol:1;
  100. unsigned int crc:1;
  101. unsigned int ccp2_mode:1;
  102. unsigned int phy_layer:1;
  103. unsigned int vpclk_div:2;
  104. unsigned int vp_clk_pol:1;
  105. struct isp_csiphy_lanes_cfg lanecfg;
  106. };
  107. /**
  108. * struct isp_csi2_cfg - CSI2 interface configuration
  109. * @crc: Enable the cyclic redundancy check
  110. * @lanecfg: CSI-2 lane configuration
  111. * @num_data_lanes: The number of data lanes in use
  112. */
  113. struct isp_csi2_cfg {
  114. unsigned crc:1;
  115. struct isp_csiphy_lanes_cfg lanecfg;
  116. u8 num_data_lanes;
  117. };
  118. struct isp_bus_cfg {
  119. enum isp_interface_type interface;
  120. union {
  121. struct isp_parallel_cfg parallel;
  122. struct isp_ccp2_cfg ccp2;
  123. struct isp_csi2_cfg csi2;
  124. } bus; /* gcc < 4.6.0 chokes on anonymous union initializers */
  125. };
  126. #endif /* __OMAP3ISP_H__ */