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