cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

et8ek8_mode.c (15380B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * et8ek8_mode.c
      4 *
      5 * Copyright (C) 2008 Nokia Corporation
      6 *
      7 * Contact: Sakari Ailus <sakari.ailus@iki.fi>
      8 *          Tuukka Toivonen <tuukkat76@gmail.com>
      9 */
     10
     11#include "et8ek8_reg.h"
     12
     13/*
     14 * Stingray sensor mode settings for Scooby
     15 */
     16
     17/* Mode1_poweron_Mode2_16VGA_2592x1968_12.07fps */
     18static struct et8ek8_reglist mode1_poweron_mode2_16vga_2592x1968_12_07fps = {
     19/* (without the +1)
     20 * SPCK       = 80 MHz
     21 * CCP2       = 640 MHz
     22 * VCO        = 640 MHz
     23 * VCOUNT     = 84 (2016)
     24 * HCOUNT     = 137 (3288)
     25 * CKREF_DIV  = 2
     26 * CKVAR_DIV  = 200
     27 * VCO_DIV    = 0
     28 * SPCK_DIV   = 7
     29 * MRCK_DIV   = 7
     30 * LVDSCK_DIV = 0
     31 */
     32	.type = ET8EK8_REGLIST_POWERON,
     33	.mode = {
     34		.sensor_width = 2592,
     35		.sensor_height = 1968,
     36		.sensor_window_origin_x = 0,
     37		.sensor_window_origin_y = 0,
     38		.sensor_window_width = 2592,
     39		.sensor_window_height = 1968,
     40		.width = 3288,
     41		.height = 2016,
     42		.window_origin_x = 0,
     43		.window_origin_y = 0,
     44		.window_width = 2592,
     45		.window_height = 1968,
     46		.pixel_clock = 80000000,
     47		.ext_clock = 9600000,
     48		.timeperframe = {
     49			.numerator = 100,
     50			.denominator = 1207
     51		},
     52		.max_exp = 2012,
     53		/* .max_gain = 0, */
     54		.bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
     55		.sensitivity = 65536
     56	},
     57	.regs = {
     58		/* Need to set firstly */
     59		{ ET8EK8_REG_8BIT, 0x126C, 0xCC },
     60		/* Strobe and Data of CCP2 delay are minimized. */
     61		{ ET8EK8_REG_8BIT, 0x1269, 0x00 },
     62		/* Refined value of Min H_COUNT  */
     63		{ ET8EK8_REG_8BIT, 0x1220, 0x89 },
     64		/* Frequency of SPCK setting (SPCK=MRCK) */
     65		{ ET8EK8_REG_8BIT, 0x123A, 0x07 },
     66		{ ET8EK8_REG_8BIT, 0x1241, 0x94 },
     67		{ ET8EK8_REG_8BIT, 0x1242, 0x02 },
     68		{ ET8EK8_REG_8BIT, 0x124B, 0x00 },
     69		{ ET8EK8_REG_8BIT, 0x1255, 0xFF },
     70		{ ET8EK8_REG_8BIT, 0x1256, 0x9F },
     71		{ ET8EK8_REG_8BIT, 0x1258, 0x00 },
     72		/* From parallel out to serial out */
     73		{ ET8EK8_REG_8BIT, 0x125D, 0x88 },
     74		/* From w/ embedded data to w/o embedded data */
     75		{ ET8EK8_REG_8BIT, 0x125E, 0xC0 },
     76		/* CCP2 out is from STOP to ACTIVE */
     77		{ ET8EK8_REG_8BIT, 0x1263, 0x98 },
     78		{ ET8EK8_REG_8BIT, 0x1268, 0xC6 },
     79		{ ET8EK8_REG_8BIT, 0x1434, 0x00 },
     80		{ ET8EK8_REG_8BIT, 0x1163, 0x44 },
     81		{ ET8EK8_REG_8BIT, 0x1166, 0x29 },
     82		{ ET8EK8_REG_8BIT, 0x1140, 0x02 },
     83		{ ET8EK8_REG_8BIT, 0x1011, 0x24 },
     84		{ ET8EK8_REG_8BIT, 0x1151, 0x80 },
     85		{ ET8EK8_REG_8BIT, 0x1152, 0x23 },
     86		/* Initial setting for improvement2 of lower frequency noise */
     87		{ ET8EK8_REG_8BIT, 0x1014, 0x05 },
     88		{ ET8EK8_REG_8BIT, 0x1033, 0x06 },
     89		{ ET8EK8_REG_8BIT, 0x1034, 0x79 },
     90		{ ET8EK8_REG_8BIT, 0x1423, 0x3F },
     91		{ ET8EK8_REG_8BIT, 0x1424, 0x3F },
     92		{ ET8EK8_REG_8BIT, 0x1426, 0x00 },
     93		/* Switch of Preset-White-balance (0d:disable / 1d:enable) */
     94		{ ET8EK8_REG_8BIT, 0x1439, 0x00 },
     95		/* Switch of blemish correction (0d:disable / 1d:enable) */
     96		{ ET8EK8_REG_8BIT, 0x161F, 0x60 },
     97		/* Switch of auto noise correction (0d:disable / 1d:enable) */
     98		{ ET8EK8_REG_8BIT, 0x1634, 0x00 },
     99		{ ET8EK8_REG_8BIT, 0x1646, 0x00 },
    100		{ ET8EK8_REG_8BIT, 0x1648, 0x00 },
    101		{ ET8EK8_REG_8BIT, 0x113E, 0x01 },
    102		{ ET8EK8_REG_8BIT, 0x113F, 0x22 },
    103		{ ET8EK8_REG_8BIT, 0x1239, 0x64 },
    104		{ ET8EK8_REG_8BIT, 0x1238, 0x02 },
    105		{ ET8EK8_REG_8BIT, 0x123B, 0x70 },
    106		{ ET8EK8_REG_8BIT, 0x123A, 0x07 },
    107		{ ET8EK8_REG_8BIT, 0x121B, 0x64 },
    108		{ ET8EK8_REG_8BIT, 0x121D, 0x64 },
    109		{ ET8EK8_REG_8BIT, 0x1221, 0x00 },
    110		{ ET8EK8_REG_8BIT, 0x1220, 0x89 },
    111		{ ET8EK8_REG_8BIT, 0x1223, 0x00 },
    112		{ ET8EK8_REG_8BIT, 0x1222, 0x54 },
    113		{ ET8EK8_REG_8BIT, 0x125D, 0x88 }, /* CCP_LVDS_MODE/  */
    114		{ ET8EK8_REG_TERM, 0, 0}
    115	}
    116};
    117
    118/* Mode1_16VGA_2592x1968_13.12fps_DPCM10-8 */
    119static struct et8ek8_reglist mode1_16vga_2592x1968_13_12fps_dpcm10_8 = {
    120/* (without the +1)
    121 * SPCK       = 80 MHz
    122 * CCP2       = 560 MHz
    123 * VCO        = 560 MHz
    124 * VCOUNT     = 84 (2016)
    125 * HCOUNT     = 128 (3072)
    126 * CKREF_DIV  = 2
    127 * CKVAR_DIV  = 175
    128 * VCO_DIV    = 0
    129 * SPCK_DIV   = 6
    130 * MRCK_DIV   = 7
    131 * LVDSCK_DIV = 0
    132 */
    133	.type = ET8EK8_REGLIST_MODE,
    134	.mode = {
    135		.sensor_width = 2592,
    136		.sensor_height = 1968,
    137		.sensor_window_origin_x = 0,
    138		.sensor_window_origin_y = 0,
    139		.sensor_window_width = 2592,
    140		.sensor_window_height = 1968,
    141		.width = 3072,
    142		.height = 2016,
    143		.window_origin_x = 0,
    144		.window_origin_y = 0,
    145		.window_width = 2592,
    146		.window_height = 1968,
    147		.pixel_clock = 80000000,
    148		.ext_clock = 9600000,
    149		.timeperframe = {
    150			.numerator = 100,
    151			.denominator = 1292
    152		},
    153		.max_exp = 2012,
    154		/* .max_gain = 0, */
    155		.bus_format = MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8,
    156		.sensitivity = 65536
    157	},
    158	.regs = {
    159		{ ET8EK8_REG_8BIT, 0x1239, 0x57 },
    160		{ ET8EK8_REG_8BIT, 0x1238, 0x82 },
    161		{ ET8EK8_REG_8BIT, 0x123B, 0x70 },
    162		{ ET8EK8_REG_8BIT, 0x123A, 0x06 },
    163		{ ET8EK8_REG_8BIT, 0x121B, 0x64 },
    164		{ ET8EK8_REG_8BIT, 0x121D, 0x64 },
    165		{ ET8EK8_REG_8BIT, 0x1221, 0x00 },
    166		{ ET8EK8_REG_8BIT, 0x1220, 0x80 }, /* <-changed to v14 7E->80 */
    167		{ ET8EK8_REG_8BIT, 0x1223, 0x00 },
    168		{ ET8EK8_REG_8BIT, 0x1222, 0x54 },
    169		{ ET8EK8_REG_8BIT, 0x125D, 0x83 }, /* CCP_LVDS_MODE/  */
    170		{ ET8EK8_REG_TERM, 0, 0}
    171	}
    172};
    173
    174/* Mode3_4VGA_1296x984_29.99fps_DPCM10-8 */
    175static struct et8ek8_reglist mode3_4vga_1296x984_29_99fps_dpcm10_8 = {
    176/* (without the +1)
    177 * SPCK       = 96.5333333333333 MHz
    178 * CCP2       = 579.2 MHz
    179 * VCO        = 579.2 MHz
    180 * VCOUNT     = 84 (2016)
    181 * HCOUNT     = 133 (3192)
    182 * CKREF_DIV  = 2
    183 * CKVAR_DIV  = 181
    184 * VCO_DIV    = 0
    185 * SPCK_DIV   = 5
    186 * MRCK_DIV   = 7
    187 * LVDSCK_DIV = 0
    188 */
    189	.type = ET8EK8_REGLIST_MODE,
    190	.mode = {
    191		.sensor_width = 2592,
    192		.sensor_height = 1968,
    193		.sensor_window_origin_x = 0,
    194		.sensor_window_origin_y = 0,
    195		.sensor_window_width = 2592,
    196		.sensor_window_height = 1968,
    197		.width = 3192,
    198		.height = 1008,
    199		.window_origin_x = 0,
    200		.window_origin_y = 0,
    201		.window_width = 1296,
    202		.window_height = 984,
    203		.pixel_clock = 96533333,
    204		.ext_clock = 9600000,
    205		.timeperframe = {
    206			.numerator = 100,
    207			.denominator = 3000
    208		},
    209		.max_exp = 1004,
    210		/* .max_gain = 0, */
    211		.bus_format = MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8,
    212		.sensitivity = 65536
    213	},
    214	.regs = {
    215		{ ET8EK8_REG_8BIT, 0x1239, 0x5A },
    216		{ ET8EK8_REG_8BIT, 0x1238, 0x82 },
    217		{ ET8EK8_REG_8BIT, 0x123B, 0x70 },
    218		{ ET8EK8_REG_8BIT, 0x123A, 0x05 },
    219		{ ET8EK8_REG_8BIT, 0x121B, 0x63 },
    220		{ ET8EK8_REG_8BIT, 0x1220, 0x85 },
    221		{ ET8EK8_REG_8BIT, 0x1221, 0x00 },
    222		{ ET8EK8_REG_8BIT, 0x1222, 0x54 },
    223		{ ET8EK8_REG_8BIT, 0x1223, 0x00 },
    224		{ ET8EK8_REG_8BIT, 0x121D, 0x63 },
    225		{ ET8EK8_REG_8BIT, 0x125D, 0x83 }, /* CCP_LVDS_MODE/  */
    226		{ ET8EK8_REG_TERM, 0, 0}
    227	}
    228};
    229
    230/* Mode4_SVGA_864x656_29.88fps */
    231static struct et8ek8_reglist mode4_svga_864x656_29_88fps = {
    232/* (without the +1)
    233 * SPCK       = 80 MHz
    234 * CCP2       = 320 MHz
    235 * VCO        = 640 MHz
    236 * VCOUNT     = 84 (2016)
    237 * HCOUNT     = 166 (3984)
    238 * CKREF_DIV  = 2
    239 * CKVAR_DIV  = 200
    240 * VCO_DIV    = 0
    241 * SPCK_DIV   = 7
    242 * MRCK_DIV   = 7
    243 * LVDSCK_DIV = 1
    244 */
    245	.type = ET8EK8_REGLIST_MODE,
    246	.mode = {
    247		.sensor_width = 2592,
    248		.sensor_height = 1968,
    249		.sensor_window_origin_x = 0,
    250		.sensor_window_origin_y = 0,
    251		.sensor_window_width = 2592,
    252		.sensor_window_height = 1968,
    253		.width = 3984,
    254		.height = 672,
    255		.window_origin_x = 0,
    256		.window_origin_y = 0,
    257		.window_width = 864,
    258		.window_height = 656,
    259		.pixel_clock = 80000000,
    260		.ext_clock = 9600000,
    261		.timeperframe = {
    262			.numerator = 100,
    263			.denominator = 2988
    264		},
    265		.max_exp = 668,
    266		/* .max_gain = 0, */
    267		.bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
    268		.sensitivity = 65536
    269	},
    270	.regs = {
    271		{ ET8EK8_REG_8BIT, 0x1239, 0x64 },
    272		{ ET8EK8_REG_8BIT, 0x1238, 0x02 },
    273		{ ET8EK8_REG_8BIT, 0x123B, 0x71 },
    274		{ ET8EK8_REG_8BIT, 0x123A, 0x07 },
    275		{ ET8EK8_REG_8BIT, 0x121B, 0x62 },
    276		{ ET8EK8_REG_8BIT, 0x121D, 0x62 },
    277		{ ET8EK8_REG_8BIT, 0x1221, 0x00 },
    278		{ ET8EK8_REG_8BIT, 0x1220, 0xA6 },
    279		{ ET8EK8_REG_8BIT, 0x1223, 0x00 },
    280		{ ET8EK8_REG_8BIT, 0x1222, 0x54 },
    281		{ ET8EK8_REG_8BIT, 0x125D, 0x88 }, /* CCP_LVDS_MODE/  */
    282		{ ET8EK8_REG_TERM, 0, 0}
    283	}
    284};
    285
    286/* Mode5_VGA_648x492_29.93fps */
    287static struct et8ek8_reglist mode5_vga_648x492_29_93fps = {
    288/* (without the +1)
    289 * SPCK       = 80 MHz
    290 * CCP2       = 320 MHz
    291 * VCO        = 640 MHz
    292 * VCOUNT     = 84 (2016)
    293 * HCOUNT     = 221 (5304)
    294 * CKREF_DIV  = 2
    295 * CKVAR_DIV  = 200
    296 * VCO_DIV    = 0
    297 * SPCK_DIV   = 7
    298 * MRCK_DIV   = 7
    299 * LVDSCK_DIV = 1
    300 */
    301	.type = ET8EK8_REGLIST_MODE,
    302	.mode = {
    303		.sensor_width = 2592,
    304		.sensor_height = 1968,
    305		.sensor_window_origin_x = 0,
    306		.sensor_window_origin_y = 0,
    307		.sensor_window_width = 2592,
    308		.sensor_window_height = 1968,
    309		.width = 5304,
    310		.height = 504,
    311		.window_origin_x = 0,
    312		.window_origin_y = 0,
    313		.window_width = 648,
    314		.window_height = 492,
    315		.pixel_clock = 80000000,
    316		.ext_clock = 9600000,
    317		.timeperframe = {
    318			.numerator = 100,
    319			.denominator = 2993
    320		},
    321		.max_exp = 500,
    322		/* .max_gain = 0, */
    323		.bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
    324		.sensitivity = 65536
    325	},
    326	.regs = {
    327		{ ET8EK8_REG_8BIT, 0x1239, 0x64 },
    328		{ ET8EK8_REG_8BIT, 0x1238, 0x02 },
    329		{ ET8EK8_REG_8BIT, 0x123B, 0x71 },
    330		{ ET8EK8_REG_8BIT, 0x123A, 0x07 },
    331		{ ET8EK8_REG_8BIT, 0x121B, 0x61 },
    332		{ ET8EK8_REG_8BIT, 0x121D, 0x61 },
    333		{ ET8EK8_REG_8BIT, 0x1221, 0x00 },
    334		{ ET8EK8_REG_8BIT, 0x1220, 0xDD },
    335		{ ET8EK8_REG_8BIT, 0x1223, 0x00 },
    336		{ ET8EK8_REG_8BIT, 0x1222, 0x54 },
    337		{ ET8EK8_REG_8BIT, 0x125D, 0x88 }, /* CCP_LVDS_MODE/  */
    338		{ ET8EK8_REG_TERM, 0, 0}
    339	}
    340};
    341
    342/* Mode2_16VGA_2592x1968_3.99fps */
    343static struct et8ek8_reglist mode2_16vga_2592x1968_3_99fps = {
    344/* (without the +1)
    345 * SPCK       = 80 MHz
    346 * CCP2       = 640 MHz
    347 * VCO        = 640 MHz
    348 * VCOUNT     = 254 (6096)
    349 * HCOUNT     = 137 (3288)
    350 * CKREF_DIV  = 2
    351 * CKVAR_DIV  = 200
    352 * VCO_DIV    = 0
    353 * SPCK_DIV   = 7
    354 * MRCK_DIV   = 7
    355 * LVDSCK_DIV = 0
    356 */
    357	.type = ET8EK8_REGLIST_MODE,
    358	.mode = {
    359		.sensor_width = 2592,
    360		.sensor_height = 1968,
    361		.sensor_window_origin_x = 0,
    362		.sensor_window_origin_y = 0,
    363		.sensor_window_width = 2592,
    364		.sensor_window_height = 1968,
    365		.width = 3288,
    366		.height = 6096,
    367		.window_origin_x = 0,
    368		.window_origin_y = 0,
    369		.window_width = 2592,
    370		.window_height = 1968,
    371		.pixel_clock = 80000000,
    372		.ext_clock = 9600000,
    373		.timeperframe = {
    374			.numerator = 100,
    375			.denominator = 399
    376		},
    377		.max_exp = 6092,
    378		/* .max_gain = 0, */
    379		.bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
    380		.sensitivity = 65536
    381	},
    382	.regs = {
    383		{ ET8EK8_REG_8BIT, 0x1239, 0x64 },
    384		{ ET8EK8_REG_8BIT, 0x1238, 0x02 },
    385		{ ET8EK8_REG_8BIT, 0x123B, 0x70 },
    386		{ ET8EK8_REG_8BIT, 0x123A, 0x07 },
    387		{ ET8EK8_REG_8BIT, 0x121B, 0x64 },
    388		{ ET8EK8_REG_8BIT, 0x121D, 0x64 },
    389		{ ET8EK8_REG_8BIT, 0x1221, 0x00 },
    390		{ ET8EK8_REG_8BIT, 0x1220, 0x89 },
    391		{ ET8EK8_REG_8BIT, 0x1223, 0x00 },
    392		{ ET8EK8_REG_8BIT, 0x1222, 0xFE },
    393		{ ET8EK8_REG_TERM, 0, 0}
    394	}
    395};
    396
    397/* Mode_648x492_5fps */
    398static struct et8ek8_reglist mode_648x492_5fps = {
    399/* (without the +1)
    400 * SPCK       = 13.3333333333333 MHz
    401 * CCP2       = 53.3333333333333 MHz
    402 * VCO        = 640 MHz
    403 * VCOUNT     = 84 (2016)
    404 * HCOUNT     = 221 (5304)
    405 * CKREF_DIV  = 2
    406 * CKVAR_DIV  = 200
    407 * VCO_DIV    = 5
    408 * SPCK_DIV   = 7
    409 * MRCK_DIV   = 7
    410 * LVDSCK_DIV = 1
    411 */
    412	.type = ET8EK8_REGLIST_MODE,
    413	.mode = {
    414		.sensor_width = 2592,
    415		.sensor_height = 1968,
    416		.sensor_window_origin_x = 0,
    417		.sensor_window_origin_y = 0,
    418		.sensor_window_width = 2592,
    419		.sensor_window_height = 1968,
    420		.width = 5304,
    421		.height = 504,
    422		.window_origin_x = 0,
    423		.window_origin_y = 0,
    424		.window_width = 648,
    425		.window_height = 492,
    426		.pixel_clock = 13333333,
    427		.ext_clock = 9600000,
    428		.timeperframe = {
    429			.numerator = 100,
    430			.denominator = 499
    431		},
    432		.max_exp = 500,
    433		/* .max_gain = 0, */
    434		.bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
    435		.sensitivity = 65536
    436	},
    437	.regs = {
    438		{ ET8EK8_REG_8BIT, 0x1239, 0x64 },
    439		{ ET8EK8_REG_8BIT, 0x1238, 0x02 },
    440		{ ET8EK8_REG_8BIT, 0x123B, 0x71 },
    441		{ ET8EK8_REG_8BIT, 0x123A, 0x57 },
    442		{ ET8EK8_REG_8BIT, 0x121B, 0x61 },
    443		{ ET8EK8_REG_8BIT, 0x121D, 0x61 },
    444		{ ET8EK8_REG_8BIT, 0x1221, 0x00 },
    445		{ ET8EK8_REG_8BIT, 0x1220, 0xDD },
    446		{ ET8EK8_REG_8BIT, 0x1223, 0x00 },
    447		{ ET8EK8_REG_8BIT, 0x1222, 0x54 },
    448		{ ET8EK8_REG_8BIT, 0x125D, 0x88 }, /* CCP_LVDS_MODE/  */
    449		{ ET8EK8_REG_TERM, 0, 0}
    450	}
    451};
    452
    453/* Mode3_4VGA_1296x984_5fps */
    454static struct et8ek8_reglist mode3_4vga_1296x984_5fps = {
    455/* (without the +1)
    456 * SPCK       = 49.4 MHz
    457 * CCP2       = 395.2 MHz
    458 * VCO        = 790.4 MHz
    459 * VCOUNT     = 250 (6000)
    460 * HCOUNT     = 137 (3288)
    461 * CKREF_DIV  = 2
    462 * CKVAR_DIV  = 247
    463 * VCO_DIV    = 1
    464 * SPCK_DIV   = 7
    465 * MRCK_DIV   = 7
    466 * LVDSCK_DIV = 0
    467 */
    468	.type = ET8EK8_REGLIST_MODE,
    469	.mode = {
    470		.sensor_width = 2592,
    471		.sensor_height = 1968,
    472		.sensor_window_origin_x = 0,
    473		.sensor_window_origin_y = 0,
    474		.sensor_window_width = 2592,
    475		.sensor_window_height = 1968,
    476		.width = 3288,
    477		.height = 3000,
    478		.window_origin_x = 0,
    479		.window_origin_y = 0,
    480		.window_width = 1296,
    481		.window_height = 984,
    482		.pixel_clock = 49400000,
    483		.ext_clock = 9600000,
    484		.timeperframe = {
    485			.numerator = 100,
    486			.denominator = 501
    487		},
    488		.max_exp = 2996,
    489		/* .max_gain = 0, */
    490		.bus_format = MEDIA_BUS_FMT_SGRBG10_1X10,
    491		.sensitivity = 65536
    492	},
    493	.regs = {
    494		{ ET8EK8_REG_8BIT, 0x1239, 0x7B },
    495		{ ET8EK8_REG_8BIT, 0x1238, 0x82 },
    496		{ ET8EK8_REG_8BIT, 0x123B, 0x70 },
    497		{ ET8EK8_REG_8BIT, 0x123A, 0x17 },
    498		{ ET8EK8_REG_8BIT, 0x121B, 0x63 },
    499		{ ET8EK8_REG_8BIT, 0x121D, 0x63 },
    500		{ ET8EK8_REG_8BIT, 0x1221, 0x00 },
    501		{ ET8EK8_REG_8BIT, 0x1220, 0x89 },
    502		{ ET8EK8_REG_8BIT, 0x1223, 0x00 },
    503		{ ET8EK8_REG_8BIT, 0x1222, 0xFA },
    504		{ ET8EK8_REG_8BIT, 0x125D, 0x88 }, /* CCP_LVDS_MODE/  */
    505		{ ET8EK8_REG_TERM, 0, 0}
    506	}
    507};
    508
    509/* Mode_4VGA_1296x984_25fps_DPCM10-8 */
    510static struct et8ek8_reglist mode_4vga_1296x984_25fps_dpcm10_8 = {
    511/* (without the +1)
    512 * SPCK       = 84.2666666666667 MHz
    513 * CCP2       = 505.6 MHz
    514 * VCO        = 505.6 MHz
    515 * VCOUNT     = 88 (2112)
    516 * HCOUNT     = 133 (3192)
    517 * CKREF_DIV  = 2
    518 * CKVAR_DIV  = 158
    519 * VCO_DIV    = 0
    520 * SPCK_DIV   = 5
    521 * MRCK_DIV   = 7
    522 * LVDSCK_DIV = 0
    523 */
    524	.type = ET8EK8_REGLIST_MODE,
    525	.mode = {
    526		.sensor_width = 2592,
    527		.sensor_height = 1968,
    528		.sensor_window_origin_x = 0,
    529		.sensor_window_origin_y = 0,
    530		.sensor_window_width = 2592,
    531		.sensor_window_height = 1968,
    532		.width = 3192,
    533		.height = 1056,
    534		.window_origin_x = 0,
    535		.window_origin_y = 0,
    536		.window_width = 1296,
    537		.window_height = 984,
    538		.pixel_clock = 84266667,
    539		.ext_clock = 9600000,
    540		.timeperframe = {
    541			.numerator = 100,
    542			.denominator = 2500
    543		},
    544		.max_exp = 1052,
    545		/* .max_gain = 0, */
    546		.bus_format = MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8,
    547		.sensitivity = 65536
    548	},
    549	.regs = {
    550		{ ET8EK8_REG_8BIT, 0x1239, 0x4F },
    551		{ ET8EK8_REG_8BIT, 0x1238, 0x02 },
    552		{ ET8EK8_REG_8BIT, 0x123B, 0x70 },
    553		{ ET8EK8_REG_8BIT, 0x123A, 0x05 },
    554		{ ET8EK8_REG_8BIT, 0x121B, 0x63 },
    555		{ ET8EK8_REG_8BIT, 0x1220, 0x85 },
    556		{ ET8EK8_REG_8BIT, 0x1221, 0x00 },
    557		{ ET8EK8_REG_8BIT, 0x1222, 0x58 },
    558		{ ET8EK8_REG_8BIT, 0x1223, 0x00 },
    559		{ ET8EK8_REG_8BIT, 0x121D, 0x63 },
    560		{ ET8EK8_REG_8BIT, 0x125D, 0x83 },
    561		{ ET8EK8_REG_TERM, 0, 0}
    562	}
    563};
    564
    565struct et8ek8_meta_reglist meta_reglist = {
    566	.version = "V14 03-June-2008",
    567	.reglist = {
    568		{ .ptr = &mode1_poweron_mode2_16vga_2592x1968_12_07fps },
    569		{ .ptr = &mode1_16vga_2592x1968_13_12fps_dpcm10_8 },
    570		{ .ptr = &mode3_4vga_1296x984_29_99fps_dpcm10_8 },
    571		{ .ptr = &mode4_svga_864x656_29_88fps },
    572		{ .ptr = &mode5_vga_648x492_29_93fps },
    573		{ .ptr = &mode2_16vga_2592x1968_3_99fps },
    574		{ .ptr = &mode_648x492_5fps },
    575		{ .ptr = &mode3_4vga_1296x984_5fps },
    576		{ .ptr = &mode_4vga_1296x984_25fps_dpcm10_8 },
    577		{ .ptr = NULL }
    578	}
    579};