Jetpack/kernel/nvidia/drivers/media/spi/imx204_mode_tbls.h

202 lines
4.2 KiB
C

/*
* imx204.c - imx204 sensor driver
*
* Copyright (c) 2017-2018, NVIDIA CORPORATION, All Rights Reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <media/camera_common.h>
#ifndef __IMX204_I2C_TABLES__
#define __IMX204_I2C_TABLES__
#define IMX204_TABLE_WAIT_MS 0xFFFF
#define IMX204_TABLE_END 0xFFFA
#define IMX204_TABLE_ENABLE_GTX 0xFFFB
#define IMX204_MAX_RETRIES 3
#define IMX204_WAIT_MS 2
struct reg_24_8 {
u32 addr;
u8 val;
};
#define imx204_reg struct reg_24_8
static imx204_reg mode_table_common[] = {
{IMX204_TABLE_END, 0x00},
};
static const imx204_reg imx204_start[] = {
{IMX204_TABLE_WAIT_MS, 7},
{0x810000, 0x00},
{IMX204_TABLE_WAIT_MS, 14},
{0x810001, 0x18},
{IMX204_TABLE_END, 0x00},
};
static const imx204_reg imx204_stop[] = {
{0x810000, 0x01},
{IMX204_TABLE_WAIT_MS, 7},
{IMX204_TABLE_END, 0x00},
};
static const imx204_reg tp_colorbars[] = {
{IMX204_TABLE_END, 0x00},
};
static const imx204_reg mode_5352x3950[] = {
{0x8100ed, 0x03},
{0x8100e0, 0x60},
{0x8100de, 0xaa},
{0x8100da, 0xff},
{0x8100db, 0xff},
{0x810000, 0x02},
{0x8102eb, 0x03},
{0x810063, 0x18},
{0x810073, 0x1F},
{0x81021A, 0xFF},
{0x81021B, 0x01},
{0x8102D2, 0x00},
{0x810322, 0x0F},
{0x810323, 0x00},
{0x810396, 0x01},
{0x8103C6, 0x00},
{0x8103E7, 0x00},
{0x810414, 0x2C},
{0x810415, 0x00},
{0x810416, 0x45},
{0x810417, 0x00},
{0x81041C, 0x28},
{0x81041D, 0x00},
{0x81041E, 0x30},
{0x81041F, 0x00},
{0x810430, 0x41},
{0x810431, 0x00},
{0x810432, 0x45},
{0x810433, 0x00},
{0x81043C, 0x41},
{0x81043D, 0x00},
{0x81043E, 0x44},
{0x81043F, 0x00},
{0x810479, 0x5B},
{0x81047A, 0x00},
{0x81047B, 0x59},
{0x81047C, 0x00},
{0x81047D, 0x53},
{0x81047E, 0x00},
{0x81048D, 0x04},
{0x810490, 0x35},
{0x810491, 0x00},
{0x810492, 0x40},
{0x810493, 0x00},
{0x810494, 0x35},
{0x810495, 0x00},
{0x810496, 0x40},
{0x810497, 0x00},
{0x8104A0, 0x44},
{0x8104A1, 0x00},
{0x8104A2, 0x41},
{0x8104A3, 0x00},
{0x8104A4, 0x33},
{0x8104A5, 0x00},
{0x8104A6, 0x33},
{0x8104A7, 0x00},
{0x8104B4, 0x48},
{0x8104B5, 0x00},
{0x8104D1, 0x44},
{0x8104D2, 0x00},
{0x8104D3, 0x42},
{0x8104D4, 0x00},
{0x8104D5, 0x48},
{0x8104D6, 0x00},
{0x8104E3, 0x44},
{0x8104E4, 0x00},
{0x8104E5, 0x41},
{0x8104E6, 0x00},
{0x8104E7, 0x33},
{0x8104E8, 0x00},
{0x8104E9, 0x33},
{0x8104EA, 0x00},
{0x8104F1, 0x44},
{0x8104F2, 0x00},
{0x8104F3, 0x42},
{0x8104F4, 0x00},
{0x8104F5, 0x48},
{0x8104F6, 0x00},
{0x81052C, 0x0F},
{0x81054F, 0x06},
{0x810582, 0x04},
{0x8107CA, 0x3A},
{IMX204_TABLE_WAIT_MS, 20},
{0x8102eb, 0x00},
{0x810013, 0x82},
{0x810113, 0x82},
{0x810009, 0x00},
{0x81000a, 0x00},
{0x810011, 0x03},
{0x81001a, 0x01},
{0x810012, 0x00}, // 2.304G
{0x810003, 0x00},
{0x810004, 0x00},
{0x810005, 0x01},
{0x810006, 0x00},
{0x810007, 0x50},
{0x810008, 0x00},
{0x81000d, 0x00}, // SVR
{0x81000e, 0x00}, // SVR
{0x81001a, 0x00},
{0x81001c, 0x00},
{0x810036, 0x00},
{0x810062, 0x0a},
{0x81007e, 0x00},
{0x81007f, 0x00},
{0x810103, 0x00},
{0x810115, 0x01},
{0x81059d, 0x00},
{0x8106f8, 0x00},
{0x8106f8, 0x00},
{IMX204_TABLE_END, 0x00},
};
enum {
IMX204_MODE_5352x3950,
IMX204_MODE_COMMON,
IMX204_MODE_START_STREAM,
IMX204_MODE_STOP_STREAM,
IMX204_MODE_TEST_PATTERN,
};
static const imx204_reg *mode_table[] = {
[IMX204_MODE_5352x3950] = mode_5352x3950,
[IMX204_MODE_COMMON] = mode_table_common,
[IMX204_MODE_START_STREAM] = imx204_start,
[IMX204_MODE_STOP_STREAM] = imx204_stop,
[IMX204_MODE_TEST_PATTERN] = tp_colorbars,
};
static const int imx204_60_fr[] = {
60,
};
static const struct camera_common_frmfmt imx204_frmfmt[] = {
{{5352, 3950}, imx204_60_fr, 1, 0, IMX204_MODE_5352x3950},
};
#endif /* __IMX204_I2C_TABLES__ */