mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
media: i2c: imx415: add 720P config
Change-Id: I2af6b9677ecaf0356f12cbd8e15592d26da134e3 Signed-off-by: Lan Honglin <helin.lan@rock-chips.com>
This commit is contained in:
@@ -60,6 +60,7 @@
|
||||
#define V4L2_CID_DIGITAL_GAIN V4L2_CID_GAIN
|
||||
#endif
|
||||
|
||||
#define MIPI_FREQ_1188M 1188000000
|
||||
#define MIPI_FREQ_891M 891000000
|
||||
#define MIPI_FREQ_446M 446000000
|
||||
#define MIPI_FREQ_743M 743000000
|
||||
@@ -897,6 +898,167 @@ static __maybe_unused const struct regval imx415_linear_12bit_3864x2192_891M_reg
|
||||
{REG_NULL, 0x00},
|
||||
};
|
||||
|
||||
/*
|
||||
* Xclk 27Mhz
|
||||
* 90.059fps
|
||||
* CSI-2_2lane
|
||||
* AD:10bit Output:12bit
|
||||
* 2376Mbps
|
||||
* Master Mode
|
||||
* Time 9.999ms Gain:6dB
|
||||
* 2568x1440 2/2-line binning & Window cropping
|
||||
*/
|
||||
static __maybe_unused const struct regval imx415_linear_12bit_1284x720_2376M_regs_2lane[] = {
|
||||
{0x3008, 0x5D},
|
||||
{0x300A, 0x42},
|
||||
{0x301C, 0x04},
|
||||
{0x3020, 0x01},
|
||||
{0x3021, 0x01},
|
||||
{0x3022, 0x01},
|
||||
{0x3024, 0xAB},
|
||||
{0x3025, 0x07},
|
||||
{0x3028, 0xA4},
|
||||
{0x3029, 0x01},
|
||||
{0x3031, 0x00},
|
||||
{0x3033, 0x00},
|
||||
{0x3040, 0x88},
|
||||
{0x3041, 0x02},
|
||||
{0x3042, 0x08},
|
||||
{0x3043, 0x0A},
|
||||
{0x3044, 0xF0},
|
||||
{0x3045, 0x02},
|
||||
{0x3046, 0x40},
|
||||
{0x3047, 0x0B},
|
||||
{0x3050, 0xC4},
|
||||
{0x3090, 0x14},
|
||||
{0x30C1, 0x00},
|
||||
{0x30D9, 0x02},
|
||||
{0x30DA, 0x01},
|
||||
{0x3116, 0x23},
|
||||
{0x3118, 0x08},
|
||||
{0x3119, 0x01},
|
||||
{0x311A, 0xE7},
|
||||
{0x311E, 0x23},
|
||||
{0x32D4, 0x21},
|
||||
{0x32EC, 0xA1},
|
||||
{0x344C, 0x2B},
|
||||
{0x344D, 0x01},
|
||||
{0x344E, 0xED},
|
||||
{0x344F, 0x01},
|
||||
{0x3450, 0xF6},
|
||||
{0x3451, 0x02},
|
||||
{0x3452, 0x7F},
|
||||
{0x3453, 0x03},
|
||||
{0x358A, 0x04},
|
||||
{0x35A1, 0x02},
|
||||
{0x35EC, 0x27},
|
||||
{0x35EE, 0x8D},
|
||||
{0x35F0, 0x8D},
|
||||
{0x35F2, 0x29},
|
||||
{0x36BC, 0x0C},
|
||||
{0x36CC, 0x53},
|
||||
{0x36CD, 0x00},
|
||||
{0x36CE, 0x3C},
|
||||
{0x36D0, 0x8C},
|
||||
{0x36D1, 0x00},
|
||||
{0x36D2, 0x71},
|
||||
{0x36D4, 0x3C},
|
||||
{0x36D6, 0x53},
|
||||
{0x36D7, 0x00},
|
||||
{0x36D8, 0x71},
|
||||
{0x36DA, 0x8C},
|
||||
{0x36DB, 0x00},
|
||||
{0x3701, 0x00},
|
||||
{0x3720, 0x00},
|
||||
{0x3724, 0x02},
|
||||
{0x3726, 0x02},
|
||||
{0x3732, 0x02},
|
||||
{0x3734, 0x03},
|
||||
{0x3736, 0x03},
|
||||
{0x3742, 0x03},
|
||||
{0x3862, 0xE0},
|
||||
{0x38CC, 0x30},
|
||||
{0x38CD, 0x2F},
|
||||
{0x395C, 0x0C},
|
||||
{0x39A4, 0x07},
|
||||
{0x39A8, 0x32},
|
||||
{0x39AA, 0x32},
|
||||
{0x39AC, 0x32},
|
||||
{0x39AE, 0x32},
|
||||
{0x39B0, 0x32},
|
||||
{0x39B2, 0x2F},
|
||||
{0x39B4, 0x2D},
|
||||
{0x39B6, 0x28},
|
||||
{0x39B8, 0x30},
|
||||
{0x39BA, 0x30},
|
||||
{0x39BC, 0x30},
|
||||
{0x39BE, 0x30},
|
||||
{0x39C0, 0x30},
|
||||
{0x39C2, 0x2E},
|
||||
{0x39C4, 0x2B},
|
||||
{0x39C6, 0x25},
|
||||
{0x3A42, 0xD1},
|
||||
{0x3A4C, 0x77},
|
||||
{0x3AE0, 0x02},
|
||||
{0x3AEC, 0x0C},
|
||||
{0x3B00, 0x2E},
|
||||
{0x3B06, 0x29},
|
||||
{0x3B98, 0x25},
|
||||
{0x3B99, 0x21},
|
||||
{0x3B9B, 0x13},
|
||||
{0x3B9C, 0x13},
|
||||
{0x3B9D, 0x13},
|
||||
{0x3B9E, 0x13},
|
||||
{0x3BA1, 0x00},
|
||||
{0x3BA2, 0x06},
|
||||
{0x3BA3, 0x0B},
|
||||
{0x3BA4, 0x10},
|
||||
{0x3BA5, 0x14},
|
||||
{0x3BA6, 0x18},
|
||||
{0x3BA7, 0x1A},
|
||||
{0x3BA8, 0x1A},
|
||||
{0x3BA9, 0x1A},
|
||||
{0x3BAC, 0xED},
|
||||
{0x3BAD, 0x01},
|
||||
{0x3BAE, 0xF6},
|
||||
{0x3BAF, 0x02},
|
||||
{0x3BB0, 0xA2},
|
||||
{0x3BB1, 0x03},
|
||||
{0x3BB2, 0xE0},
|
||||
{0x3BB3, 0x03},
|
||||
{0x3BB4, 0xE0},
|
||||
{0x3BB5, 0x03},
|
||||
{0x3BB6, 0xE0},
|
||||
{0x3BB7, 0x03},
|
||||
{0x3BB8, 0xE0},
|
||||
{0x3BBA, 0xE0},
|
||||
{0x3BBC, 0xDA},
|
||||
{0x3BBE, 0x88},
|
||||
{0x3BC0, 0x44},
|
||||
{0x3BC2, 0x7B},
|
||||
{0x3BC4, 0xA2},
|
||||
{0x3BC8, 0xBD},
|
||||
{0x3BCA, 0xBD},
|
||||
{0x4001, 0x01},
|
||||
{0x4004, 0xC0},
|
||||
{0x4005, 0x06},
|
||||
{0x4018, 0xE7},
|
||||
{0x401A, 0x8F},
|
||||
{0x401C, 0x8F},
|
||||
{0x401E, 0x7F},
|
||||
{0x401F, 0x02},
|
||||
{0x4020, 0x97},
|
||||
{0x4022, 0x0F},
|
||||
{0x4023, 0x01},
|
||||
{0x4024, 0x97},
|
||||
{0x4026, 0xF7},
|
||||
{0x4028, 0x7F},
|
||||
{0x3002, 0x00},
|
||||
//{0x3000, 0x00},
|
||||
{REG_DELAY, 0x1E},//wait_ms(30)
|
||||
{REG_NULL, 0x00},
|
||||
};
|
||||
|
||||
/*
|
||||
* The width and height must be configured to be
|
||||
* the same as the current output resolution of the sensor.
|
||||
@@ -1151,6 +1313,26 @@ static const struct imx415_mode supported_modes_2lane[] = {
|
||||
.vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0,
|
||||
.xvclk = IMX415_XVCLK_FREQ_27M,
|
||||
},
|
||||
{
|
||||
/* 1H period = (1100 clock) = (1100 * 1 / 74.25MHz) */
|
||||
.bus_fmt = MEDIA_BUS_FMT_SGBRG12_1X12,
|
||||
.width = 1284,
|
||||
.height = 720,
|
||||
.max_fps = {
|
||||
.numerator = 10000,
|
||||
.denominator = 900000,
|
||||
},
|
||||
.exp_def = 0x07AB-8,
|
||||
.hts_def = 0x01A4 * IMX415_2LANES * 2,
|
||||
.vts_def = 0x07AB,
|
||||
.global_reg_list = NULL,
|
||||
.reg_list = imx415_linear_12bit_1284x720_2376M_regs_2lane,
|
||||
.hdr_mode = NO_HDR,
|
||||
.mipi_freq_idx = 4,
|
||||
.bpp = 12,
|
||||
.vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_0,
|
||||
.xvclk = IMX415_XVCLK_FREQ_27M,
|
||||
},
|
||||
};
|
||||
|
||||
static const s64 link_freq_items[] = {
|
||||
@@ -1158,6 +1340,7 @@ static const s64 link_freq_items[] = {
|
||||
MIPI_FREQ_446M,
|
||||
MIPI_FREQ_743M,
|
||||
MIPI_FREQ_891M,
|
||||
MIPI_FREQ_1188M,
|
||||
};
|
||||
|
||||
/* Write registers up to 4 at a time */
|
||||
@@ -2619,7 +2802,7 @@ static int imx415_initialize_controls(struct imx415 *imx415)
|
||||
|
||||
/* pixel rate = link frequency * 2 * lanes / BITS_PER_SAMPLE */
|
||||
pixel_rate = (u32)link_freq_items[mode->mipi_freq_idx] / mode->bpp * 2 * lanes;
|
||||
max_pixel_rate = MIPI_FREQ_891M / mode->bpp * 2 * lanes;
|
||||
max_pixel_rate = MIPI_FREQ_1188M / mode->bpp * 2 * lanes;
|
||||
imx415->pixel_rate = v4l2_ctrl_new_std(handler, NULL,
|
||||
V4L2_CID_PIXEL_RATE, 0, max_pixel_rate,
|
||||
1, pixel_rate);
|
||||
|
||||
Reference in New Issue
Block a user