isp_ioctl.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441
  1. /****************************************************************************
  2. *
  3. * The MIT License (MIT)
  4. *
  5. * Copyright (c) 2020 VeriSilicon Holdings Co., Ltd.
  6. *
  7. * Permission is hereby granted, free of charge, to any person obtaining a
  8. * copy of this software and associated documentation files (the "Software"),
  9. * to deal in the Software without restriction, including without limitation
  10. * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  11. * and/or sell copies of the Software, and to permit persons to whom the
  12. * Software is furnished to do so, subject to the following conditions:
  13. *
  14. * The above copyright notice and this permission notice shall be included in
  15. * all copies or substantial portions of the Software.
  16. *
  17. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  18. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  19. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  20. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  21. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  22. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  23. * DEALINGS IN THE SOFTWARE.
  24. *
  25. *****************************************************************************
  26. *
  27. * The GPL License (GPL)
  28. *
  29. * Copyright (c) 2020 VeriSilicon Holdings Co., Ltd.
  30. *
  31. * This program is free software; you can redistribute it and/or
  32. * modify it under the terms of the GNU General Public License
  33. * as published by the Free Software Foundation; either version 2
  34. * of the License, or (at your option) any later version.
  35. *
  36. * This program is distributed in the hope that it will be useful,
  37. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  38. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  39. * GNU General Public License for more details.
  40. *
  41. * You should have received a copy of the GNU General Public License
  42. * along with this program;
  43. *
  44. *****************************************************************************
  45. *
  46. * Note: This software is released under dual MIT and GPL licenses. A
  47. * recipient may use this file under the terms of either the MIT license or
  48. * GPL License. If you wish to use only one license not the other, you can
  49. * indicate your decision by deleting one of the above license notices in your
  50. * version of this file.
  51. *
  52. *****************************************************************************/
  53. #ifndef _ISP_IOC_H_
  54. #define _ISP_IOC_H_
  55. #include "ic_dev.h"
  56. #include <linux/ioctl.h>
  57. enum {
  58. ISPIOC_RESET = 0x100,
  59. ISPIOC_WRITE_REG = 0x101,
  60. ISPIOC_READ_REG = 0x102,
  61. ISPIOC_S_INPUT = 0x103,
  62. ISPIOC_ENABLE = 0x104,
  63. ISPIOC_DISABLE = 0x105,
  64. ISPIOC_ISP_STATUS = 0x106,
  65. ISPIOC_ISP_STOP = 0x107,
  66. ISPIOC_START_CAPTURE = 0x108,
  67. ISPIOC_DISABLE_ISP_OFF = 0x109,
  68. ISPIOC_SET_BUFFER = 0x10A,
  69. ISPIOC_SET_BP_BUFFER = 0x10B,
  70. ISPIOC_START_DMA_READ = 0x10C,
  71. ISPIOC_MI_START = 0x10D,
  72. ISPIOC_MI_STOP = 0x10E,
  73. ISPIOC_ENABLE_TPG = 0x10F,
  74. ISPIOC_DISABLE_TPG = 0x110,
  75. ISPIOC_S_TPG = 0x111,
  76. ISPIOC_S_MCM_WR = 0x112,
  77. ISPIOC_ENABLE_BLS = 0x113,
  78. ISPIOC_DISABLE_BLS = 0x114,
  79. ISPIOC_S_BLS = 0x115,
  80. ISPIOC_S_MUX = 0x116,
  81. ISPIOC_ENABLE_AWB = 0x117,
  82. ISPIOC_DISABLE_AWB = 0x118,
  83. ISPIOC_S_AWB = 0x119,
  84. ISPIOC_G_AWBMEAN = 0x11A,
  85. ISPIOC_S_IS = 0x11B,
  86. ISPIOC_S_RAW_IS = 0x11C,
  87. ISPIOC_S_CNR = 0x11D,
  88. ISPIOC_S_CC = 0x11E,
  89. ISPIOC_S_XTALK = 0x11F,
  90. ISPIOC_S_GAMMA_OUT = 0x120,
  91. ISPIOC_ENABLE_LSC = 0x121,
  92. ISPIOC_DISABLE_LSC = 0x122,
  93. ISPIOC_S_LSC_TBL = 0x123,
  94. ISPIOC_S_LSC_SEC = 0x124,
  95. ISPIOC_S_DPF = 0x125,
  96. ISPIOC_S_EE = 0x126,
  97. ISPIOC_S_EXP = 0x127,
  98. ISPIOC_S_HDREXP = 0x128,
  99. ISPIOC_G_EXPMEAN = 0x129,
  100. ISPIOC_G_HDREXPMEAN = 0x12A,
  101. ISPIOC_S_HIST = 0x12B,
  102. ISPIOC_G_HISTMEAN = 0x12C,
  103. ISPIOC_S_HDRHIST = 0x12D,
  104. ISPIOC_G_HDRHISTMEAN = 0x12E,
  105. ISPIOC_S_HIST64 = 0x12F,
  106. ISPIOC_G_HIST64MEAN = 0x130,
  107. ISPIOC_G_HIST64VSTART_STATUS= 0x131,
  108. ISPIOC_U_HIST64 = 0x132,
  109. ISPIOC_S_DPCC = 0x133,
  110. ISPIOC_S_FLT = 0x134,
  111. ISPIOC_S_CAC = 0x135,
  112. ISPIOC_S_DEG = 0x136,
  113. ISPIOC_S_AFM = 0x137,
  114. ISPIOC_G_AFM = 0x138,
  115. ISPIOC_S_VSM = 0x139,
  116. ISPIOC_G_VSM = 0x13A,
  117. ISPIOC_S_IE = 0x13B,
  118. ISPIOC_ENABLE_WDR3 = 0x13C,
  119. ISPIOC_DISABLE_WDR3 = 0x13D,
  120. ISPIOC_U_WDR3 = 0x13E,
  121. ISPIOC_S_WDR3 = 0x13F,
  122. ISPIOC_S_EXP2 = 0x140,
  123. ISPIOC_S_EXP2_INPUTSEL = 0x141,
  124. ISPIOC_S_EXP2_SIZERATIO = 0x142,
  125. ISPIOC_S_2DNR = 0x143,
  126. ISPIOC_S_3DNR = 0x144,
  127. ISPIOC_G_3DNR = 0x145, /* get last avg */
  128. ISPIOC_U_3DNR = 0x146, /* update */
  129. ISPIOC_R_3DNR = 0x147, /* read back 3dnr reference image. */
  130. ISPIOC_S_3DNR_CMP = 0x148, /*config 3dnr compress */
  131. ISPIOC_U_3DNR_STRENGTH = 0x149,
  132. ISPIOC_S_3DNR_MOT = 0x14A, /*config 3dnr motion*/
  133. ISPIOC_S_3DNR_DLT = 0x14B,/*config 3dnr delta*/
  134. ISPIOC_S_HDR = 0x14C,
  135. ISPIOC_S_COMP = 0x14D,
  136. ISPIOC_S_CPROC = 0x14E,
  137. ISPIOC_S_SIMP = 0x14F,
  138. ISPIOC_S_ELAWB = 0x150,
  139. ISPIOC_S_HDR_WB = 0x151,
  140. ISPIOC_S_HDR_BLS = 0x152,
  141. ISPIOC_S_HDR_DIGITAL_GAIN = 0x153,
  142. ISPIOC_ENABLE_WB = 0x154,
  143. ISPIOC_DISABLE_WB = 0x155,
  144. ISPIOC_DISABLE_HDR = 0x156,
  145. ISPIOC_ENABLE_HDR = 0x157,
  146. ISPIOC_ENABLE_GAMMA_OUT = 0x158,
  147. ISPIOC_DISABLE_GAMMA_OUT = 0x159,
  148. ISPIOC_G_STATUS = 0x15A,
  149. ISPIOC_G_FEATURE = 0x15B,
  150. ISPIOC_G_FEATURE_VERSION = 0x15C,
  151. ISPIOC_ENABLE_GCMONO = 0x15D,
  152. ISPIOC_DISABLE_GCMONO = 0x15E,
  153. ISPIOC_S_GCMONO = 0x15F,
  154. ISPIOC_ENABLE_RGBGAMMA = 0x160,
  155. ISPIOC_DISABLE_RGBGAMMA = 0x161,
  156. ISPIOC_S_RGBGAMMA = 0x162,
  157. ISPIOC_S_DEMOSAIC = 0x163,
  158. ISPIOC_S_DMSC_INTP = 0x164,
  159. ISPIOC_S_DMSC_DMOI = 0x165,
  160. ISPIOC_S_DMSC_SKIN = 0x166,
  161. ISPIOC_S_DMSC_CAC = 0x167,
  162. ISPIOC_S_DMSC_SHAP = 0x168,
  163. ISPIOC_S_DMSC_SHAP_LINE = 0x169,
  164. ISPIOC_S_DMSC_DEPURPLE = 0x16A,
  165. ISPIOC_S_DMSC_GFILTER = 0x16B,
  166. ISPIOC_S_DMSC = 0x16C,
  167. ISPIOC_S_GREENEQUILIBRATE = 0x16D,
  168. ISPIOC_S_COLOR_ADJUST = 0x16E,
  169. ISPIOC_S_DIGITAL_GAIN = 0x16F,
  170. ISPIOC_G_QUERY_EXTMEM = 0x170,
  171. #ifdef ISP_WDR_V4
  172. ISPIOC_ENABLE_WDR4 = 0x171,
  173. ISPIOC_DISABLE_WDR4 = 0x172,
  174. ISPIOC_U_WDR4 = 0x173,
  175. ISPIOC_S_WDR4 = 0x174,
  176. #endif
  177. ISPIOC_WDR_CONFIG = 0x175,
  178. ISPIOC_S_WDR_CURVE = 0x176,
  179. ISPIOC_ENABLE_RGBIR = 0x177,
  180. ISPIOC_S_RGBIR = 0x178,
  181. ISPIOC_RGBIR_HW_INIT = 0x179,
  182. ISPIOC_RGBIR_S_IR_DNR = 0x17A,
  183. ISPIOC_RGBIR_S_SHARPEN = 0x17B,
  184. ISPIOC_RGBIR_S_DES = 0x17C,
  185. ISPIOC_RGBIR_S_CC_MATRIX = 0x17D,
  186. ISPIOC_RGBIR_S_DPCC = 0x17E,
  187. ISPIOC_RGBIR_S_GAIN = 0x17F,
  188. ISPIOC_RGBIR_S_BLS = 0x180,
  189. ISPIOC_RGBIR_S_IR_RAW_OUT = 0x181,
  190. ISPIOC_S_TDNR = 0x182,
  191. ISPIOC_TDNR_ENABLE = 0x183,
  192. ISPIOC_TDNR_DISABLE = 0x184,
  193. ISPIOC_TDNR_ENABLE_TDNR = 0x185,
  194. ISPIOC_TDNR_DISABLE_TDNR = 0x186,
  195. ISPIOC_TDNR_ENABLE_2DNR = 0x187,
  196. ISPIOC_TDNR_DISABLE_2DNR = 0x188,
  197. ISPIOC_S_TDNR_CURVE = 0x189,
  198. ISPIOC_G_TDNR = 0x18A,
  199. ISPIOC_S_TDNR_STRENGTH = 0x18B,
  200. ISPIOC_U_TDNR_NOISE = 0x18C,
  201. ISPIOC_U_TDNR_THR = 0x18D,
  202. ISPIOC_S_TDNR_BUF = 0x18E, // refer and motion
  203. ISPIOC_R_TDNR_REFER = 0x18F,
  204. ISPIOC_R_TDNR_MOTION = 0x190,
  205. ISPIOC_GET_MIS = 0x191,
  206. ISPIOC_CFG_DMA = 0x192,
  207. ISPIOC_BYPASS_MCM = 0x193,
  208. ISPIOC_SET_PPW_LINE_NUM = 0x194,
  209. ISPIOC_GET_PPW_LINE_CNT = 0x195,
  210. ISPIOC_CFG_DMA_LINE_ENTRY = 0x196,
  211. ISPIOC_S_CROP = 0x197,
  212. ISPIOC_GET_FRAME_MASK_INFO_ADDR = 0x198,
  213. ISPIOC_FREE_IRQ = 0x199,
  214. ISPIOC_REQUEST_IRQ = 0x200,
  215. };
  216. #define ISP_GEN_CFG_UPDATE(dev) { \
  217. uint32_t isp_ctrl = isp_read_reg(dev, REG_ADDR(isp_ctrl)); \
  218. REG_SET_SLICE(isp_ctrl, MRV_ISP_ISP_GEN_CFG_UPD, 1); \
  219. isp_write_reg(dev, REG_ADDR(isp_ctrl), isp_ctrl); \
  220. }
  221. #define CONFIG_VSI_ISP_DEBUG 1
  222. #ifdef CONFIG_VSI_ISP_DEBUG
  223. #define isp_info(fmt, ...) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
  224. #define isp_debug(fmt, ...) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
  225. #define isp_warn(fmt, ...) printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
  226. #define isp_err(fmt, ...) printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
  227. #else
  228. #define isp_info(fmt, ...)
  229. #define isp_debug(fmt, ...)
  230. #define isp_err(fmt, ...) printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
  231. #endif
  232. #define ISP_REG_GAP 4
  233. #define MI_QOS 0x44440444
  234. #define MI_QOS2 0x44
  235. long isp_priv_ioctl(struct isp_ic_dev *dev, unsigned int cmd, void __user *args);
  236. long isp_copy_data(void *dst, void *src, int size);
  237. /* internal functions, can called by v4l2 video device and ioctl */
  238. int isp_reset(struct isp_ic_dev *dev);
  239. int isp_enable_tpg(struct isp_ic_dev *dev);
  240. int isp_disable_tpg(struct isp_ic_dev *dev);
  241. int isp_enable_bls(struct isp_ic_dev *dev);
  242. int isp_disable_bls(struct isp_ic_dev *dev);
  243. int isp_enable(struct isp_ic_dev *dev);
  244. int isp_disable(struct isp_ic_dev *dev);
  245. bool is_isp_enable(struct isp_ic_dev *dev);
  246. int isp_enable_lsc(struct isp_ic_dev *dev);
  247. int isp_disable_lsc(struct isp_ic_dev *dev);
  248. int isp_s_input(struct isp_ic_dev *dev);
  249. int isp_s_digital_gain(struct isp_ic_dev *dev);
  250. int isp_s_demosaic(struct isp_ic_dev *dev);
  251. int isp_s_tpg(struct isp_ic_dev *dev);
  252. int isp_s_mcm_wr(struct isp_ic_dev *dev);
  253. int isp_bypass_mcm(struct isp_ic_dev *dev);
  254. int isp_s_mux(struct isp_ic_dev *dev);
  255. int isp_s_bls(struct isp_ic_dev *dev);
  256. int isp_enable_awb(struct isp_ic_dev *dev);
  257. int isp_disable_awb(struct isp_ic_dev *dev);
  258. int isp_s_awb(struct isp_ic_dev *dev);
  259. int isp_g_awbmean(struct isp_ic_dev *dev, struct isp_awb_mean *mean);
  260. int isp_s_is(struct isp_ic_dev *dev);
  261. int isp_s_raw_is(struct isp_ic_dev *dev);
  262. int isp_s_cnr(struct isp_ic_dev *dev);
  263. int isp_start_stream(struct isp_ic_dev *dev, u32 framenum);
  264. int isp_stop_stream(struct isp_ic_dev *dev);
  265. int isp_s_cc(struct isp_ic_dev *dev);
  266. int isp_s_xtalk(struct isp_ic_dev *dev);
  267. int isp_enable_wb(struct isp_ic_dev *dev, bool bEnable);
  268. int isp_enable_gamma_out(struct isp_ic_dev *dev, bool bEnable);
  269. int isp_s_gamma_out(struct isp_ic_dev *dev);
  270. int isp_s_lsc_sec(struct isp_ic_dev *dev);
  271. int isp_s_lsc_tbl(struct isp_ic_dev *dev);
  272. int isp_ioc_disable_isp_off(struct isp_ic_dev *dev, void __user *args);
  273. int isp_s_dpf(struct isp_ic_dev *dev);
  274. int isp_s_ee(struct isp_ic_dev *dev);
  275. int isp_s_exp(struct isp_ic_dev *dev);
  276. int isp_s_hdrexp(struct isp_ic_dev *dev);
  277. int isp_g_expmean(struct isp_ic_dev *dev, u8 * mean);
  278. int isp_g_hdrexpmean(struct isp_ic_dev *dev, u8 * mean);
  279. int isp_s_hist(struct isp_ic_dev *dev);
  280. int isp_g_histmean(struct isp_ic_dev *dev, u32 * mean);
  281. int isp_s_hdrhist(struct isp_ic_dev *dev);
  282. int isp_g_hdrhistmean(struct isp_ic_dev *dev, u32 * mean);
  283. #ifdef ISP_HIST64
  284. int isp_s_hist64(struct isp_ic_dev *dev);
  285. int isp_g_hist64mean(struct isp_ic_dev *dev, u32 *mean);
  286. int isp_g_hist64_vstart(struct isp_ic_dev *dev, u32 start_line);
  287. int isp_g_hist64_vstart_status(struct isp_ic_dev *dev, u32 *status);
  288. int isp_update_hist64(struct isp_ic_dev *dev);
  289. #endif
  290. int isp_s_dpcc(struct isp_ic_dev *dev);
  291. int isp_s_flt(struct isp_ic_dev *dev);
  292. int isp_s_cac(struct isp_ic_dev *dev);
  293. int isp_s_deg(struct isp_ic_dev *dev);
  294. int isp_s_ie(struct isp_ic_dev *dev);
  295. int isp_s_vsm(struct isp_ic_dev *dev);
  296. int isp_g_vsm(struct isp_ic_dev *dev, struct isp_vsm_result *vsm);
  297. int isp_s_afm(struct isp_ic_dev *dev);
  298. int isp_g_afm(struct isp_ic_dev *dev, struct isp_afm_result *afm);
  299. int isp_enable_wdr3(struct isp_ic_dev *dev);
  300. int isp_disable_wdr3(struct isp_ic_dev *dev);
  301. int isp_u_wdr3(struct isp_ic_dev *dev);
  302. int isp_s_wdr3(struct isp_ic_dev *dev);
  303. #ifdef ISP_WDR_V4
  304. int isp_enable_wdr4(struct isp_ic_dev *dev);
  305. int isp_disable_wdr4(struct isp_ic_dev *dev);
  306. int isp_u_wdr4(struct isp_ic_dev *dev);
  307. int isp_s_wdr4(struct isp_ic_dev *dev);
  308. #endif
  309. int isp_s_exp2(struct isp_ic_dev *dev);
  310. int isp_s_exp2_inputsel(struct isp_ic_dev *dev);
  311. int isp_s_exp2_sizeratio(struct isp_ic_dev *dev, u32 ratio);
  312. int isp_s_hdr(struct isp_ic_dev *dev);
  313. int isp_s_hdr_wb(struct isp_ic_dev *dev);
  314. int isp_s_hdr_bls(struct isp_ic_dev *dev);
  315. //int isp_s_hdr_digal_gain(struct isp_ic_dev *dev);
  316. int isp_enable_hdr(struct isp_ic_dev *dev);
  317. int isp_disable_hdr(struct isp_ic_dev *dev);
  318. #ifdef ISP_2DNR_V5
  319. int isp_tdnr_s_2dnr(struct isp_ic_dev *dev);
  320. #else
  321. int isp_s_2dnr(struct isp_ic_dev *dev);
  322. #endif
  323. #if defined(ISP_3DNR) || defined(ISP_3DNR_V2)
  324. int isp_s_3dnr(struct isp_ic_dev *dev);
  325. int isp_g_3dnr(struct isp_ic_dev *dev, u32 * avg);
  326. int isp_u_3dnr(struct isp_ic_dev *dev, struct isp_3dnr_update *dnr3_update);
  327. int isp_s_3dnr_motion(struct isp_ic_dev *dev);
  328. int isp_s_3dnr_delta(struct isp_ic_dev *dev);
  329. #endif
  330. #if defined(ISP_3DNR) || defined(ISP_3DNR_V2_V1)
  331. int isp_r_3dnr(struct isp_ic_dev *dev);
  332. #endif
  333. #ifdef ISP_3DNR_V2
  334. int isp_s_3dnr_cmp(struct isp_ic_dev *dev);
  335. #endif
  336. int isp_u_3dnr_strength(struct isp_ic_dev *dev);
  337. int isp_s_comp(struct isp_ic_dev *dev);
  338. int isp_s_simp(struct isp_ic_dev *dev);
  339. int isp_s_cproc(struct isp_ic_dev *dev);
  340. int isp_s_elawb(struct isp_ic_dev *dev);
  341. int isp_ioc_qcap(struct isp_ic_dev *dev, void __user *args);
  342. int isp_ioc_g_status(struct isp_ic_dev *dev, void __user *args);
  343. int isp_enable_gcmono(struct isp_ic_dev *dev);
  344. int isp_disable_gcmono(struct isp_ic_dev *dev);
  345. int isp_s_gcmono(struct isp_ic_dev *dev, struct isp_gcmono_data *data); /* set curve */
  346. int isp_enable_rgbgamma(struct isp_ic_dev *dev);
  347. int isp_disable_rgbgamma(struct isp_ic_dev *dev);
  348. int isp_s_rgbgamma(struct isp_ic_dev *dev);
  349. u32 isp_read_mi_irq(struct isp_ic_dev *dev);
  350. void isp_reset_mi_irq(struct isp_ic_dev *dev, u32 icr);
  351. int isp_ioc_cfg_dma(struct isp_ic_dev *dev, void __user *args);
  352. int isp_ioc_start_dma_read(struct isp_ic_dev *dev, void __user *args);
  353. int isp_mi_start(struct isp_ic_dev *dev);
  354. int isp_mi_stop(struct isp_ic_dev *dev);
  355. int isp_set_buffer(struct isp_ic_dev *dev, struct isp_buffer_context *buf);
  356. int isp_set_bp_buffer(struct isp_ic_dev *dev,
  357. struct isp_bp_buffer_context *buf);
  358. int isp_enable_dmsc(struct isp_ic_dev *dev);
  359. int isp_disable_dmsc(struct isp_ic_dev *dev);
  360. int isp_set_dmsc_intp(struct isp_ic_dev *dev);
  361. int isp_set_dmsc_skin(struct isp_ic_dev *dev);
  362. int isp_set_dmsc_gfilter(struct isp_ic_dev *dev);
  363. int isp_set_dmsc_depurple(struct isp_ic_dev *dev);
  364. int isp_set_dmsc_cac(struct isp_ic_dev *dev);
  365. int isp_set_dmsc_sharpen(struct isp_ic_dev *dev);
  366. int isp_set_dmsc_sharpen_line(struct isp_ic_dev *dev);
  367. int isp_set_dmsc_dmoi(struct isp_ic_dev *dev);
  368. int isp_s_dmsc(struct isp_ic_dev *dev);
  369. int isp_s_ge(struct isp_ic_dev *dev);
  370. int isp_s_ca(struct isp_ic_dev *dev);
  371. int isp_s_color_adjust(struct isp_ic_dev *dev);
  372. int isp_config_dummy_hblank(struct isp_ic_dev *dev);
  373. int isp_s_rgbir(struct isp_ic_dev *dev);
  374. int isp_enable_rgbir(struct isp_ic_dev *dev);
  375. int isp_rgbir_hw_init(struct isp_ic_dev *dev);
  376. int isp_rgbir_s_ir_dnr(struct isp_ic_dev *dev);
  377. int isp_rgbir_s_sharpen(struct isp_ic_dev *dev);
  378. int isp_rgbir_s_des(struct isp_ic_dev *dev);
  379. int isp_rgbir_s_cc_matrix(struct isp_ic_dev *dev);
  380. int isp_rgbir_s_dpcc(struct isp_ic_dev *dev);
  381. int isp_rgbir_s_gain(struct isp_ic_dev *dev);
  382. int isp_rgbir_s_bls(struct isp_ic_dev *dev);
  383. int isp_rgbir_out_ir_raw(struct isp_ic_dev *dev);
  384. #ifdef ISP_3DNR_V3
  385. int isp_tdnr_cfg_gamma(struct isp_ic_dev *dev);
  386. int isp_s_tdnr(struct isp_ic_dev *dev);
  387. int isp_tdnr_set_strength(struct isp_ic_dev *dev);
  388. int isp_tdnr_set_motion(struct isp_ic_dev *dev);
  389. int isp_tdnr_enable(struct isp_ic_dev *dev);
  390. int isp_tdnr_disable(struct isp_ic_dev *dev);
  391. int isp_tdnr_enable_tdnr(struct isp_ic_dev *dev);
  392. int isp_tdnr_disable_tdnr(struct isp_ic_dev *dev);
  393. int isp_tdnr_enable_2dnr(struct isp_ic_dev *dev);
  394. int isp_tdnr_disable_2dnr(struct isp_ic_dev *dev);
  395. int isp_tdnr_g_stats(struct isp_ic_dev *dev, struct isp_tdnr_stats *avg);
  396. int isp_tdnr_u_noise(struct isp_ic_dev *dev);
  397. int isp_r_tdnr_refer(struct isp_ic_dev *dev);
  398. int isp_r_tdnr_motion(struct isp_ic_dev *dev);
  399. int isp_tdnr_u_thr(struct isp_ic_dev *dev);
  400. int isp_tdnr_s_buf(struct isp_ic_dev *dev);
  401. #endif
  402. #ifdef ISP_MI_PP_WRITE
  403. int isp_set_ppw_line_num(struct isp_ic_dev *dev);
  404. int isp_get_ppw_pic_cnt(struct isp_ic_dev *dev, u16* pic_cnt);
  405. #endif
  406. #ifdef ISP_MI_PP_READ
  407. int isp_cfg_pp_dma_line_entry(struct isp_ic_dev *dev);
  408. #endif
  409. #ifdef __KERNEL__
  410. int clean_dma_buffer(struct isp_ic_dev *dev);
  411. irqreturn_t isp_hw_isr(int irq, void *data);
  412. void isp_clear_interrupts(struct isp_ic_dev *dev);
  413. #endif
  414. /*get irq mis value from store array*/
  415. u32 isp_read_mis(struct isp_ic_dev *dev, u32 irq_src);
  416. int isp_ioc_read_mis(struct isp_ic_dev *dev, void __user *args);
  417. /*set scaler*/
  418. int isp_set_scaling(int id, struct isp_ic_dev *dev, bool stabilization, bool crop);
  419. int isp_set_crop(struct isp_ic_dev *dev);
  420. int isp_ioc_g_feature(struct isp_ic_dev *dev, void __user *args);
  421. int isp_ioc_g_feature_veresion(struct isp_ic_dev *dev, void __user *args);
  422. void isp_force_stop(struct isp_ic_dev *dev);
  423. #endif /* _ISP_IOC_H_ */