Skip to content

Commit 3e03e37

Browse files
author
André Apitzsch
committed
media: i2c: imx214: Move clock frequency params to separate function
Signed-off-by: André Apitzsch <[email protected]>
1 parent cb92ace commit 3e03e37

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

drivers/media/i2c/imx214.c

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -312,14 +312,6 @@ static const struct cci_reg_sequence mode_4096x2304[] = {
312312
{ IMX214_REG_DIG_CROP_WIDTH, 4096 },
313313
{ IMX214_REG_DIG_CROP_HEIGHT, 2304 },
314314

315-
{ IMX214_REG_VTPXCK_DIV, IMX214_DEFAULT_VTPXCK_DIV },
316-
{ IMX214_REG_VTSYCK_DIV, IMX214_DEFAULT_VTSYCK_DIV },
317-
{ IMX214_REG_PREPLLCK_VT_DIV, IMX214_DEFAULT_PREPLLCK_VT_DIV },
318-
{ IMX214_REG_PLL_VT_MPY, IMX214_DEFAULT_PLL_VT_MPY },
319-
{ IMX214_REG_OPPXCK_DIV, IMX214_DEFAULT_OPPXCK_DIV },
320-
{ IMX214_REG_OPSYCK_DIV, IMX214_DEFAULT_OPSYCK_DIV },
321-
{ IMX214_REG_PLL_MULT_DRIV, IMX214_PLL_SINGLE },
322-
323315
{ IMX214_REG_REQ_LINK_BIT_RATE,
324316
IMX214_LINK_BIT_RATE_MBPS(IMX214_LINK_BIT_RATE(IMX214_DEFAULT_CLK_FREQ)) },
325317

@@ -376,14 +368,6 @@ static const struct cci_reg_sequence mode_1920x1080[] = {
376368
{ IMX214_REG_DIG_CROP_WIDTH, 1920 },
377369
{ IMX214_REG_DIG_CROP_HEIGHT, 1080 },
378370

379-
{ IMX214_REG_VTPXCK_DIV, IMX214_DEFAULT_VTPXCK_DIV },
380-
{ IMX214_REG_VTSYCK_DIV, IMX214_DEFAULT_VTSYCK_DIV },
381-
{ IMX214_REG_PREPLLCK_VT_DIV, IMX214_DEFAULT_PREPLLCK_VT_DIV },
382-
{ IMX214_REG_PLL_VT_MPY, IMX214_DEFAULT_PLL_VT_MPY },
383-
{ IMX214_REG_OPPXCK_DIV, IMX214_DEFAULT_OPPXCK_DIV },
384-
{ IMX214_REG_OPSYCK_DIV, IMX214_DEFAULT_OPSYCK_DIV },
385-
{ IMX214_REG_PLL_MULT_DRIV, IMX214_PLL_SINGLE },
386-
387371
{ IMX214_REG_REQ_LINK_BIT_RATE,
388372
IMX214_LINK_BIT_RATE_MBPS(IMX214_LINK_BIT_RATE(IMX214_DEFAULT_CLK_FREQ)) },
389373

@@ -420,9 +404,6 @@ static const struct cci_reg_sequence mode_table_common[] = {
420404
/* ATR setting */
421405
{ IMX214_REG_ATR_FAST_MOVE, 2 },
422406

423-
/* external clock setting */
424-
{ IMX214_REG_EXCK_FREQ, IMX214_EXCK_FREQ(IMX214_DEFAULT_CLK_FREQ / 1000000) },
425-
426407
/* global setting */
427408
/* basic config */
428409
{ IMX214_REG_MASK_CORR_FRAMES, IMX214_CORR_FRAMES_MASK },
@@ -792,6 +773,30 @@ static int imx214_entity_init_state(struct v4l2_subdev *subdev,
792773
return 0;
793774
}
794775

776+
static int imx214_set_clock(struct imx214 *imx214)
777+
{
778+
int ret = 0;
779+
780+
cci_write(imx214->regmap, IMX214_REG_VTPXCK_DIV,
781+
IMX214_DEFAULT_VTPXCK_DIV, &ret);
782+
cci_write(imx214->regmap, IMX214_REG_VTSYCK_DIV,
783+
IMX214_DEFAULT_VTSYCK_DIV, &ret);
784+
cci_write(imx214->regmap, IMX214_REG_PREPLLCK_VT_DIV,
785+
IMX214_DEFAULT_PREPLLCK_VT_DIV, &ret);
786+
cci_write(imx214->regmap, IMX214_REG_PLL_VT_MPY,
787+
IMX214_DEFAULT_PLL_VT_MPY, &ret);
788+
cci_write(imx214->regmap, IMX214_REG_OPPXCK_DIV,
789+
IMX214_DEFAULT_OPPXCK_DIV, &ret);
790+
cci_write(imx214->regmap, IMX214_REG_OPSYCK_DIV,
791+
IMX214_DEFAULT_OPSYCK_DIV, &ret);
792+
cci_write(imx214->regmap, IMX214_REG_PLL_MULT_DRIV,
793+
IMX214_PLL_SINGLE, &ret);
794+
cci_write(imx214->regmap, IMX214_REG_EXCK_FREQ,
795+
IMX214_EXCK_FREQ(IMX214_DEFAULT_CLK_FREQ / 1000000), &ret);
796+
797+
return ret;
798+
}
799+
795800
static int imx214_update_digital_gain(struct imx214 *imx214, u32 val)
796801
{
797802
int ret = 0;
@@ -1033,6 +1038,12 @@ static int imx214_start_streaming(struct imx214 *imx214)
10331038
return ret;
10341039
}
10351040

1041+
ret = imx214_set_clock(imx214);
1042+
if (ret) {
1043+
dev_err(imx214->dev, "failed to configure clock %d\n", ret);
1044+
return ret;
1045+
}
1046+
10361047
ret = cci_write(imx214->regmap, IMX214_REG_CSI_LANE_MODE,
10371048
IMX214_CSI_4_LANE_MODE, NULL);
10381049
if (ret) {

0 commit comments

Comments
 (0)