13d0407baSopenharmony_ci/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR MIT) */
23d0407baSopenharmony_ci/*
33d0407baSopenharmony_ci * Rockchip preisp driver
43d0407baSopenharmony_ci * Copyright (C) 2018 Rockchip Electronics Co., Ltd.
53d0407baSopenharmony_ci */
63d0407baSopenharmony_ci
73d0407baSopenharmony_ci#ifndef _UAPI_RKPREISP_H
83d0407baSopenharmony_ci#define _UAPI_RKPREISP_H
93d0407baSopenharmony_ci
103d0407baSopenharmony_ci#include <linux/types.h>
113d0407baSopenharmony_ci
123d0407baSopenharmony_ci#define PREISP_FW_NAME_LEN		128
133d0407baSopenharmony_ci
143d0407baSopenharmony_ci#define PREISP_LSCTBL_SIZE		289
153d0407baSopenharmony_ci
163d0407baSopenharmony_ci#define PREISP_CMD_SET_HDRAE_EXP	\
173d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 0, struct preisp_hdrae_exp_s)
183d0407baSopenharmony_ci
193d0407baSopenharmony_ci#define PREISP_CMD_SAVE_HDRAE_PARAM	\
203d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 1, struct preisp_hdrae_para_s)
213d0407baSopenharmony_ci
223d0407baSopenharmony_ci#define PREISP_DISP_SET_FRAME_OUTPUT    \
233d0407baSopenharmony_ci	 _IOW('V', BASE_VIDIOC_PRIVATE + 4, int)
243d0407baSopenharmony_ci
253d0407baSopenharmony_ci#define PREISP_DISP_SET_FRAME_FORMAT    \
263d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 5, unsigned int)
273d0407baSopenharmony_ci
283d0407baSopenharmony_ci#define PREISP_DISP_SET_FRAME_TYPE      \
293d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 6, unsigned int)
303d0407baSopenharmony_ci
313d0407baSopenharmony_ci#define PREISP_DISP_SET_PRO_TIME        \
323d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 7, unsigned int)
333d0407baSopenharmony_ci
343d0407baSopenharmony_ci#define PREISP_DISP_SET_PRO_CURRENT     \
353d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 8, unsigned int)
363d0407baSopenharmony_ci
373d0407baSopenharmony_ci#define PREISP_DISP_SET_DENOISE \
383d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 9, unsigned int[2])
393d0407baSopenharmony_ci
403d0407baSopenharmony_ci#define PREISP_DISP_WRITE_EEPROM        \
413d0407baSopenharmony_ci	_IO('V', BASE_VIDIOC_PRIVATE + 10)
423d0407baSopenharmony_ci
433d0407baSopenharmony_ci#define PREISP_DISP_READ_EEPROM \
443d0407baSopenharmony_ci	_IO('V', BASE_VIDIOC_PRIVATE + 11)
453d0407baSopenharmony_ci
463d0407baSopenharmony_ci#define PREISP_DISP_SET_LED_ON_OFF	\
473d0407baSopenharmony_ci	_IOW('V', BASE_VIDIOC_PRIVATE + 12, unsigned int)
483d0407baSopenharmony_ci
493d0407baSopenharmony_ci#define PREISP_POWER_ON		_IO('p',   1)
503d0407baSopenharmony_ci#define PREISP_POWER_OFF	_IO('p',   2)
513d0407baSopenharmony_ci#define PREISP_REQUEST_SLEEP	_IOW('p',  3, s32)
523d0407baSopenharmony_ci#define PREISP_WAKEUP		_IO('p',   4)
533d0407baSopenharmony_ci#define PREISP_DOWNLOAD_FW	_IOW('p',  5, char[PREISP_FW_NAME_LEN])
543d0407baSopenharmony_ci#define PREISP_WRITE		_IOW('p',  6, struct preisp_apb_pkt)
553d0407baSopenharmony_ci#define PREISP_READ		_IOR('p',  7, struct preisp_apb_pkt)
563d0407baSopenharmony_ci#define PREISP_ST_QUERY		_IOR('p',  8, s32)
573d0407baSopenharmony_ci#define PREISP_IRQ_REQUEST	_IOW('p',  9, s32)
583d0407baSopenharmony_ci#define PREISP_SEND_MSG		_IOW('p', 11, s32)
593d0407baSopenharmony_ci#define PREISP_QUERY_MSG	_IOR('p', 12, s32)
603d0407baSopenharmony_ci#define PREISP_RECV_MSG		_IOR('p', 13, s32)
613d0407baSopenharmony_ci#define PREISP_CLIENT_CONNECT	_IOW('p', 15, s32)
623d0407baSopenharmony_ci#define PREISP_CLIENT_DISCONNECT _IO('p', 16)
633d0407baSopenharmony_ci
643d0407baSopenharmony_cistruct preisp_apb_pkt {
653d0407baSopenharmony_ci	s32 data_len;
663d0407baSopenharmony_ci	s32 addr;
673d0407baSopenharmony_ci	s32 *data;
683d0407baSopenharmony_ci};
693d0407baSopenharmony_ci
703d0407baSopenharmony_ci/**
713d0407baSopenharmony_ci * struct preisp_hdrae_para_s - awb and lsc para for preisp
723d0407baSopenharmony_ci *
733d0407baSopenharmony_ci * @r_gain: awb r gain
743d0407baSopenharmony_ci * @b_gain: awb b gain
753d0407baSopenharmony_ci * @gr_gain: awb gr gain
763d0407baSopenharmony_ci * @gb_gain: awb gb gain
773d0407baSopenharmony_ci * @lsc_table: lsc data of gr
783d0407baSopenharmony_ci */
793d0407baSopenharmony_cistruct preisp_hdrae_para_s {
803d0407baSopenharmony_ci	unsigned short r_gain;
813d0407baSopenharmony_ci	unsigned short b_gain;
823d0407baSopenharmony_ci	unsigned short gr_gain;
833d0407baSopenharmony_ci	unsigned short gb_gain;
843d0407baSopenharmony_ci	int lsc_table[PREISP_LSCTBL_SIZE];
853d0407baSopenharmony_ci};
863d0407baSopenharmony_ci
873d0407baSopenharmony_ci/*
883d0407baSopenharmony_ci * enum cg_mode_e conversion gain
893d0407baSopenharmony_ci *
903d0407baSopenharmony_ci */
913d0407baSopenharmony_cienum cg_mode_e {
923d0407baSopenharmony_ci		GAIN_MODE_LCG,
933d0407baSopenharmony_ci		GAIN_MODE_HCG,
943d0407baSopenharmony_ci};
953d0407baSopenharmony_ci
963d0407baSopenharmony_ci/**
973d0407baSopenharmony_ci * struct preisp_hdrae_exp_s - hdrae exposure
983d0407baSopenharmony_ci *
993d0407baSopenharmony_ci */
1003d0407baSopenharmony_cistruct preisp_hdrae_exp_s {
1013d0407baSopenharmony_ci	unsigned int long_exp_reg;
1023d0407baSopenharmony_ci	unsigned int long_gain_reg;
1033d0407baSopenharmony_ci	unsigned int middle_exp_reg;
1043d0407baSopenharmony_ci	unsigned int middle_gain_reg;
1053d0407baSopenharmony_ci	unsigned int short_exp_reg;
1063d0407baSopenharmony_ci	unsigned int short_gain_reg;
1073d0407baSopenharmony_ci	unsigned int long_exp_val;
1083d0407baSopenharmony_ci	unsigned int long_gain_val;
1093d0407baSopenharmony_ci	unsigned int middle_exp_val;
1103d0407baSopenharmony_ci	unsigned int middle_gain_val;
1113d0407baSopenharmony_ci	unsigned int short_exp_val;
1123d0407baSopenharmony_ci	unsigned int short_gain_val;
1133d0407baSopenharmony_ci	unsigned char long_cg_mode;
1143d0407baSopenharmony_ci	unsigned char middle_cg_mode;
1153d0407baSopenharmony_ci	unsigned char short_cg_mode;
1163d0407baSopenharmony_ci};
1173d0407baSopenharmony_ci
1183d0407baSopenharmony_ci#endif /* _UAPI_RKPREISP_H */
119