blob: a087e918b3f51e47062c64855e1c40b870dbb401 [file] [log] [blame]
Shawn Lin533dd2c2019-06-27 15:23:18 +08001/*
2 * File: miniISP_ioctl.h
3 * Description: miniISP ioctl
4 *
5 * Copyright 2019-2030 Altek Semiconductor Corporation
6 *
7 */
8
9/*
10 * This file is part of al6100.
11 *
12 * al6100 is free software: you can redistribute it and/or modify it under
13 * the terms of the GNU General Public License version 2, as published by
14 * the Free Software Foundation.
15 *
16 * al6100 is distributed in the hope that it will be useful, but WITHOUT ANY
17 * WARRANTY; without even the implied warranty of MERCHANTIBILITY or FITNESS
18 * FOR A PARTICULAR PURPOSE. See the GNU General Public License version 2 for
19 * more details.
20 *
21 * You should have received a copy of the General Public License version 2
22 * along with al6100. If not, see https://www.gnu.org/licenses/gpl-2.0.html.
23 */
24
25/* /ALTEK_TAG_HwMiniISP>>> */
26
27#ifndef _MINI_ISP_IOCTL_H_
28#define _MINI_ISP_IOCTL_H_
29
30#include <linux/types.h>
31#include <linux/ioctl.h> /* _IOW(), _IOR() */
32
33#define SPIBULK_BLOCKSIZE 8192 /* 8k bytes */
34#define SPI_CMD_LENGTH 64
35
36#define ISPCMD_LOAD_FW 0x0001
37#define ISPCMD_PURE_BYPASS 0x0010
38#define ISPCMD_POWER_OFF 0x0100
39#define ISPCMD_ENTER_CP_MODE 0x0200
40#define ISPCMD_LEAVE_CP_MODE_STANDBY 0x0002
41#define ISPCMD_NONE 0x0000
42
43
44/*Calibration Profile*/
45#define ISPCMD_CAMERA_SET_SENSORMODE 0x300A
46#define ISPCMD_CAMERA_GET_SENSORMODE 0x300B
47#define ISPCMD_CAMERA_SET_OUTPUTFORMAT 0x300D
48#define ISPCMD_CAMERA_SET_CP_MODE 0x300E
49#define ISPCMD_CAMERA_SET_AE_STATISTICS 0x300F
50#define ISPCMD_CAMERA_PREVIEWSTREAMONOFF 0x3010
51#define ISPCMD_CAMERA_DUALPDYCALCULATIONWEIGHT 0x3011
52#define ISPCMD_LED_POWERCONTROL 0x3012
53#define ISPCMD_CAMERA_ACTIVE_AE 0x3013
54#define ISPCMD_ISP_AECONTROLONOFF 0x3014
55#define ISPCMD_CAMERA_SET_FRAMERATELIMITS 0x3015
56#define ISPCMD_CAMERA_SET_PERIODDROPFRAME 0x3016
57#define ISPCMD_CAMERA_SET_MAX_EXPOSURE 0x3017
58#define ISPCMD_CAMERA_SET_AE_TARGET_MEAN 0x3018
59#define ISPCMD_CAMERA_FRAME_SYNC_CONTROL 0x3019
60#define ISPCMD_CAMERA_SET_SHOT_MODE 0x301A
61#define ISPCMD_CAMERA_LIGHTING_CTRL 0x301B
62#define ISPCMD_CAMERA_DEPTH_COMPENSATION 0x301C
63#define ISPCMD_CAMERA_TRIGGER_DEPTH_PROCESS_CTRL 0x301D
64#define ISPCMD_CAMERA_SET_MIN_EXPOSURE 0x301E
65#define ISPCMD_CAMERA_SET_MAX_EXPOSURE_SLOPE 0x301F
66
67
68
69/* Bulk Data*/
70#define ISPCMD_BULK_WRITE_BASICCODE 0x2002
71#define ISPCMD_BULK_WRITE_BOOTCODE 0x2008
72#define ISPCMD_BULK_READ_MEMORY 0x2101
73#define ISPCMD_BULK_READ_COMLOG 0x2102
74#define ISPCMD_BULK_WRITE_CALIBRATION_DATA 0x210B
75
76/*Basic Setting*/
77#define ISPCMD_BASIC_SET_DEPTH_3A_INFO 0x10B9
78#define ISPCMD_BASIC_SET_DEPTH_AUTO_INTERLEAVE_MODE 0x10BC
79#define ISPCMD_BASIC_SET_INTERLEAVE_MODE_DEPTH_TYPE 0x10BD
80#define ISPCMD_BASIC_SET_DEPTH_POLISH_LEVEL 0x10BE
81
82/*System Cmd*/
83#define ISPCMD_SYSTEM_GET_STATUSOFLASTEXECUTEDCOMMAND 0x0015
84#define ISPCMD_SYSTEM_GET_ERRORCODE 0x0016
85#define ISPCMD_SYSTEM_SET_ISPREGISTER 0x0100
86#define ISPCMD_SYSTEM_GET_ISPREGISTER 0x0101
87/*#define ISPCMD_SYSTEM_SET_DEBUGCMD 0x0104*/
88#define ISPCMD_SYSTEM_SET_COMLOGLEVEL 0x0109
89#define ISPCMD_SYSTEM_GET_CHIPTESTREPORT 0x010A
90
91/*Operarion Code*/
92#define ISPCMD_MINIISPOPEN 0x4000
93
94
95
96/* ALTEK_AL6100_KERNEL >>> */
97#define IOC_ISP_CTRL_FLOW_KERNEL_MAGIC 'D'
98
99#define IOCTL_ISP_RUN_TASK_INIT \
100 _IOWR(IOC_ISP_CTRL_FLOW_KERNEL_MAGIC, BASE_MINIISP_CONTROL, struct miniISP_cmd_config)
101
102#define IOCTL_ISP_RUN_TASK_START \
103 _IOWR(IOC_ISP_CTRL_FLOW_KERNEL_MAGIC, BASE_MINIISP_CONTROL + 1, struct miniISP_cmd_config)
104
105#define IOCTL_ISP_RUN_TASK_STOP \
106 _IOWR(IOC_ISP_CTRL_FLOW_KERNEL_MAGIC, BASE_MINIISP_CONTROL + 2, struct miniISP_cmd_config)
107
108#define IOCTL_ISP_RUN_TASK_DEINIT \
109 _IOWR(IOC_ISP_CTRL_FLOW_KERNEL_MAGIC, BASE_MINIISP_CONTROL + 3, struct miniISP_cmd_config)
110
111#define IOCTL_ISP_RUN_TASK_QUERY \
112 _IOWR(IOC_ISP_CTRL_FLOW_KERNEL_MAGIC, BASE_MINIISP_CONTROL + 4, struct miniISP_cmd_config)
113
114struct miniISP_chi_param {
115 /* uint8_t board_power_always_on; //1: power is always on */
116 uint8_t scid;
117 uint8_t irflood_mode;
118 uint8_t merge_mode;
119} __attribute__ ((packed));
120
121
122/* ALTEK_AL6100_KERNEL <<< */
123
124
125
126
127/* TODO: Need to solve the kernel panic >>> */
128struct miniISP_cmd_config {
129 uint16_t opcode;
130 uint32_t size;
131 uint64_t param;
132} __attribute__ ((packed));
133
134#define BASE_MINIISP_CONTROL 100
135
136#define IOC_ISP_CTRL_FLOW_MAGIC 'C'
137
138#define IOCTL_ISP_LOAD_FW \
139 _IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL, struct miniISP_cmd_config)
140
141#define IOCTL_ISP_PURE_BYPASS \
142 _IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 1, struct miniISP_cmd_config)
143
144#define IOCTL_ISP_POWER_OFF \
145 _IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 2, struct miniISP_cmd_config)
146
147#define IOCTL_ISP_ENTER_CP_MODE \
148 _IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 3, struct miniISP_cmd_config)
149
150#define IOCTL_ISP_LEAVE_CP_MODE \
151 _IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 4, struct miniISP_cmd_config)
152
153#define IOCTL_ISP_CTRL_CMD \
154 _IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 5, struct miniISP_cmd_config)
155
156#define IOCTL_ISP_POWER_ON \
157 _IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 6, struct miniISP_cmd_config)
158
159#define IOCTL_ISP_DEINIT \
160 _IOWR(IOC_ISP_CTRL_FLOW_MAGIC, BASE_MINIISP_CONTROL + 7, struct miniISP_cmd_config)
161
162/* /ALTEK_TAG_HwMiniISP<<< */
163#endif
164