@@ -172,6 +172,8 @@ enum imx290_model {
172
172
IMX290_MODEL_IMX290LQR ,
173
173
IMX290_MODEL_IMX290LLR ,
174
174
IMX290_MODEL_IMX327LQR ,
175
+ IMX290_MODEL_IMX462LQR ,
176
+ IMX290_MODEL_IMX462LLR ,
175
177
};
176
178
177
179
struct imx290_model_info {
@@ -318,6 +320,50 @@ static const struct cci_reg_sequence imx290_global_init_settings_290[] = {
318
320
{ CCI_REG8 (0x33b3 ), 0x04 },
319
321
};
320
322
323
+ static const struct cci_reg_sequence imx290_global_init_settings_462 [] = {
324
+ { CCI_REG8 (0x300f ), 0x00 },
325
+ { CCI_REG8 (0x3010 ), 0x21 },
326
+ { CCI_REG8 (0x3011 ), 0x02 },
327
+ { CCI_REG8 (0x3016 ), 0x09 },
328
+ { CCI_REG8 (0x3070 ), 0x02 },
329
+ { CCI_REG8 (0x3071 ), 0x11 },
330
+ { CCI_REG8 (0x309b ), 0x10 },
331
+ { CCI_REG8 (0x309c ), 0x22 },
332
+ { CCI_REG8 (0x30a2 ), 0x02 },
333
+ { CCI_REG8 (0x30a6 ), 0x20 },
334
+ { CCI_REG8 (0x30a8 ), 0x20 },
335
+ { CCI_REG8 (0x30aa ), 0x20 },
336
+ { CCI_REG8 (0x30ac ), 0x20 },
337
+ { CCI_REG8 (0x30b0 ), 0x43 },
338
+ { CCI_REG8 (0x3119 ), 0x9e },
339
+ { CCI_REG8 (0x311c ), 0x1e },
340
+ { CCI_REG8 (0x311e ), 0x08 },
341
+ { CCI_REG8 (0x3128 ), 0x05 },
342
+ { CCI_REG8 (0x313d ), 0x83 },
343
+ { CCI_REG8 (0x3150 ), 0x03 },
344
+ { CCI_REG8 (0x317e ), 0x00 },
345
+ { CCI_REG8 (0x32b8 ), 0x50 },
346
+ { CCI_REG8 (0x32b9 ), 0x10 },
347
+ { CCI_REG8 (0x32ba ), 0x00 },
348
+ { CCI_REG8 (0x32bb ), 0x04 },
349
+ { CCI_REG8 (0x32c8 ), 0x50 },
350
+ { CCI_REG8 (0x32c9 ), 0x10 },
351
+ { CCI_REG8 (0x32ca ), 0x00 },
352
+ { CCI_REG8 (0x32cb ), 0x04 },
353
+ { CCI_REG8 (0x332c ), 0xd3 },
354
+ { CCI_REG8 (0x332d ), 0x10 },
355
+ { CCI_REG8 (0x332e ), 0x0d },
356
+ { CCI_REG8 (0x3358 ), 0x06 },
357
+ { CCI_REG8 (0x3359 ), 0xe1 },
358
+ { CCI_REG8 (0x335a ), 0x11 },
359
+ { CCI_REG8 (0x3360 ), 0x1e },
360
+ { CCI_REG8 (0x3361 ), 0x61 },
361
+ { CCI_REG8 (0x3362 ), 0x10 },
362
+ { CCI_REG8 (0x33b0 ), 0x50 },
363
+ { CCI_REG8 (0x33b2 ), 0x1a },
364
+ { CCI_REG8 (0x33b3 ), 0x04 },
365
+ };
366
+
321
367
#define IMX290_NUM_CLK_REGS 2
322
368
static const struct cci_reg_sequence xclk_regs [][IMX290_NUM_CLK_REGS ] = {
323
369
[IMX290_CLK_37_125 ] = {
@@ -1451,6 +1497,20 @@ static const struct imx290_model_info imx290_models[] = {
1451
1497
.max_analog_gain = 98 ,
1452
1498
.name = "imx327" ,
1453
1499
},
1500
+ [IMX290_MODEL_IMX462LQR ] = {
1501
+ .colour_variant = IMX290_VARIANT_COLOUR ,
1502
+ .init_regs = imx290_global_init_settings_462 ,
1503
+ .init_regs_num = ARRAY_SIZE (imx290_global_init_settings_462 ),
1504
+ .max_analog_gain = 98 ,
1505
+ .name = "imx462" ,
1506
+ },
1507
+ [IMX290_MODEL_IMX462LLR ] = {
1508
+ .colour_variant = IMX290_VARIANT_MONO ,
1509
+ .init_regs = imx290_global_init_settings_462 ,
1510
+ .init_regs_num = ARRAY_SIZE (imx290_global_init_settings_462 ),
1511
+ .max_analog_gain = 98 ,
1512
+ .name = "imx462" ,
1513
+ },
1454
1514
};
1455
1515
1456
1516
static int imx290_parse_dt (struct imx290 * imx290 )
@@ -1646,6 +1706,12 @@ static const struct of_device_id imx290_of_match[] = {
1646
1706
}, {
1647
1707
.compatible = "sony,imx327lqr" ,
1648
1708
.data = & imx290_models [IMX290_MODEL_IMX327LQR ],
1709
+ }, {
1710
+ .compatible = "sony,imx462lqr" ,
1711
+ .data = & imx290_models [IMX290_MODEL_IMX462LQR ],
1712
+ }, {
1713
+ .compatible = "sony,imx462llr" ,
1714
+ .data = & imx290_models [IMX290_MODEL_IMX462LLR ],
1649
1715
},
1650
1716
{ /* sentinel */ },
1651
1717
};
0 commit comments