media: imx274: rearrange sensor startup register tables
Rearrange the imx274_start_<N> register tables to better match the datasheet and slightly simplify code: - collapes tables 1 and 2, they are applied one after each other and together they implement the fixed part 1 of the startup procedure in the datasheet - while there, cleanup comments - rename tables 3 and 4 -> 2 and 3, coherently with the datasheet Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
3df8adb7d5
commit
7d2332c76d
@ -349,20 +349,14 @@ static const struct reg_8 imx274_mode5_1280x720_raw10[] = {
|
|||||||
*/
|
*/
|
||||||
static const struct reg_8 imx274_start_1[] = {
|
static const struct reg_8 imx274_start_1[] = {
|
||||||
{IMX274_STANDBY_REG, 0x12},
|
{IMX274_STANDBY_REG, 0x12},
|
||||||
{IMX274_TABLE_END, 0x00}
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/* PLRD: clock settings */
|
||||||
* imx274 second step register configuration for
|
{0x3120, 0xF0},
|
||||||
* starting stream
|
{0x3121, 0x00},
|
||||||
*/
|
{0x3122, 0x02},
|
||||||
static const struct reg_8 imx274_start_2[] = {
|
{0x3129, 0x9C},
|
||||||
{0x3120, 0xF0}, /* clock settings */
|
{0x312A, 0x02},
|
||||||
{0x3121, 0x00}, /* clock settings */
|
{0x312D, 0x02},
|
||||||
{0x3122, 0x02}, /* clock settings */
|
|
||||||
{0x3129, 0x9C}, /* clock settings */
|
|
||||||
{0x312A, 0x02}, /* clock settings */
|
|
||||||
{0x312D, 0x02}, /* clock settings */
|
|
||||||
|
|
||||||
{0x310B, 0x00},
|
{0x310B, 0x00},
|
||||||
|
|
||||||
@ -407,20 +401,20 @@ static const struct reg_8 imx274_start_2[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* imx274 third step register configuration for
|
* imx274 second step register configuration for
|
||||||
* starting stream
|
* starting stream
|
||||||
*/
|
*/
|
||||||
static const struct reg_8 imx274_start_3[] = {
|
static const struct reg_8 imx274_start_2[] = {
|
||||||
{IMX274_STANDBY_REG, 0x00},
|
{IMX274_STANDBY_REG, 0x00},
|
||||||
{0x303E, 0x02}, /* SYS_MODE = 2 */
|
{0x303E, 0x02}, /* SYS_MODE = 2 */
|
||||||
{IMX274_TABLE_END, 0x00}
|
{IMX274_TABLE_END, 0x00}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* imx274 forth step register configuration for
|
* imx274 third step register configuration for
|
||||||
* starting stream
|
* starting stream
|
||||||
*/
|
*/
|
||||||
static const struct reg_8 imx274_start_4[] = {
|
static const struct reg_8 imx274_start_3[] = {
|
||||||
{0x30F4, 0x00},
|
{0x30F4, 0x00},
|
||||||
{0x3018, 0xA2}, /* XHS VHS OUTUPT */
|
{0x3018, 0xA2}, /* XHS VHS OUTUPT */
|
||||||
{IMX274_TABLE_END, 0x00}
|
{IMX274_TABLE_END, 0x00}
|
||||||
@ -708,10 +702,6 @@ static int imx274_mode_regs(struct stimx274 *priv)
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
err = imx274_write_table(priv, imx274_start_2);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
err = imx274_write_table(priv, priv->mode->init_regs);
|
err = imx274_write_table(priv, priv->mode->init_regs);
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
@ -733,7 +723,7 @@ static int imx274_start_stream(struct stimx274 *priv)
|
|||||||
* give it 1 extra ms for margin
|
* give it 1 extra ms for margin
|
||||||
*/
|
*/
|
||||||
msleep_range(11);
|
msleep_range(11);
|
||||||
err = imx274_write_table(priv, imx274_start_3);
|
err = imx274_write_table(priv, imx274_start_2);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
@ -743,7 +733,7 @@ static int imx274_start_stream(struct stimx274 *priv)
|
|||||||
* give it 1 extra ms for margin
|
* give it 1 extra ms for margin
|
||||||
*/
|
*/
|
||||||
msleep_range(8);
|
msleep_range(8);
|
||||||
err = imx274_write_table(priv, imx274_start_4);
|
err = imx274_write_table(priv, imx274_start_3);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user