From c59860fa4e37740c374eb723b0c8ecf014ceb489 Mon Sep 17 00:00:00 2001 From: Wang Panzhenzhuan Date: Sat, 16 Jul 2022 08:29:27 +0000 Subject: [PATCH] media: i2c: ov50c40: adjust some config for cts only enable 8K@12fps & 4K@30fps setting for use, others for debug Signed-off-by: Wang Panzhenzhuan Change-Id: I21faf9d961d7f90eed2d64e8da0f3bb4a980895e --- drivers/media/i2c/ov50c40.c | 1257 ++++++++++++++++++----------------- 1 file changed, 631 insertions(+), 626 deletions(-) diff --git a/drivers/media/i2c/ov50c40.c b/drivers/media/i2c/ov50c40.c index 8bfc5492bcd0..872f5b677055 100644 --- a/drivers/media/i2c/ov50c40.c +++ b/drivers/media/i2c/ov50c40.c @@ -15,8 +15,10 @@ * 2. fix set_fmt & ioctl get mode unmatched issue. * 3. add debug info. * V0.0X01.0X07 correct bayer pattern to match register setting + * V0.0X01.0X08 adjust some config for cts. + * 1. only enable 8K@12fps & 4K@30fps setting for use, other for debug. */ -#define DEBUG +//#define DEBUG #include #include #include @@ -40,7 +42,7 @@ #include #include "otp_eeprom.h" -#define DRIVER_VERSION KERNEL_VERSION(0, 0x01, 0x07) +#define DRIVER_VERSION KERNEL_VERSION(0, 0x01, 0x08) #ifndef V4L2_CID_DIGITAL_GAIN #define V4L2_CID_DIGITAL_GAIN V4L2_CID_GAIN @@ -193,7 +195,7 @@ struct ov50c40 { }; #define to_ov50c40(sd) container_of(sd, struct ov50c40, subdev) - +#ifdef DEBUG static const struct regval ov50c40_10bit_4096x3072_dphy_regs[] = { {0x0103, 0x01}, {0x0301, 0xc8}, @@ -1379,611 +1381,6 @@ static const struct regval ov50c40_10bit_8192x6144_dphy_regs[] = { {0x5d45, 0x05}, {REG_NULL, 0x00}, }; - -static const struct regval ov50c40_10bit_4096x3072_dphy_30fps_regs[] = { - {0x0103, 0x01}, - {0x0301, 0xc8}, - {0x0304, 0x02}, - {0x0305, 0x71}, - {0x0306, 0x04}, - {0x0324, 0x02}, - {0x0325, 0x58}, - {0x0326, 0xcb}, - {0x0327, 0x05}, - {0x0328, 0x07}, - {0x032a, 0x0a}, - {0x0344, 0x01}, - {0x0345, 0x4a}, - {0x0350, 0x00}, - {0x0360, 0x09}, - {0x3002, 0x00}, - {0x3009, 0x04}, - {0x3012, 0x41}, - {0x3019, 0xc2}, - {0x301c, 0x81}, - {0x3025, 0x03}, - {0x3026, 0x10}, - {0x3027, 0x00}, - {0x3107, 0x48}, - {0x3400, 0x0c}, - {0x3409, 0x03}, - {0x340c, 0x10}, - {0x340d, 0x00}, - {0x3420, 0x11}, - {0x3421, 0x08}, - {0x3423, 0x15}, - {0x3424, 0x40}, - {0x3425, 0x10}, - {0x3426, 0x40}, - {0x3500, 0x00}, - {0x3501, 0x0c}, - {0x3502, 0x16}, - {0x3504, 0x28}, - {0x3507, 0x00}, - {0x3508, 0x01}, - {0x3509, 0x00}, - {0x350a, 0x01}, - {0x350b, 0x00}, - {0x350c, 0x00}, - {0x350e, 0x00}, - {0x3540, 0x00}, - {0x3541, 0x00}, - {0x3542, 0x00}, - {0x3548, 0x01}, - {0x3549, 0x00}, - {0x354a, 0x01}, - {0x354b, 0x00}, - {0x354c, 0x00}, - {0x3607, 0x01}, - {0x3608, 0xda}, - {0x360c, 0x03}, - {0x360e, 0x1d}, - {0x3618, 0x80}, - {0x361b, 0x80}, - {0x3622, 0x88}, - {0x3623, 0x33}, - {0x3624, 0x95}, - {0x3627, 0xcc}, - {0x3628, 0xaa}, - {0x362b, 0x08}, - {0x362d, 0x08}, - {0x363b, 0x80}, - {0x363d, 0x0c}, - {0x3680, 0xc0}, - {0x3684, 0x03},//0x03 - {0x368d, 0x00}, - {0x368e, 0x01}, - {0x3690, 0x10}, - {0x3697, 0x80}, - {0x3699, 0x1f}, - {0x369b, 0x10}, - {0x369c, 0x19}, - {0x369d, 0x40}, - {0x369e, 0x00}, - {0x36a1, 0x00}, - {0x3700, 0x28}, - {0x3701, 0x05}, - {0x3702, 0x4b}, - {0x3703, 0x27}, - {0x3704, 0x07}, - {0x3706, 0x2f}, - {0x3707, 0x08}, - {0x3708, 0x32}, - {0x3709, 0x69}, - {0x370b, 0x5d}, - {0x370c, 0x0f}, - {0x3711, 0x00}, - {0x3712, 0x50}, - {0x3714, 0x67}, - {0x3715, 0x00}, - {0x3717, 0x03}, - {0x371c, 0x04}, - {0x371d, 0x1e}, - {0x371e, 0x13}, - {0x371f, 0x0a}, - {0x3720, 0x08}, - {0x3721, 0x15}, - {0x3725, 0x32}, - {0x3727, 0x22}, - {0x3729, 0x01}, - {0x3731, 0x05}, - {0x3736, 0x02}, - {0x3737, 0x05}, - {0x3738, 0x02}, - {0x3739, 0x05}, - {0x373b, 0x3c}, - {0x373d, 0x40}, - {0x3741, 0x41}, - {0x3754, 0xee}, - {0x375f, 0x80}, - {0x3760, 0x08}, - {0x3761, 0x10}, - {0x3762, 0x08}, - {0x3763, 0x08}, - {0x3764, 0x08}, - {0x3765, 0x10}, - {0x3766, 0x18}, - {0x3767, 0x28}, - {0x3768, 0x00}, - {0x3769, 0x08}, - {0x376c, 0x00}, - {0x376f, 0x02}, - {0x3770, 0x3b}, - {0x379e, 0x3b}, - {0x379f, 0x3b}, - {0x37b0, 0x37}, - {0x37b1, 0x37}, - {0x37b2, 0x37}, - {0x37b3, 0x3b}, - {0x37b4, 0x3a}, - {0x37b5, 0x3a}, - {0x37ce, 0x02}, - {0x37cf, 0x05}, - {0x37d6, 0x00}, - {0x37d9, 0x00}, - {0x37dc, 0x43}, - {0x37ed, 0x02}, - {0x37ee, 0x05}, - {0x37f0, 0x02}, - {0x37f1, 0x05}, - {0x37f2, 0x02}, - {0x37f3, 0x05}, - {0x37f4, 0x00}, - {0x3800, 0x00}, - {0x3801, 0x00}, - {0x3802, 0x00}, - {0x3803, 0x08}, - {0x3804, 0x20}, - {0x3805, 0x1f}, - {0x3806, 0x18}, - {0x3807, 0x17}, - {0x3808, 0x10}, - {0x3809, 0x00}, - {0x380a, 0x0c}, - {0x380b, 0x00}, - {0x380c, 0x04}, - {0x380d, 0x1a}, - {0x380e, 0x0c}, - {0x380f, 0x66}, - {0x3810, 0x00}, - {0x3811, 0x08}, - {0x3812, 0x00}, - {0x3813, 0x04}, - {0x3814, 0x11}, - {0x3815, 0x11}, - {0x381a, 0x00}, - {0x381b, 0x00}, - {0x381e, 0x00}, - {0x381f, 0x00}, - {0x3820, 0x02}, - {0x3821, 0x06}, - {0x3822, 0x10}, - {0x3824, 0x00}, - {0x3825, 0x00}, - {0x3826, 0x00}, - {0x3827, 0x00}, - {0x3828, 0x07}, - {0x382a, 0x81}, - {0x382c, 0x00}, - {0x382d, 0x00}, - {0x3835, 0x00}, - {0x3836, 0x00}, - {0x383c, 0x00}, - {0x383d, 0x08}, - {0x3845, 0x04}, - {0x3846, 0x1a}, - {0x3847, 0x00}, - {0x3848, 0x00}, - {0x3849, 0x00}, - {0x384b, 0x8e}, - {0x384f, 0x00}, - {0x3856, 0x20}, - {0x3857, 0x10}, - {0x3858, 0x40}, - {0x3859, 0x20}, - {0x3865, 0x00}, - {0x3869, 0x00}, - {0x3902, 0x01}, - {0x3903, 0x08}, - {0x3905, 0x05}, - {0x3906, 0x00}, - {0x3909, 0x00}, - {0x390c, 0x00}, - {0x390f, 0x00}, - {0x3912, 0x00}, - {0x3915, 0x04}, - {0x3918, 0x04}, - {0x391b, 0x00}, - {0x391d, 0x02}, - {0x391e, 0x00}, - {0x3924, 0x02}, - {0x3927, 0x02}, - {0x392a, 0x02}, - {0x392d, 0x02}, - {0x3930, 0x02}, - {0x3933, 0x02}, - {0x3936, 0x02}, - {0x3939, 0x02}, - {0x393c, 0x02}, - {0x393f, 0x02}, - {0x3942, 0x02}, - {0x3945, 0x02}, - {0x3980, 0x37}, - {0x3981, 0x3a}, - {0x3982, 0x0c}, - {0x3983, 0x3b}, - {0x3990, 0x01}, - {0x399b, 0x02}, - {0x399c, 0x03}, - {0x39aa, 0x05}, - {0x39b1, 0x05}, - {0x39b3, 0x78}, - {0x39b6, 0x40}, - {0x39b7, 0x10}, - {0x39ba, 0x2f}, - {0x39bc, 0x2f}, - {0x39be, 0x2f}, - {0x39c0, 0x2f}, - {0x39c2, 0x5d}, - {0x39c4, 0x5d}, - {0x39c6, 0x5d}, - {0x39c8, 0x5d}, - {0x39c9, 0x01}, - {0x39cf, 0x00}, - {0x39d2, 0x00}, - {0x3a01, 0x1e}, - {0x3a12, 0x00}, - {0x3a13, 0x00}, - {0x3a14, 0x00}, - {0x3a18, 0x04}, - {0x3a36, 0x20}, - {0x3d85, 0x0b}, - {0x3d86, 0x00}, - {0x3d87, 0x12}, - {0x3d8c, 0x73}, - {0x3d8d, 0xd8}, - {0x3daa, 0x00}, - {0x3dab, 0x00}, - {0x3dac, 0x00}, - {0x3dad, 0x00}, - {0x3dae, 0x00}, - {0x3daf, 0x00}, - {0x3f01, 0x13}, - {0x3f9e, 0x03}, - {0x3f9f, 0x04}, - {0x4009, 0x01}, - {0x4010, 0x38}, - {0x4011, 0x01}, - {0x4012, 0x0d}, - {0x4015, 0x00}, - {0x4016, 0x0f}, - {0x4017, 0x00}, - {0x4018, 0x03}, - {0x401a, 0x40}, - {0x401b, 0x04}, - {0x401e, 0x00}, - {0x401f, 0xd0}, - {0x4020, 0x04}, - {0x4021, 0x00}, - {0x4022, 0x04}, - {0x4023, 0x00}, - {0x4024, 0x04}, - {0x4025, 0x00}, - {0x4026, 0x04}, - {0x4027, 0x00}, - {0x4030, 0x00}, - {0x4031, 0x00}, - {0x4032, 0x00}, - {0x4033, 0x04}, - {0x4034, 0x00}, - {0x4035, 0x04}, - {0x4036, 0x00}, - {0x4037, 0x04}, - {0x4040, 0x00}, - {0x4041, 0x00}, - {0x4042, 0x00}, - {0x4043, 0x00}, - {0x4044, 0x00}, - {0x4045, 0x00}, - {0x4046, 0x00}, - {0x4047, 0x00}, - {0x4056, 0x25}, - {0x4100, 0x00}, - {0x4103, 0x00}, - {0x4104, 0x00}, - {0x4300, 0x00}, - {0x4301, 0x00}, - {0x4302, 0x00}, - {0x4303, 0x00}, - {0x4304, 0x00}, - {0x4305, 0x00}, - {0x4306, 0x00}, - {0x4307, 0x00}, - {0x4308, 0x00}, - {0x430b, 0xff}, - {0x430c, 0xff}, - {0x430d, 0x00}, - {0x430e, 0x00}, - {0x4500, 0x04}, - {0x4503, 0x0f}, - {0x4507, 0x00}, - {0x4508, 0x00}, - {0x4510, 0x07}, - {0x4512, 0x00}, - {0x4513, 0x00}, - {0x4514, 0x00}, - {0x4515, 0x00}, - {0x4516, 0x55}, - {0x4517, 0x55}, - {0x4518, 0x55}, - {0x4519, 0x55}, - {0x451a, 0x11}, - {0x451b, 0xbb}, - {0x451c, 0x11}, - {0x451d, 0xbb}, - {0x451e, 0x11}, - {0x451f, 0xbb}, - {0x4520, 0x11}, - {0x4521, 0xbb}, - {0x460b, 0x01}, - {0x4640, 0x00}, - {0x4641, 0x7f}, - {0x4642, 0x42}, - {0x4643, 0x0c}, - {0x4648, 0x0a}, - {0x4649, 0x05}, - {0x4700, 0x0a}, - {0x4701, 0x0c}, - {0x4702, 0x0a}, - {0x4703, 0x0a}, - {0x4704, 0x12}, - {0x4705, 0x0a}, - {0x4706, 0x0c}, - {0x4707, 0x0a}, - {0x4708, 0x0a}, - {0x4709, 0x12}, - {0x470a, 0x0a}, - {0x470b, 0x0c}, - {0x470c, 0x0a}, - {0x470d, 0x0a}, - {0x470e, 0x12}, - {0x4720, 0x00}, - {0x4721, 0x00}, - {0x4723, 0x00}, - {0x4724, 0x00}, - {0x4725, 0x01}, - {0x4726, 0x01}, - {0x4748, 0x00}, - {0x4731, 0x0d}, - {0x4732, 0x0d}, - {0x4733, 0x0f}, - {0x4734, 0x0f}, - {0x4735, 0x0c}, - {0x4736, 0x04}, - {0x4737, 0x00}, - {0x4738, 0x0f}, - {0x4739, 0x0f}, - {0x473a, 0x0c}, - {0x473b, 0x04}, - {0x473c, 0x00}, - {0x473d, 0x0d}, - {0x473e, 0x0f}, - {0x473f, 0x0f}, - {0x4740, 0x0c}, - {0x4741, 0x04}, - {0x4742, 0x00}, - {0x4743, 0x0f}, - {0x4744, 0x55}, - {0x4745, 0xff}, - {0x4747, 0x00}, - {0x474e, 0x80}, - {0x4750, 0x01}, - {0x4753, 0x80}, - {0x4755, 0x01}, - {0x4757, 0x0b}, - {0x4759, 0x0b}, - {0x475b, 0x06}, - {0x475d, 0x03}, - {0x475f, 0x02}, - {0x4761, 0x07}, - {0x4763, 0x07}, - {0x4765, 0x04}, - {0x4767, 0x02}, - {0x4769, 0x01}, - {0x4800, 0x64}, - {0x4802, 0x00}, - {0x480b, 0x10}, - {0x480c, 0x80}, - {0x480e, 0x04},//0x04 - {0x480f, 0x32}, - {0x4815, 0x19}, - {0x481b, 0x3c}, - {0x481f, 0x32}, - {0x4837, 0x06}, - {0x484b, 0x27}, - {0x4850, 0x43}, - {0x4851, 0xaa}, - {0x4853, 0x4a}, - {0x4854, 0x06}, - {0x4860, 0x00}, - {0x4861, 0xec}, - {0x4862, 0x04}, - {0x4883, 0x00}, - {0x4888, 0x10}, - {0x4d00, 0x05}, - {0x4d01, 0x0e}, - {0x4d02, 0xb7}, - {0x4d03, 0x39}, - {0x4d04, 0xcd}, - {0x4d05, 0x4e}, - {0x5000, 0x8b}, - {0x5001, 0x23}, - {0x5002, 0x9d}, - {0x5003, 0xca}, - {0x5005, 0x00}, - {0x5006, 0x00}, - {0x5016, 0x00}, - {0x5017, 0x00}, - {0x5035, 0x18}, - {0x5037, 0x14}, - {0x5038, 0x0f}, - {0x5039, 0xe0}, - {0x503a, 0x0b}, - {0x503b, 0xe0}, - {0x504c, 0x12}, - {0x504d, 0x12}, - {0x504e, 0x12}, - {0x504f, 0x12}, - {0x5050, 0x12}, - {0x5051, 0x14}, - {0x5055, 0x12}, - {0x5081, 0x00}, - {0x5180, 0x70}, - {0x5181, 0x10}, - {0x5182, 0x00}, - {0x5183, 0x7f}, - {0x5184, 0x40}, - {0x5185, 0x2b}, - {0x5187, 0x88}, - {0x518c, 0x01}, - {0x518d, 0x01}, - {0x518e, 0x01}, - {0x518f, 0x01}, - {0x5190, 0x00}, - {0x5191, 0x00}, - {0x5192, 0x10}, - {0x5193, 0x0f}, - {0x5194, 0x00}, - {0x5195, 0x04}, - {0x5880, 0xc1}, - {0x588a, 0x04}, - {0x5c00, 0x63}, - {0x5c01, 0x04}, - {0x5c02, 0x00}, - {0x5c03, 0x3f}, - {0x5c04, 0x00}, - {0x5c05, 0x54}, - {0x5c0e, 0x01}, - {0x5c0f, 0x00}, - {0x5c10, 0x01}, - {0x5c11, 0x00}, - {0x5c12, 0x01}, - {0x5c13, 0x00}, - {0x5c14, 0x01}, - {0x5c15, 0x00}, - {0x5c16, 0x00}, - {0x5c17, 0x50}, - {0x5c18, 0x00}, - {0x5c19, 0x50}, - {0x5c1a, 0x00}, - {0x5c1b, 0x50}, - {0x5c1c, 0x00}, - {0x5c1d, 0x50}, - {0x5c1e, 0x00}, - {0x5c1f, 0x50}, - {0x5c20, 0x00}, - {0x5c21, 0x50}, - {0x5c22, 0x00}, - {0x5c23, 0x50}, - {0x5c24, 0x00}, - {0x5c25, 0x50}, - {0x5c26, 0x00}, - {0x5c27, 0x50}, - {0x5c28, 0x00}, - {0x5c29, 0x50}, - {0x5c2a, 0x00}, - {0x5c2b, 0x50}, - {0x5c2c, 0x00}, - {0x5c2d, 0x50}, - {0x5c44, 0x02}, - {0x5c45, 0x0a}, - {0x5c46, 0x00}, - {0x5c47, 0x07}, - {0x5c48, 0x0f}, - {0x5c49, 0x01}, - {0x5c4a, 0x00}, - {0x5c4b, 0x09}, - {0x5c4c, 0x06}, - {0x5c4d, 0x0e}, - {0x5c4e, 0x00}, - {0x5c4f, 0x00}, - {0x5c50, 0x00}, - {0x5c51, 0x00}, - {0x5c52, 0x00}, - {0x5c53, 0x00}, - {0x5c54, 0x10}, - {0x5c55, 0x08}, - {0x5c56, 0x04}, - {0x5c57, 0x04}, - {0x5c58, 0x0c}, - {0x5c59, 0x0c}, - {0x5c5a, 0x02}, - {0x5c5b, 0x02}, - {0x5c5c, 0x06}, - {0x5c5d, 0x06}, - {0x5c5e, 0x01}, - {0x5c5f, 0x00}, - {0x5c60, 0x00}, - {0x5c61, 0x30}, - {0x5c62, 0x00}, - {0x5c63, 0x30}, - {0x5c64, 0x1f}, - {0x5c65, 0xc0}, - {0x5c66, 0x17}, - {0x5c67, 0xc0}, - {0x5c68, 0x02}, - {0x5c69, 0x02}, - {0x5c6a, 0x02}, - {0x5c6b, 0x02}, - {0x5c90, 0x01}, - {0x5d00, 0xc2}, - {0x5d01, 0x68}, - {0x5d02, 0xff}, - {0x5d03, 0x1c}, - {0x5d05, 0x02}, - {0x5d06, 0x04}, - {0x5d07, 0x11}, - {0x5d08, 0x08}, - {0x5d09, 0x08}, - {0x5d0a, 0x02}, - {0x5d0b, 0x02}, - {0x5d0c, 0x06}, - {0x5d0d, 0x06}, - {0x5d0e, 0x02}, - {0x5d0f, 0x02}, - {0x5d10, 0x06}, - {0x5d11, 0x06}, - {0x5d12, 0x00}, - {0x5d13, 0x00}, - {0x5d14, 0xff}, - {0x5d15, 0x10}, - {0x5d16, 0x10}, - {0x5d17, 0x10}, - {0x5d18, 0x10}, - {0x5d19, 0xff}, - {0x5d1a, 0x10}, - {0x5d1b, 0x10}, - {0x5d1c, 0x10}, - {0x5d1d, 0x10}, - {0x5d1e, 0x01}, - {0x5d1f, 0x02}, - {0x5d20, 0x04}, - {0x5d21, 0xaa}, - {0x5d34, 0x00}, - {0x5d35, 0x30}, - {0x5d36, 0x00}, - {0x5d37, 0x30}, - {0x5d38, 0x1f}, - {0x5d39, 0xc0}, - {0x5d3a, 0x17}, - {0x5d3b, 0xc0}, - {0x5d3d, 0x08}, - {0x5d40, 0x00}, - {0x5d41, 0x00}, - {0x5d45, 0x05}, - {REG_NULL, 0x00}, -}; - static const struct regval ov50c40_10bit_4096x3072_dphy_30fps_nopd_regs[] = { {0x0103, 0x01}, {0x5900, 0x40}, @@ -3307,6 +2704,611 @@ static const struct regval ov50c40_10bit_4096x3072_dphy_30fps_nopd_regs[] = { {0x5d45, 0x05}, {REG_NULL, 0x00}, }; +#endif + +static const struct regval ov50c40_10bit_4096x3072_dphy_30fps_regs[] = { + {0x0103, 0x01}, + {0x0301, 0xc8}, + {0x0304, 0x02}, + {0x0305, 0x71}, + {0x0306, 0x04}, + {0x0324, 0x02}, + {0x0325, 0x58}, + {0x0326, 0xcb}, + {0x0327, 0x05}, + {0x0328, 0x07}, + {0x032a, 0x0a}, + {0x0344, 0x01}, + {0x0345, 0x4a}, + {0x0350, 0x00}, + {0x0360, 0x09}, + {0x3002, 0x00}, + {0x3009, 0x04}, + {0x3012, 0x41}, + {0x3019, 0xc2}, + {0x301c, 0x81}, + {0x3025, 0x03}, + {0x3026, 0x10}, + {0x3027, 0x00}, + {0x3107, 0x48}, + {0x3400, 0x0c}, + {0x3409, 0x03}, + {0x340c, 0x10}, + {0x340d, 0x00}, + {0x3420, 0x11}, + {0x3421, 0x08}, + {0x3423, 0x15}, + {0x3424, 0x40}, + {0x3425, 0x10}, + {0x3426, 0x40}, + {0x3500, 0x00}, + {0x3501, 0x0c}, + {0x3502, 0x16}, + {0x3504, 0x28}, + {0x3507, 0x00}, + {0x3508, 0x01}, + {0x3509, 0x00}, + {0x350a, 0x01}, + {0x350b, 0x00}, + {0x350c, 0x00}, + {0x350e, 0x00}, + {0x3540, 0x00}, + {0x3541, 0x00}, + {0x3542, 0x00}, + {0x3548, 0x01}, + {0x3549, 0x00}, + {0x354a, 0x01}, + {0x354b, 0x00}, + {0x354c, 0x00}, + {0x3607, 0x01}, + {0x3608, 0xda}, + {0x360c, 0x03}, + {0x360e, 0x1d}, + {0x3618, 0x80}, + {0x361b, 0x80}, + {0x3622, 0x88}, + {0x3623, 0x33}, + {0x3624, 0x95}, + {0x3627, 0xcc}, + {0x3628, 0xaa}, + {0x362b, 0x08}, + {0x362d, 0x08}, + {0x363b, 0x80}, + {0x363d, 0x0c}, + {0x3680, 0xc0}, + {0x3684, 0x03},//0x03 + {0x368d, 0x00}, + {0x368e, 0x01}, + {0x3690, 0x10}, + {0x3697, 0x80}, + {0x3699, 0x1f}, + {0x369b, 0x10}, + {0x369c, 0x19}, + {0x369d, 0x40}, + {0x369e, 0x00}, + {0x36a1, 0x00}, + {0x3700, 0x28}, + {0x3701, 0x05}, + {0x3702, 0x4b}, + {0x3703, 0x27}, + {0x3704, 0x07}, + {0x3706, 0x2f}, + {0x3707, 0x08}, + {0x3708, 0x32}, + {0x3709, 0x69}, + {0x370b, 0x5d}, + {0x370c, 0x0f}, + {0x3711, 0x00}, + {0x3712, 0x50}, + {0x3714, 0x67}, + {0x3715, 0x00}, + {0x3717, 0x03}, + {0x371c, 0x04}, + {0x371d, 0x1e}, + {0x371e, 0x13}, + {0x371f, 0x0a}, + {0x3720, 0x08}, + {0x3721, 0x15}, + {0x3725, 0x32}, + {0x3727, 0x22}, + {0x3729, 0x01}, + {0x3731, 0x05}, + {0x3736, 0x02}, + {0x3737, 0x05}, + {0x3738, 0x02}, + {0x3739, 0x05}, + {0x373b, 0x3c}, + {0x373d, 0x40}, + {0x3741, 0x41}, + {0x3754, 0xee}, + {0x375f, 0x80}, + {0x3760, 0x08}, + {0x3761, 0x10}, + {0x3762, 0x08}, + {0x3763, 0x08}, + {0x3764, 0x08}, + {0x3765, 0x10}, + {0x3766, 0x18}, + {0x3767, 0x28}, + {0x3768, 0x00}, + {0x3769, 0x08}, + {0x376c, 0x00}, + {0x376f, 0x02}, + {0x3770, 0x3b}, + {0x379e, 0x3b}, + {0x379f, 0x3b}, + {0x37b0, 0x37}, + {0x37b1, 0x37}, + {0x37b2, 0x37}, + {0x37b3, 0x3b}, + {0x37b4, 0x3a}, + {0x37b5, 0x3a}, + {0x37ce, 0x02}, + {0x37cf, 0x05}, + {0x37d6, 0x00}, + {0x37d9, 0x00}, + {0x37dc, 0x43}, + {0x37ed, 0x02}, + {0x37ee, 0x05}, + {0x37f0, 0x02}, + {0x37f1, 0x05}, + {0x37f2, 0x02}, + {0x37f3, 0x05}, + {0x37f4, 0x00}, + {0x3800, 0x00}, + {0x3801, 0x00}, + {0x3802, 0x00}, + {0x3803, 0x08}, + {0x3804, 0x20}, + {0x3805, 0x1f}, + {0x3806, 0x18}, + {0x3807, 0x17}, + {0x3808, 0x10}, + {0x3809, 0x00}, + {0x380a, 0x0c}, + {0x380b, 0x00}, + {0x380c, 0x04}, + {0x380d, 0x1a}, + {0x380e, 0x0c}, + {0x380f, 0x66}, + {0x3810, 0x00}, + {0x3811, 0x08}, + {0x3812, 0x00}, + {0x3813, 0x04}, + {0x3814, 0x11}, + {0x3815, 0x11}, + {0x381a, 0x00}, + {0x381b, 0x00}, + {0x381e, 0x00}, + {0x381f, 0x00}, + {0x3820, 0x02}, + {0x3821, 0x06}, + {0x3822, 0x10}, + {0x3824, 0x00}, + {0x3825, 0x00}, + {0x3826, 0x00}, + {0x3827, 0x00}, + {0x3828, 0x07}, + {0x382a, 0x81}, + {0x382c, 0x00}, + {0x382d, 0x00}, + {0x3835, 0x00}, + {0x3836, 0x00}, + {0x383c, 0x00}, + {0x383d, 0x08}, + {0x3845, 0x04}, + {0x3846, 0x1a}, + {0x3847, 0x00}, + {0x3848, 0x00}, + {0x3849, 0x00}, + {0x384b, 0x8e}, + {0x384f, 0x00}, + {0x3856, 0x20}, + {0x3857, 0x10}, + {0x3858, 0x40}, + {0x3859, 0x20}, + {0x3865, 0x00}, + {0x3869, 0x00}, + {0x3902, 0x01}, + {0x3903, 0x08}, + {0x3905, 0x05}, + {0x3906, 0x00}, + {0x3909, 0x00}, + {0x390c, 0x00}, + {0x390f, 0x00}, + {0x3912, 0x00}, + {0x3915, 0x04}, + {0x3918, 0x04}, + {0x391b, 0x00}, + {0x391d, 0x02}, + {0x391e, 0x00}, + {0x3924, 0x02}, + {0x3927, 0x02}, + {0x392a, 0x02}, + {0x392d, 0x02}, + {0x3930, 0x02}, + {0x3933, 0x02}, + {0x3936, 0x02}, + {0x3939, 0x02}, + {0x393c, 0x02}, + {0x393f, 0x02}, + {0x3942, 0x02}, + {0x3945, 0x02}, + {0x3980, 0x37}, + {0x3981, 0x3a}, + {0x3982, 0x0c}, + {0x3983, 0x3b}, + {0x3990, 0x01}, + {0x399b, 0x02}, + {0x399c, 0x03}, + {0x39aa, 0x05}, + {0x39b1, 0x05}, + {0x39b3, 0x78}, + {0x39b6, 0x40}, + {0x39b7, 0x10}, + {0x39ba, 0x2f}, + {0x39bc, 0x2f}, + {0x39be, 0x2f}, + {0x39c0, 0x2f}, + {0x39c2, 0x5d}, + {0x39c4, 0x5d}, + {0x39c6, 0x5d}, + {0x39c8, 0x5d}, + {0x39c9, 0x01}, + {0x39cf, 0x00}, + {0x39d2, 0x00}, + {0x3a01, 0x1e}, + {0x3a12, 0x00}, + {0x3a13, 0x00}, + {0x3a14, 0x00}, + {0x3a18, 0x04}, + {0x3a36, 0x20}, + {0x3d85, 0x0b}, + {0x3d86, 0x00}, + {0x3d87, 0x12}, + {0x3d8c, 0x73}, + {0x3d8d, 0xd8}, + {0x3daa, 0x00}, + {0x3dab, 0x00}, + {0x3dac, 0x00}, + {0x3dad, 0x00}, + {0x3dae, 0x00}, + {0x3daf, 0x00}, + {0x3f01, 0x13}, + {0x3f9e, 0x03}, + {0x3f9f, 0x04}, + {0x4009, 0x01}, + {0x4010, 0x38}, + {0x4011, 0x01}, + {0x4012, 0x0d}, + {0x4015, 0x00}, + {0x4016, 0x0f}, + {0x4017, 0x00}, + {0x4018, 0x03}, + {0x401a, 0x40}, + {0x401b, 0x04}, + {0x401e, 0x00}, + {0x401f, 0xd0}, + {0x4020, 0x04}, + {0x4021, 0x00}, + {0x4022, 0x04}, + {0x4023, 0x00}, + {0x4024, 0x04}, + {0x4025, 0x00}, + {0x4026, 0x04}, + {0x4027, 0x00}, + {0x4030, 0x00}, + {0x4031, 0x00}, + {0x4032, 0x00}, + {0x4033, 0x04}, + {0x4034, 0x00}, + {0x4035, 0x04}, + {0x4036, 0x00}, + {0x4037, 0x04}, + {0x4040, 0x00}, + {0x4041, 0x00}, + {0x4042, 0x00}, + {0x4043, 0x00}, + {0x4044, 0x00}, + {0x4045, 0x00}, + {0x4046, 0x00}, + {0x4047, 0x00}, + {0x4056, 0x25}, + {0x4100, 0x00}, + {0x4103, 0x00}, + {0x4104, 0x00}, + {0x4300, 0x00}, + {0x4301, 0x00}, + {0x4302, 0x00}, + {0x4303, 0x00}, + {0x4304, 0x00}, + {0x4305, 0x00}, + {0x4306, 0x00}, + {0x4307, 0x00}, + {0x4308, 0x00}, + {0x430b, 0xff}, + {0x430c, 0xff}, + {0x430d, 0x00}, + {0x430e, 0x00}, + {0x4500, 0x04}, + {0x4503, 0x0f}, + {0x4507, 0x00}, + {0x4508, 0x00}, + {0x4510, 0x07}, + {0x4512, 0x00}, + {0x4513, 0x00}, + {0x4514, 0x00}, + {0x4515, 0x00}, + {0x4516, 0x55}, + {0x4517, 0x55}, + {0x4518, 0x55}, + {0x4519, 0x55}, + {0x451a, 0x11}, + {0x451b, 0xbb}, + {0x451c, 0x11}, + {0x451d, 0xbb}, + {0x451e, 0x11}, + {0x451f, 0xbb}, + {0x4520, 0x11}, + {0x4521, 0xbb}, + {0x460b, 0x01}, + {0x4640, 0x00}, + {0x4641, 0x7f}, + {0x4642, 0x42}, + {0x4643, 0x0c}, + {0x4648, 0x0a}, + {0x4649, 0x05}, + {0x4700, 0x0a}, + {0x4701, 0x0c}, + {0x4702, 0x0a}, + {0x4703, 0x0a}, + {0x4704, 0x12}, + {0x4705, 0x0a}, + {0x4706, 0x0c}, + {0x4707, 0x0a}, + {0x4708, 0x0a}, + {0x4709, 0x12}, + {0x470a, 0x0a}, + {0x470b, 0x0c}, + {0x470c, 0x0a}, + {0x470d, 0x0a}, + {0x470e, 0x12}, + {0x4720, 0x00}, + {0x4721, 0x00}, + {0x4723, 0x00}, + {0x4724, 0x00}, + {0x4725, 0x01}, + {0x4726, 0x01}, + {0x4748, 0x00}, + {0x4731, 0x0d}, + {0x4732, 0x0d}, + {0x4733, 0x0f}, + {0x4734, 0x0f}, + {0x4735, 0x0c}, + {0x4736, 0x04}, + {0x4737, 0x00}, + {0x4738, 0x0f}, + {0x4739, 0x0f}, + {0x473a, 0x0c}, + {0x473b, 0x04}, + {0x473c, 0x00}, + {0x473d, 0x0d}, + {0x473e, 0x0f}, + {0x473f, 0x0f}, + {0x4740, 0x0c}, + {0x4741, 0x04}, + {0x4742, 0x00}, + {0x4743, 0x0f}, + {0x4744, 0x55}, + {0x4745, 0xff}, + {0x4747, 0x00}, + {0x474e, 0x80}, + {0x4750, 0x01}, + {0x4753, 0x80}, + {0x4755, 0x01}, + {0x4757, 0x0b}, + {0x4759, 0x0b}, + {0x475b, 0x06}, + {0x475d, 0x03}, + {0x475f, 0x02}, + {0x4761, 0x07}, + {0x4763, 0x07}, + {0x4765, 0x04}, + {0x4767, 0x02}, + {0x4769, 0x01}, + {0x4800, 0x64}, + {0x4802, 0x00}, + {0x480b, 0x10}, + {0x480c, 0x80}, + {0x480e, 0x04},//0x04 + {0x480f, 0x32}, + {0x4815, 0x19}, + {0x481b, 0x3c}, + {0x481f, 0x32}, + {0x4837, 0x06}, + {0x484b, 0x27}, + {0x4850, 0x43}, + {0x4851, 0xaa}, + {0x4853, 0x4a}, + {0x4854, 0x06}, + {0x4860, 0x00}, + {0x4861, 0xec}, + {0x4862, 0x04}, + {0x4883, 0x00}, + {0x4888, 0x10}, + {0x4d00, 0x05}, + {0x4d01, 0x0e}, + {0x4d02, 0xb7}, + {0x4d03, 0x39}, + {0x4d04, 0xcd}, + {0x4d05, 0x4e}, + {0x5000, 0x8b}, + {0x5001, 0x23}, + {0x5002, 0x9d}, + {0x5003, 0xca}, + {0x5005, 0x00}, + {0x5006, 0x00}, + {0x5016, 0x00}, + {0x5017, 0x00}, + {0x5035, 0x18}, + {0x5037, 0x14}, + {0x5038, 0x0f}, + {0x5039, 0xe0}, + {0x503a, 0x0b}, + {0x503b, 0xe0}, + {0x504c, 0x12}, + {0x504d, 0x12}, + {0x504e, 0x12}, + {0x504f, 0x12}, + {0x5050, 0x12}, + {0x5051, 0x14}, + {0x5055, 0x12}, + {0x5081, 0x00}, + {0x5180, 0x70}, + {0x5181, 0x10}, + {0x5182, 0x00}, + {0x5183, 0x7f}, + {0x5184, 0x40}, + {0x5185, 0x2b}, + {0x5187, 0x88}, + {0x518c, 0x01}, + {0x518d, 0x01}, + {0x518e, 0x01}, + {0x518f, 0x01}, + {0x5190, 0x00}, + {0x5191, 0x00}, + {0x5192, 0x10}, + {0x5193, 0x0f}, + {0x5194, 0x00}, + {0x5195, 0x04}, + {0x5880, 0xc1}, + {0x588a, 0x04}, + {0x5c00, 0x63}, + {0x5c01, 0x04}, + {0x5c02, 0x00}, + {0x5c03, 0x3f}, + {0x5c04, 0x00}, + {0x5c05, 0x54}, + {0x5c0e, 0x01}, + {0x5c0f, 0x00}, + {0x5c10, 0x01}, + {0x5c11, 0x00}, + {0x5c12, 0x01}, + {0x5c13, 0x00}, + {0x5c14, 0x01}, + {0x5c15, 0x00}, + {0x5c16, 0x00}, + {0x5c17, 0x50}, + {0x5c18, 0x00}, + {0x5c19, 0x50}, + {0x5c1a, 0x00}, + {0x5c1b, 0x50}, + {0x5c1c, 0x00}, + {0x5c1d, 0x50}, + {0x5c1e, 0x00}, + {0x5c1f, 0x50}, + {0x5c20, 0x00}, + {0x5c21, 0x50}, + {0x5c22, 0x00}, + {0x5c23, 0x50}, + {0x5c24, 0x00}, + {0x5c25, 0x50}, + {0x5c26, 0x00}, + {0x5c27, 0x50}, + {0x5c28, 0x00}, + {0x5c29, 0x50}, + {0x5c2a, 0x00}, + {0x5c2b, 0x50}, + {0x5c2c, 0x00}, + {0x5c2d, 0x50}, + {0x5c44, 0x02}, + {0x5c45, 0x0a}, + {0x5c46, 0x00}, + {0x5c47, 0x07}, + {0x5c48, 0x0f}, + {0x5c49, 0x01}, + {0x5c4a, 0x00}, + {0x5c4b, 0x09}, + {0x5c4c, 0x06}, + {0x5c4d, 0x0e}, + {0x5c4e, 0x00}, + {0x5c4f, 0x00}, + {0x5c50, 0x00}, + {0x5c51, 0x00}, + {0x5c52, 0x00}, + {0x5c53, 0x00}, + {0x5c54, 0x10}, + {0x5c55, 0x08}, + {0x5c56, 0x04}, + {0x5c57, 0x04}, + {0x5c58, 0x0c}, + {0x5c59, 0x0c}, + {0x5c5a, 0x02}, + {0x5c5b, 0x02}, + {0x5c5c, 0x06}, + {0x5c5d, 0x06}, + {0x5c5e, 0x01}, + {0x5c5f, 0x00}, + {0x5c60, 0x00}, + {0x5c61, 0x30}, + {0x5c62, 0x00}, + {0x5c63, 0x30}, + {0x5c64, 0x1f}, + {0x5c65, 0xc0}, + {0x5c66, 0x17}, + {0x5c67, 0xc0}, + {0x5c68, 0x02}, + {0x5c69, 0x02}, + {0x5c6a, 0x02}, + {0x5c6b, 0x02}, + {0x5c90, 0x01}, + {0x5d00, 0xc2}, + {0x5d01, 0x68}, + {0x5d02, 0xff}, + {0x5d03, 0x1c}, + {0x5d05, 0x02}, + {0x5d06, 0x04}, + {0x5d07, 0x11}, + {0x5d08, 0x08}, + {0x5d09, 0x08}, + {0x5d0a, 0x02}, + {0x5d0b, 0x02}, + {0x5d0c, 0x06}, + {0x5d0d, 0x06}, + {0x5d0e, 0x02}, + {0x5d0f, 0x02}, + {0x5d10, 0x06}, + {0x5d11, 0x06}, + {0x5d12, 0x00}, + {0x5d13, 0x00}, + {0x5d14, 0xff}, + {0x5d15, 0x10}, + {0x5d16, 0x10}, + {0x5d17, 0x10}, + {0x5d18, 0x10}, + {0x5d19, 0xff}, + {0x5d1a, 0x10}, + {0x5d1b, 0x10}, + {0x5d1c, 0x10}, + {0x5d1d, 0x10}, + {0x5d1e, 0x01}, + {0x5d1f, 0x02}, + {0x5d20, 0x04}, + {0x5d21, 0xaa}, + {0x5d34, 0x00}, + {0x5d35, 0x30}, + {0x5d36, 0x00}, + {0x5d37, 0x30}, + {0x5d38, 0x1f}, + {0x5d39, 0xc0}, + {0x5d3a, 0x17}, + {0x5d3b, 0xc0}, + {0x5d3d, 0x08}, + {0x5d40, 0x00}, + {0x5d41, 0x00}, + {0x5d45, 0x05}, + {REG_NULL, 0x00}, +}; static const struct regval ov50c40_10bit_8192x6144_dphy_12fps_regs[] = { {0x0103, 0x01}, @@ -5750,24 +5752,6 @@ static const struct ov50c40_mode supported_modes_dphy[] = { .spd = &ov50c40_spd, .vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0, }, - { - .bus_fmt = MEDIA_BUS_FMT_SGBRG10_1X10, - .width = 4096, - .height = 3072, - .max_fps = { - .numerator = 10000, - .denominator = 150000, - }, - .exp_def = 0x0240, - .hts_def = 0x0834 * 4, - .vts_def = 0x0c66, - .mipi_freq_idx = 1, - .bpp = 10, - .reg_list = ov50c40_10bit_4096x3072_dphy_regs, - .hdr_mode = NO_HDR, - .spd = &ov50c40_spd, - .vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0, - }, { .bus_fmt = MEDIA_BUS_FMT_SGBRG10_1X10, .width = 8192, @@ -5786,6 +5770,25 @@ static const struct ov50c40_mode supported_modes_dphy[] = { .spd = &ov50c40_spd, .vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0, }, +#ifdef DEBUG + { + .bus_fmt = MEDIA_BUS_FMT_SGBRG10_1X10, + .width = 4096, + .height = 3072, + .max_fps = { + .numerator = 10000, + .denominator = 150000, + }, + .exp_def = 0x0240, + .hts_def = 0x0834 * 4, + .vts_def = 0x0c66, + .mipi_freq_idx = 1, + .bpp = 10, + .reg_list = ov50c40_10bit_4096x3072_dphy_regs, + .hdr_mode = NO_HDR, + .spd = &ov50c40_spd, + .vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0, + }, { .bus_fmt = MEDIA_BUS_FMT_SGBRG10_1X10, .width = 8192, @@ -5821,6 +5824,7 @@ static const struct ov50c40_mode supported_modes_dphy[] = { .hdr_mode = NO_HDR, .vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0, }, +#endif }; static const struct ov50c40_mode supported_modes_cphy[] = { @@ -6039,6 +6043,7 @@ static int ov50c40_set_fmt(struct v4l2_subdev *sd, __v4l2_ctrl_modify_range(ov50c40->vblank, vblank_def, OV50C40_VTS_MAX - mode->height, 1, vblank_def); + __v4l2_ctrl_s_ctrl(ov50c40->vblank, vblank_def); pixel_rate = (u32)link_freq_items[mode->mipi_freq_idx] / mode->bpp * 2 * lane_num; __v4l2_ctrl_s_ctrl_int64(ov50c40->pixel_rate, pixel_rate);