blob: a087e918b3f51e47062c64855e1c40b870dbb401 [file] [log] [blame]
/*
* File: miniISP_ioctl.h
* Description: miniISP ioctl
*
* Copyright 2019-2030 Altek Semiconductor Corporation
*
*/
/*
* This file is part of al6100.
*
* al6100 is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by
* the Free Software Foundation.
*
* al6100 is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTIBILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License version 2 for
* more details.
*
* You should have received a copy of the General Public License version 2
* along with al6100. If not, see https://www.gnu.org/licenses/gpl-2.0.html.
*/
/* /ALTEK_TAG_HwMiniISP>>> */
#ifndef _MINI_ISP_IOCTL_H_
#define _MINI_ISP_IOCTL_H_
#include <linux/types.h>
#include <linux/ioctl.h> /* _IOW(), _IOR() */
#define SPIBULK_BLOCKSIZE 8192 /* 8k bytes */
#define SPI_CMD_LENGTH 64
#define ISPCMD_LOAD_FW 0x0001
#define ISPCMD_PURE_BYPASS 0x0010
#define ISPCMD_POWER_OFF 0x0100
#define ISPCMD_ENTER_CP_MODE 0x0200
#define ISPCMD_LEAVE_CP_MODE_STANDBY 0x0002
#define ISPCMD_NONE 0x0000
/*Calibration Profile*/
#define ISPCMD_CAMERA_SET_SENSORMODE 0x300A
#define ISPCMD_CAMERA_GET_SENSORMODE 0x300B
#define ISPCMD_CAMERA_SET_OUTPUTFORMAT 0x300D
#define ISPCMD_CAMERA_SET_CP_MODE 0x300E
#define ISPCMD_CAMERA_SET_AE_STATISTICS 0x300F
#define ISPCMD_CAMERA_PREVIEWSTREAMONOFF 0x3010
#define ISPCMD_CAMERA_DUALPDYCALCULATIONWEIGHT 0x3011
#define ISPCMD_LED_POWERCONTROL 0x3012
#define ISPCMD_CAMERA_ACTIVE_AE 0x3013
#define ISPCMD_ISP_AECONTROLONOFF 0x3014
#define ISPCMD_CAMERA_SET_FRAMERATELIMITS 0x3015
#define ISPCMD_CAMERA_SET_PERIODDROPFRAME 0x3016
#define ISPCMD_CAMERA_SET_MAX_EXPOSURE 0x3017
#define ISPCMD_CAMERA_SET_AE_TARGET_MEAN 0x3018
#define ISPCMD_CAMERA_FRAME_SYNC_CONTROL 0x3019
#define ISPCMD_CAMERA_SET_SHOT_MODE 0x301A
#define ISPCMD_CAMERA_LIGHTING_CTRL 0x301B
#define ISPCMD_CAMERA_DEPTH_COMPENSATION 0x301C
#define ISPCMD_CAMERA_TRIGGER_DEPTH_PROCESS_CTRL 0x301D
#define ISPCMD_CAMERA_SET_MIN_EXPOSURE 0x301E
#define ISPCMD_CAMERA_SET_MAX_EXPOSURE_SLOPE 0x301F
/* Bulk Data*/
#define ISPCMD_BULK_WRITE_BASICCODE 0x2002
#define ISPCMD_BULK_WRITE_BOOTCODE 0x2008
#define ISPCMD_BULK_READ_MEMORY 0x2101
#define ISPCMD_BULK_READ_COMLOG 0x2102
#define ISPCMD_BULK_WRITE_CALIBRATION_DATA 0x210B
/*Basic Setting*/
#define ISPCMD_BASIC_SET_DEPTH_3A_INFO 0x10B9
#define ISPCMD_BASIC_SET_DEPTH_AUTO_INTERLEAVE_MODE 0x10BC
#define ISPCMD_BASIC_SET_INTERLEAVE_MODE_DEPTH_TYPE 0x10BD
#define ISPCMD_BASIC_SET_DEPTH_POLISH_LEVEL 0x10BE
/*System Cmd*/
#define ISPCMD_SYSTEM_GET_STATUSOFLASTEXECUTEDCOMMAND 0x0015
#define ISPCMD_SYSTEM_GET_ERRORCODE 0x0016
#define ISPCMD_SYSTEM_SET_ISPREGISTER 0x0100
#define ISPCMD_SYSTEM_GET_ISPREGISTER 0x0101
/*#define ISPCMD_SYSTEM_SET_DEBUGCMD 0x0104*/
#define ISPCMD_SYSTEM_SET_COMLOGLEVEL 0x0109
#define ISPCMD_SYSTEM_GET_CHIPTESTREPORT 0x010A
/*Operarion Code*/
#define ISPCMD_MINIISPOPEN 0x4000
/* ALTEK_AL6100_KERNEL >>> */
#define IOC_ISP_CTRL_FLOW_KERNEL_MAGIC 'D'
#define IOCTL_ISP_RUN_TASK_INIT \
_IOWR(IOC_ISP_CTRL_FLOW_KERNEL_MAGIC, BASE_MINIISP_CONTROL, struct miniISP_cmd_config)
#define IOCTL_ISP_RUN_TASK_START \
_IOWR(IOC_ISP_CTRL_FLOW_KERNEL_MAGIC, BASE_MINIISP_CONTROL + 1, struct miniISP_cmd_config)
#define IOCTL_ISP_RUN_TASK_STOP \
_IOWR(IOC_ISP_CTRL_FLOW_KERNEL_MAGIC, BASE_MINIISP_CONTROL + 2, struct miniISP_cmd_config)
#define IOCTL_ISP_RUN_TASK_DEINIT \
_IOWR(IOC_ISP_CTRL_FLOW_KERNEL_MAGIC, BASE_MINIISP_CONTROL + 3, struct miniISP_cmd_config)
#define IOCTL_ISP_RUN_TASK_QUERY \
_IOWR(IOC_ISP_CTRL_FLOW_KERNEL_MAGIC, BASE_MINIISP_CONTROL + 4, struct miniISP_cmd_config)
struct miniISP_chi_param {
/* uint8_t board_power_always_on; //1: power is always on */
uint8_t scid;
uint8_t irflood_mode;
uint8_t merge_mode;
} __attribute__ ((packed));
/* ALTEK_AL6100_KERNEL <<< */
/* TODO: Need to solve the kernel panic >>> */
struct miniISP_cmd_config {
uint16_t opcode;
uint32_t size;
uint64_t param;
} __attribute__ ((packed));
#define BASE_MINIISP_CONTROL 100
#define IOC_ISP_CTRL_FLOW_MAGIC 'C'
#define IOCTL_ISP_LOAD_FW \
_IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL, struct miniISP_cmd_config)
#define IOCTL_ISP_PURE_BYPASS \
_IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 1, struct miniISP_cmd_config)
#define IOCTL_ISP_POWER_OFF \
_IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 2, struct miniISP_cmd_config)
#define IOCTL_ISP_ENTER_CP_MODE \
_IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 3, struct miniISP_cmd_config)
#define IOCTL_ISP_LEAVE_CP_MODE \
_IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 4, struct miniISP_cmd_config)
#define IOCTL_ISP_CTRL_CMD \
_IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 5, struct miniISP_cmd_config)
#define IOCTL_ISP_POWER_ON \
_IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 6, struct miniISP_cmd_config)
#define IOCTL_ISP_DEINIT \
_IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 7, struct miniISP_cmd_config)
/* /ALTEK_TAG_HwMiniISP<<< */
#endif