/* * SPDX-License-Identifier: MIT * * Copyright (C) 2013-2024 OpenMV, LLC. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * MT9V0XX driver. */ #define MT9V0XX_CHIP_VERSION (0x00) #define MT9V0XX_COL_START (0x01) #define MT9V0X4_COL_START_B (0xC9) #define MT9V0XX_COL_START_MIN (1) #define MT9V0XX_COL_START_MAX (752) #define MT9V0XX_ROW_START (0x02) #define MT9V0X4_ROW_START_B (0xCA) #define MT9V0XX_ROW_START_MIN (4) #define MT9V0XX_ROW_START_MAX (482) #define MT9V0XX_WINDOW_HEIGHT (0x03) #define MT9V0X4_WINDOW_HEIGHT_B (0xCB) #define MT9V0XX_WINDOW_HEIGHT_MIN (1) #define MT9V0XX_WINDOW_HEIGHT_MAX (480) #define MT9V0XX_WINDOW_WIDTH (0x04) #define MT9V0X4_WINDOW_WIDTH_B (0xCC) #define MT9V0XX_WINDOW_WIDTH_MIN (1) #define MT9V0XX_WINDOW_WIDTH_MAX (752) #define MT9V0XX_HORIZONTAL_BLANKING (0x05) #define MT9V0X4_HORIZONTAL_BLANKING_B (0xCD) #define MT9V0X2_HORIZONTAL_BLANKING_MIN (43) #define MT9V0XX_HORIZONTAL_BLANKING_MIN_1 (61) #define MT9V0XX_HORIZONTAL_BLANKING_MIN_2 (71) #define MT9V0XX_HORIZONTAL_BLANKING_MIN_4 (91) #define MT9V0XX_HORIZONTAL_BLANKING_MAX (1023) #define MT9V0XX_HORIZONTAL_BLANKING_DEF (94) #define MT9V0XX_VERTICAL_BLANKING (0x06) #define MT9V0X4_VERTICAL_BLANKING_B (0xCE) #define MT9V0XX_VERTICAL_BLANKING_MIN (4) #define MT9V0XX_VERTICAL_BLANKING_MAX (3000) #define MT9V0XX_VERTICAL_BLANKING_DEF (45) #define MT9V0XX_CHIP_CONTROL (0x07) #define MT9V0XX_CHIP_CONTROL_MASTER_MODE (1 << 3) #define MT9V0XX_CHIP_CONTROL_SNAP_MODE (3 << 3) #define MT9V0XX_CHIP_CONTROL_MODE_MASK (3 << 3) #define MT9V0XX_CHIP_CONTROL_DOUT_ENABLE (1 << 7) #define MT9V0XX_CHIP_CONTROL_SEQUENTIAL (1 << 8) #define MT9V0X4_CHIP_CONTROL_RESERVED (1 << 9) #define MT9V0X4_CHIP_CONTROL_CONTEXT (1 << 15) #define MT9V0XX_SHUTTER_WIDTH1 (0x08) #define MT9V0X4_SHUTTER_WIDTH1_B (0xCF) #define MT9V0XX_SHUTTER_WIDTH2 (0x09) #define MT9V0X4_SHUTTER_WIDTH2_B (0xD0) #define MT9V0XX_SHUTTER_WIDTH_CONTROL (0x0A) #define MT9V0X4_SHUTTER_WIDTH_CONTROL_B (0xD1) #define MT9V0XX_TOTAL_SHUTTER_WIDTH (0x0B) #define MT9V0X4_TOTAL_SHUTTER_WIDTH_B (0xD2) #define MT9V0XX_TOTAL_SHUTTER_WIDTH_MIN (1) #define MT9V0XX_TOTAL_SHUTTER_WIDTH_MAX (32767) #define MT9V0XX_RESET (0x0C) #define MT9V0XX_RESET_SOFT_RESET (1 << 0) #define MT9V0XX_READ_MODE (0x0D) #define MT9V0X4_READ_MODE_B (0x0E) #define MT9V0XX_READ_MODE_ROW_BIN_2 (1 << 0) #define MT9V0XX_READ_MODE_ROW_BIN_4 (1 << 1) #define MT9V0XX_READ_MODE_COL_BIN_2 (1 << 2) #define MT9V0XX_READ_MODE_COL_BIN_4 (1 << 3) #define MT9V0XX_READ_MODE_ROW_FLIP (1 << 4) #define MT9V0XX_READ_MODE_COL_FLIP (1 << 5) #define MT9V0XX_READ_MODE_DARK_COLS (1 << 6) #define MT9V0XX_READ_MODE_DARK_ROWS (1 << 7) #define MT9V0XX_PIXEL_OPERATION_MODE (0x0F) #define MT9V0X4_PIXEL_OPERATION_MODE_HDR (1 << 0) #define MT9V0X4_PIXEL_OPERATION_MODE_COLOR (1 << 1) #define MT9V0X4_PIXEL_OPERATION_MODE_HDR_B (1 << 8) #define MT9V0XX_ADC_COMPANDING_MODE (0x1C) #define MT9V0XX_ADC_COMPANDING_MODE_LINEAR (2 << 0) #define MT9V0X4_ADC_COMPANDING_MODE_LINEAR_B (2 << 8) #define MT9V0XX_ANALOG_GAIN (0x35) #define MT9V0X4_ANALOG_GAIN_B (0x36) #define MT9V0XX_ANALOG_GAIN_MIN (16) #define MT9V0XX_ANALOG_GAIN_MAX (64) #define MT9V0XX_V1_CONTROL (0x31) #define MT9V0X4_V1_CONTROL_B (0x39) #define MT9V0XX_V2_CONTROL (0x32) #define MT9V0X4_V2_CONTROL_B (0x3A) #define MT9V0XX_V3_CONTROL (0x33) #define MT9V0X4_V3_CONTROL_B (0x3B) #define MT9V0XX_V4_CONTROL (0x34) #define MT9V0X4_V4_CONTROL_B (0x3C) #define MT9V0XX_FRAME_DARK_AVERAGE (0x42) #define MT9V0XX_DARK_AVG_THRESH (0x46) #define MT9V0XX_DARK_AVG_LOW_THRESH_MASK (255 << 0) #define MT9V0XX_DARK_AVG_LOW_THRESH_SHIFT (0) #define MT9V0XX_DARK_AVG_HIGH_THRESH_MASK (255 << 8) #define MT9V0XX_DARK_AVG_HIGH_THRESH_SHIFT (8) #define MT9V0XX_ROW_NOISE_CORR_CONTROL (0x70) #define MT9V0X2_ROW_NOISE_CORR_ENABLE (1 << 5) #define MT9V0X4_ROW_NOISE_CORR_ENABLE (1 << 0) #define MT9V0X4_ROW_NOISE_CORR_ENABLE_B (1 << 8) #define MT9V0X2_ROW_NOISE_CORR_USE_BLK_AVG (1 << 11) #define MT9V0X4_ROW_NOISE_CORR_USE_BLK_AVG (1 << 1) #define MT9V0X4_ROW_NOISE_CORR_USE_BLK_AVG_B (1 << 9) #define MT9V0X2_PIXEL_CLOCK (0x74) #define MT9V0X4_PIXEL_CLOCK (0x72) #define MT9V0XX_PIXEL_CLOCK_INV_LINE (1 << 0) #define MT9V0XX_PIXEL_CLOCK_INV_FRAME (1 << 1) #define MT9V0XX_PIXEL_CLOCK_XOR_LINE (1 << 2) #define MT9V0XX_PIXEL_CLOCK_CONT_LINE (1 << 3) #define MT9V0XX_PIXEL_CLOCK_INV_PXL_CLK (1 << 4) #define MT9V0XX_TEST_PATTERN (0x7F) #define MT9V0XX_TEST_PATTERN_DATA_MASK (1023 << 0) #define MT9V0XX_TEST_PATTERN_DATA_SHIFT (0) #define MT9V0XX_TEST_PATTERN_USE_DATA (1 << 10) #define MT9V0XX_TEST_PATTERN_GRAY_MASK (3 << 11) #define MT9V0XX_TEST_PATTERN_GRAY_NONE (0 << 11) #define MT9V0XX_TEST_PATTERN_GRAY_VERTICAL (1 << 11) #define MT9V0XX_TEST_PATTERN_GRAY_HORIZONTAL (2 << 11) #define MT9V0XX_TEST_PATTERN_GRAY_DIAGONAL (3 << 11) #define MT9V0XX_TEST_PATTERN_ENABLE (1 << 13) #define MT9V0XX_TEST_PATTERN_FLIP (1 << 14) #define MT9V0XX_AEC_AGC_ENABLE (0xAF) #define MT9V0XX_AEC_ENABLE (1 << 0) #define MT9V0X4_AEC_ENABLE_B (1 << 8) #define MT9V0XX_AGC_ENABLE (1 << 1) #define MT9V0X4_AGC_ENABLE_B (1 << 9) #define MT9V0XX_THERMAL_INFO (0xC1) #define MT9V0XX_CFA_ID_REG (0x6B) #define MT9V0X2_MAX_GAIN (0x36) #define MT9V0X4_MAX_GAIN (0xAB) #define MT9V0X2_MAX_EXPOSE (0xBD) #define MT9V0X4_MAX_EXPOSE (0xAD) #define MT9V0XX_PIXEL_COUNT (0xB0) #define MT9V0XX_AGC_GAIN_OUTPUT (0xBA) #define MT9V0XX_AEC_EXPOSURE_OUTPUT (0xBB) #define MT9V0X4_FINE_SHUTTER_WIDTH_TOTAL (0xD5) #define MT9V0X4_FINE_SHUTTER_WIDTH_TOTAL_B (0xD8) #define MICROSECOND_CLKS (1000000)