mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 01:10:04 +00:00
media: i2c: ov9282: Split registers into common and mode specific
Currently only one mode is supported, so all registers were dropped in one list. In preparation for adding more modes, split out the common registers from those which configure the mode. Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
18330e986d
commit
7195aabf8f
1 changed files with 47 additions and 30 deletions
|
@ -147,8 +147,8 @@ static const s64 link_freq[] = {
|
|||
OV9282_LINK_FREQ,
|
||||
};
|
||||
|
||||
/* Sensor mode registers */
|
||||
static const struct ov9282_reg mode_1280x720_regs[] = {
|
||||
/* Common registers */
|
||||
static const struct ov9282_reg common_regs[] = {
|
||||
{0x0302, 0x32},
|
||||
{0x030d, 0x50},
|
||||
{0x030e, 0x02},
|
||||
|
@ -179,13 +179,49 @@ static const struct ov9282_reg mode_1280x720_regs[] = {
|
|||
{0x372d, 0x22},
|
||||
{0x3731, 0x80},
|
||||
{0x3732, 0x30},
|
||||
{0x3778, 0x00},
|
||||
{0x377d, 0x22},
|
||||
{0x3788, 0x02},
|
||||
{0x3789, 0xa4},
|
||||
{0x378a, 0x00},
|
||||
{0x378b, 0x4a},
|
||||
{0x3799, 0x20},
|
||||
{0x3881, 0x42},
|
||||
{0x38a8, 0x02},
|
||||
{0x38a9, 0x80},
|
||||
{0x38b1, 0x00},
|
||||
{0x38c4, 0x00},
|
||||
{0x38c5, 0xc0},
|
||||
{0x38c6, 0x04},
|
||||
{0x38c7, 0x80},
|
||||
{0x3920, 0xff},
|
||||
{0x4010, 0x40},
|
||||
{0x4043, 0x40},
|
||||
{0x4307, 0x30},
|
||||
{0x4317, 0x00},
|
||||
{0x4501, 0x00},
|
||||
{0x450a, 0x08},
|
||||
{0x4601, 0x04},
|
||||
{0x470f, 0x00},
|
||||
{0x4f07, 0x00},
|
||||
{0x4800, 0x20},
|
||||
{0x5000, 0x9f},
|
||||
{0x5001, 0x00},
|
||||
{0x5e00, 0x00},
|
||||
{0x5d00, 0x07},
|
||||
{0x5d01, 0x00},
|
||||
{0x0101, 0x01},
|
||||
{0x1000, 0x03},
|
||||
{0x5a08, 0x84},
|
||||
};
|
||||
|
||||
struct ov9282_reg_list common_regs_list = {
|
||||
.num_of_regs = ARRAY_SIZE(common_regs),
|
||||
.regs = common_regs,
|
||||
};
|
||||
|
||||
/* Sensor mode registers */
|
||||
static const struct ov9282_reg mode_1280x720_regs[] = {
|
||||
{0x3778, 0x00},
|
||||
{0x3800, 0x00},
|
||||
{0x3801, 0x00},
|
||||
{0x3802, 0x00},
|
||||
|
@ -208,40 +244,13 @@ static const struct ov9282_reg mode_1280x720_regs[] = {
|
|||
{0x3815, 0x11},
|
||||
{0x3820, 0x3c},
|
||||
{0x3821, 0x84},
|
||||
{0x3881, 0x42},
|
||||
{0x38a8, 0x02},
|
||||
{0x38a9, 0x80},
|
||||
{0x38b1, 0x00},
|
||||
{0x38c4, 0x00},
|
||||
{0x38c5, 0xc0},
|
||||
{0x38c6, 0x04},
|
||||
{0x38c7, 0x80},
|
||||
{0x3920, 0xff},
|
||||
{0x4003, 0x40},
|
||||
{0x4008, 0x02},
|
||||
{0x4009, 0x05},
|
||||
{0x400c, 0x00},
|
||||
{0x400d, 0x03},
|
||||
{0x4010, 0x40},
|
||||
{0x4043, 0x40},
|
||||
{0x4307, 0x30},
|
||||
{0x4317, 0x00},
|
||||
{0x4501, 0x00},
|
||||
{0x4507, 0x00},
|
||||
{0x4509, 0x80},
|
||||
{0x450a, 0x08},
|
||||
{0x4601, 0x04},
|
||||
{0x470f, 0x00},
|
||||
{0x4f07, 0x00},
|
||||
{0x4800, 0x20},
|
||||
{0x5000, 0x9f},
|
||||
{0x5001, 0x00},
|
||||
{0x5e00, 0x00},
|
||||
{0x5d00, 0x07},
|
||||
{0x5d01, 0x00},
|
||||
{0x0101, 0x01},
|
||||
{0x1000, 0x03},
|
||||
{0x5a08, 0x84},
|
||||
};
|
||||
|
||||
/* Supported sensor mode configurations */
|
||||
|
@ -653,6 +662,14 @@ static int ov9282_start_streaming(struct ov9282 *ov9282)
|
|||
const struct ov9282_reg_list *reg_list;
|
||||
int ret;
|
||||
|
||||
/* Write common registers */
|
||||
ret = ov9282_write_regs(ov9282, common_regs_list.regs,
|
||||
common_regs_list.num_of_regs);
|
||||
if (ret) {
|
||||
dev_err(ov9282->dev, "fail to write common registers");
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Write sensor mode registers */
|
||||
reg_list = &ov9282->cur_mode->reg_list;
|
||||
ret = ov9282_write_regs(ov9282, reg_list->regs, reg_list->num_of_regs);
|
||||
|
|
Loading…
Reference in a new issue