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 _IOW('V', BASE_VIDIOC_PRIVATE + 0, struct preisp_hdrae_exp_s)
173d0407baSopenharmony_ci
183d0407baSopenharmony_ci#define PREISP_CMD_SAVE_HDRAE_PARAM _IOW('V', BASE_VIDIOC_PRIVATE + 1, struct preisp_hdrae_para_s)
193d0407baSopenharmony_ci
203d0407baSopenharmony_ci#define PREISP_DISP_SET_FRAME_OUTPUT _IOW('V', BASE_VIDIOC_PRIVATE + 4, int)
213d0407baSopenharmony_ci
223d0407baSopenharmony_ci#define PREISP_DISP_SET_FRAME_FORMAT _IOW('V', BASE_VIDIOC_PRIVATE + 5, unsigned int)
233d0407baSopenharmony_ci
243d0407baSopenharmony_ci#define PREISP_DISP_SET_FRAME_TYPE _IOW('V', BASE_VIDIOC_PRIVATE + 6, unsigned int)
253d0407baSopenharmony_ci
263d0407baSopenharmony_ci#define PREISP_DISP_SET_PRO_TIME _IOW('V', BASE_VIDIOC_PRIVATE + 7, unsigned int)
273d0407baSopenharmony_ci
283d0407baSopenharmony_ci#define PREISP_DISP_SET_PRO_CURRENT _IOW('V', BASE_VIDIOC_PRIVATE + 8, unsigned int)
293d0407baSopenharmony_ci
303d0407baSopenharmony_ci#define PREISP_DISP_SET_DENOISE _IOW('V', BASE_VIDIOC_PRIVATE + 9, unsigned int[2])
313d0407baSopenharmony_ci
323d0407baSopenharmony_ci#define PREISP_DISP_WRITE_EEPROM _IO('V', BASE_VIDIOC_PRIVATE + 10)
333d0407baSopenharmony_ci
343d0407baSopenharmony_ci#define PREISP_DISP_READ_EEPROM _IO('V', BASE_VIDIOC_PRIVATE + 11)
353d0407baSopenharmony_ci
363d0407baSopenharmony_ci#define PREISP_DISP_SET_LED_ON_OFF _IOW('V', BASE_VIDIOC_PRIVATE + 12, unsigned int)
373d0407baSopenharmony_ci
383d0407baSopenharmony_ci#define PREISP_POWER_ON _IO('p', 1)
393d0407baSopenharmony_ci#define PREISP_POWER_OFF _IO('p', 2)
403d0407baSopenharmony_ci#define PREISP_REQUEST_SLEEP _IOW('p', 3, s32)
413d0407baSopenharmony_ci#define PREISP_WAKEUP _IO('p', 4)
423d0407baSopenharmony_ci#define PREISP_DOWNLOAD_FW _IOW('p', 5, char[PREISP_FW_NAME_LEN])
433d0407baSopenharmony_ci#define PREISP_WRITE _IOW('p', 6, struct preisp_apb_pkt)
443d0407baSopenharmony_ci#define PREISP_READ _IOR('p', 7, struct preisp_apb_pkt)
453d0407baSopenharmony_ci#define PREISP_ST_QUERY _IOR('p', 8, s32)
463d0407baSopenharmony_ci#define PREISP_IRQ_REQUEST _IOW('p', 9, s32)
473d0407baSopenharmony_ci#define PREISP_SEND_MSG _IOW('p', 11, s32)
483d0407baSopenharmony_ci#define PREISP_QUERY_MSG _IOR('p', 12, s32)
493d0407baSopenharmony_ci#define PREISP_RECV_MSG _IOR('p', 13, s32)
503d0407baSopenharmony_ci#define PREISP_CLIENT_CONNECT _IOW('p', 15, s32)
513d0407baSopenharmony_ci#define PREISP_CLIENT_DISCONNECT _IO('p', 16)
523d0407baSopenharmony_ci
533d0407baSopenharmony_cistruct preisp_apb_pkt {
543d0407baSopenharmony_ci    s32 data_len;
553d0407baSopenharmony_ci    s32 addr;
563d0407baSopenharmony_ci    s32 *data;
573d0407baSopenharmony_ci};
583d0407baSopenharmony_ci
593d0407baSopenharmony_ci/**
603d0407baSopenharmony_ci * struct preisp_hdrae_para_s - awb and lsc para for preisp
613d0407baSopenharmony_ci *
623d0407baSopenharmony_ci * @r_gain: awb r gain
633d0407baSopenharmony_ci * @b_gain: awb b gain
643d0407baSopenharmony_ci * @gr_gain: awb gr gain
653d0407baSopenharmony_ci * @gb_gain: awb gb gain
663d0407baSopenharmony_ci * @lsc_table: lsc data of gr
673d0407baSopenharmony_ci */
683d0407baSopenharmony_cistruct preisp_hdrae_para_s {
693d0407baSopenharmony_ci    unsigned short r_gain;
703d0407baSopenharmony_ci    unsigned short b_gain;
713d0407baSopenharmony_ci    unsigned short gr_gain;
723d0407baSopenharmony_ci    unsigned short gb_gain;
733d0407baSopenharmony_ci    int lsc_table[PREISP_LSCTBL_SIZE];
743d0407baSopenharmony_ci};
753d0407baSopenharmony_ci
763d0407baSopenharmony_ci/*
773d0407baSopenharmony_ci * enum cg_mode_e conversion gain
783d0407baSopenharmony_ci *
793d0407baSopenharmony_ci */
803d0407baSopenharmony_cienum cg_mode_e {
813d0407baSopenharmony_ci    GAIN_MODE_LCG,
823d0407baSopenharmony_ci    GAIN_MODE_HCG,
833d0407baSopenharmony_ci};
843d0407baSopenharmony_ci
853d0407baSopenharmony_ci/**
863d0407baSopenharmony_ci * struct preisp_hdrae_exp_s - hdrae exposure
873d0407baSopenharmony_ci *
883d0407baSopenharmony_ci */
893d0407baSopenharmony_cistruct preisp_hdrae_exp_s {
903d0407baSopenharmony_ci    unsigned int long_exp_reg;
913d0407baSopenharmony_ci    unsigned int long_gain_reg;
923d0407baSopenharmony_ci    unsigned int middle_exp_reg;
933d0407baSopenharmony_ci    unsigned int middle_gain_reg;
943d0407baSopenharmony_ci    unsigned int short_exp_reg;
953d0407baSopenharmony_ci    unsigned int short_gain_reg;
963d0407baSopenharmony_ci    unsigned int long_exp_val;
973d0407baSopenharmony_ci    unsigned int long_gain_val;
983d0407baSopenharmony_ci    unsigned int middle_exp_val;
993d0407baSopenharmony_ci    unsigned int middle_gain_val;
1003d0407baSopenharmony_ci    unsigned int short_exp_val;
1013d0407baSopenharmony_ci    unsigned int short_gain_val;
1023d0407baSopenharmony_ci    unsigned char long_cg_mode;
1033d0407baSopenharmony_ci    unsigned char middle_cg_mode;
1043d0407baSopenharmony_ci    unsigned char short_cg_mode;
1053d0407baSopenharmony_ci};
1063d0407baSopenharmony_ci
1073d0407baSopenharmony_ci#endif /* _UAPI_RKPREISP_H */
108