@@ -231,8 +231,12 @@ static int adv748x_csi2_set_format(struct v4l2_subdev *sd,
static int adv748x_csi2_get_frame_desc(struct v4l2_subdev *sd, unsigned int pad,
struct v4l2_mbus_frame_desc *fd)
{
+ struct v4l2_mbus_frame_desc_entry_csi2_dphy *dphy;
struct adv748x_csi2 *tx = adv748x_sd_to_csi2(sd);
+ struct v4l2_mbus_frame_desc_entry_csi2 *csi2;
struct v4l2_mbus_framefmt *mbusformat;
+ unsigned int i;
+
memset(fd, 0, sizeof(*fd));
@@ -244,13 +248,20 @@ static int adv748x_csi2_get_frame_desc(struct v4l2_subdev *sd, unsigned int pad,
if (!mbusformat)
return -EINVAL;
+ fd->type = V4L2_MBUS_FRAME_DESC_TYPE_CSI2_DPHY;
+ fd->num_entries = 1;
+
fd->entry->stream = tx->vc;
- fd->entry->bus.csi2.channel = tx->vc;
- fd->entry->bus.csi2.data_type =
- adv748x_csi2_code_to_datatype(mbusformat->code);
- fd->type = V4L2_MBUS_FRAME_DESC_TYPE_CSI2;
- fd->num_entries = 1;
+ csi2 = &fd->entry->bus.csi2;
+ csi2->channel = tx->vc;
+ csi2->data_type = adv748x_csi2_code_to_datatype(mbusformat->code);
+
+ dphy = &fd->phy.csi2_dphy;
+ dphy->clock_lane = 0;
+ for (i = 0; i < tx->num_lanes; ++i)
+ dphy->data_lanes[i] = i + 1;
+ dphy->num_data_lanes = tx->num_lanes;
return 0;
}
Extend the media bus frame description to report the D-PHY bus configuration. Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> --- drivers/media/i2c/adv748x/adv748x-csi2.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-)