@@ -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 ] = {
@@ -1455,6 +1501,20 @@ static const struct imx290_model_info imx290_models[] = {
1455
1501
.max_analog_gain = 98 ,
1456
1502
.name = "imx327" ,
1457
1503
},
1504
+ [IMX290_MODEL_IMX462LQR ] = {
1505
+ .colour_variant = IMX290_VARIANT_COLOUR ,
1506
+ .init_regs = imx290_global_init_settings_462 ,
1507
+ .init_regs_num = ARRAY_SIZE (imx290_global_init_settings_462 ),
1508
+ .max_analog_gain = 98 ,
1509
+ .name = "imx462" ,
1510
+ },
1511
+ [IMX290_MODEL_IMX462LLR ] = {
1512
+ .colour_variant = IMX290_VARIANT_MONO ,
1513
+ .init_regs = imx290_global_init_settings_462 ,
1514
+ .init_regs_num = ARRAY_SIZE (imx290_global_init_settings_462 ),
1515
+ .max_analog_gain = 98 ,
1516
+ .name = "imx462" ,
1517
+ },
1458
1518
};
1459
1519
1460
1520
static int imx290_parse_dt (struct imx290 * imx290 )
@@ -1650,6 +1710,12 @@ static const struct of_device_id imx290_of_match[] = {
1650
1710
}, {
1651
1711
.compatible = "sony,imx327lqr" ,
1652
1712
.data = & imx290_models [IMX290_MODEL_IMX327LQR ],
1713
+ }, {
1714
+ .compatible = "sony,imx462lqr" ,
1715
+ .data = & imx290_models [IMX290_MODEL_IMX462LQR ],
1716
+ }, {
1717
+ .compatible = "sony,imx462llr" ,
1718
+ .data = & imx290_models [IMX290_MODEL_IMX462LLR ],
1653
1719
},
1654
1720
{ /* sentinel */ },
1655
1721
};
0 commit comments