xref: /OK3568_Linux_fs/kernel/drivers/media/i2c/smiapp/smiapp-limits.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * drivers/media/i2c/smiapp/smiapp-limits.c
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Generic driver for SMIA/SMIA++ compliant camera modules
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Copyright (C) 2011--2012 Nokia Corporation
8*4882a593Smuzhiyun  * Contact: Sakari Ailus <sakari.ailus@iki.fi>
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #include "smiapp.h"
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun struct smiapp_reg_limits smiapp_reg_limits[] = {
14*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_ANALOGUE_GAIN_CAPABILITY, "analogue_gain_capability" }, /* 0 */
15*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_ANALOGUE_GAIN_CODE_MIN, "analogue_gain_code_min" },
16*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_ANALOGUE_GAIN_CODE_MAX, "analogue_gain_code_max" },
17*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_THS_ZERO_MIN, "ths_zero_min" },
18*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_TCLK_TRAIL_MIN, "tclk_trail_min" },
19*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_INTEGRATION_TIME_CAPABILITY, "integration_time_capability" }, /* 5 */
20*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_COARSE_INTEGRATION_TIME_MIN, "coarse_integration_time_min" },
21*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_COARSE_INTEGRATION_TIME_MAX_MARGIN, "coarse_integration_time_max_margin" },
22*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_FINE_INTEGRATION_TIME_MIN, "fine_integration_time_min" },
23*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_FINE_INTEGRATION_TIME_MAX_MARGIN, "fine_integration_time_max_margin" },
24*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_DIGITAL_GAIN_CAPABILITY, "digital_gain_capability" }, /* 10 */
25*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_DIGITAL_GAIN_MIN, "digital_gain_min" },
26*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_DIGITAL_GAIN_MAX, "digital_gain_max" },
27*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MIN_EXT_CLK_FREQ_HZ, "min_ext_clk_freq_hz" },
28*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MAX_EXT_CLK_FREQ_HZ, "max_ext_clk_freq_hz" },
29*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_PRE_PLL_CLK_DIV, "min_pre_pll_clk_div" }, /* 15 */
30*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_PRE_PLL_CLK_DIV, "max_pre_pll_clk_div" },
31*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MIN_PLL_IP_FREQ_HZ, "min_pll_ip_freq_hz" },
32*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MAX_PLL_IP_FREQ_HZ, "max_pll_ip_freq_hz" },
33*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_PLL_MULTIPLIER, "min_pll_multiplier" },
34*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_PLL_MULTIPLIER, "max_pll_multiplier" }, /* 20 */
35*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MIN_PLL_OP_FREQ_HZ, "min_pll_op_freq_hz" },
36*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MAX_PLL_OP_FREQ_HZ, "max_pll_op_freq_hz" },
37*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_VT_SYS_CLK_DIV, "min_vt_sys_clk_div" },
38*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_VT_SYS_CLK_DIV, "max_vt_sys_clk_div" },
39*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MIN_VT_SYS_CLK_FREQ_HZ, "min_vt_sys_clk_freq_hz" }, /* 25 */
40*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MAX_VT_SYS_CLK_FREQ_HZ, "max_vt_sys_clk_freq_hz" },
41*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MIN_VT_PIX_CLK_FREQ_HZ, "min_vt_pix_clk_freq_hz" },
42*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MAX_VT_PIX_CLK_FREQ_HZ, "max_vt_pix_clk_freq_hz" },
43*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_VT_PIX_CLK_DIV, "min_vt_pix_clk_div" },
44*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_VT_PIX_CLK_DIV, "max_vt_pix_clk_div" }, /* 30 */
45*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_FRAME_LENGTH_LINES, "min_frame_length_lines" },
46*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_FRAME_LENGTH_LINES, "max_frame_length_lines" },
47*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_LINE_LENGTH_PCK, "min_line_length_pck" },
48*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_LINE_LENGTH_PCK, "max_line_length_pck" },
49*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_LINE_BLANKING_PCK, "min_line_blanking_pck" }, /* 35 */
50*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_FRAME_BLANKING_LINES, "min_frame_blanking_lines" },
51*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_MIN_LINE_LENGTH_PCK_STEP_SIZE, "min_line_length_pck_step_size" },
52*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_OP_SYS_CLK_DIV, "min_op_sys_clk_div" },
53*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_OP_SYS_CLK_DIV, "max_op_sys_clk_div" },
54*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MIN_OP_SYS_CLK_FREQ_HZ, "min_op_sys_clk_freq_hz" }, /* 40 */
55*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MAX_OP_SYS_CLK_FREQ_HZ, "max_op_sys_clk_freq_hz" },
56*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_OP_PIX_CLK_DIV, "min_op_pix_clk_div" },
57*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_OP_PIX_CLK_DIV, "max_op_pix_clk_div" },
58*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MIN_OP_PIX_CLK_FREQ_HZ, "min_op_pix_clk_freq_hz" },
59*4882a593Smuzhiyun 	{ SMIAPP_REG_F32_MAX_OP_PIX_CLK_FREQ_HZ, "max_op_pix_clk_freq_hz" }, /* 45 */
60*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_X_ADDR_MIN, "x_addr_min" },
61*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_Y_ADDR_MIN, "y_addr_min" },
62*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_X_ADDR_MAX, "x_addr_max" },
63*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_Y_ADDR_MAX, "y_addr_max" },
64*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_X_OUTPUT_SIZE, "min_x_output_size" }, /* 50 */
65*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_Y_OUTPUT_SIZE, "min_y_output_size" },
66*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_X_OUTPUT_SIZE, "max_x_output_size" },
67*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_Y_OUTPUT_SIZE, "max_y_output_size" },
68*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_EVEN_INC, "min_even_inc" },
69*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_EVEN_INC, "max_even_inc" }, /* 55 */
70*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_ODD_INC, "min_odd_inc" },
71*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_ODD_INC, "max_odd_inc" },
72*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_SCALING_CAPABILITY, "scaling_capability" },
73*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_SCALER_M_MIN, "scaler_m_min" },
74*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_SCALER_M_MAX, "scaler_m_max" }, /* 60 */
75*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_SCALER_N_MIN, "scaler_n_min" },
76*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_SCALER_N_MAX, "scaler_n_max" },
77*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_SPATIAL_SAMPLING_CAPABILITY, "spatial_sampling_capability" },
78*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_DIGITAL_CROP_CAPABILITY, "digital_crop_capability" },
79*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_COMPRESSION_CAPABILITY, "compression_capability" }, /* 65 */
80*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_FIFO_SUPPORT_CAPABILITY, "fifo_support_capability" },
81*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_DPHY_CTRL_CAPABILITY, "dphy_ctrl_capability" },
82*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_CSI_LANE_MODE_CAPABILITY, "csi_lane_mode_capability" },
83*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_CSI_SIGNALLING_MODE_CAPABILITY, "csi_signalling_mode_capability" },
84*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_FAST_STANDBY_CAPABILITY, "fast_standby_capability" }, /* 70 */
85*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_CCI_ADDRESS_CONTROL_CAPABILITY, "cci_address_control_capability" },
86*4882a593Smuzhiyun 	{ SMIAPP_REG_U32_MAX_PER_LANE_BITRATE_1_LANE_MODE_MBPS, "max_per_lane_bitrate_1_lane_mode_mbps" },
87*4882a593Smuzhiyun 	{ SMIAPP_REG_U32_MAX_PER_LANE_BITRATE_2_LANE_MODE_MBPS, "max_per_lane_bitrate_2_lane_mode_mbps" },
88*4882a593Smuzhiyun 	{ SMIAPP_REG_U32_MAX_PER_LANE_BITRATE_3_LANE_MODE_MBPS, "max_per_lane_bitrate_3_lane_mode_mbps" },
89*4882a593Smuzhiyun 	{ SMIAPP_REG_U32_MAX_PER_LANE_BITRATE_4_LANE_MODE_MBPS, "max_per_lane_bitrate_4_lane_mode_mbps" }, /* 75 */
90*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_TEMP_SENSOR_CAPABILITY, "temp_sensor_capability" },
91*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_FRAME_LENGTH_LINES_BIN, "min_frame_length_lines_bin" },
92*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_FRAME_LENGTH_LINES_BIN, "max_frame_length_lines_bin" },
93*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_LINE_LENGTH_PCK_BIN, "min_line_length_pck_bin" },
94*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MAX_LINE_LENGTH_PCK_BIN, "max_line_length_pck_bin" }, /* 80 */
95*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_MIN_LINE_BLANKING_PCK_BIN, "min_line_blanking_pck_bin" },
96*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_FINE_INTEGRATION_TIME_MIN_BIN, "fine_integration_time_min_bin" },
97*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_FINE_INTEGRATION_TIME_MAX_MARGIN_BIN, "fine_integration_time_max_margin_bin" },
98*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_BINNING_CAPABILITY, "binning_capability" },
99*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_BINNING_WEIGHTING_CAPABILITY, "binning_weighting_capability" }, /* 85 */
100*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_DATA_TRANSFER_IF_CAPABILITY, "data_transfer_if_capability" },
101*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_SHADING_CORRECTION_CAPABILITY, "shading_correction_capability" },
102*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_GREEN_IMBALANCE_CAPABILITY, "green_imbalance_capability" },
103*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_BLACK_LEVEL_CAPABILITY, "black_level_capability" },
104*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_MODULE_SPECIFIC_CORRECTION_CAPABILITY, "module_specific_correction_capability" }, /* 90 */
105*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_DEFECT_CORRECTION_CAPABILITY, "defect_correction_capability" },
106*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_DEFECT_CORRECTION_CAPABILITY_2, "defect_correction_capability_2" },
107*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_EDOF_CAPABILITY, "edof_capability" },
108*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_COLOUR_FEEDBACK_CAPABILITY, "colour_feedback_capability" },
109*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_ESTIMATION_MODE_CAPABILITY, "estimation_mode_capability" }, /* 95 */
110*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_ESTIMATION_ZONE_CAPABILITY, "estimation_zone_capability" },
111*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_CAPABILITY_TRDY_MIN, "capability_trdy_min" },
112*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_FLASH_MODE_CAPABILITY, "flash_mode_capability" },
113*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_ACTUATOR_CAPABILITY, "actuator_capability" },
114*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_BRACKETING_LUT_CAPABILITY_1, "bracketing_lut_capability_1" }, /* 100 */
115*4882a593Smuzhiyun 	{ SMIAPP_REG_U8_BRACKETING_LUT_CAPABILITY_2, "bracketing_lut_capability_2" },
116*4882a593Smuzhiyun 	{ SMIAPP_REG_U16_ANALOGUE_GAIN_CODE_STEP, "analogue_gain_code_step" },
117*4882a593Smuzhiyun 	{ 0, NULL },
118*4882a593Smuzhiyun };
119