static int imx7_csi_registered(struct v4l2_subdev *sd) { struct imx7_csi *csi = v4l2_get_subdevdata(sd); int ret; int i; for (i = 0; i < IMX7_CSI_PADS_NUM; i++) { csi->pad[i].flags = (i == IMX7_CSI_PAD_SINK) ? MEDIA_PAD_FL_SINK : MEDIA_PAD_FL_SOURCE; /* set a default mbus format */ ret = imx_media_init_mbus_fmt(&csi->format_mbus[i], 800, 600, 0, V4L2_FIELD_NONE, &csi->cc[i]); if (ret < 0) return ret; /* init default frame interval */ csi->frame_interval[i].numerator = 1; csi->frame_interval[i].denominator = 30; } ret = media_entity_pads_init(&sd->entity, IMX7_CSI_PADS_NUM, csi->pad); if (ret < 0) return ret; return imx_media_capture_device_register(csi->vdev); }
static int imx7_csi_init_cfg(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg) { struct imx7_csi *csi = v4l2_get_subdevdata(sd); struct v4l2_mbus_framefmt *mf; int ret; int i; for (i = 0; i < IMX7_CSI_PADS_NUM; i++) { mf = v4l2_subdev_get_try_format(sd, cfg, i); ret = imx_media_init_mbus_fmt(mf, 800, 600, 0, V4L2_FIELD_NONE, &csi->cc[i]); if (ret < 0) return ret; } return 0; }
/* * retrieve our pads parsed from the OF graph by the media device */ static int vdic_registered(struct v4l2_subdev *sd) { struct vdic_priv *priv = v4l2_get_subdevdata(sd); int i, ret; u32 code; /* get media device */ priv->md = dev_get_drvdata(sd->v4l2_dev->dev); for (i = 0; i < VDIC_NUM_PADS; i++) { priv->pad[i].flags = (i == VDIC_SRC_PAD_DIRECT) ? MEDIA_PAD_FL_SOURCE : MEDIA_PAD_FL_SINK; code = 0; if (i != VDIC_SINK_PAD_IDMAC) imx_media_enum_ipu_format(&code, 0, CS_SEL_YUV); /* set a default mbus format */ ret = imx_media_init_mbus_fmt(&priv->format_mbus[i], 640, 480, code, V4L2_FIELD_NONE, &priv->cc[i]); if (ret) return ret; /* init default frame interval */ priv->frame_interval[i].numerator = 1; priv->frame_interval[i].denominator = 30; if (i == VDIC_SRC_PAD_DIRECT) priv->frame_interval[i].denominator *= 2; } priv->active_input_pad = VDIC_SINK_PAD_DIRECT; ret = vdic_init_controls(priv); if (ret) return ret; ret = media_entity_pads_init(&sd->entity, VDIC_NUM_PADS, priv->pad); if (ret) v4l2_ctrl_handler_free(&priv->ctrl_hdlr); return ret; }