<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: MIPI CSI2 ioctl_g_ifparm ? in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702961#M109241</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello guys; I am confused about changing all the structer because I2C communication is OK and Other structers is fine. I need to change initiliazation stucters only ,actually&amp;nbsp;&lt;STRONG&gt; ioctl_g_ifparm&lt;/STRONG&gt; structer but when I look at the MIPI CSI2 format , all the driver should be changed and written from beggining. Is there any way to change the&amp;nbsp;&lt;STRONG&gt; ioctl_g_ifparm&lt;/STRONG&gt;&lt;STRONG&gt;(); &lt;/STRONG&gt;struct by not corrupting other initialization structers or all shape of the code. &lt;/P&gt;&lt;P&gt;This is the initialization structers which I referred from &lt;STRONG&gt;ov5640_mipi.c&lt;/STRONG&gt; file;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/****** Could be changed to the MIP&lt;/STRONG&gt;&lt;STRONG&gt;I CSI2 Format ******&lt;/STRONG&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p)&lt;/STRONG&gt;&lt;/EM&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (s == NULL) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_err("&amp;nbsp;&amp;nbsp; ERROR!! no slave device set!\n");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;memset(p, 0, sizeof(*p));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.clock_curr = imx290_data.mclk;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; clock_curr=mclk=%d\n", imx290_data.mclk);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_info("&amp;nbsp;&amp;nbsp; clock_curr=mclk=%d\n", imx290_data.mclk);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;if_type = V4L2_IF_TYPE_BT656;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.mode = V4L2_IF_TYPE_BT656_MODE_NOBT_8BIT;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.clock_min = IMX290_XCLK_MIN;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.clock_max = IMX290_XCLK_MAX;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.bt_sync_correct = 1;&amp;nbsp; /* Indicate external vsync */&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/EM&gt;static int ioctl_s_power(struct v4l2_int_device *s, int on)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sensor_data *sensor = s-&amp;gt;priv;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (on &amp;amp;&amp;amp; !sensor-&amp;gt;on) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (io_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (regulator_enable(io_regulator) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EIO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (core_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (regulator_enable(core_regulator) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EIO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (gpo_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (regulator_enable(gpo_regulator) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EIO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (analog_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (regulator_enable(analog_regulator) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EIO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} else if (!on &amp;amp;&amp;amp; sensor-&amp;gt;on) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (analog_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regulator_disable(analog_regulator);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (core_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regulator_disable(core_regulator);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (io_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regulator_disable(io_regulator);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (gpo_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regulator_disable(gpo_regulator);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sensor-&amp;gt;on = on;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_g_parm(struct v4l2_int_device *s, struct v4l2_streamparm *a) // get parameters &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sensor_data *sensor = s-&amp;gt;priv;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct v4l2_captureparm *cparm = &amp;amp;a-&amp;gt;parm.capture; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int ret = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (a-&amp;gt;type) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_CAPTURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;memset(a, 0, sizeof(*a));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;a-&amp;gt;type = V4L2_BUF_TYPE_VIDEO_CAPTURE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cparm-&amp;gt;capability = sensor-&amp;gt;streamcap.capability;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cparm-&amp;gt;timeperframe = sensor-&amp;gt;streamcap.timeperframe;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cparm-&amp;gt;capturemode = sensor-&amp;gt;streamcap.capturemode;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_OVERLAY:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VBI_CAPTURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VBI_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;default:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; type is unknown - %d\n", a-&amp;gt;type);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ret;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_s_parm(struct v4l2_int_device *s, struct v4l2_streamparm *a) &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sensor_data *sensor = s-&amp;gt;priv;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct v4l2_fract *timeperframe = &amp;amp;a-&amp;gt;parm.capture.timeperframe;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;u32 tgt_fps;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* target frames per secound */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;enum imx290_frame_rate frame_rate; // frame değerleri için&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;enum imx290_mode orig_mode;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int ret = 0;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (a-&amp;gt;type) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* This is the only case currently handled. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_CAPTURE:&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Check that the new frame rate is allowed. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ((timeperframe-&amp;gt;numerator == 0) ||&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (timeperframe-&amp;gt;denominator == 0)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timeperframe-&amp;gt;denominator = DEFAULT_FPS;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timeperframe-&amp;gt;numerator = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;tgt_fps = timeperframe-&amp;gt;denominator /&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; timeperframe-&amp;gt;numerator;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (tgt_fps &amp;gt; MAX_FPS) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timeperframe-&amp;gt;denominator = MAX_FPS;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timeperframe-&amp;gt;numerator = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Actual frame rate we use */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;tgt_fps = timeperframe-&amp;gt;denominator /&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; timeperframe-&amp;gt;numerator;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (tgt_fps == 25) //full hd1080p 25 fps&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;frame_rate = imx290_250_fps;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if (tgt_fps == 30)&amp;nbsp;&amp;nbsp; &amp;nbsp;//720phd 30 fps&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;frame_rate = imx290_30_fps;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_err(" The camera frame rate is not supported!\n");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;orig_mode = sensor-&amp;gt;streamcap.capturemode;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = imx290_init_mode(frame_rate,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(u32)a-&amp;gt;parm.capture.capturemode, orig_mode);&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// camera initialization&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (ret &amp;lt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ret;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sensor-&amp;gt;streamcap.timeperframe = *timeperframe; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sensor-&amp;gt;streamcap.capturemode =&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(u32)a-&amp;gt;parm.capture.capturemode;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* These are all the possible cases. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_OVERLAY:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VBI_CAPTURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VBI_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; type is not " \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;"V4L2_BUF_TYPE_VIDEO_CAPTURE but %d\n",&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;a-&amp;gt;type);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;default:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; type is unknown - %d\n", a-&amp;gt;type);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ret;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_g_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f)///get capture format&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sensor_data *sensor = s-&amp;gt;priv;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;f-&amp;gt;fmt.pix = sensor-&amp;gt;pix;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_g_ctrl(struct v4l2_int_device *s, struct v4l2_control *vc)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int ret = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (vc-&amp;gt;id) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_BRIGHTNESS:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.brightness;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_HUE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.hue;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_CONTRAST:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.contrast;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_SATURATION:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.saturation;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_RED_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.red;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_BLUE_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.blue;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_EXPOSURE:&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.ae_mode;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;default:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ret;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_s_ctrl(struct v4l2_int_device *s, struct v4l2_control *vc)&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int retval = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("In imx290:ioctl_s_ctrl %d\n",vc-&amp;gt;id);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (vc-&amp;gt;id) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_BRIGHTNESS:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_CONTRAST:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_SATURATION:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_HUE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_AUTO_WHITE_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_DO_WHITE_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_RED_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_BLUE_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_GAMMA:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_EXPOSURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_AUTOGAIN:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_GAIN:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_HFLIP:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_VFLIP:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;default:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;retval = -EPERM;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return retval;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_enum_framesizes(struct v4l2_int_device *s, struct v4l2_frmsizeenum *fsize)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (fsize-&amp;gt;index &amp;gt; imx290_mode_MAX) &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EINVAL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fsize-&amp;gt;pixel_format = imx290_data.pix.pixelformat;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fsize-&amp;gt;discrete.width =&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;max(imx290_mode_info_data[0][fsize-&amp;gt;index].width,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imx290_mode_info_data[1][fsize-&amp;gt;index].width);&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fsize-&amp;gt;discrete.height =&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;max(imx290_mode_info_data[0][fsize-&amp;gt;index].height,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imx290_mode_info_data[1][fsize-&amp;gt;index].height);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_enum_frameintervals(struct v4l2_int_device *s,struct v4l2_frmivalenum *fival)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int i, j, count = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fival-&amp;gt;type = V4L2_FRMIVAL_TYPE_DISCRETE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fival-&amp;gt;discrete.numerator = 1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; ARRAY_SIZE(imx290_mode_info_data); i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (j = 0; j &amp;lt; (imx290_mode_MAX + 1); j++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (fival-&amp;gt;pixel_format == imx290_data.pix.pixelformat&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;amp;&amp;amp; fival-&amp;gt;width == imx290_mode_info_data[i][j].width&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;amp;&amp;amp; fival-&amp;gt;height == imx290_mode_info_data[i][j].height&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;amp;&amp;amp; imx290_mode_info_data[i][j].init_data_ptr != NULL&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;amp;&amp;amp; fival-&amp;gt;index == count++) {&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fival-&amp;gt;discrete.denominator =&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;imx290_framerates[i];&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EINVAL;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_g_chip_ident(struct v4l2_int_device *s, int *id)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;((struct v4l2_dbg_chip_ident *)id)-&amp;gt;match.type =V4L2_CHIP_MATCH_I2C_DRIVER;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;strcpy(((struct v4l2_dbg_chip_ident *)id)-&amp;gt;match.name,"imx290_mipi_camera");&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_init(struct v4l2_int_device *s)&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_enum_fmt_cap(struct v4l2_int_device *s, struct v4l2_fmtdesc *fmt)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (fmt-&amp;gt;index &amp;gt; imx290_mode_MAX)&amp;nbsp;&amp;nbsp; &amp;nbsp;//fmt-&amp;gt;index = Number of the format in the enumeration&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EINVAL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fmt-&amp;gt;pixelformat = imx290_data.pix.pixelformat;&amp;nbsp;&amp;nbsp; &amp;nbsp;//pixelformat = The image format identifier&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_dev_init(struct v4l2_int_device *s)&amp;nbsp;&amp;nbsp; &amp;nbsp;//device initialization &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sensor_data *sensor = s-&amp;gt;priv;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;u32 tgt_xclk;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* target xclk */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;u32 tgt_fps;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* target frames per secound */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int ret;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;enum imx290_frame_rate frame_rate;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void *mipi_csi2_info;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;imx290_data.on = true;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* mclk */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;tgt_xclk = imx290_data.mclk;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;imx290_data.mclk = tgt_xclk;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; Setting mclk to %d MHz\n", tgt_xclk / 1000000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Default camera frame rate is set in probe */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;tgt_fps = sensor-&amp;gt;streamcap.timeperframe.denominator /&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; sensor-&amp;gt;streamcap.timeperframe.numerator;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (tgt_fps == 25) //full hd &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;frame_rate = imx290_25_fps;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if (tgt_fps == 30)&amp;nbsp; // 720HD&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;frame_rate = imx290_30_fps;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EINVAL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mipi_csi2_info = mipi_csi2_get_info();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* enable mipi csi2 */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (mipi_csi2_info)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mipi_csi2_enable(mipi_csi2_info);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(KERN_ERR "%s() in %s: Fail to get mipi_csi2_info!\n",&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __func__, __FILE__);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EPERM;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = imx290_init_mode(frame_rate, imx290_mode_INIT, imx290_mode_INIT);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ret;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_dev_exit(struct v4l2_int_device *s)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void *mipi_csi2_info;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mipi_csi2_info = mipi_csi2_get_info();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* disable mipi csi2 */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (mipi_csi2_info)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (mipi_csi2_get_status(mipi_csi2_info))&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mipi_csi2_disable(mipi_csi2_info);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct v4l2_int_ioctl_desc imx290_ioctl_desc[] = {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_dev_init_num, (v4l2_int_ioctl_func *) ioctl_dev_init},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_dev_exit_num, ioctl_dev_exit},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_s_power_num, (v4l2_int_ioctl_func *) ioctl_s_power},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_g_ifparm_num, (v4l2_int_ioctl_func *) ioctl_g_ifparm},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_init_num, (v4l2_int_ioctl_func *) ioctl_init},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_enum_fmt_cap_num,&amp;nbsp;(v4l2_int_ioctl_func *) ioctl_enum_fmt_cap},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_g_fmt_cap_num, (v4l2_int_ioctl_func *) ioctl_g_fmt_cap},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_g_parm_num, (v4l2_int_ioctl_func *) ioctl_g_parm},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_s_parm_num, (v4l2_int_ioctl_func *) ioctl_s_parm},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_g_ctrl_num, (v4l2_int_ioctl_func *) ioctl_g_ctrl},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_s_ctrl_num, (v4l2_int_ioctl_func *) ioctl_s_ctrl},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_enum_framesizes_num, &amp;nbsp;(v4l2_int_ioctl_func *) ioctl_enum_framesizes},&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_enum_frameintervals_num,(v4l2_int_ioctl_func *) ioctl_enum_frameintervals},&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_g_chip_ident_num,&amp;nbsp;(v4l2_int_ioctl_func *) ioctl_g_chip_ident},&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;};&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 13 Oct 2017 07:04:01 GMT</pubDate>
    <dc:creator>mustafabakircio</dc:creator>
    <dc:date>2017-10-13T07:04:01Z</dc:date>
    <item>
      <title>MIPI CSI2 ioctl_g_ifparm ?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702958#M109238</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello ;&lt;/P&gt;&lt;P&gt;I am writing imx290 mipi csi2 driver on imx6q (wandboard). I am facing with the &lt;STRONG&gt; mipi csi2 can not receive sensor clk " &lt;/STRONG&gt;error. I modified the ov5640_mipi.c file according to the camera registers and settings. But I am only using mipi csi-2 interface with i2c (4 mipi data lanes , 1 mipi clock lane and i2c communication). According to the code something is look like wrong to me.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p)&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (s == NULL) {&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_err("&amp;nbsp;&amp;nbsp; ERROR!! no slave device set!\n");&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -1;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;memset(p, 0, sizeof(*p));&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.clock_curr = imx290_data.mclk;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; clock_curr=mclk=%d\n", imx290_data.mclk);&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_info("&amp;nbsp;&amp;nbsp; clock_curr=mclk=%d\n", imx290_data.mclk);&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;if_type = V4L2_IF_TYPE_BT656;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.mode = V4L2_IF_TYPE_BT656_MODE_NOBT_8BIT;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.clock_min = IMX290_XCLK_MIN;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.clock_max = IMX290_XCLK_MAX;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.bt_sync_correct = 1;&amp;nbsp; /* Indicate external vsync */&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;/STRONG&gt;&lt;BR /&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper" image-alt="Screenshot from 2017-10-12 01-12-34.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/30051i173997B57D49A7E3/image-size/large?v=v2&amp;amp;px=999" role="button" title="Screenshot from 2017-10-12 01-12-34.png" alt="Screenshot from 2017-10-12 01-12-34.png" /&gt;&lt;/span&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;This settings are done according to the parallel camera settings . Is there any setting modes according to the mipi csi2 interface codes or macros.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Oct 2017 13:31:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702958#M109238</guid>
      <dc:creator>mustafabakircio</dc:creator>
      <dc:date>2017-10-11T13:31:53Z</dc:date>
    </item>
    <item>
      <title>Re: MIPI CSI2 ioctl_g_ifparm ?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702959#M109239</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mustafa&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;bt656 is not supported by CSI2IPU gasket and seems these codes are from ov5640.c&lt;/P&gt;&lt;P&gt;(parallel camera driver), for supported formats one can look at sect.4.1. Color formats and clock&lt;/P&gt;&lt;P&gt;AN5305 IPI-CSI2 Peripheral on i.MX6 MPUs&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://www.nxp.com/docs/en/application-note/AN5305.pdf" title="https://www.nxp.com/docs/en/application-note/AN5305.pdf"&gt;https://www.nxp.com/docs/en/application-note/AN5305.pdf&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards&lt;BR /&gt;igor&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Oct 2017 05:59:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702959#M109239</guid>
      <dc:creator>igorpadykov</dc:creator>
      <dc:date>2017-10-12T05:59:47Z</dc:date>
    </item>
    <item>
      <title>Re: MIPI CSI2 ioctl_g_ifparm ?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702960#M109240</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/igorpadykov"&gt;igorpadykov&lt;/A&gt;‌&lt;/P&gt;&lt;P&gt;I think I need the change structer of the &lt;STRONG&gt;static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p)&lt;/STRONG&gt; ; I guess, I need to change every settings adjustment according to the &lt;A class="link-titled" href="https://www.kernel.org/doc/html/v4.10/media/kapi/csi2.html" title="https://www.kernel.org/doc/html/v4.10/media/kapi/csi2.html"&gt;13. MIPI CSI-2 — The Linux Kernel documentation&lt;/A&gt; this and this &lt;A class="link-titled" href="https://linuxtv.org/downloads/v4l-dvb-apis/kapi/v4l2-mediabus.html" title="https://linuxtv.org/downloads/v4l-dvb-apis/kapi/v4l2-mediabus.html"&gt;1.19. V4L2 Media Bus functions and data structures — Linux Media Subsystem Documentation documentation&lt;/A&gt;&amp;nbsp; documentations. Actually I am not master at writing device driver. Would it be possible to show me the steps, referance codes or documents according to the how mipi csi2 camera device driver settings should be ,except&amp;nbsp;&lt;A href="https://community.nxp.com/docs/DOC-94312"&gt;Debug steps for customer MIPI sensor.docx&lt;/A&gt; and&amp;nbsp;&lt;A class="link-titled" href="https://www.nxp.com/docs/en/application-note/AN5305.pdf" title="https://www.nxp.com/docs/en/application-note/AN5305.pdf"&gt;https://www.nxp.com/docs/en/application-note/AN5305.pdf&lt;/A&gt; these documents, and also which structers do I need&amp;nbsp; ? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Oct 2017 10:52:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702960#M109240</guid>
      <dc:creator>mustafabakircio</dc:creator>
      <dc:date>2017-10-12T10:52:25Z</dc:date>
    </item>
    <item>
      <title>Re: MIPI CSI2 ioctl_g_ifparm ?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702961#M109241</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello guys; I am confused about changing all the structer because I2C communication is OK and Other structers is fine. I need to change initiliazation stucters only ,actually&amp;nbsp;&lt;STRONG&gt; ioctl_g_ifparm&lt;/STRONG&gt; structer but when I look at the MIPI CSI2 format , all the driver should be changed and written from beggining. Is there any way to change the&amp;nbsp;&lt;STRONG&gt; ioctl_g_ifparm&lt;/STRONG&gt;&lt;STRONG&gt;(); &lt;/STRONG&gt;struct by not corrupting other initialization structers or all shape of the code. &lt;/P&gt;&lt;P&gt;This is the initialization structers which I referred from &lt;STRONG&gt;ov5640_mipi.c&lt;/STRONG&gt; file;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/****** Could be changed to the MIP&lt;/STRONG&gt;&lt;STRONG&gt;I CSI2 Format ******&lt;/STRONG&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;static int ioctl_g_ifparm(struct v4l2_int_device *s, struct v4l2_ifparm *p)&lt;/STRONG&gt;&lt;/EM&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (s == NULL) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_err("&amp;nbsp;&amp;nbsp; ERROR!! no slave device set!\n");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;memset(p, 0, sizeof(*p));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.clock_curr = imx290_data.mclk;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; clock_curr=mclk=%d\n", imx290_data.mclk);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_info("&amp;nbsp;&amp;nbsp; clock_curr=mclk=%d\n", imx290_data.mclk);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;if_type = V4L2_IF_TYPE_BT656;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.mode = V4L2_IF_TYPE_BT656_MODE_NOBT_8BIT;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.clock_min = IMX290_XCLK_MIN;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.clock_max = IMX290_XCLK_MAX;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;p-&amp;gt;u.bt656.bt_sync_correct = 1;&amp;nbsp; /* Indicate external vsync */&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/EM&gt;static int ioctl_s_power(struct v4l2_int_device *s, int on)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sensor_data *sensor = s-&amp;gt;priv;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (on &amp;amp;&amp;amp; !sensor-&amp;gt;on) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (io_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (regulator_enable(io_regulator) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EIO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (core_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (regulator_enable(core_regulator) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EIO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (gpo_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (regulator_enable(gpo_regulator) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EIO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (analog_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (regulator_enable(analog_regulator) != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EIO;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} else if (!on &amp;amp;&amp;amp; sensor-&amp;gt;on) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (analog_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regulator_disable(analog_regulator);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (core_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regulator_disable(core_regulator);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (io_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regulator_disable(io_regulator);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (gpo_regulator)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;regulator_disable(gpo_regulator);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sensor-&amp;gt;on = on;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_g_parm(struct v4l2_int_device *s, struct v4l2_streamparm *a) // get parameters &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sensor_data *sensor = s-&amp;gt;priv;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct v4l2_captureparm *cparm = &amp;amp;a-&amp;gt;parm.capture; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int ret = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (a-&amp;gt;type) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_CAPTURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;memset(a, 0, sizeof(*a));&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;a-&amp;gt;type = V4L2_BUF_TYPE_VIDEO_CAPTURE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cparm-&amp;gt;capability = sensor-&amp;gt;streamcap.capability;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cparm-&amp;gt;timeperframe = sensor-&amp;gt;streamcap.timeperframe;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cparm-&amp;gt;capturemode = sensor-&amp;gt;streamcap.capturemode;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_OVERLAY:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VBI_CAPTURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VBI_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;default:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; type is unknown - %d\n", a-&amp;gt;type);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ret;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_s_parm(struct v4l2_int_device *s, struct v4l2_streamparm *a) &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sensor_data *sensor = s-&amp;gt;priv;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct v4l2_fract *timeperframe = &amp;amp;a-&amp;gt;parm.capture.timeperframe;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;u32 tgt_fps;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* target frames per secound */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;enum imx290_frame_rate frame_rate; // frame değerleri için&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;enum imx290_mode orig_mode;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int ret = 0;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (a-&amp;gt;type) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* This is the only case currently handled. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_CAPTURE:&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Check that the new frame rate is allowed. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ((timeperframe-&amp;gt;numerator == 0) ||&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (timeperframe-&amp;gt;denominator == 0)) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timeperframe-&amp;gt;denominator = DEFAULT_FPS;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timeperframe-&amp;gt;numerator = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;tgt_fps = timeperframe-&amp;gt;denominator /&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; timeperframe-&amp;gt;numerator;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (tgt_fps &amp;gt; MAX_FPS) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timeperframe-&amp;gt;denominator = MAX_FPS;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timeperframe-&amp;gt;numerator = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Actual frame rate we use */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;tgt_fps = timeperframe-&amp;gt;denominator /&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; timeperframe-&amp;gt;numerator;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (tgt_fps == 25) //full hd1080p 25 fps&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;frame_rate = imx290_250_fps;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if (tgt_fps == 30)&amp;nbsp;&amp;nbsp; &amp;nbsp;//720phd 30 fps&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;frame_rate = imx290_30_fps;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_err(" The camera frame rate is not supported!\n");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;orig_mode = sensor-&amp;gt;streamcap.capturemode;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = imx290_init_mode(frame_rate,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(u32)a-&amp;gt;parm.capture.capturemode, orig_mode);&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;/// camera initialization&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (ret &amp;lt; 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ret;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sensor-&amp;gt;streamcap.timeperframe = *timeperframe; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sensor-&amp;gt;streamcap.capturemode =&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(u32)a-&amp;gt;parm.capture.capturemode;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* These are all the possible cases. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VIDEO_OVERLAY:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VBI_CAPTURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_VBI_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; type is not " \&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;"V4L2_BUF_TYPE_VIDEO_CAPTURE but %d\n",&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;a-&amp;gt;type);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;default:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; type is unknown - %d\n", a-&amp;gt;type);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ret;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_g_fmt_cap(struct v4l2_int_device *s, struct v4l2_format *f)///get capture format&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sensor_data *sensor = s-&amp;gt;priv;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;f-&amp;gt;fmt.pix = sensor-&amp;gt;pix;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_g_ctrl(struct v4l2_int_device *s, struct v4l2_control *vc)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int ret = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (vc-&amp;gt;id) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_BRIGHTNESS:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.brightness;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_HUE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.hue;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_CONTRAST:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.contrast;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_SATURATION:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.saturation;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_RED_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.red;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_BLUE_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.blue;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_EXPOSURE:&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;vc-&amp;gt;value = imx290_data.ae_mode;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;default:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = -EINVAL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ret;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_s_ctrl(struct v4l2_int_device *s, struct v4l2_control *vc)&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int retval = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("In imx290:ioctl_s_ctrl %d\n",vc-&amp;gt;id);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (vc-&amp;gt;id) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_BRIGHTNESS:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_CONTRAST:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_SATURATION:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_HUE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_AUTO_WHITE_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_DO_WHITE_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_RED_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_BLUE_BALANCE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_GAMMA:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_EXPOSURE:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_AUTOGAIN:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_GAIN:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_HFLIP:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case V4L2_CID_VFLIP:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;default:&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;retval = -EPERM;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return retval;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_enum_framesizes(struct v4l2_int_device *s, struct v4l2_frmsizeenum *fsize)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (fsize-&amp;gt;index &amp;gt; imx290_mode_MAX) &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EINVAL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fsize-&amp;gt;pixel_format = imx290_data.pix.pixelformat;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fsize-&amp;gt;discrete.width =&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;max(imx290_mode_info_data[0][fsize-&amp;gt;index].width,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imx290_mode_info_data[1][fsize-&amp;gt;index].width);&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fsize-&amp;gt;discrete.height =&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;max(imx290_mode_info_data[0][fsize-&amp;gt;index].height,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imx290_mode_info_data[1][fsize-&amp;gt;index].height);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_enum_frameintervals(struct v4l2_int_device *s,struct v4l2_frmivalenum *fival)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int i, j, count = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fival-&amp;gt;type = V4L2_FRMIVAL_TYPE_DISCRETE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fival-&amp;gt;discrete.numerator = 1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (i = 0; i &amp;lt; ARRAY_SIZE(imx290_mode_info_data); i++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (j = 0; j &amp;lt; (imx290_mode_MAX + 1); j++)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (fival-&amp;gt;pixel_format == imx290_data.pix.pixelformat&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;amp;&amp;amp; fival-&amp;gt;width == imx290_mode_info_data[i][j].width&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;amp;&amp;amp; fival-&amp;gt;height == imx290_mode_info_data[i][j].height&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;amp;&amp;amp; imx290_mode_info_data[i][j].init_data_ptr != NULL&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;amp;&amp;amp; fival-&amp;gt;index == count++) {&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fival-&amp;gt;discrete.denominator =&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;imx290_framerates[i];&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EINVAL;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_g_chip_ident(struct v4l2_int_device *s, int *id)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;((struct v4l2_dbg_chip_ident *)id)-&amp;gt;match.type =V4L2_CHIP_MATCH_I2C_DRIVER;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;strcpy(((struct v4l2_dbg_chip_ident *)id)-&amp;gt;match.name,"imx290_mipi_camera");&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_init(struct v4l2_int_device *s)&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_enum_fmt_cap(struct v4l2_int_device *s, struct v4l2_fmtdesc *fmt)&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (fmt-&amp;gt;index &amp;gt; imx290_mode_MAX)&amp;nbsp;&amp;nbsp; &amp;nbsp;//fmt-&amp;gt;index = Number of the format in the enumeration&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EINVAL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fmt-&amp;gt;pixelformat = imx290_data.pix.pixelformat;&amp;nbsp;&amp;nbsp; &amp;nbsp;//pixelformat = The image format identifier&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_dev_init(struct v4l2_int_device *s)&amp;nbsp;&amp;nbsp; &amp;nbsp;//device initialization &lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;struct sensor_data *sensor = s-&amp;gt;priv;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;u32 tgt_xclk;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* target xclk */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;u32 tgt_fps;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* target frames per secound */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int ret;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;enum imx290_frame_rate frame_rate;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void *mipi_csi2_info;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;imx290_data.on = true;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* mclk */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;tgt_xclk = imx290_data.mclk;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;imx290_data.mclk = tgt_xclk;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pr_debug("&amp;nbsp;&amp;nbsp; Setting mclk to %d MHz\n", tgt_xclk / 1000000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* Default camera frame rate is set in probe */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;tgt_fps = sensor-&amp;gt;streamcap.timeperframe.denominator /&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; sensor-&amp;gt;streamcap.timeperframe.numerator;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (tgt_fps == 25) //full hd &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;frame_rate = imx290_25_fps;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else if (tgt_fps == 30)&amp;nbsp; // 720HD&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;frame_rate = imx290_30_fps;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EINVAL;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mipi_csi2_info = mipi_csi2_get_info();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* enable mipi csi2 */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (mipi_csi2_info)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mipi_csi2_enable(mipi_csi2_info);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;printk(KERN_ERR "%s() in %s: Fail to get mipi_csi2_info!\n",&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __func__, __FILE__);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return -EPERM;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = imx290_init_mode(frame_rate, imx290_mode_INIT, imx290_mode_INIT);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return ret;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static int ioctl_dev_exit(struct v4l2_int_device *s)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void *mipi_csi2_info;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mipi_csi2_info = mipi_csi2_get_info();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* disable mipi csi2 */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (mipi_csi2_info)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (mipi_csi2_get_status(mipi_csi2_info))&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mipi_csi2_disable(mipi_csi2_info);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;static struct v4l2_int_ioctl_desc imx290_ioctl_desc[] = {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_dev_init_num, (v4l2_int_ioctl_func *) ioctl_dev_init},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_dev_exit_num, ioctl_dev_exit},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_s_power_num, (v4l2_int_ioctl_func *) ioctl_s_power},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_g_ifparm_num, (v4l2_int_ioctl_func *) ioctl_g_ifparm},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_init_num, (v4l2_int_ioctl_func *) ioctl_init},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_enum_fmt_cap_num,&amp;nbsp;(v4l2_int_ioctl_func *) ioctl_enum_fmt_cap},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_g_fmt_cap_num, (v4l2_int_ioctl_func *) ioctl_g_fmt_cap},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_g_parm_num, (v4l2_int_ioctl_func *) ioctl_g_parm},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_s_parm_num, (v4l2_int_ioctl_func *) ioctl_s_parm},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_g_ctrl_num, (v4l2_int_ioctl_func *) ioctl_g_ctrl},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_s_ctrl_num, (v4l2_int_ioctl_func *) ioctl_s_ctrl},&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_enum_framesizes_num, &amp;nbsp;(v4l2_int_ioctl_func *) ioctl_enum_framesizes},&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_enum_frameintervals_num,(v4l2_int_ioctl_func *) ioctl_enum_frameintervals},&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{vidioc_int_g_chip_ident_num,&amp;nbsp;(v4l2_int_ioctl_func *) ioctl_g_chip_ident},&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;};&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Oct 2017 07:04:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702961#M109241</guid>
      <dc:creator>mustafabakircio</dc:creator>
      <dc:date>2017-10-13T07:04:01Z</dc:date>
    </item>
    <item>
      <title>Re: MIPI CSI2 ioctl_g_ifparm ?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702962#M109242</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Guys I could not find any solution untill now, do you have any idea about this issue?&lt;/P&gt;&lt;P&gt;Also without mxc_v4l2_capture.h and v4l2_int_device.h libraries can I access the video streaming from gstreamer?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Oct 2017 10:11:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/MIPI-CSI2-ioctl-g-ifparm/m-p/702962#M109242</guid>
      <dc:creator>mustafabakircio</dc:creator>
      <dc:date>2017-10-19T10:11:15Z</dc:date>
    </item>
  </channel>
</rss>

