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