mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
media: i2c: os12d40 support 2256x1256@30fps
Change-Id: I60f32208f1ebce130a225666b785bab80862b08c Signed-off-by: Zefa Chen <zefa.chen@rock-chips.com>
This commit is contained in:
@@ -98,7 +98,6 @@
|
||||
#define OF_CAMERA_PINCTRL_STATE_SLEEP "rockchip,camera_sleep"
|
||||
|
||||
#define OS12D40_NAME "os12d40"
|
||||
#define OS12D40_MEDIA_BUS_FMT MEDIA_BUS_FMT_SBGGR10_1X10
|
||||
|
||||
#define USE_4_CELL (1)
|
||||
|
||||
@@ -127,6 +126,7 @@ struct regval {
|
||||
};
|
||||
|
||||
struct os12d40_mode {
|
||||
u32 bus_fmt;
|
||||
u32 width;
|
||||
u32 height;
|
||||
struct v4l2_fract max_fps;
|
||||
@@ -1129,9 +1129,823 @@ static const struct regval os12d40_4512x2512_regs_4lane[] = {
|
||||
{REG_NULL, 0x00},
|
||||
};
|
||||
|
||||
static const struct regval os12d40_2256x1256_regs_4lane[] = {
|
||||
// Sysclk 90Mhz, MIPI4_996Mbps/Lane, 30Fps.
|
||||
//Line_length =1080, Frame_length =2776
|
||||
{0x0103, 0x01},
|
||||
{0x0301, 0x80},
|
||||
{0x0302, 0x01},
|
||||
{0x0304, 0x01},
|
||||
{0x0305, 0xf0},
|
||||
{0x0306, 0x04},
|
||||
{0x0307, 0x01},
|
||||
{0x0309, 0x00},
|
||||
{0x0320, 0x20},
|
||||
{0x0324, 0x01},
|
||||
{0x0325, 0xc2},
|
||||
{0x0326, 0xd3},
|
||||
{0x032b, 0x06},
|
||||
{0x0344, 0x01},
|
||||
{0x0345, 0xb8},
|
||||
{0x0346, 0xcb},
|
||||
{0x0350, 0x02},
|
||||
{0x0360, 0x09},
|
||||
{0x3002, 0x80},
|
||||
{0x300d, 0x11},
|
||||
{0x300e, 0x11},
|
||||
{0x3012, 0x41},
|
||||
{0x3016, 0xf0},
|
||||
{0x3017, 0xd0},
|
||||
{0x3018, 0xf0},
|
||||
{0x3019, 0xc2},
|
||||
{0x301a, 0xf0},
|
||||
{0x301b, 0x34},
|
||||
{0x301c, 0x91},
|
||||
{0x301d, 0x02},
|
||||
{0x301e, 0x98},
|
||||
{0x301f, 0x21},
|
||||
{0x3022, 0xf0},
|
||||
{0x3027, 0x2e},
|
||||
{0x302c, 0x01},
|
||||
{0x302d, 0x00},
|
||||
{0x302e, 0x00},
|
||||
{0x302f, 0x00},
|
||||
{0x3030, 0x03},
|
||||
{0x3044, 0xc2},
|
||||
{0x304b, 0x00},
|
||||
{0x30d4, 0x00},
|
||||
{0x3209, 0x00},
|
||||
{0x320a, 0x00},
|
||||
{0x320b, 0x00},
|
||||
{0x320c, 0x00},
|
||||
{0x320d, 0x01},
|
||||
{0x3216, 0x01},
|
||||
{0x3218, 0x80},
|
||||
{0x33c0, 0x00},
|
||||
{0x33c3, 0x00},
|
||||
{0x33c4, 0x00},
|
||||
{0x3400, 0x04},
|
||||
{0x3408, 0x05},
|
||||
{0x340c, 0x10},
|
||||
{0x340e, 0x30},
|
||||
{0x3421, 0x08},
|
||||
{0x3422, 0x00},
|
||||
{0x3423, 0x15},
|
||||
{0x3424, 0x40},
|
||||
{0x3425, 0x10},
|
||||
{0x3426, 0x20},
|
||||
{0x3500, 0x00},
|
||||
{0x3501, 0x05},
|
||||
{0x3502, 0x60},
|
||||
{0x3504, 0x08},
|
||||
{0x3508, 0x01},
|
||||
{0x3509, 0x00},
|
||||
{0x350a, 0x01},
|
||||
{0x350b, 0x00},
|
||||
{0x350c, 0x00},
|
||||
{0x350e, 0x00},
|
||||
{0x3510, 0x01},
|
||||
{0x3511, 0x00},
|
||||
{0x3512, 0x00},
|
||||
{0x3513, 0x01},
|
||||
{0x3514, 0x00},
|
||||
{0x3515, 0x00},
|
||||
{0x3516, 0x01},
|
||||
{0x3517, 0x00},
|
||||
{0x3518, 0x00},
|
||||
{0x352d, 0x00},
|
||||
{0x352e, 0x00},
|
||||
{0x352f, 0x00},
|
||||
{0x3541, 0x00},
|
||||
{0x3542, 0x40},
|
||||
{0x3548, 0x01},
|
||||
{0x3549, 0x00},
|
||||
{0x354a, 0x01},
|
||||
{0x354b, 0x00},
|
||||
{0x354c, 0x00},
|
||||
{0x354e, 0x00},
|
||||
{0x3550, 0x01},
|
||||
{0x3551, 0x00},
|
||||
{0x3552, 0x00},
|
||||
{0x3581, 0x00},
|
||||
{0x3582, 0x40},
|
||||
{0x3588, 0x01},
|
||||
{0x3589, 0x00},
|
||||
{0x358a, 0x01},
|
||||
{0x358b, 0x00},
|
||||
{0x358c, 0x00},
|
||||
{0x3590, 0x01},
|
||||
{0x3591, 0x00},
|
||||
{0x3592, 0x00},
|
||||
{0x3610, 0x80},
|
||||
{0x3615, 0x27},
|
||||
{0x3617, 0x5a},
|
||||
{0x3624, 0x88},
|
||||
{0x3628, 0x77},
|
||||
{0x3644, 0x20},
|
||||
{0x3652, 0x00},
|
||||
{0x3653, 0x00},
|
||||
{0x3663, 0x6b},
|
||||
{0x3660, 0x4f},
|
||||
{0x3661, 0xd0},
|
||||
{0x3662, 0x09},
|
||||
{0x3680, 0xc1},
|
||||
{0x3683, 0x80},
|
||||
{0x3684, 0x03},
|
||||
{0x3685, 0x52},
|
||||
{0x3687, 0xd2},
|
||||
{0x3689, 0x27},
|
||||
{0x368a, 0x38},
|
||||
{0x368b, 0x08},
|
||||
{0x368c, 0x06},
|
||||
{0x368e, 0x00},
|
||||
{0x3692, 0x00},
|
||||
{0x3693, 0x00},
|
||||
{0x3696, 0x26},
|
||||
{0x3697, 0x1f},
|
||||
{0x3698, 0x1d},
|
||||
{0x3699, 0x59},
|
||||
{0x369a, 0x01},
|
||||
{0x369b, 0x20},
|
||||
{0x3700, 0x2e},
|
||||
{0x3701, 0x06},
|
||||
{0x3702, 0x4f},
|
||||
{0x3703, 0x28},
|
||||
{0x3704, 0x07},
|
||||
{0x3705, 0x00},
|
||||
{0x3706, 0x2f},
|
||||
{0x3707, 0x08},
|
||||
{0x3708, 0x2d},
|
||||
{0x3709, 0x5d},
|
||||
{0x370a, 0x00},
|
||||
{0x370b, 0x69},
|
||||
{0x370c, 0x0c},
|
||||
{0x3711, 0x30},
|
||||
{0x3712, 0x00},
|
||||
{0x3713, 0x00},
|
||||
{0x3714, 0x63},
|
||||
{0x371a, 0x1c},
|
||||
{0x371b, 0xd0},
|
||||
{0x371c, 0x04},
|
||||
{0x371d, 0x24},
|
||||
{0x371e, 0x13},
|
||||
{0x371f, 0x0c},
|
||||
{0x3720, 0x08},
|
||||
{0x3721, 0x15},
|
||||
{0x3724, 0x08},
|
||||
{0x3725, 0x32},
|
||||
{0x3727, 0x22},
|
||||
{0x3728, 0x11},
|
||||
{0x3729, 0x00},
|
||||
{0x372a, 0x00},
|
||||
{0x372b, 0x00},
|
||||
{0x3752, 0x02},
|
||||
{0x3753, 0x03},
|
||||
{0x3754, 0xee},
|
||||
{0x3760, 0x04},
|
||||
{0x3761, 0x14},
|
||||
{0x3762, 0x04},
|
||||
{0x3765, 0x08},
|
||||
{0x3766, 0x0c},
|
||||
{0x3767, 0x00},
|
||||
{0x376a, 0x00},
|
||||
{0x376b, 0x00},
|
||||
{0x376d, 0x1b},
|
||||
{0x376f, 0x02},
|
||||
{0x37d9, 0x08},
|
||||
{0x37f6, 0x07},
|
||||
{0x37f7, 0x04},
|
||||
{0x37f8, 0x2d},
|
||||
{0x37f9, 0x02},
|
||||
{0x37fa, 0x02},
|
||||
{0x37fb, 0x02},
|
||||
{0x3800, 0x00},
|
||||
{0x3801, 0x00},
|
||||
{0x3802, 0x00},
|
||||
{0x3803, 0x40},
|
||||
{0x3804, 0x12},
|
||||
{0x3805, 0x1f},
|
||||
{0x3806, 0x0a},
|
||||
{0x3807, 0x1f},
|
||||
{0x3808, 0x08},
|
||||
{0x3809, 0xd0},
|
||||
{0x380a, 0x04},
|
||||
{0x380b, 0xe8},
|
||||
{0x380c, 0x04},
|
||||
{0x380d, 0x38},
|
||||
{0x380e, 0x0a},
|
||||
{0x380f, 0xd8},
|
||||
{0x3810, 0x00},
|
||||
{0x3811, 0x21},
|
||||
{0x3812, 0x00},
|
||||
{0x3813, 0x04},
|
||||
{0x3814, 0x22},
|
||||
{0x3815, 0x22},
|
||||
{0x381a, 0x00},
|
||||
{0x381b, 0x01},
|
||||
{0x381e, 0x00},
|
||||
{0x381f, 0x02},
|
||||
{0x3820, 0x01},
|
||||
{0x3821, 0x0d},
|
||||
{0x3822, 0x00},
|
||||
{0x3823, 0x04},
|
||||
{0x3824, 0x00},
|
||||
{0x3825, 0x00},
|
||||
{0x3826, 0x00},
|
||||
{0x3827, 0x64},
|
||||
{0x3828, 0xf7},
|
||||
{0x382a, 0x83},
|
||||
{0x382c, 0x00},
|
||||
{0x382d, 0x00},
|
||||
{0x3835, 0x00},
|
||||
{0x3836, 0x00},
|
||||
{0x3837, 0x08},
|
||||
{0x3839, 0x00},
|
||||
{0x383b, 0x00},
|
||||
{0x383c, 0x00},
|
||||
{0x383d, 0x08},
|
||||
{0x383e, 0x00},
|
||||
{0x383f, 0x33},
|
||||
{0x3842, 0x00},
|
||||
{0x3856, 0x00},
|
||||
{0x3857, 0x08},
|
||||
{0x3858, 0x00},
|
||||
{0x3859, 0x10},
|
||||
{0x3865, 0x70},
|
||||
{0x3867, 0x08},
|
||||
{0x3868, 0x00},
|
||||
{0x3904, 0x33},
|
||||
{0x3907, 0x33},
|
||||
{0x390a, 0x9a},
|
||||
{0x3914, 0x34},
|
||||
{0x3938, 0x4b},
|
||||
{0x3939, 0x0c},
|
||||
{0x393b, 0x4b},
|
||||
{0x393c, 0x0c},
|
||||
{0x393e, 0x40},
|
||||
{0x393f, 0x0c},
|
||||
{0x394a, 0x01},
|
||||
{0x394b, 0xa5},
|
||||
{0x3975, 0x05},
|
||||
{0x3979, 0x32},
|
||||
{0x397d, 0x69},
|
||||
{0x3981, 0x15},
|
||||
{0x3983, 0x33},
|
||||
{0x3985, 0x1a},
|
||||
{0x3986, 0x08},
|
||||
{0x398a, 0x09},
|
||||
{0x39cd, 0x00},
|
||||
{0x39ce, 0x24},
|
||||
{0x39cf, 0x40},
|
||||
{0x39d0, 0x0a},
|
||||
{0x39d1, 0x50},
|
||||
{0x39d2, 0x05},
|
||||
{0x39d3, 0x94},
|
||||
{0x39d4, 0x01},
|
||||
{0x39d5, 0x79},
|
||||
{0x3a12, 0x00},
|
||||
{0x3a13, 0x00},
|
||||
{0x3a14, 0x00},
|
||||
{0x3a15, 0x00},
|
||||
{0x3a16, 0x00},
|
||||
{0x3a18, 0x04},
|
||||
{0x3a1a, 0x05},
|
||||
{0x3a1c, 0x0a},
|
||||
{0x3a1e, 0x03},
|
||||
{0x3a1f, 0x34},
|
||||
{0x3a22, 0x12},
|
||||
{0x3a24, 0x00},
|
||||
{0x3a25, 0xfe},
|
||||
{0x3a26, 0x01},
|
||||
{0x3a27, 0x01},
|
||||
{0x3a2a, 0xa8},
|
||||
{0x3a2b, 0xa8},
|
||||
{0x3a36, 0x00},
|
||||
{0x3d84, 0x00},
|
||||
{0x3d85, 0x1b},
|
||||
{0x3d88, 0x00},
|
||||
{0x3d89, 0x00},
|
||||
{0x3d8a, 0x03},
|
||||
{0x3d8b, 0xff},
|
||||
{0x3d8c, 0xa3},
|
||||
{0x3d8d, 0xc4},
|
||||
{0x3da4, 0x04},
|
||||
{0x3daa, 0xa0},
|
||||
{0x3dab, 0x10},
|
||||
{0x3dac, 0xa1},
|
||||
{0x3dad, 0x8c},
|
||||
{0x3dae, 0xa1},
|
||||
{0x3daf, 0xb3},
|
||||
{0x3e00, 0x0e},
|
||||
{0x3e01, 0x0e},
|
||||
{0x3e02, 0x0e},
|
||||
{0x3e03, 0x0e},
|
||||
{0x3e04, 0x0e},
|
||||
{0x3e05, 0x0e},
|
||||
{0x3e06, 0x0e},
|
||||
{0x3e07, 0x0e},
|
||||
{0x3e09, 0x47},
|
||||
{0x3e0b, 0x25},
|
||||
{0x3e0d, 0x13},
|
||||
{0x3e0f, 0x09},
|
||||
{0x3e11, 0x07},
|
||||
{0x3e13, 0x06},
|
||||
{0x3e15, 0x05},
|
||||
{0x3e17, 0x04},
|
||||
{0x3e18, 0x38},
|
||||
{0x3e19, 0x38},
|
||||
{0x3e1a, 0x13},
|
||||
{0x3e1b, 0x30},
|
||||
{0x3e1c, 0x07},
|
||||
{0x3e1d, 0x06},
|
||||
{0x3e1e, 0x05},
|
||||
{0x3e1f, 0x04},
|
||||
{0x3e20, 0x0f},
|
||||
{0x3e21, 0x0f},
|
||||
{0x3e22, 0x0f},
|
||||
{0x3e23, 0x0f},
|
||||
{0x3e24, 0x0f},
|
||||
{0x3e25, 0x0f},
|
||||
{0x3e26, 0x0f},
|
||||
{0x3e27, 0x0f},
|
||||
{0x3e28, 0x07},
|
||||
{0x3e29, 0x07},
|
||||
{0x3e2a, 0x07},
|
||||
{0x3e2b, 0x02},
|
||||
{0x3e2c, 0x07},
|
||||
{0x3e2d, 0x07},
|
||||
{0x3e30, 0x07},
|
||||
{0x3e3a, 0x02},
|
||||
{0x3e3b, 0xdf},
|
||||
{0x3e3c, 0xff},
|
||||
{0x3e3d, 0x44},
|
||||
{0x3e3e, 0x00},
|
||||
{0x3e3f, 0x00},
|
||||
{0x3e40, 0xc1},
|
||||
{0x3e42, 0x54},
|
||||
{0x3e43, 0x54},
|
||||
{0x3e44, 0x54},
|
||||
{0x3e45, 0x54},
|
||||
{0x3f00, 0x10},
|
||||
{0x3f01, 0x26},
|
||||
{0x3f03, 0x40},
|
||||
{0x4002, 0xf3},
|
||||
{0x4009, 0x02},
|
||||
{0x400e, 0xc6},
|
||||
{0x400f, 0x00},
|
||||
{0x4010, 0x28},
|
||||
{0x4011, 0x01},
|
||||
{0x4012, 0x0d},
|
||||
{0x4015, 0x02},
|
||||
{0x4016, 0x11},
|
||||
{0x4017, 0x00},
|
||||
{0x4018, 0x03},
|
||||
{0x401a, 0x40},
|
||||
{0x401e, 0x00},
|
||||
{0x401f, 0xcc},
|
||||
{0x4020, 0x04},
|
||||
{0x4021, 0x00},
|
||||
{0x4022, 0x04},
|
||||
{0x4023, 0x00},
|
||||
{0x4024, 0x04},
|
||||
{0x4025, 0x00},
|
||||
{0x4026, 0x04},
|
||||
{0x4027, 0x00},
|
||||
{0x4028, 0x01},
|
||||
{0x4030, 0x00},
|
||||
{0x4031, 0x10},
|
||||
{0x4032, 0x00},
|
||||
{0x4033, 0x10},
|
||||
{0x4034, 0x08},
|
||||
{0x4035, 0x10},
|
||||
{0x4036, 0x08},
|
||||
{0x4037, 0x10},
|
||||
{0x4040, 0x08},
|
||||
{0x4041, 0x10},
|
||||
{0x4042, 0x08},
|
||||
{0x4043, 0x10},
|
||||
{0x4044, 0x00},
|
||||
{0x4045, 0x10},
|
||||
{0x4046, 0x00},
|
||||
{0x4047, 0x10},
|
||||
{0x4050, 0x00},
|
||||
{0x4051, 0x00},
|
||||
{0x4056, 0x25},
|
||||
{0x4102, 0xf3},
|
||||
{0x4109, 0x02},
|
||||
{0x410e, 0xc6},
|
||||
{0x410f, 0x00},
|
||||
{0x4110, 0x28},
|
||||
{0x4111, 0x01},
|
||||
{0x4112, 0x0d},
|
||||
{0x4115, 0x04},
|
||||
{0x4116, 0x1b},
|
||||
{0x4117, 0x00},
|
||||
{0x4118, 0x07},
|
||||
{0x411a, 0x40},
|
||||
{0x411e, 0x00},
|
||||
{0x411f, 0xcc},
|
||||
{0x4128, 0x01},
|
||||
{0x4156, 0x25},
|
||||
{0x4702, 0xf3},
|
||||
{0x4709, 0x02},
|
||||
{0x470e, 0xc6},
|
||||
{0x470f, 0x00},
|
||||
{0x4710, 0x28},
|
||||
{0x4711, 0x01},
|
||||
{0x4712, 0x0d},
|
||||
{0x4715, 0x04},
|
||||
{0x4716, 0x1b},
|
||||
{0x4717, 0x00},
|
||||
{0x4718, 0x07},
|
||||
{0x471a, 0x40},
|
||||
{0x471e, 0x00},
|
||||
{0x471f, 0xcc},
|
||||
{0x4728, 0x01},
|
||||
{0x4756, 0x25},
|
||||
{0x4301, 0x00},
|
||||
{0x4303, 0x00},
|
||||
{0x4305, 0x00},
|
||||
{0x4307, 0x00},
|
||||
{0x4308, 0x00},
|
||||
{0x430b, 0xff},
|
||||
{0x430d, 0x00},
|
||||
{0x430e, 0x00},
|
||||
{0x4503, 0x0f},
|
||||
{0x4504, 0x82},
|
||||
{0x4508, 0x00},
|
||||
{0x451d, 0x00},
|
||||
{0x451e, 0x00},
|
||||
{0x451f, 0x00},
|
||||
{0x4523, 0x00},
|
||||
{0x4526, 0x00},
|
||||
{0x4527, 0x00},
|
||||
{0x4530, 0x00},
|
||||
{0x4547, 0x06},
|
||||
{0x4640, 0x00},
|
||||
{0x4641, 0x30},
|
||||
{0x4643, 0x00},
|
||||
{0x4645, 0x13},
|
||||
{0x464a, 0x00},
|
||||
{0x464b, 0x30},
|
||||
{0x4680, 0x00},
|
||||
{0x4681, 0x24},
|
||||
{0x4683, 0x0c},
|
||||
{0x4800, 0x64},
|
||||
{0x480b, 0x10},
|
||||
{0x480c, 0x80},
|
||||
{0x480e, 0x04},
|
||||
{0x480f, 0x32},
|
||||
{0x4826, 0x32},
|
||||
{0x4833, 0x18},
|
||||
{0x4837, 0x10},
|
||||
{0x484b, 0x27},
|
||||
{0x4850, 0x47},
|
||||
{0x4853, 0x04},
|
||||
{0x4860, 0x00},
|
||||
{0x4861, 0xec},
|
||||
{0x4862, 0x04},
|
||||
{0x4883, 0x00},
|
||||
{0x4885, 0x10},
|
||||
{0x4888, 0x10},
|
||||
{0x4889, 0x03},
|
||||
{0x4d00, 0x04},
|
||||
{0x4d01, 0x8f},
|
||||
{0x4d02, 0xb9},
|
||||
{0x4d03, 0xc1},
|
||||
{0x4d04, 0xb6},
|
||||
{0x4d05, 0x7e},
|
||||
{0x5000, 0xeb},
|
||||
{0x5001, 0xcb},
|
||||
{0x5002, 0x15},
|
||||
{0x5003, 0x01},
|
||||
{0x5007, 0x1e},
|
||||
{0x5008, 0x00},
|
||||
{0x5009, 0x00},
|
||||
{0x500a, 0x00},
|
||||
{0x500b, 0x30},
|
||||
{0x500c, 0x12},
|
||||
{0x500d, 0x1f},
|
||||
{0x500e, 0x0a},
|
||||
{0x500f, 0x0f},
|
||||
{0x504b, 0x40},
|
||||
{0x5081, 0x00},
|
||||
{0x50c4, 0xaa},
|
||||
{0x50d0, 0x00},
|
||||
{0x50d1, 0x10},
|
||||
{0x50d2, 0x01},
|
||||
{0x50d3, 0xb3},
|
||||
{0x515a, 0x06},
|
||||
{0x515b, 0x06},
|
||||
{0x515c, 0x02},
|
||||
{0x515d, 0x02},
|
||||
{0x515e, 0x02},
|
||||
{0x515f, 0x06},
|
||||
{0x5160, 0x0a},
|
||||
{0x5161, 0x0e},
|
||||
{0x5180, 0x09},
|
||||
{0x5181, 0x10},
|
||||
{0x5182, 0x05},
|
||||
{0x5183, 0x20},
|
||||
{0x5184, 0x00},
|
||||
{0x5185, 0x10},
|
||||
{0x5186, 0x00},
|
||||
{0x5187, 0x10},
|
||||
{0x5188, 0x12},
|
||||
{0x5189, 0x00},
|
||||
{0x518a, 0x0a},
|
||||
{0x518b, 0x20},
|
||||
{0x518d, 0x09},
|
||||
{0x5192, 0x00},
|
||||
{0x5193, 0x18},
|
||||
{0x51d2, 0x10},
|
||||
{0x51da, 0x00},
|
||||
{0x51db, 0x30},
|
||||
{0x5250, 0x8e},
|
||||
{0x5251, 0x00},
|
||||
{0x5252, 0x10},
|
||||
{0x5254, 0x00},
|
||||
{0x5255, 0x70},
|
||||
{0x5256, 0x00},
|
||||
{0x5257, 0xc7},
|
||||
{0x5258, 0x12},
|
||||
{0x5259, 0x10},
|
||||
{0x525a, 0x0a},
|
||||
{0x525b, 0x30},
|
||||
{0x525e, 0x00},
|
||||
{0x525f, 0x18},
|
||||
{0x5260, 0x00},
|
||||
{0x5261, 0x10},
|
||||
{0x5262, 0x00},
|
||||
{0x5263, 0x10},
|
||||
{0x5264, 0x12},
|
||||
{0x5265, 0x00},
|
||||
{0x5266, 0x0a},
|
||||
{0x5267, 0x20},
|
||||
{0x5268, 0x00},
|
||||
{0x5269, 0x00},
|
||||
{0x526a, 0x00},
|
||||
{0x526b, 0x00},
|
||||
{0x526c, 0x12},
|
||||
{0x526d, 0x10},
|
||||
{0x526e, 0x0a},
|
||||
{0x526f, 0x30},
|
||||
{0x5278, 0x08},
|
||||
{0x5279, 0x10},
|
||||
{0x527a, 0x00},
|
||||
{0x527b, 0x00},
|
||||
{0x527c, 0x06},
|
||||
{0x527d, 0x06},
|
||||
{0x527e, 0x02},
|
||||
{0x527f, 0x02},
|
||||
{0x5280, 0x02},
|
||||
{0x5281, 0x06},
|
||||
{0x5282, 0x0a},
|
||||
{0x5283, 0x0e},
|
||||
{0x5381, 0x00},
|
||||
{0x53c4, 0xaa},
|
||||
{0x545a, 0x06},
|
||||
{0x545b, 0x06},
|
||||
{0x545c, 0x02},
|
||||
{0x545d, 0x02},
|
||||
{0x545e, 0x02},
|
||||
{0x545f, 0x06},
|
||||
{0x5460, 0x0a},
|
||||
{0x5461, 0x0e},
|
||||
{0x5480, 0x09},
|
||||
{0x5481, 0x10},
|
||||
{0x5482, 0x05},
|
||||
{0x5483, 0x20},
|
||||
{0x5484, 0x00},
|
||||
{0x5485, 0x08},
|
||||
{0x5486, 0x00},
|
||||
{0x5487, 0x00},
|
||||
{0x5488, 0x09},
|
||||
{0x5489, 0x00},
|
||||
{0x548a, 0x05},
|
||||
{0x548b, 0x20},
|
||||
{0x548d, 0x09},
|
||||
{0x54d2, 0x10},
|
||||
{0x54da, 0x00},
|
||||
{0x54da, 0x00},
|
||||
{0x54db, 0x30},
|
||||
{0x54db, 0x30},
|
||||
{0x5550, 0xec},
|
||||
{0x5551, 0x00},
|
||||
{0x5552, 0x10},
|
||||
{0x5554, 0x00},
|
||||
{0x5555, 0x72},
|
||||
{0x5556, 0x00},
|
||||
{0x5557, 0xca},
|
||||
{0x5558, 0x12},
|
||||
{0x5559, 0x10},
|
||||
{0x555a, 0x0a},
|
||||
{0x555b, 0x30},
|
||||
{0x555e, 0x00},
|
||||
{0x555f, 0x18},
|
||||
{0x5560, 0x00},
|
||||
{0x5561, 0x00},
|
||||
{0x5562, 0x00},
|
||||
{0x5563, 0x08},
|
||||
{0x5564, 0x12},
|
||||
{0x5565, 0x10},
|
||||
{0x5566, 0x0a},
|
||||
{0x5567, 0x30},
|
||||
{0x5568, 0x00},
|
||||
{0x5569, 0x00},
|
||||
{0x556a, 0x00},
|
||||
{0x556b, 0x00},
|
||||
{0x556c, 0x12},
|
||||
{0x556d, 0x10},
|
||||
{0x556e, 0x0a},
|
||||
{0x556f, 0x30},
|
||||
{0x557c, 0x06},
|
||||
{0x557d, 0x06},
|
||||
{0x557e, 0x02},
|
||||
{0x557f, 0x02},
|
||||
{0x5580, 0x02},
|
||||
{0x5581, 0x06},
|
||||
{0x5582, 0x0a},
|
||||
{0x5583, 0x0e},
|
||||
{0x5681, 0x00},
|
||||
{0x56c4, 0xaa},
|
||||
{0x575a, 0x06},
|
||||
{0x575b, 0x06},
|
||||
{0x575c, 0x02},
|
||||
{0x575d, 0x02},
|
||||
{0x575e, 0x02},
|
||||
{0x575f, 0x06},
|
||||
{0x5760, 0x0a},
|
||||
{0x5761, 0x0e},
|
||||
{0x5780, 0x09},
|
||||
{0x5781, 0x10},
|
||||
{0x5782, 0x05},
|
||||
{0x5783, 0x20},
|
||||
{0x5784, 0x00},
|
||||
{0x5785, 0x08},
|
||||
{0x5786, 0x00},
|
||||
{0x5787, 0x00},
|
||||
{0x5788, 0x09},
|
||||
{0x5789, 0x00},
|
||||
{0x578a, 0x05},
|
||||
{0x578b, 0x20},
|
||||
{0x578d, 0x09},
|
||||
{0x5792, 0x00},
|
||||
{0x5793, 0x18},
|
||||
{0x57d2, 0x10},
|
||||
{0x57da, 0x00},
|
||||
{0x57db, 0x30},
|
||||
{0x5850, 0xec},
|
||||
{0x5851, 0x00},
|
||||
{0x5852, 0x10},
|
||||
{0x5854, 0x00},
|
||||
{0x5855, 0x72},
|
||||
{0x5856, 0x00},
|
||||
{0x5857, 0xca},
|
||||
{0x5858, 0x12},
|
||||
{0x5859, 0x10},
|
||||
{0x585a, 0x0a},
|
||||
{0x585b, 0x30},
|
||||
{0x585e, 0x00},
|
||||
{0x585f, 0x18},
|
||||
{0x5860, 0x00},
|
||||
{0x5861, 0x00},
|
||||
{0x5862, 0x00},
|
||||
{0x5863, 0x08},
|
||||
{0x5864, 0x12},
|
||||
{0x5865, 0x10},
|
||||
{0x5866, 0x0a},
|
||||
{0x5867, 0x30},
|
||||
{0x5868, 0x00},
|
||||
{0x5869, 0x00},
|
||||
{0x586a, 0x00},
|
||||
{0x586b, 0x00},
|
||||
{0x586c, 0x12},
|
||||
{0x586d, 0x10},
|
||||
{0x586e, 0x0a},
|
||||
{0x586f, 0x30},
|
||||
{0x587c, 0x06},
|
||||
{0x587d, 0x06},
|
||||
{0x587e, 0x02},
|
||||
{0x587f, 0x02},
|
||||
{0x5880, 0x02},
|
||||
{0x5881, 0x06},
|
||||
{0x5882, 0x0a},
|
||||
{0x5883, 0x0e},
|
||||
{0x5f06, 0x10},
|
||||
{0x5f07, 0x20},
|
||||
{0x5f08, 0x0c},
|
||||
{0x5f09, 0x0c},
|
||||
{0x5f0a, 0x04},
|
||||
{0x5f0b, 0x04},
|
||||
{0x5f0c, 0x04},
|
||||
{0x5f0d, 0x0c},
|
||||
{0x5f0e, 0x14},
|
||||
{0x5f0f, 0x1c},
|
||||
{0x5f10, 0x01},
|
||||
{0x5f11, 0x01},
|
||||
{0x5f18, 0x12},
|
||||
{0x5f19, 0x20},
|
||||
{0x5f1a, 0x0a},
|
||||
{0x5f1b, 0x40},
|
||||
{0x5f1d, 0x10},
|
||||
{0x5f1f, 0x00},
|
||||
{0x5f20, 0x12},
|
||||
{0x5f21, 0x00},
|
||||
{0x5f22, 0x0a},
|
||||
{0x5f23, 0x40},
|
||||
{0x5f25, 0x09},
|
||||
{0x5f2a, 0x00},
|
||||
{0x5f2b, 0x18},
|
||||
{0x6600, 0x00},
|
||||
{0x6601, 0x00},
|
||||
{0x6602, 0x00},
|
||||
{0x6603, 0x83},
|
||||
{0x6960, 0x0f},
|
||||
{0x69a2, 0x09},
|
||||
{0x69a3, 0x00},
|
||||
{0x69a6, 0x05},
|
||||
{0x69a7, 0x10},
|
||||
{0x69aa, 0x09},
|
||||
{0x69ab, 0x00},
|
||||
{0x69ae, 0x05},
|
||||
{0x69af, 0x10},
|
||||
{0x69b2, 0x09},
|
||||
{0x69b3, 0x00},
|
||||
{0x69b6, 0x05},
|
||||
{0x69b7, 0x10},
|
||||
{0x69ba, 0x09},
|
||||
{0x69bb, 0x00},
|
||||
{0x69be, 0x05},
|
||||
{0x69bf, 0x10},
|
||||
{0x6a24, 0x09},
|
||||
{0x6a25, 0x00},
|
||||
{0x6a2a, 0x05},
|
||||
{0x6a2b, 0x10},
|
||||
{0x6a61, 0x40},
|
||||
{0x6a64, 0x09},
|
||||
{0x6a65, 0x00},
|
||||
{0x6a6a, 0x05},
|
||||
{0x6a6b, 0x10},
|
||||
{0x6a23, 0x00},
|
||||
{0x6a27, 0x00},
|
||||
{0x6a63, 0x00},
|
||||
{0x6a67, 0x00},
|
||||
{0x69a1, 0x00},
|
||||
{0x69a5, 0x00},
|
||||
{0x69a9, 0x00},
|
||||
{0x69ad, 0x00},
|
||||
{0x69b1, 0x00},
|
||||
{0x69b5, 0x00},
|
||||
{0x69b9, 0x00},
|
||||
{0x69bd, 0x00},
|
||||
{0xfff4, 0x01},
|
||||
{0xfff6, 0x00},
|
||||
{0x0361, 0x07},
|
||||
{0x3644, 0x20},
|
||||
{0x5000, 0x2b},
|
||||
{0x5001, 0x0b},
|
||||
{0x50d4, 0x00},
|
||||
{0x5171, 0xbe},
|
||||
{0x3222, 0x03},
|
||||
{0x3208, 0x06},
|
||||
{0x3938, 0x41},
|
||||
{0x393b, 0x41},
|
||||
{0x3208, 0x16},
|
||||
{0x3208, 0x07},
|
||||
{0x3938, 0x43},
|
||||
{0x393b, 0x44},
|
||||
{0x3208, 0x17},
|
||||
{0x3208, 0x08},
|
||||
{0x3938, 0x45},
|
||||
{0x393b, 0x46},
|
||||
{0x3208, 0x18},
|
||||
{0x3208, 0x09},
|
||||
{0x3938, 0x4b},
|
||||
{0x393b, 0x4b},
|
||||
{0x3208, 0x19},
|
||||
{0x5000, 0x29},
|
||||
{0x5001, 0x01},
|
||||
{REG_NULL, 0x00},
|
||||
};
|
||||
|
||||
static const struct os12d40_mode supported_modes_4lane[] = {
|
||||
{
|
||||
.bus_fmt = MEDIA_BUS_FMT_SGBRG10_1X10,
|
||||
.width = 2256,
|
||||
.height = 1256,
|
||||
.max_fps = {
|
||||
.numerator = 10000,
|
||||
.denominator = 300000,
|
||||
},
|
||||
.exp_def = 0x0500,
|
||||
.hts_def = 0x438 * 8,
|
||||
.vts_def = 0x0ad8,
|
||||
.reg_list = os12d40_2256x1256_regs_4lane,
|
||||
.hdr_mode = NO_HDR,
|
||||
},
|
||||
{
|
||||
.bus_fmt = MEDIA_BUS_FMT_SBGGR10_1X10,
|
||||
.width = 4512,
|
||||
.height = 2512,
|
||||
.max_fps = {
|
||||
@@ -1321,7 +2135,7 @@ static int os12d40_set_fmt(struct v4l2_subdev *sd,
|
||||
mutex_lock(&os12d40->mutex);
|
||||
|
||||
mode = os12d40_find_best_fit(os12d40, fmt);
|
||||
fmt->format.code = OS12D40_MEDIA_BUS_FMT;
|
||||
fmt->format.code = mode->bus_fmt;
|
||||
fmt->format.width = mode->width;
|
||||
fmt->format.height = mode->height;
|
||||
fmt->format.field = V4L2_FIELD_NONE;
|
||||
@@ -1366,7 +2180,7 @@ static int os12d40_get_fmt(struct v4l2_subdev *sd,
|
||||
} else {
|
||||
fmt->format.width = mode->width;
|
||||
fmt->format.height = mode->height;
|
||||
fmt->format.code = OS12D40_MEDIA_BUS_FMT;
|
||||
fmt->format.code = mode->bus_fmt;
|
||||
fmt->format.field = V4L2_FIELD_NONE;
|
||||
}
|
||||
mutex_unlock(&os12d40->mutex);
|
||||
@@ -1378,9 +2192,11 @@ static int os12d40_enum_mbus_code(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_state *sd_state,
|
||||
struct v4l2_subdev_mbus_code_enum *code)
|
||||
{
|
||||
struct os12d40 *os12d40 = to_os12d40(sd);
|
||||
|
||||
if (code->index != 0)
|
||||
return -EINVAL;
|
||||
code->code = OS12D40_MEDIA_BUS_FMT;
|
||||
code->code = os12d40->cur_mode->bus_fmt;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1394,9 +2210,6 @@ static int os12d40_enum_frame_sizes(struct v4l2_subdev *sd,
|
||||
if (fse->index >= os12d40->cfg_num)
|
||||
return -EINVAL;
|
||||
|
||||
if (fse->code != OS12D40_MEDIA_BUS_FMT)
|
||||
return -EINVAL;
|
||||
|
||||
fse->min_width = supported_modes[fse->index].width;
|
||||
fse->max_width = supported_modes[fse->index].width;
|
||||
fse->max_height = supported_modes[fse->index].height;
|
||||
@@ -1487,7 +2300,10 @@ static long os12d40_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
|
||||
case RKMODULE_GET_BAYER_MODE:
|
||||
bayer_mode = (u32 *)arg;
|
||||
#ifdef USE_4_CELL
|
||||
*bayer_mode = RKMODULE_QUARD_BAYER;
|
||||
if (os12d40->cur_mode->width == 4512)
|
||||
*bayer_mode = RKMODULE_QUARD_BAYER;
|
||||
else
|
||||
*bayer_mode = RKMODULE_NORMAL_BAYER;
|
||||
#else
|
||||
*bayer_mode = RKMODULE_NORMAL_BAYER;
|
||||
#endif
|
||||
@@ -1845,7 +2661,7 @@ static int os12d40_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
|
||||
/* Initialize try_fmt */
|
||||
try_fmt->width = def_mode->width;
|
||||
try_fmt->height = def_mode->height;
|
||||
try_fmt->code = OS12D40_MEDIA_BUS_FMT;
|
||||
try_fmt->code = def_mode->bus_fmt;
|
||||
try_fmt->field = V4L2_FIELD_NONE;
|
||||
|
||||
mutex_unlock(&os12d40->mutex);
|
||||
@@ -1864,7 +2680,7 @@ static int os12d40_enum_frame_interval(struct v4l2_subdev *sd,
|
||||
if (fie->index >= os12d40->cfg_num)
|
||||
return -EINVAL;
|
||||
|
||||
fie->code = OS12D40_MEDIA_BUS_FMT;
|
||||
fie->code = supported_modes[fie->index].bus_fmt;
|
||||
fie->width = supported_modes[fie->index].width;
|
||||
fie->height = supported_modes[fie->index].height;
|
||||
fie->interval = supported_modes[fie->index].max_fps;
|
||||
@@ -1892,10 +2708,17 @@ static int os12d40_get_selection(struct v4l2_subdev *sd,
|
||||
struct os12d40 *os12d40 = to_os12d40(sd);
|
||||
|
||||
if (sel->target == V4L2_SEL_TGT_CROP_BOUNDS) {
|
||||
sel->r.left = CROP_START(os12d40->cur_mode->width, DST_WIDTH);
|
||||
sel->r.width = DST_WIDTH;
|
||||
sel->r.top = CROP_START(os12d40->cur_mode->height, DST_HEIGHT);
|
||||
sel->r.height = DST_HEIGHT;
|
||||
if (os12d40->cur_mode->width == 4512) {
|
||||
sel->r.left = CROP_START(os12d40->cur_mode->width, DST_WIDTH);
|
||||
sel->r.width = DST_WIDTH;
|
||||
sel->r.top = CROP_START(os12d40->cur_mode->height, DST_HEIGHT);
|
||||
sel->r.height = DST_HEIGHT;
|
||||
} else {
|
||||
sel->r.left = 0;
|
||||
sel->r.width = os12d40->cur_mode->width;
|
||||
sel->r.top = 0;
|
||||
sel->r.height = os12d40->cur_mode->height;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return -EINVAL;
|
||||
|
||||
Reference in New Issue
Block a user