1
2 #ifndef ARCH_ARM_PLAT_OMAP4_ISS_H
3 #define ARCH_ARM_PLAT_OMAP4_ISS_H
4
5 #include <linux/i2c.h>
6
7 struct iss_device;
8
9 enum iss_interface_type {
10 ISS_INTERFACE_CSI2A_PHY1,
11 ISS_INTERFACE_CSI2B_PHY2,
12 };
13
14
15
16
17
18
19 struct iss_csiphy_lane {
20 u8 pos;
21 u8 pol;
22 };
23
24 #define ISS_CSIPHY1_NUM_DATA_LANES 4
25 #define ISS_CSIPHY2_NUM_DATA_LANES 1
26
27
28
29
30
31
32 struct iss_csiphy_lanes_cfg {
33 struct iss_csiphy_lane data[ISS_CSIPHY1_NUM_DATA_LANES];
34 struct iss_csiphy_lane clk;
35 };
36
37
38
39
40
41
42 struct iss_csi2_platform_data {
43 unsigned crc:1;
44 unsigned vpclk_div:2;
45 struct iss_csiphy_lanes_cfg lanecfg;
46 };
47
48 struct iss_subdev_i2c_board_info {
49 struct i2c_board_info *board_info;
50 int i2c_adapter_id;
51 };
52
53 struct iss_v4l2_subdevs_group {
54 struct iss_subdev_i2c_board_info *subdevs;
55 enum iss_interface_type interface;
56 union {
57 struct iss_csi2_platform_data csi2;
58 } bus;
59 };
60
61 struct iss_platform_data {
62 struct iss_v4l2_subdevs_group *subdevs;
63 void (*set_constraints)(struct iss_device *iss, bool enable);
64 };
65
66 #endif