diff mbox

[v2,08/21,media] imx: Add i.MX IPUv3 capture driver

Message ID fe21681b-0b92-c983-b14a-daf6504a9000@embed.me.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Jack Mitchell Oct. 19, 2016, 4:22 p.m. UTC
Hi Philipp,

On 17/10/16 13:12, Philipp Zabel wrote:
> Hi Jack,
>
> Am Montag, den 17.10.2016, 12:32 +0100 schrieb Jack Mitchell:
>> Hi Philipp,
>>
>> I'm looking at how I would enable a parallel greyscale camera using this
>> set of drivers and am a little bit confused. Do you have an example
>> somewhere of a devicetree with an input node.
>
> In your board device tree it should look somewhat like this:
>
> &i2c1 {
> 	sensor@48 {
> 		compatible = "aptina,mt9v032m";
> 		/* ... */
>
> 		port {
> 			cam_out: endpoint {
> 				remote-endpoint = <&csi_in>;
> 			}
> 		};
> 	};
> };
>
> /*
>  * This is the input port node corresponding to the 'CSI0' pad group,
>  * not necessarily the CSI0 port of IPU1 or IPU2. On i.MX6Q it's port@1
>  * of the mipi_ipu1_mux, on i.MX6DL it's port@4 of the ipu_csi0_mux,
>  * the csi0 label is added in patch 13/21.
>  */
> &csi0 {
> 	#address-cells = <1>;
> 	#size-cells = <0>;
>
> 	csi_in: endpoint@0 {
> 		bus-width = <8>;
> 		data-shift = <12>;
> 		hsync-active = <1>;
> 		vsync-active = <1>;
> 		pclk-sample = <1>;
> 		remote-endpoint = <&cam_out>;
> 	};
> };
>
>>  I also have a further note below:
> [...]
>>> +	if (raw && priv->smfc) {
>>

Thank you, I think I have something which is kind of right.

(Apologies in advance for the formatting)


However, I can't seem to link the entities together properly, am I 
missing something obvious?

root@vicon:~# media-ctl -p
Media controller API version 0.1.0

Media device information
------------------------
driver          imx-media
model           i.MX IPUv3
serial
bus info
hw revision     0x0
driver version  0.0.0

Device topology
- entity 1: IPU0 CSI0 (2 pads, 1 link)
             type V4L2 subdev subtype Unknown flags 0
	pad0: Sink
	pad1: Source
		-> "imx-ipuv3-capture.0":0 [ENABLED]

- entity 4: imx-ipuv3-capture.0 (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video0
	pad0: Sink
		<- "IPU0 CSI0":1 [ENABLED]

- entity 10: IPU0 CSI1 (2 pads, 1 link)
              type V4L2 subdev subtype Unknown flags 0
	pad0: Sink
	pad1: Source
		-> "imx-ipuv3-capture.1":0 [ENABLED]

- entity 13: imx-ipuv3-capture.1 (1 pad, 1 link)
              type Node subtype V4L flags 0
              device node name /dev/video1
	pad0: Sink
		<- "IPU0 CSI1":1 [ENABLED]

- entity 19: IPU1 CSI0 (2 pads, 1 link)
              type V4L2 subdev subtype Unknown flags 0
	pad0: Sink
	pad1: Source
		-> "imx-ipuv3-capture.0":0 [ENABLED]

- entity 22: imx-ipuv3-capture.0 (1 pad, 1 link)
              type Node subtype V4L flags 0
              device node name /dev/video2
	pad0: Sink
		<- "IPU1 CSI0":1 [ENABLED]

- entity 28: IPU1 CSI1 (2 pads, 1 link)
              type V4L2 subdev subtype Unknown flags 0
	pad0: Sink
	pad1: Source
		-> "imx-ipuv3-capture.1":0 [ENABLED]

- entity 31: imx-ipuv3-capture.1 (1 pad, 1 link)
              type Node subtype V4L flags 0
              device node name /dev/video3
	pad0: Sink
		<- "IPU1 CSI1":1 [ENABLED]

- entity 37: mipi_ipu1_mux (3 pads, 0 link)
              type V4L2 subdev subtype Unknown flags 0
	pad0: Sink
	pad1: Sink
	pad2: Source

- entity 41: mipi_ipu2_mux (3 pads, 0 link)
              type V4L2 subdev subtype Unknown flags 0
	pad0: Sink
	pad1: Sink
	pad2: Source

- entity 45: ar0135 1-0010 (1 pad, 0 link)
              type V4L2 subdev subtype Unknown flags 0
	pad0: Source




root@imx6:~# media-ctl -v --links '"ar01351-0010":0->"mipi_ipu1_mux":0[1]'

Opening media device /dev/media0
Enumerating entities
Found 11 entities
Enumerating pads and links
No link between "ar0135 1-0010":0 and "mipi_ipu1_mux":0
media_parse_setup_link: Unable to parse link

  "ar0135 1-0010":0->"mipi_ipu1_mux":0[1]
                                      ^
Unable to parse link: Invalid argument (22)

If you have something in the works with a camera example then just tell 
me to be patient and I'll wait for a v3 ;)

Cheers,
Jack.

>> How does this ever get used? If I were to set 1X8 greyscale it wouldn't
>> ever take this path, correct?
>
> Thank you, that is a leftover from stripping down the driver to the
> basics. I'll test with a grayscale camera and fix this in the next
> version.
>
> regards
> Philipp
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Marek Vasut Oct. 19, 2016, 7:25 p.m. UTC | #1
On 10/19/2016 06:22 PM, Jack Mitchell wrote:
> Hi Philipp,
> 
> On 17/10/16 13:12, Philipp Zabel wrote:
>> Hi Jack,
>>
>> Am Montag, den 17.10.2016, 12:32 +0100 schrieb Jack Mitchell:
>>> Hi Philipp,
>>>
>>> I'm looking at how I would enable a parallel greyscale camera using this
>>> set of drivers and am a little bit confused. Do you have an example
>>> somewhere of a devicetree with an input node.
>>
>> In your board device tree it should look somewhat like this:
>>
>> &i2c1 {
>>     sensor@48 {
>>         compatible = "aptina,mt9v032m";
>>         /* ... */
>>
>>         port {
>>             cam_out: endpoint {
>>                 remote-endpoint = <&csi_in>;
>>             }
>>         };
>>     };
>> };
>>
>> /*
>>  * This is the input port node corresponding to the 'CSI0' pad group,
>>  * not necessarily the CSI0 port of IPU1 or IPU2. On i.MX6Q it's port@1
>>  * of the mipi_ipu1_mux, on i.MX6DL it's port@4 of the ipu_csi0_mux,
>>  * the csi0 label is added in patch 13/21.
>>  */
>> &csi0 {
>>     #address-cells = <1>;
>>     #size-cells = <0>;
>>
>>     csi_in: endpoint@0 {
>>         bus-width = <8>;
>>         data-shift = <12>;
>>         hsync-active = <1>;
>>         vsync-active = <1>;
>>         pclk-sample = <1>;
>>         remote-endpoint = <&cam_out>;
>>     };
>> };
>>
>>>  I also have a further note below:
>> [...]
>>>> +    if (raw && priv->smfc) {
>>>
> 
> Thank you, I think I have something which is kind of right.
> 
> (Apologies in advance for the formatting)
> 
> diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts
> b/arch/arm/boot/dts/imx6q-sabrelite.dts
> index 66d10d8..90e6b92 100644
> --- a/arch/arm/boot/dts/imx6q-sabrelite.dts
> +++ b/arch/arm/boot/dts/imx6q-sabrelite.dts
> @@ -52,3 +52,62 @@
>  &sata {
>      status = "okay";
>  };
> +
> +&i2c2 {
> +    sensor@10 {
> +        compatible = "onsemi,ar0135";
> +        reg = <0x10>;
> +
> +        pinctrl-names = "default";
> +        pinctrl-0 = <&pinctrl_ar0135>;
> +
> +        reset-gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
> +
> +        clocks = <&clks IMX6QDL_CLK_CKO2>;
> +        clock-names = "xclk";
> +
> +        xclk = <24000000>;
> +
> +        port {
> +            parallel_camera_output: endpoint {
> +                remote-endpoint = <&csi_in_from_parallel_camera>;
> +            };
> +        };
> +    };
> +};
> +
> +&csi0 {
> +    csi_in_from_parallel_camera: endpoint@0 {
> +        bus-width = <8>;
> +        data-shift = <12>;
> +        hsync-active = <1>;
> +        vsync-active = <1>;
> +        pclk-sample = <1>;
> +        remote-endpoint = <&parallel_camera_output>;
> +    };
> +};
> +
> +&iomuxc {
> +
> +        imx6q-sabrelite {
> +
> +        pinctrl_ar0135: ar0135grp {
> +            fsl,pins = <
> +                MX6QDL_PAD_GPIO_6__GPIO1_IO06   0x80000000
> +                MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12    0x80000000
> +                MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13    0x80000000
> +                MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14    0x80000000
> +                MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15    0x80000000
> +                MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16    0x80000000
> +                MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17    0x80000000
> +                MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18    0x80000000
> +                MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19    0x80000000
> +                MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK   0x80000000
> +                MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC      0x80000000
> +                MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC     0x80000000
> +                MX6QDL_PAD_CSI0_DATA_EN__IPU1_CSI0_DATA_EN 0x80000000
> +            >;
> +        };
> +    };
> +};
> 
> 
> However, I can't seem to link the entities together properly, am I
> missing something obvious?
> 
> root@vicon:~# media-ctl -p
> Media controller API version 0.1.0
> 
> Media device information
> ------------------------
> driver          imx-media
> model           i.MX IPUv3
> serial
> bus info
> hw revision     0x0
> driver version  0.0.0
> 
> Device topology
> - entity 1: IPU0 CSI0 (2 pads, 1 link)
>             type V4L2 subdev subtype Unknown flags 0
>     pad0: Sink
>     pad1: Source
>         -> "imx-ipuv3-capture.0":0 [ENABLED]
> 
> - entity 4: imx-ipuv3-capture.0 (1 pad, 1 link)
>             type Node subtype V4L flags 0
>             device node name /dev/video0
>     pad0: Sink
>         <- "IPU0 CSI0":1 [ENABLED]
> 
> - entity 10: IPU0 CSI1 (2 pads, 1 link)
>              type V4L2 subdev subtype Unknown flags 0
>     pad0: Sink
>     pad1: Source
>         -> "imx-ipuv3-capture.1":0 [ENABLED]
> 
> - entity 13: imx-ipuv3-capture.1 (1 pad, 1 link)
>              type Node subtype V4L flags 0
>              device node name /dev/video1
>     pad0: Sink
>         <- "IPU0 CSI1":1 [ENABLED]
> 
> - entity 19: IPU1 CSI0 (2 pads, 1 link)
>              type V4L2 subdev subtype Unknown flags 0
>     pad0: Sink
>     pad1: Source
>         -> "imx-ipuv3-capture.0":0 [ENABLED]
> 
> - entity 22: imx-ipuv3-capture.0 (1 pad, 1 link)
>              type Node subtype V4L flags 0
>              device node name /dev/video2
>     pad0: Sink
>         <- "IPU1 CSI0":1 [ENABLED]
> 
> - entity 28: IPU1 CSI1 (2 pads, 1 link)
>              type V4L2 subdev subtype Unknown flags 0
>     pad0: Sink
>     pad1: Source
>         -> "imx-ipuv3-capture.1":0 [ENABLED]
> 
> - entity 31: imx-ipuv3-capture.1 (1 pad, 1 link)
>              type Node subtype V4L flags 0
>              device node name /dev/video3
>     pad0: Sink
>         <- "IPU1 CSI1":1 [ENABLED]
> 
> - entity 37: mipi_ipu1_mux (3 pads, 0 link)
>              type V4L2 subdev subtype Unknown flags 0
>     pad0: Sink
>     pad1: Sink
>     pad2: Source
> 
> - entity 41: mipi_ipu2_mux (3 pads, 0 link)
>              type V4L2 subdev subtype Unknown flags 0
>     pad0: Sink
>     pad1: Sink
>     pad2: Source
> 
> - entity 45: ar0135 1-0010 (1 pad, 0 link)
>              type V4L2 subdev subtype Unknown flags 0
>     pad0: Source
> 
> 
> 
> 
> root@imx6:~# media-ctl -v --links '"ar01351-0010":0->"mipi_ipu1_mux":0[1]'
> 
> Opening media device /dev/media0
> Enumerating entities
> Found 11 entities
> Enumerating pads and links
> No link between "ar0135 1-0010":0 and "mipi_ipu1_mux":0
> media_parse_setup_link: Unable to parse link
> 
>  "ar0135 1-0010":0->"mipi_ipu1_mux":0[1]
>                                      ^
> Unable to parse link: Invalid argument (22)
> 
> If you have something in the works with a camera example then just tell
> me to be patient and I'll wait for a v3 ;)

Check whether you have something along these lines in your camera driver
in the probe() function:

        priv->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
        priv->subdev.dev = &client->dev;
        priv->pad.flags = MEDIA_PAD_FL_SOURCE;

        ret = media_entity_init(&priv->subdev.entity, 1, &priv->pad, 0);
        if (ret < 0) {
                v4l2_clk_put(priv->clk);
                return ret;
        }

        ret = v4l2_async_register_subdev(&priv->subdev);
        if (ret < 0) {
                v4l2_clk_put(priv->clk);
                return ret;
        }
Jack Mitchell Oct. 26, 2016, 11:29 a.m. UTC | #2
Hi Marek,

On 19/10/16 20:25, Marek Vasut wrote:
> On 10/19/2016 06:22 PM, Jack Mitchell wrote:
>> Hi Philipp,
>>
>> On 17/10/16 13:12, Philipp Zabel wrote:
>>> Hi Jack,
>>>
>>> Am Montag, den 17.10.2016, 12:32 +0100 schrieb Jack Mitchell:
>>>> Hi Philipp,
>>>>
>>>> I'm looking at how I would enable a parallel greyscale camera using this
>>>> set of drivers and am a little bit confused. Do you have an example
>>>> somewhere of a devicetree with an input node.
>>>
>>> In your board device tree it should look somewhat like this:
>>>
>>> &i2c1 {
>>>     sensor@48 {
>>>         compatible = "aptina,mt9v032m";
>>>         /* ... */
>>>
>>>         port {
>>>             cam_out: endpoint {
>>>                 remote-endpoint = <&csi_in>;
>>>             }
>>>         };
>>>     };
>>> };
>>>
>>> /*
>>>  * This is the input port node corresponding to the 'CSI0' pad group,
>>>  * not necessarily the CSI0 port of IPU1 or IPU2. On i.MX6Q it's port@1
>>>  * of the mipi_ipu1_mux, on i.MX6DL it's port@4 of the ipu_csi0_mux,
>>>  * the csi0 label is added in patch 13/21.
>>>  */
>>> &csi0 {
>>>     #address-cells = <1>;
>>>     #size-cells = <0>;
>>>
>>>     csi_in: endpoint@0 {
>>>         bus-width = <8>;
>>>         data-shift = <12>;
>>>         hsync-active = <1>;
>>>         vsync-active = <1>;
>>>         pclk-sample = <1>;
>>>         remote-endpoint = <&cam_out>;
>>>     };
>>> };
>>>
>>>>  I also have a further note below:
>>> [...]
>>>>> +    if (raw && priv->smfc) {
>>>>
>>
>> Thank you, I think I have something which is kind of right.
>>
>> (Apologies in advance for the formatting)
>>
>> diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts
>> b/arch/arm/boot/dts/imx6q-sabrelite.dts
>> index 66d10d8..90e6b92 100644
>> --- a/arch/arm/boot/dts/imx6q-sabrelite.dts
>> +++ b/arch/arm/boot/dts/imx6q-sabrelite.dts
>> @@ -52,3 +52,62 @@
>>  &sata {
>>      status = "okay";
>>  };
>> +
>> +&i2c2 {
>> +    sensor@10 {
>> +        compatible = "onsemi,ar0135";
>> +        reg = <0x10>;
>> +
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&pinctrl_ar0135>;
>> +
>> +        reset-gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
>> +
>> +        clocks = <&clks IMX6QDL_CLK_CKO2>;
>> +        clock-names = "xclk";
>> +
>> +        xclk = <24000000>;
>> +
>> +        port {
>> +            parallel_camera_output: endpoint {
>> +                remote-endpoint = <&csi_in_from_parallel_camera>;
>> +            };
>> +        };
>> +    };
>> +};
>> +
>> +&csi0 {
>> +    csi_in_from_parallel_camera: endpoint@0 {
>> +        bus-width = <8>;
>> +        data-shift = <12>;
>> +        hsync-active = <1>;
>> +        vsync-active = <1>;
>> +        pclk-sample = <1>;
>> +        remote-endpoint = <&parallel_camera_output>;
>> +    };
>> +};
>> +
>> +&iomuxc {
>> +
>> +        imx6q-sabrelite {
>> +
>> +        pinctrl_ar0135: ar0135grp {
>> +            fsl,pins = <
>> +                MX6QDL_PAD_GPIO_6__GPIO1_IO06   0x80000000
>> +                MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12    0x80000000
>> +                MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13    0x80000000
>> +                MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14    0x80000000
>> +                MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15    0x80000000
>> +                MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16    0x80000000
>> +                MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17    0x80000000
>> +                MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18    0x80000000
>> +                MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19    0x80000000
>> +                MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK   0x80000000
>> +                MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC      0x80000000
>> +                MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC     0x80000000
>> +                MX6QDL_PAD_CSI0_DATA_EN__IPU1_CSI0_DATA_EN 0x80000000
>> +            >;
>> +        };
>> +    };
>> +};
>>
>>
>> However, I can't seem to link the entities together properly, am I
>> missing something obvious?
>>
>> root@vicon:~# media-ctl -p
>> Media controller API version 0.1.0
>>
>> Media device information
>> ------------------------
>> driver          imx-media
>> model           i.MX IPUv3
>> serial
>> bus info
>> hw revision     0x0
>> driver version  0.0.0
>>
>> Device topology
>> - entity 1: IPU0 CSI0 (2 pads, 1 link)
>>             type V4L2 subdev subtype Unknown flags 0
>>     pad0: Sink
>>     pad1: Source
>>         -> "imx-ipuv3-capture.0":0 [ENABLED]
>>
>> - entity 4: imx-ipuv3-capture.0 (1 pad, 1 link)
>>             type Node subtype V4L flags 0
>>             device node name /dev/video0
>>     pad0: Sink
>>         <- "IPU0 CSI0":1 [ENABLED]
>>
>> - entity 10: IPU0 CSI1 (2 pads, 1 link)
>>              type V4L2 subdev subtype Unknown flags 0
>>     pad0: Sink
>>     pad1: Source
>>         -> "imx-ipuv3-capture.1":0 [ENABLED]
>>
>> - entity 13: imx-ipuv3-capture.1 (1 pad, 1 link)
>>              type Node subtype V4L flags 0
>>              device node name /dev/video1
>>     pad0: Sink
>>         <- "IPU0 CSI1":1 [ENABLED]
>>
>> - entity 19: IPU1 CSI0 (2 pads, 1 link)
>>              type V4L2 subdev subtype Unknown flags 0
>>     pad0: Sink
>>     pad1: Source
>>         -> "imx-ipuv3-capture.0":0 [ENABLED]
>>
>> - entity 22: imx-ipuv3-capture.0 (1 pad, 1 link)
>>              type Node subtype V4L flags 0
>>              device node name /dev/video2
>>     pad0: Sink
>>         <- "IPU1 CSI0":1 [ENABLED]
>>
>> - entity 28: IPU1 CSI1 (2 pads, 1 link)
>>              type V4L2 subdev subtype Unknown flags 0
>>     pad0: Sink
>>     pad1: Source
>>         -> "imx-ipuv3-capture.1":0 [ENABLED]
>>
>> - entity 31: imx-ipuv3-capture.1 (1 pad, 1 link)
>>              type Node subtype V4L flags 0
>>              device node name /dev/video3
>>     pad0: Sink
>>         <- "IPU1 CSI1":1 [ENABLED]
>>
>> - entity 37: mipi_ipu1_mux (3 pads, 0 link)
>>              type V4L2 subdev subtype Unknown flags 0
>>     pad0: Sink
>>     pad1: Sink
>>     pad2: Source
>>
>> - entity 41: mipi_ipu2_mux (3 pads, 0 link)
>>              type V4L2 subdev subtype Unknown flags 0
>>     pad0: Sink
>>     pad1: Sink
>>     pad2: Source
>>
>> - entity 45: ar0135 1-0010 (1 pad, 0 link)
>>              type V4L2 subdev subtype Unknown flags 0
>>     pad0: Source
>>
>>
>>
>>
>> root@imx6:~# media-ctl -v --links '"ar01351-0010":0->"mipi_ipu1_mux":0[1]'
>>
>> Opening media device /dev/media0
>> Enumerating entities
>> Found 11 entities
>> Enumerating pads and links
>> No link between "ar0135 1-0010":0 and "mipi_ipu1_mux":0
>> media_parse_setup_link: Unable to parse link
>>
>>  "ar0135 1-0010":0->"mipi_ipu1_mux":0[1]
>>                                      ^
>> Unable to parse link: Invalid argument (22)
>>
>> If you have something in the works with a camera example then just tell
>> me to be patient and I'll wait for a v3 ;)
>
> Check whether you have something along these lines in your camera driver
> in the probe() function:
>
>         priv->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
>         priv->subdev.dev = &client->dev;
>         priv->pad.flags = MEDIA_PAD_FL_SOURCE;
>
>         ret = media_entity_init(&priv->subdev.entity, 1, &priv->pad, 0);
>         if (ret < 0) {
>                 v4l2_clk_put(priv->clk);
>                 return ret;
>         }
>
>         ret = v4l2_async_register_subdev(&priv->subdev);
>         if (ret < 0) {
>                 v4l2_clk_put(priv->clk);
>                 return ret;
>         }
>

Yes, I have stripped the driver down to do nothing[1] apart from probe, 
and allow me to try to link the pipeline together. I still have no luck.

- entity 1: IPU0 CSI0 (2 pads, 1 link)
             type V4L2 subdev subtype Unknown flags 0
         pad0: Sink
         pad1: Source
                 -> "imx-ipuv3-capture.0":0 [ENABLED]

- entity 45: ar0135 1-0010 (1 pad, 0 link)
              type V4L2 subdev subtype Unknown flags 0
         pad0: Source


root@sabrelite:~# media-ctl -v --links '"ar0135 1-0010":0->"IPU0 CSI0":0[1]'
Opening media device /dev/media0
Enumerating entities
Found 11 entities
Enumerating pads and links
No link between "ar0135 1-0010":0 and "IPU0 CSI0":0
media_parse_setup_link: Unable to parse link

  "ar0135 1-0010":0->"IPU0 CSI0":0[1]
                                  ^
Unable to parse link: Invalid argument (22)

It's possible I'm attempting to go about this the wrong way, the whole 
v4l2 subsystem is a bit of a maze.

Cheers,
Jack.

[1] http://pastebin.com/EXZKq4jZ
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/boot/dts/imx6q-sabrelite.dts 
b/arch/arm/boot/dts/imx6q-sabrelite.dts
index 66d10d8..90e6b92 100644
--- a/arch/arm/boot/dts/imx6q-sabrelite.dts
+++ b/arch/arm/boot/dts/imx6q-sabrelite.dts
@@ -52,3 +52,62 @@ 
  &sata {
  	status = "okay";
  };
+
+&i2c2 {
+	sensor@10 {
+		compatible = "onsemi,ar0135";
+		reg = <0x10>;
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_ar0135>;
+
+		reset-gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
+
+		clocks = <&clks IMX6QDL_CLK_CKO2>;
+		clock-names = "xclk";
+
+		xclk = <24000000>;
+
+		port {
+			parallel_camera_output: endpoint {
+				remote-endpoint = <&csi_in_from_parallel_camera>;
+			};
+		};
+	};
+};
+
+&csi0 {
+	csi_in_from_parallel_camera: endpoint@0 {
+		bus-width = <8>;
+		data-shift = <12>;
+		hsync-active = <1>;
+		vsync-active = <1>;
+		pclk-sample = <1>;
+		remote-endpoint = <&parallel_camera_output>;
+	};
+};
+
+&iomuxc {
+
+        imx6q-sabrelite {
+
+		pinctrl_ar0135: ar0135grp {
+			fsl,pins = <
+				MX6QDL_PAD_GPIO_6__GPIO1_IO06   0x80000000
+				MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12    0x80000000
+				MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13    0x80000000
+				MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14    0x80000000
+				MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15    0x80000000
+				MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16    0x80000000
+				MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17    0x80000000
+				MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18    0x80000000
+				MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19    0x80000000
+				MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK   0x80000000
+				MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC      0x80000000
+				MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC     0x80000000
+				MX6QDL_PAD_CSI0_DATA_EN__IPU1_CSI0_DATA_EN 0x80000000
+			>;
+		};
+	};
+};