1/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR MIT) */
2/*
3 * Rockchip preisp driver
4 * Copyright (C) 2018 Rockchip Electronics Co., Ltd.
5 */
6
7#ifndef _UAPI_RKPREISP_H
8#define _UAPI_RKPREISP_H
9
10#include <linux/types.h>
11
12#define PREISP_FW_NAME_LEN 128
13
14#define PREISP_LSCTBL_SIZE 289
15
16#define PREISP_CMD_SET_HDRAE_EXP _IOW('V', BASE_VIDIOC_PRIVATE + 0, struct preisp_hdrae_exp_s)
17
18#define PREISP_CMD_SAVE_HDRAE_PARAM _IOW('V', BASE_VIDIOC_PRIVATE + 1, struct preisp_hdrae_para_s)
19
20#define PREISP_DISP_SET_FRAME_OUTPUT _IOW('V', BASE_VIDIOC_PRIVATE + 4, int)
21
22#define PREISP_DISP_SET_FRAME_FORMAT _IOW('V', BASE_VIDIOC_PRIVATE + 5, unsigned int)
23
24#define PREISP_DISP_SET_FRAME_TYPE _IOW('V', BASE_VIDIOC_PRIVATE + 6, unsigned int)
25
26#define PREISP_DISP_SET_PRO_TIME _IOW('V', BASE_VIDIOC_PRIVATE + 7, unsigned int)
27
28#define PREISP_DISP_SET_PRO_CURRENT _IOW('V', BASE_VIDIOC_PRIVATE + 8, unsigned int)
29
30#define PREISP_DISP_SET_DENOISE _IOW('V', BASE_VIDIOC_PRIVATE + 9, unsigned int[2])
31
32#define PREISP_DISP_WRITE_EEPROM _IO('V', BASE_VIDIOC_PRIVATE + 10)
33
34#define PREISP_DISP_READ_EEPROM _IO('V', BASE_VIDIOC_PRIVATE + 11)
35
36#define PREISP_DISP_SET_LED_ON_OFF _IOW('V', BASE_VIDIOC_PRIVATE + 12, unsigned int)
37
38#define PREISP_POWER_ON _IO('p', 1)
39#define PREISP_POWER_OFF _IO('p', 2)
40#define PREISP_REQUEST_SLEEP _IOW('p', 3, s32)
41#define PREISP_WAKEUP _IO('p', 4)
42#define PREISP_DOWNLOAD_FW _IOW('p', 5, char[PREISP_FW_NAME_LEN])
43#define PREISP_WRITE _IOW('p', 6, struct preisp_apb_pkt)
44#define PREISP_READ _IOR('p', 7, struct preisp_apb_pkt)
45#define PREISP_ST_QUERY _IOR('p', 8, s32)
46#define PREISP_IRQ_REQUEST _IOW('p', 9, s32)
47#define PREISP_SEND_MSG _IOW('p', 11, s32)
48#define PREISP_QUERY_MSG _IOR('p', 12, s32)
49#define PREISP_RECV_MSG _IOR('p', 13, s32)
50#define PREISP_CLIENT_CONNECT _IOW('p', 15, s32)
51#define PREISP_CLIENT_DISCONNECT _IO('p', 16)
52
53struct preisp_apb_pkt {
54    s32 data_len;
55    s32 addr;
56    s32 *data;
57};
58
59/**
60 * struct preisp_hdrae_para_s - awb and lsc para for preisp
61 *
62 * @r_gain: awb r gain
63 * @b_gain: awb b gain
64 * @gr_gain: awb gr gain
65 * @gb_gain: awb gb gain
66 * @lsc_table: lsc data of gr
67 */
68struct preisp_hdrae_para_s {
69    unsigned short r_gain;
70    unsigned short b_gain;
71    unsigned short gr_gain;
72    unsigned short gb_gain;
73    int lsc_table[PREISP_LSCTBL_SIZE];
74};
75
76/*
77 * enum cg_mode_e conversion gain
78 *
79 */
80enum cg_mode_e {
81    GAIN_MODE_LCG,
82    GAIN_MODE_HCG,
83};
84
85/**
86 * struct preisp_hdrae_exp_s - hdrae exposure
87 *
88 */
89struct preisp_hdrae_exp_s {
90    unsigned int long_exp_reg;
91    unsigned int long_gain_reg;
92    unsigned int middle_exp_reg;
93    unsigned int middle_gain_reg;
94    unsigned int short_exp_reg;
95    unsigned int short_gain_reg;
96    unsigned int long_exp_val;
97    unsigned int long_gain_val;
98    unsigned int middle_exp_val;
99    unsigned int middle_gain_val;
100    unsigned int short_exp_val;
101    unsigned int short_gain_val;
102    unsigned char long_cg_mode;
103    unsigned char middle_cg_mode;
104    unsigned char short_cg_mode;
105};
106
107#endif /* _UAPI_RKPREISP_H */
108