isp10: rockchip: v0.1.6
[firefly-linux-kernel-4.4.55.git] / include / linux / platform_data / rk_isp10_platform_camera_module.h
1 /*
2  *************************************************************************
3  * Rockchip driver for CIF ISP 1.0
4  * (Based on Intel driver for sofiaxxx)
5  *
6  * Copyright (C) 2015 Intel Mobile Communications GmbH
7  * Copyright (C) 2016 Fuzhou Rockchip Electronics Co., Ltd.
8  *
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *************************************************************************
15  */
16
17 #ifndef PLATFORM_CAMERA_MODULE_H
18 #define PLATFORM_CAMERA_MODULE_H
19 #include <linux/videodev2.h>
20
21 #define PLTFRM_CAMERA_MODULE_REG_TYPE_DATA 0
22 #define PLTFRM_CAMERA_MODULE_REG_TYPE_TIMEOUT 1
23
24 extern const char *PLTFRM_CAMERA_MODULE_PIN_PD;
25 extern const char *PLTFRM_CAMERA_MODULE_PIN_PWR;
26 extern const char *PLTFRM_CAMERA_MODULE_PIN_FLASH;
27 extern const char *PLTFRM_CAMERA_MODULE_PIN_TORCH;
28 extern const char *PLTFRM_CAMERA_MODULE_PIN_RESET;
29 extern const char *PLTFRM_CAMERA_MODULE_PIN_VSYNC;
30
31 enum pltfrm_camera_module_pin_state {
32         PLTFRM_CAMERA_MODULE_PIN_STATE_INACTIVE = 0,
33         PLTFRM_CAMERA_MODULE_PIN_STATE_ACTIVE   = 1
34 };
35
36 struct pltfrm_camera_module_reg {
37         u32 flag;
38         u16 reg;
39         u16 val;
40 };
41
42 struct pltfrm_camera_module_reg_table {
43         u32 reg_table_num_entries;
44         struct pltfrm_camera_module_reg *reg_table;
45 };
46
47 int pltfrm_camera_module_set_pm_state(
48         struct v4l2_subdev *sd,
49         int on);
50
51 int pltfrm_camera_module_set_pin_state(
52         struct v4l2_subdev *sd,
53         const char *pin,
54         enum pltfrm_camera_module_pin_state state);
55
56 int pltfrm_camera_module_get_pin_state(
57         struct v4l2_subdev *sd,
58         const char *pin);
59
60 int pltfrm_camera_module_s_power(
61         struct v4l2_subdev *sd,
62         int on);
63
64 int pltfrm_camera_module_patch_config(
65         struct v4l2_subdev *sd,
66         struct v4l2_mbus_framefmt *frm_fmt,
67         struct v4l2_subdev_frame_interval *frm_intrvl);
68
69 struct v4l2_subdev *pltfrm_camera_module_get_af_ctrl(
70         struct v4l2_subdev *sd);
71
72 struct v4l2_subdev *pltfrm_camera_module_get_fl_ctrl(
73         struct v4l2_subdev *sd);
74
75 char *pltfrm_camera_module_get_flash_driver_name(
76         struct v4l2_subdev *sd);
77
78 int pltfrm_camera_module_init(
79         struct v4l2_subdev *sd,
80         void **pldata);
81
82 void pltfrm_camera_module_release(
83         struct v4l2_subdev *sd);
84
85 int pltfrm_camera_module_read_reg(struct v4l2_subdev *sd,
86         u16 data_length,
87         u16 reg,
88         u32 *val);
89
90 int pltfrm_superpix_camera_module_read_reg(struct v4l2_subdev *sd,
91         u16 data_length,
92         u8 reg,
93         u8 *val);
94
95 int pltfrm_camera_module_write_reg(struct v4l2_subdev *sd,
96         u16 reg, u8 val);
97
98 int pltfrm_camera_module_write_reglist(
99         struct v4l2_subdev *sd,
100         const struct pltfrm_camera_module_reg reglist[],
101         int len);
102
103 long pltfrm_camera_module_ioctl(struct v4l2_subdev *sd,
104         unsigned int cmd,
105         void *arg);
106
107 const char *pltfrm_dev_string(struct v4l2_subdev *sd);
108
109 int pltfrm_camera_module_get_flip_mirror(
110         struct v4l2_subdev *sd);
111
112 #define pltfrm_camera_module_pr_debug(dev, fmt, arg...) \
113         pr_debug("%s.%s: " fmt, \
114                 pltfrm_dev_string(dev), __func__, ## arg)
115 #define pltfrm_camera_module_pr_info(dev, fmt, arg...) \
116         pr_info("%s.%s: " fmt, \
117                 pltfrm_dev_string(dev), __func__, ## arg)
118 #define pltfrm_camera_module_pr_warn(dev, fmt, arg...) \
119         pr_warn("%s.%s WARN: " fmt, \
120                 pltfrm_dev_string(dev), __func__, ## arg)
121 #define pltfrm_camera_module_pr_err(dev, fmt, arg...) \
122         pr_err("%s.%s(%d) ERR: " fmt, \
123                 pltfrm_dev_string(dev), __func__, __LINE__, \
124                 ## arg)
125
126 #endif