openmv/drivers/sensors/mt9v0xx.h
iabdalkader 2958b854ef drivers/sensors: Rename header files.
Old header files are no longer needed.

Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
2025-06-27 20:17:03 +02:00

186 lines
8.1 KiB
C

/*
* 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)