sc132gs.h 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377
  1. /*
  2. * Support for OmniVision SC132GS 5M camera sensor.
  3. *
  4. * Copyright (c) 2013 Intel Corporation. All Rights Reserved.
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU General Public License version
  8. * 2 as published by the Free Software Foundation.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program; if not, write to the Free Software
  17. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  18. * 02110-1301, USA.
  19. *
  20. */
  21. #ifndef __SC132GS_H__
  22. #define __SC132GS_H__
  23. #define SC132GS_NAME "sc132gs"
  24. #define SC132GS_POWER_UP_RETRY_NUM 5
  25. /* Defines for register writes and register array processing */
  26. #define I2C_MSG_LENGTH 0x2
  27. #define I2C_RETRY_COUNT 5
  28. #define SC132GS_FOCAL_LENGTH_NUM 334 /*3.34mm*/
  29. #define SC132GS_FOCAL_LENGTH_DEM 100
  30. #define SC132GS_F_NUMBER_DEFAULT_NUM 24
  31. #define SC132GS_F_NUMBER_DEM 10
  32. #define MAX_FMTS 1
  33. /* sensor_mode_data read_mode adaptation */
  34. #define SC132GS_READ_MODE_BINNING_ON 0x0400
  35. #define SC132GS_READ_MODE_BINNING_OFF 0x00
  36. #define SC132GS_INTEGRATION_TIME_MARGIN 8
  37. #define SC132GS_MAX_EXPOSURE_VALUE 0xFFF1
  38. #define SC132GS_MAX_GAIN_VALUE 0xFF
  39. /*
  40. * focal length bits definition:
  41. * bits 31-16: numerator, bits 15-0: denominator
  42. */
  43. #define SC132GS_FOCAL_LENGTH_DEFAULT 0x1B70064
  44. /*
  45. * current f-number bits definition:
  46. * bits 31-16: numerator, bits 15-0: denominator
  47. */
  48. #define SC132GS_F_NUMBER_DEFAULT 0x18000a
  49. /*
  50. * f-number range bits definition:
  51. * bits 31-24: max f-number numerator
  52. * bits 23-16: max f-number denominator
  53. * bits 15-8: min f-number numerator
  54. * bits 7-0: min f-number denominator
  55. */
  56. #define SC132GS_F_NUMBER_RANGE 0x180a180a
  57. #define SC132GS_ID 0x5690
  58. #define SC132GS_FINE_INTG_TIME_MIN 0
  59. #define SC132GS_FINE_INTG_TIME_MAX_MARGIN 0
  60. #define SC132GS_COARSE_INTG_TIME_MIN 1
  61. #define SC132GS_COARSE_INTG_TIME_MAX_MARGIN 6
  62. #define SC132GS_BIN_FACTOR_MAX 4
  63. /*
  64. * SC132GS System control registers
  65. */
  66. #define SC132GS_SW_SLEEP 0x0100
  67. #define SC132GS_SW_RESET 0x0103
  68. #define SC132GS_SW_STREAM 0x0100
  69. #define SC132GS_SC_CMMN_CHIP_ID_H 0x300A
  70. #define SC132GS_SC_CMMN_CHIP_ID_L 0x300B
  71. #define SC132GS_SC_CMMN_SCCB_ID 0x300C
  72. #define SC132GS_SC_CMMN_SUB_ID 0x302A /* process, version*/
  73. /*Bit[7:4] Group control, Bit[3:0] Group ID*/
  74. #define SC132GS_GROUP_ACCESS 0x3208
  75. /*
  76. *Bit[3:0] Bit[19:16] of exposure,
  77. *remaining 16 bits lies in Reg0x3501&Reg0x3502
  78. */
  79. #define SC132GS_EXPOSURE_H 0x3500
  80. #define SC132GS_EXPOSURE_M 0x3501
  81. #define SC132GS_EXPOSURE_L 0x3502
  82. /*Bit[1:0] means Bit[9:8] of gain*/
  83. #define SC132GS_AGC_H 0x350A
  84. #define SC132GS_AGC_L 0x350B /*Bit[7:0] of gain*/
  85. #define SC132GS_HORIZONTAL_START_H 0x3800 /*Bit[11:8]*/
  86. #define SC132GS_HORIZONTAL_START_L 0x3801 /*Bit[7:0]*/
  87. #define SC132GS_VERTICAL_START_H 0x3802 /*Bit[11:8]*/
  88. #define SC132GS_VERTICAL_START_L 0x3803 /*Bit[7:0]*/
  89. #define SC132GS_HORIZONTAL_END_H 0x3804 /*Bit[11:8]*/
  90. #define SC132GS_HORIZONTAL_END_L 0x3805 /*Bit[7:0]*/
  91. #define SC132GS_VERTICAL_END_H 0x3806 /*Bit[11:8]*/
  92. #define SC132GS_VERTICAL_END_L 0x3807 /*Bit[7:0]*/
  93. #define SC132GS_HORIZONTAL_OUTPUT_SIZE_H 0x3808 /*Bit[3:0]*/
  94. #define SC132GS_HORIZONTAL_OUTPUT_SIZE_L 0x3809 /*Bit[7:0]*/
  95. #define SC132GS_VERTICAL_OUTPUT_SIZE_H 0x380a /*Bit[3:0]*/
  96. #define SC132GS_VERTICAL_OUTPUT_SIZE_L 0x380b /*Bit[7:0]*/
  97. /*High 8-bit, and low 8-bit HTS address is 0x380d*/
  98. #define SC132GS_TIMING_HTS_H 0x380C
  99. /*High 8-bit, and low 8-bit HTS address is 0x380d*/
  100. #define SC132GS_TIMING_HTS_L 0x380D
  101. /*High 8-bit, and low 8-bit HTS address is 0x380f*/
  102. #define SC132GS_TIMING_VTS_H 0x380e
  103. /*High 8-bit, and low 8-bit HTS address is 0x380f*/
  104. #define SC132GS_TIMING_VTS_L 0x380f
  105. #define SC132GS_MWB_RED_GAIN_H 0x3400
  106. #define SC132GS_MWB_GREEN_GAIN_H 0x3402
  107. #define SC132GS_MWB_BLUE_GAIN_H 0x3404
  108. #define SC132GS_MWB_GAIN_MAX 0x0fff
  109. #define SC132GS_START_STREAMING 0x01
  110. #define SC132GS_STOP_STREAMING 0x00
  111. #define VCM_ADDR 0x0c
  112. #define VCM_CODE_MSB 0x04
  113. #define SC132GS_INVALID_CONFIG 0xffffffff
  114. #define SC132GS_VCM_SLEW_STEP 0x30F0
  115. #define SC132GS_VCM_SLEW_STEP_MAX 0x7
  116. #define SC132GS_VCM_SLEW_STEP_MASK 0x7
  117. #define SC132GS_VCM_CODE 0x30F2
  118. #define SC132GS_VCM_SLEW_TIME 0x30F4
  119. #define SC132GS_VCM_SLEW_TIME_MAX 0xffff
  120. #define SC132GS_VCM_ENABLE 0x8000
  121. #define SC132GS_VCM_MAX_FOCUS_NEG -1023
  122. #define SC132GS_VCM_MAX_FOCUS_POS 1023
  123. #define DLC_ENABLE 1
  124. #define DLC_DISABLE 0
  125. #define VCM_PROTECTION_OFF 0xeca3
  126. #define VCM_PROTECTION_ON 0xdc51
  127. #define VCM_DEFAULT_S 0x0
  128. #define vcm_step_s(a) (u8)(a & 0xf)
  129. #define vcm_step_mclk(a) (u8)((a >> 4) & 0x3)
  130. #define vcm_dlc_mclk(dlc, mclk) (u16)((dlc << 3) | mclk | 0xa104)
  131. #define vcm_tsrc(tsrc) (u16)(tsrc << 3 | 0xf200)
  132. #define vcm_val(data, s) (u16)(data << 4 | s)
  133. #define DIRECT_VCM vcm_dlc_mclk(0, 0)
  134. /* Defines for OTP Data Registers */
  135. #define SC132GS_FRAME_OFF_NUM 0x4202
  136. #define SC132GS_OTP_BYTE_MAX 32 //change to 32 as needed by otpdata
  137. #define SC132GS_OTP_SHORT_MAX 16
  138. #define SC132GS_OTP_START_ADDR 0x3D00
  139. #define SC132GS_OTP_END_ADDR 0x3D0F
  140. #define SC132GS_OTP_DATA_SIZE 320
  141. #define SC132GS_OTP_PROGRAM_REG 0x3D80
  142. #define SC132GS_OTP_READ_REG 0x3D81 // 1:Enable 0:disable
  143. #define SC132GS_OTP_BANK_REG 0x3D84 //otp bank and mode
  144. #define SC132GS_OTP_READY_REG_DONE 1
  145. #define SC132GS_OTP_BANK_MAX 28
  146. #define SC132GS_OTP_BANK_SIZE 16 //16 bytes per bank
  147. #define SC132GS_OTP_READ_ONETIME 16
  148. #define SC132GS_OTP_MODE_READ 1
  149. typedef enum SC132GS_EXPOSURE_SETTING_e {
  150. SC132GS_ANALOG_GAIN = 1 << 0,
  151. SC132GS_INTEGRATION_TIME = 1 << 1,
  152. SC132GS_DIGITAL_GAIN = 1 << 2,
  153. }SC132GS_EXPOSURE_SETTING_t;
  154. #if 0
  155. struct regval_list {
  156. u16 reg_num;
  157. u8 value;
  158. };
  159. struct sc132gs_resolution {
  160. u8 *desc;
  161. const struct sc132gs_reg *regs;
  162. int res;
  163. int width;
  164. int height;
  165. int fps;
  166. int pix_clk_freq;
  167. u16 pixels_per_line;
  168. u16 lines_per_frame;
  169. u8 bin_factor_x;
  170. u8 bin_factor_y;
  171. u8 bin_mode;
  172. bool used;
  173. };
  174. struct sc132gs_format {
  175. u8 *desc;
  176. u32 pixelformat;
  177. struct sc132gs_reg *regs;
  178. };
  179. enum vcm_type {
  180. VCM_UNKNOWN,
  181. VCM_AD5823,
  182. VCM_DW9714,
  183. };
  184. /*
  185. * sc132gs device structure.
  186. */
  187. struct sc132gs_device {
  188. struct v4l2_subdev sd;
  189. struct media_pad pad;
  190. struct v4l2_mbus_framefmt format;
  191. struct mutex input_lock;
  192. struct v4l2_ctrl_handler ctrl_handler;
  193. struct camera_sensor_platform_data *platform_data;
  194. struct timespec timestamp_t_focus_abs;
  195. int vt_pix_clk_freq_mhz;
  196. int fmt_idx;
  197. int run_mode;
  198. int otp_size;
  199. u8 *otp_data;
  200. u32 focus;
  201. s16 number_of_steps;
  202. u8 res;
  203. u8 type;
  204. bool vcm_update;
  205. enum vcm_type vcm;
  206. };
  207. enum sc132gs_tok_type {
  208. SC132GS_8BIT = 0x0001,
  209. SC132GS_16BIT = 0x0002,
  210. SC132GS_32BIT = 0x0004,
  211. SC132GS_TOK_TERM = 0xf000, /* terminating token for reg list */
  212. SC132GS_TOK_DELAY = 0xfe00, /* delay token for reg list */
  213. SC132GS_TOK_MASK = 0xfff0
  214. };
  215. /**
  216. * struct sc132gs_reg - MI sensor register format
  217. * @type: type of the register
  218. * @reg: 16-bit offset to register
  219. * @val: 8/16/32-bit register value
  220. *
  221. * Define a structure for sensor register initialization values
  222. */
  223. struct sc132gs_reg {
  224. enum sc132gs_tok_type type;
  225. u16 reg;
  226. u32 val; /* @set value for read/mod/write, @mask */
  227. };
  228. #define to_sc132gs_sensor(x) container_of(x, struct sc132gs_device, sd)
  229. #define SC132GS_MAX_WRITE_BUF_SIZE 30
  230. struct sc132gs_write_buffer {
  231. u16 addr;
  232. u8 data[SC132GS_MAX_WRITE_BUF_SIZE];
  233. };
  234. struct sc132gs_write_ctrl {
  235. int index;
  236. struct sc132gs_write_buffer buffer;
  237. };
  238. static const struct i2c_device_id sc132gs_id[] = {
  239. {SC132GS_NAME, 0},
  240. {}
  241. };
  242. static struct sc132gs_reg const sc132gs_global_setting[] = {
  243. {SC132GS_8BIT, 0x0103, 0x01},
  244. {SC132GS_8BIT, 0x3001, 0x0a},
  245. {SC132GS_8BIT, 0x3002, 0x80},
  246. {SC132GS_8BIT, 0x3006, 0x00},
  247. {SC132GS_8BIT, 0x3011, 0x21},
  248. {SC132GS_8BIT, 0x3012, 0x09},
  249. {SC132GS_8BIT, 0x3013, 0x10},
  250. {SC132GS_8BIT, 0x3014, 0x00},
  251. {SC132GS_8BIT, 0x3015, 0x08},
  252. {SC132GS_8BIT, 0x3016, 0xf0},
  253. {SC132GS_8BIT, 0x3017, 0xf0},
  254. {SC132GS_8BIT, 0x3018, 0xf0},
  255. {SC132GS_8BIT, 0x301b, 0xb4},
  256. {SC132GS_8BIT, 0x301d, 0x02},
  257. {SC132GS_8BIT, 0x3021, 0x00},
  258. {SC132GS_8BIT, 0x3022, 0x01},
  259. {SC132GS_8BIT, 0x3028, 0x44},
  260. {SC132GS_8BIT, 0x3098, 0x02},
  261. {SC132GS_8BIT, 0x3099, 0x19},
  262. {SC132GS_8BIT, 0x309a, 0x02},
  263. {SC132GS_8BIT, 0x309b, 0x01},
  264. {SC132GS_8BIT, 0x309c, 0x00},
  265. {SC132GS_8BIT, 0x30a0, 0xd2},
  266. {SC132GS_8BIT, 0x30a2, 0x01},
  267. {SC132GS_8BIT, 0x30b2, 0x00},
  268. {SC132GS_8BIT, 0x30b3, 0x7d},
  269. {SC132GS_8BIT, 0x30b4, 0x03},
  270. {SC132GS_8BIT, 0x30b5, 0x04},
  271. {SC132GS_8BIT, 0x30b6, 0x01},
  272. {SC132GS_8BIT, 0x3104, 0x21},
  273. {SC132GS_8BIT, 0x3106, 0x00},
  274. {SC132GS_8BIT, 0x3400, 0x04},
  275. {SC132GS_8BIT, 0x3401, 0x00},
  276. {SC132GS_8BIT, 0x3402, 0x04},
  277. {SC132GS_8BIT, 0x3403, 0x00},
  278. {SC132GS_8BIT, 0x3404, 0x04},
  279. {SC132GS_8BIT, 0x3405, 0x00},
  280. {SC132GS_8BIT, 0x3406, 0x01},
  281. {SC132GS_8BIT, 0x3500, 0x00},
  282. {SC132GS_8BIT, 0x3503, 0x07},
  283. {SC132GS_8BIT, 0x3504, 0x00},
  284. {SC132GS_8BIT, 0x3505, 0x00},
  285. {SC132GS_8BIT, 0x3506, 0x00},
  286. {SC132GS_8BIT, 0x3507, 0x02},
  287. {SC132GS_8BIT, 0x3508, 0x00},
  288. {SC132GS_8BIT, 0x3509, 0x10},
  289. {SC132GS_8BIT, 0x350a, 0x00},
  290. {SC132GS_8BIT, 0x350b, 0x40},
  291. {SC132GS_8BIT, 0x3601, 0x0a},
  292. {SC132GS_8BIT, 0x3602, 0x38},
  293. {SC132GS_8BIT, 0x3612, 0x80},
  294. {SC132GS_8BIT, 0x3620, 0x54},
  295. {SC132GS_8BIT, 0x3621, 0xc7},
  296. {SC132GS_8BIT, 0x3622, 0x0f},
  297. {SC132GS_8BIT, 0x3625, 0x10},
  298. {SC132GS_8BIT, 0x3630, 0x55},
  299. {SC132GS_8BIT, 0x3631, 0xf4},
  300. {SC132GS_8BIT, 0x3632, 0x00},
  301. {SC132GS_8BIT, 0x3633, 0x34},
  302. {SC132GS_8BIT, 0x3634, 0x02},
  303. {SC132GS_8BIT, 0x364d, 0x0d},
  304. {SC132GS_8BIT, 0x364f, 0xdd},
  305. {SC132GS_8BIT, 0x3660, 0x04},
  306. {SC132GS_8BIT, 0x3662, 0x10},
  307. {SC132GS_8BIT, 0x3663, 0xf1},
  308. {SC132GS_8BIT, 0x3665, 0x00},
  309. {SC132GS_8BIT, 0x3666, 0x20},
  310. {SC132GS_8BIT, 0x3667, 0x00},
  311. {SC132GS_8BIT, 0x366a, 0x80},
  312. {SC132GS_8BIT, 0x3680, 0xe0},
  313. {SC132GS_8BIT, 0x3681, 0x00},
  314. {SC132GS_8BIT, 0x3700, 0x42},
  315. {SC132GS_8BIT, 0x3701, 0x14},
  316. {SC132GS_8BIT, 0x3702, 0xa0},
  317. {SC132GS_8BIT, 0x3703, 0xd8},
  318. {SC132GS_8BIT, 0x3704, 0x78},
  319. {SC132GS_8BIT, 0x3705, 0x02},
  320. {SC132GS_8BIT, 0x370a, 0x00},
  321. {SC132GS_8BIT, 0x370b, 0x20},
  322. {SC132GS_8BIT, 0x370c, 0x0c},
  323. {SC132GS_8BIT, 0x370d, 0x11},
  324. {SC132GS_8BIT, 0x370e, 0x00},
  325. {SC132GS_8BIT, 0x370f, 0x40},
  326. {SC132GS_8BIT, 0x3710, 0x00},
  327. {SC132GS_8BIT, 0x371a, 0x1c},
  328. {SC132GS_8BIT, 0x371b, 0x05},
  329. {SC132GS_8BIT, 0x371c, 0x01},
  330. {SC132GS_8BIT, 0x371e, 0xa1},
  331. {SC132GS_8BIT, 0x371f, 0x0c},
  332. {SC132GS_8BIT, 0x3721, 0x00},
  333. {SC132GS_8BIT, 0x3724, 0x10},
  334. {SC132GS_8BIT, 0x3726, 0x00},
  335. {SC132GS_8BIT, 0x372a, 0x01},
  336. {SC132GS_8BIT, 0x3730, 0x10},
  337. {SC132GS_8BIT, 0x3738, 0x22},
  338. {SC132GS_8BIT, 0x3739, 0xe5},
  339. {SC132GS_8BIT, 0x373a, 0x50},
  340. {SC132GS_8BIT, 0x373b, 0x02},
  341. {SC132GS_8BIT, 0x373c, 0x41},
  342. {SC132GS_8BIT, 0x373f, 0x02},
  343. {SC132GS_8BIT, 0x3740, 0x42},
  344. {SC132GS_8BIT, 0x3741, 0x02},
  345. {SC132GS_8BIT, 0x3742, 0x18},
  346. {SC132GS_8BIT, 0x3743, 0x01},
  347. {SC132GS_8BIT, 0x3744, 0x02},
  348. {SC132GS_8BIT, 0x3747, 0x10},
  349. {SC132GS_8BIT, 0x374c, 0x04},
  350. {SC132GS_8BIT, 0x3751, 0xf0},
  351. {SC132GS_8BIT, 0x3752, 0x00},
  352. {SC132GS_8BIT, 0x3753, 0x00},
  353. {SC132GS_8BIT, 0x3754, 0xc0},
  354. {SC132GS_8BIT, 0x3755, 0x00},
  355. {SC132GS_8BIT, 0x3756, 0x1a},
  356. {SC132GS_8BIT, 0x3758, 0x00},
  357. {SC132GS_8BIT, 0x3759, 0x0f},
  358. {SC132GS_8BIT, 0x376b, 0x44},
  359. {SC132GS_8BIT, 0x375c, 0x04},
  360. {SC132GS_8BIT, 0x3774, 0x10},
  361. {SC132GS_8BIT, 0x3776, 0x00},
  362. {SC132GS_8BIT, 0x377f, 0x08},
  363. {SC132GS_8BIT, 0x3780, 0x22},
  364. {SC132GS_8BIT, 0x3781, 0x0c},
  365. {SC132GS_8BIT, 0x3784, 0x2c},
  366. {SC132GS_8BIT, 0x3785, 0x1e},
  367. {SC132GS_8BIT, 0x378f, 0xf5},
  368. {SC132GS_8BIT, 0x3791, 0xb0},
  369. {SC132GS_8BIT, 0x3795, 0x00},
  370. {SC132GS_8BIT, 0x3796, 0x64},
  371. {SC132GS_8BIT, 0x3797, 0x11},
  372. {SC132GS_8BIT, 0x3798, 0x30},
  373. {SC132GS_8BIT, 0x3799, 0x41},
  374. {SC132GS_8BIT, 0x379a, 0x07},
  375. {SC132GS_8BIT, 0x379b, 0xb0},
  376. {SC132GS_8BIT, 0x379c, 0x0c},
  377. {SC132GS_8BIT, 0x37c5, 0x00},
  378. {SC132GS_8BIT, 0x37c6, 0x00},
  379. {SC132GS_8BIT, 0x37c7, 0x00},
  380. {SC132GS_8BIT, 0x37c9, 0x00},
  381. {SC132GS_8BIT, 0x37ca, 0x00},
  382. {SC132GS_8BIT, 0x37cb, 0x00},
  383. {SC132GS_8BIT, 0x37de, 0x00},
  384. {SC132GS_8BIT, 0x37df, 0x00},
  385. {SC132GS_8BIT, 0x3800, 0x00},
  386. {SC132GS_8BIT, 0x3801, 0x00},
  387. {SC132GS_8BIT, 0x3802, 0x00},
  388. {SC132GS_8BIT, 0x3804, 0x0a},
  389. {SC132GS_8BIT, 0x3805, 0x3f},
  390. {SC132GS_8BIT, 0x3810, 0x00},
  391. {SC132GS_8BIT, 0x3812, 0x00},
  392. {SC132GS_8BIT, 0x3823, 0x00},
  393. {SC132GS_8BIT, 0x3824, 0x00},
  394. {SC132GS_8BIT, 0x3825, 0x00},
  395. {SC132GS_8BIT, 0x3826, 0x00},
  396. {SC132GS_8BIT, 0x3827, 0x00},
  397. {SC132GS_8BIT, 0x382a, 0x04},
  398. {SC132GS_8BIT, 0x3a04, 0x06},
  399. {SC132GS_8BIT, 0x3a05, 0x14},
  400. {SC132GS_8BIT, 0x3a06, 0x00},
  401. {SC132GS_8BIT, 0x3a07, 0xfe},
  402. {SC132GS_8BIT, 0x3b00, 0x00},
  403. {SC132GS_8BIT, 0x3b02, 0x00},
  404. {SC132GS_8BIT, 0x3b03, 0x00},
  405. {SC132GS_8BIT, 0x3b04, 0x00},
  406. {SC132GS_8BIT, 0x3b05, 0x00},
  407. {SC132GS_8BIT, 0x3e07, 0x20},
  408. {SC132GS_8BIT, 0x4000, 0x08},
  409. {SC132GS_8BIT, 0x4001, 0x04},
  410. {SC132GS_8BIT, 0x4002, 0x45},
  411. {SC132GS_8BIT, 0x4004, 0x08},
  412. {SC132GS_8BIT, 0x4005, 0x18},
  413. {SC132GS_8BIT, 0x4006, 0x20},
  414. {SC132GS_8BIT, 0x4008, 0x24},
  415. {SC132GS_8BIT, 0x4009, 0x10},
  416. {SC132GS_8BIT, 0x400c, 0x00},
  417. {SC132GS_8BIT, 0x400d, 0x00},
  418. {SC132GS_8BIT, 0x4058, 0x00},
  419. {SC132GS_8BIT, 0x404e, 0x37},
  420. {SC132GS_8BIT, 0x404f, 0x8f},
  421. {SC132GS_8BIT, 0x4058, 0x00},
  422. {SC132GS_8BIT, 0x4101, 0xb2},
  423. {SC132GS_8BIT, 0x4303, 0x00},
  424. {SC132GS_8BIT, 0x4304, 0x08},
  425. {SC132GS_8BIT, 0x4307, 0x31},
  426. {SC132GS_8BIT, 0x4311, 0x04},
  427. {SC132GS_8BIT, 0x4315, 0x01},
  428. {SC132GS_8BIT, 0x4511, 0x05},
  429. {SC132GS_8BIT, 0x4512, 0x01},
  430. {SC132GS_8BIT, 0x4806, 0x00},
  431. {SC132GS_8BIT, 0x4816, 0x52},
  432. {SC132GS_8BIT, 0x481f, 0x30},
  433. {SC132GS_8BIT, 0x4826, 0x2c},
  434. {SC132GS_8BIT, 0x4831, 0x64},
  435. {SC132GS_8BIT, 0x4d00, 0x04},
  436. {SC132GS_8BIT, 0x4d01, 0x71},
  437. {SC132GS_8BIT, 0x4d02, 0xfd},
  438. {SC132GS_8BIT, 0x4d03, 0xf5},
  439. {SC132GS_8BIT, 0x4d04, 0x0c},
  440. {SC132GS_8BIT, 0x4d05, 0xcc},
  441. {SC132GS_8BIT, 0x4837, 0x0a},
  442. {SC132GS_8BIT, 0x5000, 0x06},
  443. {SC132GS_8BIT, 0x5001, 0x01},
  444. {SC132GS_8BIT, 0x5003, 0x20},
  445. {SC132GS_8BIT, 0x5046, 0x0a},
  446. {SC132GS_8BIT, 0x5013, 0x00},
  447. {SC132GS_8BIT, 0x5046, 0x0a},
  448. {SC132GS_8BIT, 0x5780, 0x1c},
  449. {SC132GS_8BIT, 0x5786, 0x20},
  450. {SC132GS_8BIT, 0x5787, 0x10},
  451. {SC132GS_8BIT, 0x5788, 0x18},
  452. {SC132GS_8BIT, 0x578a, 0x04},
  453. {SC132GS_8BIT, 0x578b, 0x02},
  454. {SC132GS_8BIT, 0x578c, 0x02},
  455. {SC132GS_8BIT, 0x578e, 0x06},
  456. {SC132GS_8BIT, 0x578f, 0x02},
  457. {SC132GS_8BIT, 0x5790, 0x02},
  458. {SC132GS_8BIT, 0x5791, 0xff},
  459. {SC132GS_8BIT, 0x5842, 0x01},
  460. {SC132GS_8BIT, 0x5843, 0x2b},
  461. {SC132GS_8BIT, 0x5844, 0x01},
  462. {SC132GS_8BIT, 0x5845, 0x92},
  463. {SC132GS_8BIT, 0x5846, 0x01},
  464. {SC132GS_8BIT, 0x5847, 0x8f},
  465. {SC132GS_8BIT, 0x5848, 0x01},
  466. {SC132GS_8BIT, 0x5849, 0x0c},
  467. {SC132GS_8BIT, 0x5e00, 0x00},
  468. {SC132GS_8BIT, 0x5e10, 0x0c},
  469. {SC132GS_8BIT, 0x0100, 0x00},
  470. {SC132GS_TOK_TERM, 0, 0}
  471. };
  472. /*
  473. * 654x496 30fps 17ms VBlanking 2lane 10Bit (Scaling)
  474. */
  475. static struct sc132gs_reg const sc132gs_654x496[] = {
  476. {SC132GS_8BIT, 0x3501, 0x3d},
  477. {SC132GS_8BIT, 0x3502, 0x00},
  478. {SC132GS_8BIT, 0x3708, 0xe6},
  479. {SC132GS_8BIT, 0x3709, 0xc7},
  480. {SC132GS_8BIT, 0x3803, 0x00},
  481. {SC132GS_8BIT, 0x3806, 0x07},
  482. {SC132GS_8BIT, 0x3807, 0xa3},
  483. {SC132GS_8BIT, 0x3808, 0x02},
  484. {SC132GS_8BIT, 0x3809, 0x90},
  485. {SC132GS_8BIT, 0x380a, 0x01},
  486. {SC132GS_8BIT, 0x380b, 0xf0},
  487. {SC132GS_8BIT, 0x380c, 0x0a},
  488. {SC132GS_8BIT, 0x380d, 0x80},
  489. {SC132GS_8BIT, 0x380e, 0x07},
  490. {SC132GS_8BIT, 0x380f, 0xc0},
  491. {SC132GS_8BIT, 0x3811, 0x08},
  492. {SC132GS_8BIT, 0x3813, 0x02},
  493. {SC132GS_8BIT, 0x3814, 0x31},
  494. {SC132GS_8BIT, 0x3815, 0x31},
  495. {SC132GS_8BIT, 0x3820, 0x04},
  496. {SC132GS_8BIT, 0x3821, 0x1f},
  497. {SC132GS_8BIT, 0x5002, 0x80},
  498. {SC132GS_8BIT, 0x0100, 0x01},
  499. {SC132GS_TOK_TERM, 0, 0}
  500. };
  501. /*
  502. * 1296x976 30fps 17ms VBlanking 2lane 10Bit (Scaling)
  503. *DS from 2592x1952
  504. */
  505. static struct sc132gs_reg const sc132gs_1296x976[] = {
  506. {SC132GS_8BIT, 0x3501, 0x7b},
  507. {SC132GS_8BIT, 0x3502, 0x00},
  508. {SC132GS_8BIT, 0x3708, 0xe2},
  509. {SC132GS_8BIT, 0x3709, 0xc3},
  510. {SC132GS_8BIT, 0x3800, 0x00},
  511. {SC132GS_8BIT, 0x3801, 0x00},
  512. {SC132GS_8BIT, 0x3802, 0x00},
  513. {SC132GS_8BIT, 0x3803, 0x00},
  514. {SC132GS_8BIT, 0x3804, 0x0a},
  515. {SC132GS_8BIT, 0x3805, 0x3f},
  516. {SC132GS_8BIT, 0x3806, 0x07},
  517. {SC132GS_8BIT, 0x3807, 0xA3},
  518. {SC132GS_8BIT, 0x3808, 0x05},
  519. {SC132GS_8BIT, 0x3809, 0x10},
  520. {SC132GS_8BIT, 0x380a, 0x03},
  521. {SC132GS_8BIT, 0x380b, 0xD0},
  522. {SC132GS_8BIT, 0x380c, 0x0a},
  523. {SC132GS_8BIT, 0x380d, 0x80},
  524. {SC132GS_8BIT, 0x380e, 0x07},
  525. {SC132GS_8BIT, 0x380f, 0xc0},
  526. {SC132GS_8BIT, 0x3810, 0x00},
  527. {SC132GS_8BIT, 0x3811, 0x10},
  528. {SC132GS_8BIT, 0x3812, 0x00},
  529. {SC132GS_8BIT, 0x3813, 0x02},
  530. {SC132GS_8BIT, 0x3814, 0x11}, /*X subsample control*/
  531. {SC132GS_8BIT, 0x3815, 0x11}, /*Y subsample control*/
  532. {SC132GS_8BIT, 0x3820, 0x00},
  533. {SC132GS_8BIT, 0x3821, 0x1e},
  534. {SC132GS_8BIT, 0x5002, 0x00},
  535. {SC132GS_8BIT, 0x5041, 0x84}, /* scale is auto enabled */
  536. {SC132GS_8BIT, 0x0100, 0x01},
  537. {SC132GS_TOK_TERM, 0, 0}
  538. };
  539. /*
  540. * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling)
  541. DS from 2564x1956
  542. */
  543. static struct sc132gs_reg const sc132gs_336x256[] = {
  544. {SC132GS_8BIT, 0x3501, 0x3d},
  545. {SC132GS_8BIT, 0x3502, 0x00},
  546. {SC132GS_8BIT, 0x3708, 0xe6},
  547. {SC132GS_8BIT, 0x3709, 0xc7},
  548. {SC132GS_8BIT, 0x3806, 0x07},
  549. {SC132GS_8BIT, 0x3807, 0xa3},
  550. {SC132GS_8BIT, 0x3808, 0x01},
  551. {SC132GS_8BIT, 0x3809, 0x50},
  552. {SC132GS_8BIT, 0x380a, 0x01},
  553. {SC132GS_8BIT, 0x380b, 0x00},
  554. {SC132GS_8BIT, 0x380c, 0x0a},
  555. {SC132GS_8BIT, 0x380d, 0x80},
  556. {SC132GS_8BIT, 0x380e, 0x07},
  557. {SC132GS_8BIT, 0x380f, 0xc0},
  558. {SC132GS_8BIT, 0x3811, 0x1E},
  559. {SC132GS_8BIT, 0x3814, 0x31},
  560. {SC132GS_8BIT, 0x3815, 0x31},
  561. {SC132GS_8BIT, 0x3820, 0x04},
  562. {SC132GS_8BIT, 0x3821, 0x1f},
  563. {SC132GS_8BIT, 0x5002, 0x80},
  564. {SC132GS_8BIT, 0x0100, 0x01},
  565. {SC132GS_TOK_TERM, 0, 0}
  566. };
  567. /*
  568. * 336x256 30fps 17ms VBlanking 2lane 10Bit (Scaling)
  569. DS from 2368x1956
  570. */
  571. static struct sc132gs_reg const sc132gs_368x304[] = {
  572. {SC132GS_8BIT, 0x3501, 0x3d},
  573. {SC132GS_8BIT, 0x3502, 0x00},
  574. {SC132GS_8BIT, 0x3708, 0xe6},
  575. {SC132GS_8BIT, 0x3709, 0xc7},
  576. {SC132GS_8BIT, 0x3808, 0x01},
  577. {SC132GS_8BIT, 0x3809, 0x70},
  578. {SC132GS_8BIT, 0x380a, 0x01},
  579. {SC132GS_8BIT, 0x380b, 0x30},
  580. {SC132GS_8BIT, 0x380c, 0x0a},
  581. {SC132GS_8BIT, 0x380d, 0x80},
  582. {SC132GS_8BIT, 0x380e, 0x07},
  583. {SC132GS_8BIT, 0x380f, 0xc0},
  584. {SC132GS_8BIT, 0x3811, 0x80},
  585. {SC132GS_8BIT, 0x3814, 0x31},
  586. {SC132GS_8BIT, 0x3815, 0x31},
  587. {SC132GS_8BIT, 0x3820, 0x04},
  588. {SC132GS_8BIT, 0x3821, 0x1f},
  589. {SC132GS_8BIT, 0x5002, 0x80},
  590. {SC132GS_8BIT, 0x0100, 0x01},
  591. {SC132GS_TOK_TERM, 0, 0}
  592. };
  593. /*
  594. * sc132gs_192x160 30fps 17ms VBlanking 2lane 10Bit (Scaling)
  595. DS from 2460x1956
  596. */
  597. static struct sc132gs_reg const sc132gs_192x160[] = {
  598. {SC132GS_8BIT, 0x3501, 0x7b},
  599. {SC132GS_8BIT, 0x3502, 0x80},
  600. {SC132GS_8BIT, 0x3708, 0xe2},
  601. {SC132GS_8BIT, 0x3709, 0xc3},
  602. {SC132GS_8BIT, 0x3804, 0x0a},
  603. {SC132GS_8BIT, 0x3805, 0x3f},
  604. {SC132GS_8BIT, 0x3806, 0x07},
  605. {SC132GS_8BIT, 0x3807, 0xA3},
  606. {SC132GS_8BIT, 0x3808, 0x00},
  607. {SC132GS_8BIT, 0x3809, 0xC0},
  608. {SC132GS_8BIT, 0x380a, 0x00},
  609. {SC132GS_8BIT, 0x380b, 0xA0},
  610. {SC132GS_8BIT, 0x380c, 0x0a},
  611. {SC132GS_8BIT, 0x380d, 0x80},
  612. {SC132GS_8BIT, 0x380e, 0x07},
  613. {SC132GS_8BIT, 0x380f, 0xc0},
  614. {SC132GS_8BIT, 0x3811, 0x40},
  615. {SC132GS_8BIT, 0x3813, 0x00},
  616. {SC132GS_8BIT, 0x3814, 0x31},
  617. {SC132GS_8BIT, 0x3815, 0x31},
  618. {SC132GS_8BIT, 0x3820, 0x04},
  619. {SC132GS_8BIT, 0x3821, 0x1f},
  620. {SC132GS_8BIT, 0x5002, 0x80},
  621. {SC132GS_8BIT, 0x0100, 0x01},
  622. {SC132GS_TOK_TERM, 0, 0}
  623. };
  624. static struct sc132gs_reg const sc132gs_736x496[] = {
  625. {SC132GS_8BIT, 0x3501, 0x3d},
  626. {SC132GS_8BIT, 0x3502, 0x00},
  627. {SC132GS_8BIT, 0x3708, 0xe6},
  628. {SC132GS_8BIT, 0x3709, 0xc7},
  629. {SC132GS_8BIT, 0x3803, 0x68},
  630. {SC132GS_8BIT, 0x3806, 0x07},
  631. {SC132GS_8BIT, 0x3807, 0x3b},
  632. {SC132GS_8BIT, 0x3808, 0x02},
  633. {SC132GS_8BIT, 0x3809, 0xe0},
  634. {SC132GS_8BIT, 0x380a, 0x01},
  635. {SC132GS_8BIT, 0x380b, 0xf0},
  636. {SC132GS_8BIT, 0x380c, 0x0a}, /*hts*/
  637. {SC132GS_8BIT, 0x380d, 0x80},
  638. {SC132GS_8BIT, 0x380e, 0x07}, /*vts*/
  639. {SC132GS_8BIT, 0x380f, 0xc0},
  640. {SC132GS_8BIT, 0x3811, 0x08},
  641. {SC132GS_8BIT, 0x3813, 0x02},
  642. {SC132GS_8BIT, 0x3814, 0x31},
  643. {SC132GS_8BIT, 0x3815, 0x31},
  644. {SC132GS_8BIT, 0x3820, 0x04},
  645. {SC132GS_8BIT, 0x3821, 0x1f},
  646. {SC132GS_8BIT, 0x5002, 0x80},
  647. {SC132GS_8BIT, 0x0100, 0x01},
  648. {SC132GS_TOK_TERM, 0, 0}
  649. };
  650. /*
  651. static struct sc132gs_reg const sc132gs_736x496[] = {
  652. {SC132GS_8BIT, 0x3501, 0x7b},
  653. {SC132GS_8BIT, 0x3502, 0x00},
  654. {SC132GS_8BIT, 0x3708, 0xe6},
  655. {SC132GS_8BIT, 0x3709, 0xc3},
  656. {SC132GS_8BIT, 0x3803, 0x00},
  657. {SC132GS_8BIT, 0x3806, 0x07},
  658. {SC132GS_8BIT, 0x3807, 0xa3},
  659. {SC132GS_8BIT, 0x3808, 0x02},
  660. {SC132GS_8BIT, 0x3809, 0xe0},
  661. {SC132GS_8BIT, 0x380a, 0x01},
  662. {SC132GS_8BIT, 0x380b, 0xf0},
  663. {SC132GS_8BIT, 0x380c, 0x0d},
  664. {SC132GS_8BIT, 0x380d, 0xb0},
  665. {SC132GS_8BIT, 0x380e, 0x05},
  666. {SC132GS_8BIT, 0x380f, 0xf2},
  667. {SC132GS_8BIT, 0x3811, 0x08},
  668. {SC132GS_8BIT, 0x3813, 0x02},
  669. {SC132GS_8BIT, 0x3814, 0x31},
  670. {SC132GS_8BIT, 0x3815, 0x31},
  671. {SC132GS_8BIT, 0x3820, 0x01},
  672. {SC132GS_8BIT, 0x3821, 0x1f},
  673. {SC132GS_8BIT, 0x5002, 0x00},
  674. {SC132GS_8BIT, 0x0100, 0x01},
  675. {SC132GS_TOK_TERM, 0, 0}
  676. };
  677. */
  678. /*
  679. * 976x556 30fps 8.8ms VBlanking 2lane 10Bit (Scaling)
  680. */
  681. static struct sc132gs_reg const sc132gs_976x556[] = {
  682. {SC132GS_8BIT, 0x3501, 0x7b},
  683. {SC132GS_8BIT, 0x3502, 0x00},
  684. {SC132GS_8BIT, 0x3708, 0xe2},
  685. {SC132GS_8BIT, 0x3709, 0xc3},
  686. {SC132GS_8BIT, 0x3803, 0xf0},
  687. {SC132GS_8BIT, 0x3806, 0x06},
  688. {SC132GS_8BIT, 0x3807, 0xa7},
  689. {SC132GS_8BIT, 0x3808, 0x03},
  690. {SC132GS_8BIT, 0x3809, 0xd0},
  691. {SC132GS_8BIT, 0x380a, 0x02},
  692. {SC132GS_8BIT, 0x380b, 0x2C},
  693. {SC132GS_8BIT, 0x380c, 0x0a},
  694. {SC132GS_8BIT, 0x380d, 0x80},
  695. {SC132GS_8BIT, 0x380e, 0x07},
  696. {SC132GS_8BIT, 0x380f, 0xc0},
  697. {SC132GS_8BIT, 0x3811, 0x10},
  698. {SC132GS_8BIT, 0x3813, 0x02},
  699. {SC132GS_8BIT, 0x3814, 0x11},
  700. {SC132GS_8BIT, 0x3815, 0x11},
  701. {SC132GS_8BIT, 0x3820, 0x00},
  702. {SC132GS_8BIT, 0x3821, 0x1e},
  703. {SC132GS_8BIT, 0x5002, 0x80},
  704. {SC132GS_8BIT, 0x0100, 0x01},
  705. {SC132GS_TOK_TERM, 0, 0}
  706. };
  707. /*DS from 2624x1492*/
  708. static struct sc132gs_reg const sc132gs_1296x736[] = {
  709. {SC132GS_8BIT, 0x3501, 0x7b},
  710. {SC132GS_8BIT, 0x3502, 0x00},
  711. {SC132GS_8BIT, 0x3708, 0xe2},
  712. {SC132GS_8BIT, 0x3709, 0xc3},
  713. {SC132GS_8BIT, 0x3800, 0x00},
  714. {SC132GS_8BIT, 0x3801, 0x00},
  715. {SC132GS_8BIT, 0x3802, 0x00},
  716. {SC132GS_8BIT, 0x3803, 0x00},
  717. {SC132GS_8BIT, 0x3804, 0x0a},
  718. {SC132GS_8BIT, 0x3805, 0x3f},
  719. {SC132GS_8BIT, 0x3806, 0x07},
  720. {SC132GS_8BIT, 0x3807, 0xA3},
  721. {SC132GS_8BIT, 0x3808, 0x05},
  722. {SC132GS_8BIT, 0x3809, 0x10},
  723. {SC132GS_8BIT, 0x380a, 0x02},
  724. {SC132GS_8BIT, 0x380b, 0xe0},
  725. {SC132GS_8BIT, 0x380c, 0x0a},
  726. {SC132GS_8BIT, 0x380d, 0x80},
  727. {SC132GS_8BIT, 0x380e, 0x07},
  728. {SC132GS_8BIT, 0x380f, 0xc0},
  729. {SC132GS_8BIT, 0x3813, 0xE8},
  730. {SC132GS_8BIT, 0x3814, 0x11}, /*X subsample control*/
  731. {SC132GS_8BIT, 0x3815, 0x11}, /*Y subsample control*/
  732. {SC132GS_8BIT, 0x3820, 0x00},
  733. {SC132GS_8BIT, 0x3821, 0x1e},
  734. {SC132GS_8BIT, 0x5002, 0x00},
  735. {SC132GS_8BIT, 0x5041, 0x84}, /* scale is auto enabled */
  736. {SC132GS_8BIT, 0x0100, 0x01},
  737. {SC132GS_TOK_TERM, 0, 0}
  738. };
  739. static struct sc132gs_reg const sc132gs_1636p_30fps[] = {
  740. {SC132GS_8BIT, 0x3501, 0x7b},
  741. {SC132GS_8BIT, 0x3502, 0x00},
  742. {SC132GS_8BIT, 0x3708, 0xe2},
  743. {SC132GS_8BIT, 0x3709, 0xc3},
  744. {SC132GS_8BIT, 0x3803, 0xf0},
  745. {SC132GS_8BIT, 0x3806, 0x06},
  746. {SC132GS_8BIT, 0x3807, 0xa7},
  747. {SC132GS_8BIT, 0x3808, 0x06},
  748. {SC132GS_8BIT, 0x3809, 0x64},
  749. {SC132GS_8BIT, 0x380a, 0x04},
  750. {SC132GS_8BIT, 0x380b, 0x48},
  751. {SC132GS_8BIT, 0x380c, 0x0a}, /*hts*/
  752. {SC132GS_8BIT, 0x380d, 0x80},
  753. {SC132GS_8BIT, 0x380e, 0x07}, /*vts*/
  754. {SC132GS_8BIT, 0x380f, 0xc0},
  755. {SC132GS_8BIT, 0x3811, 0x02},
  756. {SC132GS_8BIT, 0x3813, 0x02},
  757. {SC132GS_8BIT, 0x3814, 0x11},
  758. {SC132GS_8BIT, 0x3815, 0x11},
  759. {SC132GS_8BIT, 0x3820, 0x00},
  760. {SC132GS_8BIT, 0x3821, 0x1e},
  761. {SC132GS_8BIT, 0x5002, 0x80},
  762. {SC132GS_8BIT, 0x0100, 0x01},
  763. {SC132GS_TOK_TERM, 0, 0}
  764. };
  765. static struct sc132gs_reg const sc132gs_1616x1216_30fps[] = {
  766. {SC132GS_8BIT, 0x3501, 0x7b},
  767. {SC132GS_8BIT, 0x3502, 0x80},
  768. {SC132GS_8BIT, 0x3708, 0xe2},
  769. {SC132GS_8BIT, 0x3709, 0xc3},
  770. {SC132GS_8BIT, 0x3800, 0x00}, /*{3800,3801} Array X start*/
  771. {SC132GS_8BIT, 0x3801, 0x08}, /* 04 //{3800,3801} Array X start*/
  772. {SC132GS_8BIT, 0x3802, 0x00}, /*{3802,3803} Array Y start*/
  773. {SC132GS_8BIT, 0x3803, 0x04}, /* 00 //{3802,3803} Array Y start*/
  774. {SC132GS_8BIT, 0x3804, 0x0a}, /*{3804,3805} Array X end*/
  775. {SC132GS_8BIT, 0x3805, 0x37}, /* 3b //{3804,3805} Array X end*/
  776. {SC132GS_8BIT, 0x3806, 0x07}, /*{3806,3807} Array Y end*/
  777. {SC132GS_8BIT, 0x3807, 0x9f}, /* a3 //{3806,3807} Array Y end*/
  778. {SC132GS_8BIT, 0x3808, 0x06}, /*{3808,3809} Final output H size*/
  779. {SC132GS_8BIT, 0x3809, 0x50}, /*{3808,3809} Final output H size*/
  780. {SC132GS_8BIT, 0x380a, 0x04}, /*{380a,380b} Final output V size*/
  781. {SC132GS_8BIT, 0x380b, 0xc0}, /*{380a,380b} Final output V size*/
  782. {SC132GS_8BIT, 0x380c, 0x0a}, /*{380c,380d} HTS*/
  783. {SC132GS_8BIT, 0x380d, 0x80}, /*{380c,380d} HTS*/
  784. {SC132GS_8BIT, 0x380e, 0x07}, /*{380e,380f} VTS*/
  785. {SC132GS_8BIT, 0x380f, 0xc0}, /* bc //{380e,380f} VTS*/
  786. {SC132GS_8BIT, 0x3810, 0x00}, /*{3810,3811} windowing X offset*/
  787. {SC132GS_8BIT, 0x3811, 0x10}, /*{3810,3811} windowing X offset*/
  788. {SC132GS_8BIT, 0x3812, 0x00}, /*{3812,3813} windowing Y offset*/
  789. {SC132GS_8BIT, 0x3813, 0x06}, /*{3812,3813} windowing Y offset*/
  790. {SC132GS_8BIT, 0x3814, 0x11}, /*X subsample control*/
  791. {SC132GS_8BIT, 0x3815, 0x11}, /*Y subsample control*/
  792. {SC132GS_8BIT, 0x3820, 0x00}, /*FLIP/Binnning control*/
  793. {SC132GS_8BIT, 0x3821, 0x1e}, /*MIRROR control*/
  794. {SC132GS_8BIT, 0x5002, 0x00},
  795. {SC132GS_8BIT, 0x5041, 0x84},
  796. {SC132GS_8BIT, 0x0100, 0x01},
  797. {SC132GS_TOK_TERM, 0, 0}
  798. };
  799. /*
  800. * 1940x1096 30fps 8.8ms VBlanking 2lane 10bit (Scaling)
  801. */
  802. static struct sc132gs_reg const sc132gs_1940x1096[] = {
  803. {SC132GS_8BIT, 0x3501, 0x7b},
  804. {SC132GS_8BIT, 0x3502, 0x00},
  805. {SC132GS_8BIT, 0x3708, 0xe2},
  806. {SC132GS_8BIT, 0x3709, 0xc3},
  807. {SC132GS_8BIT, 0x3803, 0xf0},
  808. {SC132GS_8BIT, 0x3806, 0x06},
  809. {SC132GS_8BIT, 0x3807, 0xa7},
  810. {SC132GS_8BIT, 0x3808, 0x07},
  811. {SC132GS_8BIT, 0x3809, 0x94},
  812. {SC132GS_8BIT, 0x380a, 0x04},
  813. {SC132GS_8BIT, 0x380b, 0x48},
  814. {SC132GS_8BIT, 0x380c, 0x0a},
  815. {SC132GS_8BIT, 0x380d, 0x80},
  816. {SC132GS_8BIT, 0x380e, 0x07},
  817. {SC132GS_8BIT, 0x380f, 0xc0},
  818. {SC132GS_8BIT, 0x3811, 0x02},
  819. {SC132GS_8BIT, 0x3813, 0x02},
  820. {SC132GS_8BIT, 0x3814, 0x11},
  821. {SC132GS_8BIT, 0x3815, 0x11},
  822. {SC132GS_8BIT, 0x3820, 0x00},
  823. {SC132GS_8BIT, 0x3821, 0x1e},
  824. {SC132GS_8BIT, 0x5002, 0x80},
  825. {SC132GS_8BIT, 0x0100, 0x01},
  826. {SC132GS_TOK_TERM, 0, 0}
  827. };
  828. static struct sc132gs_reg const sc132gs_2592x1456_30fps[] = {
  829. {SC132GS_8BIT, 0x3501, 0x7b},
  830. {SC132GS_8BIT, 0x3502, 0x00},
  831. {SC132GS_8BIT, 0x3708, 0xe2},
  832. {SC132GS_8BIT, 0x3709, 0xc3},
  833. {SC132GS_8BIT, 0x3800, 0x00},
  834. {SC132GS_8BIT, 0x3801, 0x00},
  835. {SC132GS_8BIT, 0x3802, 0x00},
  836. {SC132GS_8BIT, 0x3803, 0xf0},
  837. {SC132GS_8BIT, 0x3804, 0x0a},
  838. {SC132GS_8BIT, 0x3805, 0x3f},
  839. {SC132GS_8BIT, 0x3806, 0x06},
  840. {SC132GS_8BIT, 0x3807, 0xa4},
  841. {SC132GS_8BIT, 0x3808, 0x0a},
  842. {SC132GS_8BIT, 0x3809, 0x20},
  843. {SC132GS_8BIT, 0x380a, 0x05},
  844. {SC132GS_8BIT, 0x380b, 0xb0},
  845. {SC132GS_8BIT, 0x380c, 0x0a},
  846. {SC132GS_8BIT, 0x380d, 0x80},
  847. {SC132GS_8BIT, 0x380e, 0x07},
  848. {SC132GS_8BIT, 0x380f, 0xc0},
  849. {SC132GS_8BIT, 0x3811, 0x10},
  850. {SC132GS_8BIT, 0x3813, 0x00},
  851. {SC132GS_8BIT, 0x3814, 0x11},
  852. {SC132GS_8BIT, 0x3815, 0x11},
  853. {SC132GS_8BIT, 0x3820, 0x00},
  854. {SC132GS_8BIT, 0x3821, 0x1e},
  855. {SC132GS_8BIT, 0x5002, 0x00},
  856. {SC132GS_TOK_TERM, 0, 0}
  857. };
  858. static struct sc132gs_reg const sc132gs_2576x1456_30fps[] = {
  859. {SC132GS_8BIT, 0x3501, 0x7b},
  860. {SC132GS_8BIT, 0x3502, 0x00},
  861. {SC132GS_8BIT, 0x3708, 0xe2},
  862. {SC132GS_8BIT, 0x3709, 0xc3},
  863. {SC132GS_8BIT, 0x3800, 0x00},
  864. {SC132GS_8BIT, 0x3801, 0x00},
  865. {SC132GS_8BIT, 0x3802, 0x00},
  866. {SC132GS_8BIT, 0x3803, 0xf0},
  867. {SC132GS_8BIT, 0x3804, 0x0a},
  868. {SC132GS_8BIT, 0x3805, 0x3f},
  869. {SC132GS_8BIT, 0x3806, 0x06},
  870. {SC132GS_8BIT, 0x3807, 0xa4},
  871. {SC132GS_8BIT, 0x3808, 0x0a},
  872. {SC132GS_8BIT, 0x3809, 0x10},
  873. {SC132GS_8BIT, 0x380a, 0x05},
  874. {SC132GS_8BIT, 0x380b, 0xb0},
  875. {SC132GS_8BIT, 0x380c, 0x0a},
  876. {SC132GS_8BIT, 0x380d, 0x80},
  877. {SC132GS_8BIT, 0x380e, 0x07},
  878. {SC132GS_8BIT, 0x380f, 0xc0},
  879. {SC132GS_8BIT, 0x3811, 0x18},
  880. {SC132GS_8BIT, 0x3813, 0x00},
  881. {SC132GS_8BIT, 0x3814, 0x11},
  882. {SC132GS_8BIT, 0x3815, 0x11},
  883. {SC132GS_8BIT, 0x3820, 0x00},
  884. {SC132GS_8BIT, 0x3821, 0x1e},
  885. {SC132GS_8BIT, 0x5002, 0x00},
  886. {SC132GS_TOK_TERM, 0, 0}
  887. };
  888. /*
  889. * 2592x1944 30fps 0.6ms VBlanking 2lane 10Bit
  890. */
  891. static struct sc132gs_reg const sc132gs_2592x1944_30fps[] = {
  892. {SC132GS_8BIT, 0x3501, 0x7b},
  893. {SC132GS_8BIT, 0x3502, 0x00},
  894. {SC132GS_8BIT, 0x3708, 0xe2},
  895. {SC132GS_8BIT, 0x3709, 0xc3},
  896. {SC132GS_8BIT, 0x3803, 0x00},
  897. {SC132GS_8BIT, 0x3806, 0x07},
  898. {SC132GS_8BIT, 0x3807, 0xa3},
  899. {SC132GS_8BIT, 0x3808, 0x0a},
  900. {SC132GS_8BIT, 0x3809, 0x20},
  901. {SC132GS_8BIT, 0x380a, 0x07},
  902. {SC132GS_8BIT, 0x380b, 0x98},
  903. {SC132GS_8BIT, 0x380c, 0x0a},
  904. {SC132GS_8BIT, 0x380d, 0x80},
  905. {SC132GS_8BIT, 0x380e, 0x07},
  906. {SC132GS_8BIT, 0x380f, 0xc0},
  907. {SC132GS_8BIT, 0x3811, 0x10},
  908. {SC132GS_8BIT, 0x3813, 0x00},
  909. {SC132GS_8BIT, 0x3814, 0x11},
  910. {SC132GS_8BIT, 0x3815, 0x11},
  911. {SC132GS_8BIT, 0x3820, 0x00},
  912. {SC132GS_8BIT, 0x3821, 0x1e},
  913. {SC132GS_8BIT, 0x5002, 0x00},
  914. {SC132GS_8BIT, 0x0100, 0x01},
  915. {SC132GS_TOK_TERM, 0, 0}
  916. };
  917. /*
  918. * 11:9 Full FOV Output, expected FOV Res: 2346x1920
  919. * ISP Effect Res: 1408x1152
  920. * Sensor out: 1424x1168, DS From: 2380x1952
  921. *
  922. * WA: Left Offset: 8, Hor scal: 64
  923. */
  924. static struct sc132gs_reg const sc132gs_1424x1168_30fps[] = {
  925. {SC132GS_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */
  926. {SC132GS_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */
  927. {SC132GS_8BIT, 0x3708, 0xe2},
  928. {SC132GS_8BIT, 0x3709, 0xc3},
  929. {SC132GS_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */
  930. {SC132GS_8BIT, 0x3801, 0x50}, /* 80 */
  931. {SC132GS_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */
  932. {SC132GS_8BIT, 0x3803, 0x02}, /* 2 */
  933. {SC132GS_8BIT, 0x3804, 0x09}, /* TIMING_X_ADDR_END */
  934. {SC132GS_8BIT, 0x3805, 0xdd}, /* 2525 */
  935. {SC132GS_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */
  936. {SC132GS_8BIT, 0x3807, 0xa1}, /* 1953 */
  937. {SC132GS_8BIT, 0x3808, 0x05}, /* TIMING_X_OUTPUT_SIZE */
  938. {SC132GS_8BIT, 0x3809, 0x90}, /* 1424 */
  939. {SC132GS_8BIT, 0x380a, 0x04}, /* TIMING_Y_OUTPUT_SIZE */
  940. {SC132GS_8BIT, 0x380b, 0x90}, /* 1168 */
  941. {SC132GS_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */
  942. {SC132GS_8BIT, 0x380d, 0x80},
  943. {SC132GS_8BIT, 0x380e, 0x07}, /* TIMING_VTS */
  944. {SC132GS_8BIT, 0x380f, 0xc0},
  945. {SC132GS_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */
  946. {SC132GS_8BIT, 0x3811, 0x02}, /* 2 */
  947. {SC132GS_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */
  948. {SC132GS_8BIT, 0x3813, 0x00}, /* 0 */
  949. {SC132GS_8BIT, 0x3814, 0x11}, /* TIME_X_INC */
  950. {SC132GS_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */
  951. {SC132GS_8BIT, 0x3820, 0x00},
  952. {SC132GS_8BIT, 0x3821, 0x1e},
  953. {SC132GS_8BIT, 0x5002, 0x00},
  954. {SC132GS_8BIT, 0x5041, 0x84}, /* scale is auto enabled */
  955. {SC132GS_8BIT, 0x0100, 0x01},
  956. {SC132GS_TOK_TERM, 0, 0}
  957. };
  958. /*
  959. * 3:2 Full FOV Output, expected FOV Res: 2560x1706
  960. * ISP Effect Res: 720x480
  961. * Sensor out: 736x496, DS From 2616x1764
  962. */
  963. static struct sc132gs_reg const sc132gs_736x496_30fps[] = {
  964. {SC132GS_8BIT, 0x3501, 0x3b}, /* long exposure[15:8] */
  965. {SC132GS_8BIT, 0x3502, 0x80}, /* long exposure[7:0] */
  966. {SC132GS_8BIT, 0x3708, 0xe2},
  967. {SC132GS_8BIT, 0x3709, 0xc3},
  968. {SC132GS_8BIT, 0x3800, 0x00}, /* TIMING_X_ADDR_START */
  969. {SC132GS_8BIT, 0x3801, 0x02}, /* 2 */
  970. {SC132GS_8BIT, 0x3802, 0x00}, /* TIMING_Y_ADDR_START */
  971. {SC132GS_8BIT, 0x3803, 0x62}, /* 98 */
  972. {SC132GS_8BIT, 0x3804, 0x0a}, /* TIMING_X_ADDR_END */
  973. {SC132GS_8BIT, 0x3805, 0x3b}, /* 2619 */
  974. {SC132GS_8BIT, 0x3806, 0x07}, /* TIMING_Y_ADDR_END */
  975. {SC132GS_8BIT, 0x3807, 0x43}, /* 1859 */
  976. {SC132GS_8BIT, 0x3808, 0x02}, /* TIMING_X_OUTPUT_SIZE */
  977. {SC132GS_8BIT, 0x3809, 0xe0}, /* 736 */
  978. {SC132GS_8BIT, 0x380a, 0x01}, /* TIMING_Y_OUTPUT_SIZE */
  979. {SC132GS_8BIT, 0x380b, 0xf0}, /* 496 */
  980. {SC132GS_8BIT, 0x380c, 0x0a}, /* TIMING_HTS */
  981. {SC132GS_8BIT, 0x380d, 0x80},
  982. {SC132GS_8BIT, 0x380e, 0x07}, /* TIMING_VTS */
  983. {SC132GS_8BIT, 0x380f, 0xc0},
  984. {SC132GS_8BIT, 0x3810, 0x00}, /* TIMING_ISP_X_WIN */
  985. {SC132GS_8BIT, 0x3811, 0x02}, /* 2 */
  986. {SC132GS_8BIT, 0x3812, 0x00}, /* TIMING_ISP_Y_WIN */
  987. {SC132GS_8BIT, 0x3813, 0x00}, /* 0 */
  988. {SC132GS_8BIT, 0x3814, 0x11}, /* TIME_X_INC */
  989. {SC132GS_8BIT, 0x3815, 0x11}, /* TIME_Y_INC */
  990. {SC132GS_8BIT, 0x3820, 0x00},
  991. {SC132GS_8BIT, 0x3821, 0x1e},
  992. {SC132GS_8BIT, 0x5002, 0x00},
  993. {SC132GS_8BIT, 0x5041, 0x84}, /* scale is auto enabled */
  994. {SC132GS_8BIT, 0x0100, 0x01},
  995. {SC132GS_TOK_TERM, 0, 0}
  996. };
  997. static struct sc132gs_reg const sc132gs_2576x1936_30fps[] = {
  998. {SC132GS_8BIT, 0x3501, 0x7b},
  999. {SC132GS_8BIT, 0x3502, 0x00},
  1000. {SC132GS_8BIT, 0x3708, 0xe2},
  1001. {SC132GS_8BIT, 0x3709, 0xc3},
  1002. {SC132GS_8BIT, 0x3803, 0x00},
  1003. {SC132GS_8BIT, 0x3806, 0x07},
  1004. {SC132GS_8BIT, 0x3807, 0xa3},
  1005. {SC132GS_8BIT, 0x3808, 0x0a},
  1006. {SC132GS_8BIT, 0x3809, 0x10},
  1007. {SC132GS_8BIT, 0x380a, 0x07},
  1008. {SC132GS_8BIT, 0x380b, 0x90},
  1009. {SC132GS_8BIT, 0x380c, 0x0a},
  1010. {SC132GS_8BIT, 0x380d, 0x80},
  1011. {SC132GS_8BIT, 0x380e, 0x07},
  1012. {SC132GS_8BIT, 0x380f, 0xc0},
  1013. {SC132GS_8BIT, 0x3811, 0x18},
  1014. {SC132GS_8BIT, 0x3813, 0x00},
  1015. {SC132GS_8BIT, 0x3814, 0x11},
  1016. {SC132GS_8BIT, 0x3815, 0x11},
  1017. {SC132GS_8BIT, 0x3820, 0x00},
  1018. {SC132GS_8BIT, 0x3821, 0x1e},
  1019. {SC132GS_8BIT, 0x5002, 0x00},
  1020. {SC132GS_8BIT, 0x0100, 0x01},
  1021. {SC132GS_TOK_TERM, 0, 0}
  1022. };
  1023. struct sc132gs_resolution sc132gs_res_preview[] = {
  1024. {
  1025. .desc = "sc132gs_736x496_30fps",
  1026. .width = 736,
  1027. .height = 496,
  1028. .pix_clk_freq = 160,
  1029. .fps = 30,
  1030. .used = 0,
  1031. .pixels_per_line = 2688,
  1032. .lines_per_frame = 1984,
  1033. .bin_factor_x = 1,
  1034. .bin_factor_y = 1,
  1035. .bin_mode = 0,
  1036. .regs = sc132gs_736x496_30fps,
  1037. },
  1038. {
  1039. .desc = "sc132gs_1616x1216_30fps",
  1040. .width = 1616,
  1041. .height = 1216,
  1042. .pix_clk_freq = 160,
  1043. .fps = 30,
  1044. .used = 0,
  1045. .pixels_per_line = 2688,
  1046. .lines_per_frame = 1984,
  1047. .bin_factor_x = 1,
  1048. .bin_factor_y = 1,
  1049. .bin_mode = 0,
  1050. .regs = sc132gs_1616x1216_30fps,
  1051. },
  1052. {
  1053. .desc = "sc132gs_5M_30fps",
  1054. .width = 2576,
  1055. .height = 1456,
  1056. .pix_clk_freq = 160,
  1057. .fps = 30,
  1058. .used = 0,
  1059. .pixels_per_line = 2688,
  1060. .lines_per_frame = 1984,
  1061. .bin_factor_x = 1,
  1062. .bin_factor_y = 1,
  1063. .bin_mode = 0,
  1064. .regs = sc132gs_2576x1456_30fps,
  1065. },
  1066. {
  1067. .desc = "sc132gs_5M_30fps",
  1068. .width = 2576,
  1069. .height = 1936,
  1070. .pix_clk_freq = 160,
  1071. .fps = 30,
  1072. .used = 0,
  1073. .pixels_per_line = 2688,
  1074. .lines_per_frame = 1984,
  1075. .bin_factor_x = 1,
  1076. .bin_factor_y = 1,
  1077. .bin_mode = 0,
  1078. .regs = sc132gs_2576x1936_30fps,
  1079. },
  1080. };
  1081. #define N_RES_PREVIEW (ARRAY_SIZE(sc132gs_res_preview))
  1082. struct sc132gs_resolution sc132gs_res_still[] = {
  1083. {
  1084. .desc = "sc132gs_736x496_30fps",
  1085. .width = 736,
  1086. .height = 496,
  1087. .pix_clk_freq = 160,
  1088. .fps = 30,
  1089. .used = 0,
  1090. .pixels_per_line = 2688,
  1091. .lines_per_frame = 1984,
  1092. .bin_factor_x = 1,
  1093. .bin_factor_y = 1,
  1094. .bin_mode = 0,
  1095. .regs = sc132gs_736x496_30fps,
  1096. },
  1097. {
  1098. .desc = "sc132gs_1424x1168_30fps",
  1099. .width = 1424,
  1100. .height = 1168,
  1101. .pix_clk_freq = 160,
  1102. .fps = 30,
  1103. .used = 0,
  1104. .pixels_per_line = 2688,
  1105. .lines_per_frame = 1984,
  1106. .bin_factor_x = 1,
  1107. .bin_factor_y = 1,
  1108. .bin_mode = 0,
  1109. .regs = sc132gs_1424x1168_30fps,
  1110. },
  1111. {
  1112. .desc = "sc132gs_1616x1216_30fps",
  1113. .width = 1616,
  1114. .height = 1216,
  1115. .pix_clk_freq = 160,
  1116. .fps = 30,
  1117. .used = 0,
  1118. .pixels_per_line = 2688,
  1119. .lines_per_frame = 1984,
  1120. .bin_factor_x = 1,
  1121. .bin_factor_y = 1,
  1122. .bin_mode = 0,
  1123. .regs = sc132gs_1616x1216_30fps,
  1124. },
  1125. {
  1126. .desc = "sc132gs_5M_30fps",
  1127. .width = 2592,
  1128. .height = 1456,
  1129. .pix_clk_freq = 160,
  1130. .fps = 30,
  1131. .used = 0,
  1132. .pixels_per_line = 2688,
  1133. .lines_per_frame = 1984,
  1134. .bin_factor_x = 1,
  1135. .bin_factor_y = 1,
  1136. .bin_mode = 0,
  1137. .regs = sc132gs_2592x1456_30fps,
  1138. },
  1139. {
  1140. .desc = "sc132gs_5M_30fps",
  1141. .width = 2592,
  1142. .height = 1944,
  1143. .pix_clk_freq = 160,
  1144. .fps = 30,
  1145. .used = 0,
  1146. .pixels_per_line = 2688,
  1147. .lines_per_frame = 1984,
  1148. .bin_factor_x = 1,
  1149. .bin_factor_y = 1,
  1150. .bin_mode = 0,
  1151. .regs = sc132gs_2592x1944_30fps,
  1152. },
  1153. };
  1154. #define N_RES_STILL (ARRAY_SIZE(sc132gs_res_still))
  1155. struct sc132gs_resolution sc132gs_res_video[] = {
  1156. {
  1157. .desc = "sc132gs_736x496_30fps",
  1158. .width = 736,
  1159. .height = 496,
  1160. .fps = 30,
  1161. .pix_clk_freq = 160,
  1162. .used = 0,
  1163. .pixels_per_line = 2688,
  1164. .lines_per_frame = 1984,
  1165. .bin_factor_x = 2,
  1166. .bin_factor_y = 2,
  1167. .bin_mode = 1,
  1168. .regs = sc132gs_736x496,
  1169. },
  1170. {
  1171. .desc = "sc132gs_336x256_30fps",
  1172. .width = 336,
  1173. .height = 256,
  1174. .fps = 30,
  1175. .pix_clk_freq = 160,
  1176. .used = 0,
  1177. .pixels_per_line = 2688,
  1178. .lines_per_frame = 1984,
  1179. .bin_factor_x = 2,
  1180. .bin_factor_y = 2,
  1181. .bin_mode = 1,
  1182. .regs = sc132gs_336x256,
  1183. },
  1184. {
  1185. .desc = "sc132gs_368x304_30fps",
  1186. .width = 368,
  1187. .height = 304,
  1188. .fps = 30,
  1189. .pix_clk_freq = 160,
  1190. .used = 0,
  1191. .pixels_per_line = 2688,
  1192. .lines_per_frame = 1984,
  1193. .bin_factor_x = 2,
  1194. .bin_factor_y = 2,
  1195. .bin_mode = 1,
  1196. .regs = sc132gs_368x304,
  1197. },
  1198. {
  1199. .desc = "sc132gs_192x160_30fps",
  1200. .width = 192,
  1201. .height = 160,
  1202. .fps = 30,
  1203. .pix_clk_freq = 160,
  1204. .used = 0,
  1205. .pixels_per_line = 2688,
  1206. .lines_per_frame = 1984,
  1207. .bin_factor_x = 2,
  1208. .bin_factor_y = 2,
  1209. .bin_mode = 1,
  1210. .regs = sc132gs_192x160,
  1211. },
  1212. {
  1213. .desc = "sc132gs_1296x736_30fps",
  1214. .width = 1296,
  1215. .height = 736,
  1216. .fps = 30,
  1217. .pix_clk_freq = 160,
  1218. .used = 0,
  1219. .pixels_per_line = 2688,
  1220. .lines_per_frame = 1984,
  1221. .bin_factor_x = 2,
  1222. .bin_factor_y = 2,
  1223. .bin_mode = 0,
  1224. .regs = sc132gs_1296x736,
  1225. },
  1226. {
  1227. .desc = "sc132gs_1296x976_30fps",
  1228. .width = 1296,
  1229. .height = 976,
  1230. .fps = 30,
  1231. .pix_clk_freq = 160,
  1232. .used = 0,
  1233. .pixels_per_line = 2688,
  1234. .lines_per_frame = 1984,
  1235. .bin_factor_x = 2,
  1236. .bin_factor_y = 2,
  1237. .bin_mode = 0,
  1238. .regs = sc132gs_1296x976,
  1239. },
  1240. {
  1241. .desc = "sc132gs_1636P_30fps",
  1242. .width = 1636,
  1243. .height = 1096,
  1244. .fps = 30,
  1245. .pix_clk_freq = 160,
  1246. .used = 0,
  1247. .pixels_per_line = 2688,
  1248. .lines_per_frame = 1984,
  1249. .bin_factor_x = 1,
  1250. .bin_factor_y = 1,
  1251. .bin_mode = 0,
  1252. .regs = sc132gs_1636p_30fps,
  1253. },
  1254. {
  1255. .desc = "sc132gs_1080P_30fps",
  1256. .width = 1940,
  1257. .height = 1096,
  1258. .fps = 30,
  1259. .pix_clk_freq = 160,
  1260. .used = 0,
  1261. .pixels_per_line = 2688,
  1262. .lines_per_frame = 1984,
  1263. .bin_factor_x = 1,
  1264. .bin_factor_y = 1,
  1265. .bin_mode = 0,
  1266. .regs = sc132gs_1940x1096,
  1267. },
  1268. {
  1269. .desc = "sc132gs_5M_30fps",
  1270. .width = 2592,
  1271. .height = 1456,
  1272. .pix_clk_freq = 160,
  1273. .fps = 30,
  1274. .used = 0,
  1275. .pixels_per_line = 2688,
  1276. .lines_per_frame = 1984,
  1277. .bin_factor_x = 1,
  1278. .bin_factor_y = 1,
  1279. .bin_mode = 0,
  1280. .regs = sc132gs_2592x1456_30fps,
  1281. },
  1282. {
  1283. .desc = "sc132gs_5M_30fps",
  1284. .width = 2592,
  1285. .height = 1944,
  1286. .pix_clk_freq = 160,
  1287. .fps = 30,
  1288. .used = 0,
  1289. .pixels_per_line = 2688,
  1290. .lines_per_frame = 1984,
  1291. .bin_factor_x = 1,
  1292. .bin_factor_y = 1,
  1293. .bin_mode = 0,
  1294. .regs = sc132gs_2592x1944_30fps,
  1295. },
  1296. };
  1297. #define N_RES_VIDEO (ARRAY_SIZE(sc132gs_res_video))
  1298. static struct sc132gs_resolution *sc132gs_res = sc132gs_res_preview;
  1299. static unsigned long N_RES = N_RES_PREVIEW;
  1300. #endif
  1301. #endif