2 *************************************************************************
3 * Rockchip driver for CIF ISP 1.0
4 * (Based on Intel driver for sofiaxxx)
6 * Copyright (C) 2015 Intel Mobile Communications GmbH
7 * Copyright (C) 2016 Fuzhou Rockchip Electronics Co., Ltd.
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 *************************************************************************
17 #ifndef PLATFORM_CAMERA_MODULE_H
18 #define PLATFORM_CAMERA_MODULE_H
19 #include <linux/videodev2.h>
21 #define PLTFRM_CAMERA_MODULE_REG_TYPE_DATA 0
22 #define PLTFRM_CAMERA_MODULE_REG_TYPE_TIMEOUT 1
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;
31 enum pltfrm_camera_module_pin_state {
32 PLTFRM_CAMERA_MODULE_PIN_STATE_INACTIVE = 0,
33 PLTFRM_CAMERA_MODULE_PIN_STATE_ACTIVE = 1
36 struct pltfrm_camera_module_reg {
42 struct pltfrm_camera_module_reg_table {
43 u32 reg_table_num_entries;
44 struct pltfrm_camera_module_reg *reg_table;
47 int pltfrm_camera_module_set_pm_state(
48 struct v4l2_subdev *sd,
51 int pltfrm_camera_module_set_pin_state(
52 struct v4l2_subdev *sd,
54 enum pltfrm_camera_module_pin_state state);
56 int pltfrm_camera_module_get_pin_state(
57 struct v4l2_subdev *sd,
60 int pltfrm_camera_module_s_power(
61 struct v4l2_subdev *sd,
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);
69 struct v4l2_subdev *pltfrm_camera_module_get_af_ctrl(
70 struct v4l2_subdev *sd);
72 struct v4l2_subdev *pltfrm_camera_module_get_fl_ctrl(
73 struct v4l2_subdev *sd);
75 char *pltfrm_camera_module_get_flash_driver_name(
76 struct v4l2_subdev *sd);
78 int pltfrm_camera_module_init(
79 struct v4l2_subdev *sd,
82 void pltfrm_camera_module_release(
83 struct v4l2_subdev *sd);
85 int pltfrm_camera_module_read_reg(struct v4l2_subdev *sd,
90 int pltfrm_superpix_camera_module_read_reg(struct v4l2_subdev *sd,
95 int pltfrm_camera_module_write_reg(struct v4l2_subdev *sd,
98 int pltfrm_camera_module_write_reglist(
99 struct v4l2_subdev *sd,
100 const struct pltfrm_camera_module_reg reglist[],
103 long pltfrm_camera_module_ioctl(struct v4l2_subdev *sd,
107 const char *pltfrm_dev_string(struct v4l2_subdev *sd);
109 int pltfrm_camera_module_get_flip_mirror(
110 struct v4l2_subdev *sd);
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__, \