Skip to content

Commit

Permalink
media: camss: csid: Configure data type and decode format properly
Browse files Browse the repository at this point in the history
The CSID decodes the input data stream. When the input comes from
the Test Generator the format of the stream is set on the source
media pad. When the input comes from the CSIPHY the format is the
one on the sink media pad. Use the proper format for each case.

Signed-off-by: Todor Tomov <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
  • Loading branch information
todortomov authored and mchehab committed Aug 2, 2018
1 parent 7066647 commit c628e78
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions drivers/media/platform/qcom/camss/camss-csid.c
Original file line number Diff line number Diff line change
Expand Up @@ -384,9 +384,6 @@ static int csid_set_stream(struct v4l2_subdev *sd, int enable)
!media_entity_remote_pad(&csid->pads[MSM_CSID_PAD_SINK]))
return -ENOLINK;

dt = csid_get_fmt_entry(csid->fmt[MSM_CSID_PAD_SRC].code)->
data_type;

if (tg->enabled) {
/* Config Test Generator */
struct v4l2_mbus_framefmt *f =
Expand All @@ -408,6 +405,9 @@ static int csid_set_stream(struct v4l2_subdev *sd, int enable)
writel_relaxed(val, csid->base +
CAMSS_CSID_TG_DT_n_CGG_0(0));

dt = csid_get_fmt_entry(
csid->fmt[MSM_CSID_PAD_SRC].code)->data_type;

/* 5:0 data type */
val = dt;
writel_relaxed(val, csid->base +
Expand All @@ -417,6 +417,9 @@ static int csid_set_stream(struct v4l2_subdev *sd, int enable)
val = tg->payload_mode;
writel_relaxed(val, csid->base +
CAMSS_CSID_TG_DT_n_CGG_2(0));

df = csid_get_fmt_entry(
csid->fmt[MSM_CSID_PAD_SRC].code)->decode_format;
} else {
struct csid_phy_config *phy = &csid->phy;

Expand All @@ -431,13 +434,16 @@ static int csid_set_stream(struct v4l2_subdev *sd, int enable)

writel_relaxed(val,
csid->base + CAMSS_CSID_CORE_CTRL_1);

dt = csid_get_fmt_entry(
csid->fmt[MSM_CSID_PAD_SINK].code)->data_type;
df = csid_get_fmt_entry(
csid->fmt[MSM_CSID_PAD_SINK].code)->decode_format;
}

/* Config LUT */

dt_shift = (cid % 4) * 8;
df = csid_get_fmt_entry(csid->fmt[MSM_CSID_PAD_SINK].code)->
decode_format;

val = readl_relaxed(csid->base + CAMSS_CSID_CID_LUT_VC_n(vc));
val &= ~(0xff << dt_shift);
Expand Down

0 comments on commit c628e78

Please sign in to comment.