All of lore.kernel.org
 help / color / mirror / Atom feed
* i.MX53 using imx-media to capture analog video through ADV7180
@ 2018-02-14 15:21 Matthew Starr
  2018-02-14 15:44 ` Fabio Estevam
  0 siblings, 1 reply; 4+ messages in thread
From: Matthew Starr @ 2018-02-14 15:21 UTC (permalink / raw)
  To: linux-media

I have successfully modified device tree files in the mainline 4.15.1 kernel to get a display product using the i.MX53 processor to initialize the imx-media drivers.  I think up to this point they have only been tested on i.MX6 processors.  I am using two ADV7180 analog capture chips, one per CSI port, on this display product.

I have everything initialize successfully at boot, but I am unable to get the media-ctl command to link the ADV7180 devices to the CSI ports.  I used the following website as guidance of how to setup the links between media devices:
https://linuxtv.org/downloads/v4l-dvb-apis/v4l-drivers/imx.html

When trying to link the ADV7180 chip to a CSI port, I use the following command and get the result below:

	media-ctl -v -l "'adv7180 1-0021':0->'ipu1_csi0':0[1]"
	
	No link between "adv7180 1-0021":0 and "ipu1_csi0":0
	media_parse_setup_link: Unable to parse link
	Unable to parse link: Invalid argument (22)

How do I get the ADV7180 and CSI port on the i.MX53 processor to link?

The difference for the i.MX53 compared to the i.MX6 processor is that there is only one IPU and no mipi support, so my device tree does not use any video-mux or mux devices.  Could this have something to do with why I can't link the ADV7180 to the CSI port?   

Here is the output of the "media-ctl -p -v" command:

Opening media device /dev/media0
Enumerating entities
looking up device: 81:10
looking up device: 81:11
looking up device: 81:12
looking up device: 81:4
looking up device: 81:13
looking up device: 81:5
looking up device: 81:14
looking up device: 81:15
looking up device: 81:16
looking up device: 81:17
looking up device: 81:6
looking up device: 81:18
looking up device: 81:7
looking up device: 81:19
looking up device: 81:20
looking up device: 81:8
looking up device: 81:21
looking up device: 81:9
Found 18 entities
Enumerating pads and links
Media controller API version 4.15.1

Media device information
------------------------
driver          imx-media
model           imx-media
serial          
bus info        
hw revision     0x0
driver version  4.15.1

Device topology
- entity 1: adv7180 1-0021 (1 pad, 0 link)
            type V4L2 subdev subtype Unknown flags 20004
            device node name /dev/v4l-subdev0
        pad0: Source
                [fmt:UYVY8_2X8/720x480 field:interlaced]

- entity 3: adv7180 1-0020 (1 pad, 0 link)
            type V4L2 subdev subtype Unknown flags 20004
            device node name /dev/v4l-subdev1
        pad0: Source
                [fmt:UYVY8_2X8/720x480 field:interlaced]

- entity 5: ipu1_csi1 (3 pads, 3 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev2
        pad0: Sink
                [fmt:UYVY8_2X8/640x480 field:none
                 crop.bounds:(0,0)/640x480
                 crop:(0,0)/640x480
                 compose.bounds:(0,0)/640x480
                 compose:(0,0)/640x480]
        pad1: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu1_ic_prp":0 []
                -> "ipu1_vdic":0 []
        pad2: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu1_csi1 capture":0 []

- entity 9: ipu1_csi1 capture (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video4
        pad0: Sink
                <- "ipu1_csi1":2 []

- entity 15: ipu1_csi0 (3 pads, 3 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev3
        pad0: Sink
                [fmt:UYVY8_2X8/640x480 field:none
                 crop.bounds:(0,0)/640x480
                 crop:(0,0)/640x480
                 compose.bounds:(0,0)/640x480
                 compose:(0,0)/640x480]
        pad1: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu1_ic_prp":0 []
                -> "ipu1_vdic":0 [ENABLED]
        pad2: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu1_csi0 capture":0 []

- entity 19: ipu1_csi0 capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video5
        pad0: Sink
                <- "ipu1_csi0":2 []

- entity 25: ipu1_ic_prp (3 pads, 5 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev4
        pad0: Sink
                [fmt:AYUV8_1X32/640x480 field:none]
                <- "ipu1_csi1":1 []
                <- "ipu1_csi0":1 []
                <- "ipu1_vdic":2 [ENABLED]
        pad1: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu1_ic_prpenc":0 []
        pad2: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu1_ic_prpvf":0 [ENABLED]

- entity 29: ipu1_vdic (3 pads, 3 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev5
        pad0: Sink
                [fmt:AYUV8_1X32/640x480 field:none]
                <- "ipu1_csi1":1 []
                <- "ipu1_csi0":1 [ENABLED]
        pad1: Sink
                [fmt:UYVY8_2X8/640x480 field:none]
        pad2: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu1_ic_prp":0 [ENABLED]

- entity 33: ipu2_vdic (3 pads, 1 link)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev6
        pad0: Sink
                [fmt:AYUV8_1X32/640x480 field:none]
        pad1: Sink
                [fmt:UYVY8_2X8/640x480 field:none]
        pad2: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu2_ic_prp":0 []

- entity 37: ipu1_ic_prpenc (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev7
        pad0: Sink
                [fmt:AYUV8_1X32/640x480 field:none]
                <- "ipu1_ic_prp":1 []
        pad1: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu1_ic_prpenc capture":0 []

- entity 40: ipu1_ic_prpenc capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video6
        pad0: Sink
                <- "ipu1_ic_prpenc":1 []

- entity 46: ipu1_ic_prpvf (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev8
        pad0: Sink
                [fmt:AYUV8_1X32/640x480 field:none]
                <- "ipu1_ic_prp":2 [ENABLED]
        pad1: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu1_ic_prpvf capture":0 [ENABLED]

- entity 49: ipu1_ic_prpvf capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video7
        pad0: Sink
                <- "ipu1_ic_prpvf":1 [ENABLED]

- entity 55: ipu2_ic_prp (3 pads, 3 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev9
        pad0: Sink
                [fmt:AYUV8_1X32/640x480 field:none]
                <- "ipu2_vdic":2 []
        pad1: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu2_ic_prpenc":0 []
        pad2: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu2_ic_prpvf":0 []

- entity 59: ipu2_ic_prpenc (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev10
        pad0: Sink
                [fmt:AYUV8_1X32/640x480 field:none]
                <- "ipu2_ic_prp":1 []
        pad1: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu2_ic_prpenc capture":0 []

- entity 62: ipu2_ic_prpenc capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video8
        pad0: Sink
                <- "ipu2_ic_prpenc":1 []

- entity 68: ipu2_ic_prpvf (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev11
        pad0: Sink
                [fmt:AYUV8_1X32/640x480 field:none]
                <- "ipu2_ic_prp":2 []
        pad1: Source
                [fmt:AYUV8_1X32/640x480 field:none]
                -> "ipu2_ic_prpvf capture":0 []

- entity 71: ipu2_ic_prpvf capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video9
        pad0: Sink
                <- "ipu2_ic_prpvf":1 []


Best regards,
 
Matthew Starr

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: i.MX53 using imx-media to capture analog video through ADV7180
  2018-02-14 15:21 i.MX53 using imx-media to capture analog video through ADV7180 Matthew Starr
@ 2018-02-14 15:44 ` Fabio Estevam
  2018-02-17  1:02   ` Steve Longerbeam
  0 siblings, 1 reply; 4+ messages in thread
From: Fabio Estevam @ 2018-02-14 15:44 UTC (permalink / raw)
  To: Matthew Starr; +Cc: linux-media, Steve Longerbeam, Philipp Zabel

[Adding Steve and Philipp in case they could provide some suggestions]

On Wed, Feb 14, 2018 at 1:21 PM, Matthew Starr <mstarr@hedonline.com> wrote:
> I have successfully modified device tree files in the mainline 4.15.1 kernel to get a display product using the i.MX53 processor to initialize the imx-media drivers.  I think up to this point they have only been tested on i.MX6 processors.  I am using two ADV7180 analog capture chips, one per CSI port, on this display product.
>
> I have everything initialize successfully at boot, but I am unable to get the media-ctl command to link the ADV7180 devices to the CSI ports.  I used the following website as guidance of how to setup the links between media devices:
> https://linuxtv.org/downloads/v4l-dvb-apis/v4l-drivers/imx.html
>
> When trying to link the ADV7180 chip to a CSI port, I use the following command and get the result below:
>
>         media-ctl -v -l "'adv7180 1-0021':0->'ipu1_csi0':0[1]"
>
>         No link between "adv7180 1-0021":0 and "ipu1_csi0":0
>         media_parse_setup_link: Unable to parse link
>         Unable to parse link: Invalid argument (22)
>
> How do I get the ADV7180 and CSI port on the i.MX53 processor to link?
>
> The difference for the i.MX53 compared to the i.MX6 processor is that there is only one IPU and no mipi support, so my device tree does not use any video-mux or mux devices.  Could this have something to do with why I can't link the ADV7180 to the CSI port?
>
> Here is the output of the "media-ctl -p -v" command:
>
> Opening media device /dev/media0
> Enumerating entities
> looking up device: 81:10
> looking up device: 81:11
> looking up device: 81:12
> looking up device: 81:4
> looking up device: 81:13
> looking up device: 81:5
> looking up device: 81:14
> looking up device: 81:15
> looking up device: 81:16
> looking up device: 81:17
> looking up device: 81:6
> looking up device: 81:18
> looking up device: 81:7
> looking up device: 81:19
> looking up device: 81:20
> looking up device: 81:8
> looking up device: 81:21
> looking up device: 81:9
> Found 18 entities
> Enumerating pads and links
> Media controller API version 4.15.1
>
> Media device information
> ------------------------
> driver          imx-media
> model           imx-media
> serial
> bus info
> hw revision     0x0
> driver version  4.15.1
>
> Device topology
> - entity 1: adv7180 1-0021 (1 pad, 0 link)
>             type V4L2 subdev subtype Unknown flags 20004
>             device node name /dev/v4l-subdev0
>         pad0: Source
>                 [fmt:UYVY8_2X8/720x480 field:interlaced]
>
> - entity 3: adv7180 1-0020 (1 pad, 0 link)
>             type V4L2 subdev subtype Unknown flags 20004
>             device node name /dev/v4l-subdev1
>         pad0: Source
>                 [fmt:UYVY8_2X8/720x480 field:interlaced]
>
> - entity 5: ipu1_csi1 (3 pads, 3 links)
>             type V4L2 subdev subtype Unknown flags 0
>             device node name /dev/v4l-subdev2
>         pad0: Sink
>                 [fmt:UYVY8_2X8/640x480 field:none
>                  crop.bounds:(0,0)/640x480
>                  crop:(0,0)/640x480
>                  compose.bounds:(0,0)/640x480
>                  compose:(0,0)/640x480]
>         pad1: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu1_ic_prp":0 []
>                 -> "ipu1_vdic":0 []
>         pad2: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu1_csi1 capture":0 []
>
> - entity 9: ipu1_csi1 capture (1 pad, 1 link)
>             type Node subtype V4L flags 0
>             device node name /dev/video4
>         pad0: Sink
>                 <- "ipu1_csi1":2 []
>
> - entity 15: ipu1_csi0 (3 pads, 3 links)
>              type V4L2 subdev subtype Unknown flags 0
>              device node name /dev/v4l-subdev3
>         pad0: Sink
>                 [fmt:UYVY8_2X8/640x480 field:none
>                  crop.bounds:(0,0)/640x480
>                  crop:(0,0)/640x480
>                  compose.bounds:(0,0)/640x480
>                  compose:(0,0)/640x480]
>         pad1: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu1_ic_prp":0 []
>                 -> "ipu1_vdic":0 [ENABLED]
>         pad2: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu1_csi0 capture":0 []
>
> - entity 19: ipu1_csi0 capture (1 pad, 1 link)
>              type Node subtype V4L flags 0
>              device node name /dev/video5
>         pad0: Sink
>                 <- "ipu1_csi0":2 []
>
> - entity 25: ipu1_ic_prp (3 pads, 5 links)
>              type V4L2 subdev subtype Unknown flags 0
>              device node name /dev/v4l-subdev4
>         pad0: Sink
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 <- "ipu1_csi1":1 []
>                 <- "ipu1_csi0":1 []
>                 <- "ipu1_vdic":2 [ENABLED]
>         pad1: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu1_ic_prpenc":0 []
>         pad2: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu1_ic_prpvf":0 [ENABLED]
>
> - entity 29: ipu1_vdic (3 pads, 3 links)
>              type V4L2 subdev subtype Unknown flags 0
>              device node name /dev/v4l-subdev5
>         pad0: Sink
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 <- "ipu1_csi1":1 []
>                 <- "ipu1_csi0":1 [ENABLED]
>         pad1: Sink
>                 [fmt:UYVY8_2X8/640x480 field:none]
>         pad2: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu1_ic_prp":0 [ENABLED]
>
> - entity 33: ipu2_vdic (3 pads, 1 link)
>              type V4L2 subdev subtype Unknown flags 0
>              device node name /dev/v4l-subdev6
>         pad0: Sink
>                 [fmt:AYUV8_1X32/640x480 field:none]
>         pad1: Sink
>                 [fmt:UYVY8_2X8/640x480 field:none]
>         pad2: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu2_ic_prp":0 []
>
> - entity 37: ipu1_ic_prpenc (2 pads, 2 links)
>              type V4L2 subdev subtype Unknown flags 0
>              device node name /dev/v4l-subdev7
>         pad0: Sink
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 <- "ipu1_ic_prp":1 []
>         pad1: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu1_ic_prpenc capture":0 []
>
> - entity 40: ipu1_ic_prpenc capture (1 pad, 1 link)
>              type Node subtype V4L flags 0
>              device node name /dev/video6
>         pad0: Sink
>                 <- "ipu1_ic_prpenc":1 []
>
> - entity 46: ipu1_ic_prpvf (2 pads, 2 links)
>              type V4L2 subdev subtype Unknown flags 0
>              device node name /dev/v4l-subdev8
>         pad0: Sink
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 <- "ipu1_ic_prp":2 [ENABLED]
>         pad1: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu1_ic_prpvf capture":0 [ENABLED]
>
> - entity 49: ipu1_ic_prpvf capture (1 pad, 1 link)
>              type Node subtype V4L flags 0
>              device node name /dev/video7
>         pad0: Sink
>                 <- "ipu1_ic_prpvf":1 [ENABLED]
>
> - entity 55: ipu2_ic_prp (3 pads, 3 links)
>              type V4L2 subdev subtype Unknown flags 0
>              device node name /dev/v4l-subdev9
>         pad0: Sink
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 <- "ipu2_vdic":2 []
>         pad1: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu2_ic_prpenc":0 []
>         pad2: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu2_ic_prpvf":0 []
>
> - entity 59: ipu2_ic_prpenc (2 pads, 2 links)
>              type V4L2 subdev subtype Unknown flags 0
>              device node name /dev/v4l-subdev10
>         pad0: Sink
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 <- "ipu2_ic_prp":1 []
>         pad1: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu2_ic_prpenc capture":0 []
>
> - entity 62: ipu2_ic_prpenc capture (1 pad, 1 link)
>              type Node subtype V4L flags 0
>              device node name /dev/video8
>         pad0: Sink
>                 <- "ipu2_ic_prpenc":1 []
>
> - entity 68: ipu2_ic_prpvf (2 pads, 2 links)
>              type V4L2 subdev subtype Unknown flags 0
>              device node name /dev/v4l-subdev11
>         pad0: Sink
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 <- "ipu2_ic_prp":2 []
>         pad1: Source
>                 [fmt:AYUV8_1X32/640x480 field:none]
>                 -> "ipu2_ic_prpvf capture":0 []
>
> - entity 71: ipu2_ic_prpvf capture (1 pad, 1 link)
>              type Node subtype V4L flags 0
>              device node name /dev/video9
>         pad0: Sink
>                 <- "ipu2_ic_prpvf":1 []
>
>
> Best regards,
>
> Matthew Starr

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: i.MX53 using imx-media to capture analog video through ADV7180
  2018-02-14 15:44 ` Fabio Estevam
@ 2018-02-17  1:02   ` Steve Longerbeam
  2018-02-19 18:20     ` Matthew Starr
  0 siblings, 1 reply; 4+ messages in thread
From: Steve Longerbeam @ 2018-02-17  1:02 UTC (permalink / raw)
  To: Fabio Estevam, Matthew Starr; +Cc: linux-media, Philipp Zabel

Hi Mathew,


On 02/14/2018 07:44 AM, Fabio Estevam wrote:
> [Adding Steve and Philipp in case they could provide some suggestions]
>
> On Wed, Feb 14, 2018 at 1:21 PM, Matthew Starr <mstarr@hedonline.com> wrote:
>> I have successfully modified device tree files in the mainline 4.15.1 kernel to get a display product using the i.MX53 processor to initialize the imx-media drivers.  I think up to this point they have only been tested on i.MX6 processors.

Yes that's correct. I have not tested imx-media driver on any i.MX5 targets.
There are likely issues with i.MX5 support.

>>    I am using two ADV7180 analog capture chips, one per CSI port, on this display product.
>>
>> I have everything initialize successfully at boot, but I am unable to get the media-ctl command to link the ADV7180 devices to the CSI ports.  I used the following website as guidance of how to setup the links between media devices:
>> https://linuxtv.org/downloads/v4l-dvb-apis/v4l-drivers/imx.html
>>
>> When trying to link the ADV7180 chip to a CSI port, I use the following command and get the result below:
>>
>>          media-ctl -v -l "'adv7180 1-0021':0->'ipu1_csi0':0[1]"
>>
>>          No link between "adv7180 1-0021":0 and "ipu1_csi0":0
>>          media_parse_setup_link: Unable to parse link
>>          Unable to parse link: Invalid argument (22)
>>
>> How do I get the ADV7180 and CSI port on the i.MX53 processor to link?
>>
>> The difference for the i.MX53 compared to the i.MX6 processor is that there is only one IPU and no mipi support, so my device tree does not use any video-mux or mux devices.  Could this have something to do with why I can't link the ADV7180 to the CSI port?

It probably does. Clearly there was no media link defined from
the adv7180 to any of the CSI ports, which can also be seen from
the media topology you printed below.

As long as the OF graph is correct, I don't see why this would have
happened. Please send two things:

1. Your patches to DT files
2. dmesg output.

There could be more issues with i.MX5 support in imx-media, but
it should be figured out why the media links from adv7180 to the CSI
ports were not established first.


Steve

>>
>> Here is the output of the "media-ctl -p -v" command:
>>
>> Opening media device /dev/media0
>> Enumerating entities
>> looking up device: 81:10
>> looking up device: 81:11
>> looking up device: 81:12
>> looking up device: 81:4
>> looking up device: 81:13
>> looking up device: 81:5
>> looking up device: 81:14
>> looking up device: 81:15
>> looking up device: 81:16
>> looking up device: 81:17
>> looking up device: 81:6
>> looking up device: 81:18
>> looking up device: 81:7
>> looking up device: 81:19
>> looking up device: 81:20
>> looking up device: 81:8
>> looking up device: 81:21
>> looking up device: 81:9
>> Found 18 entities
>> Enumerating pads and links
>> Media controller API version 4.15.1
>>
>> Media device information
>> ------------------------
>> driver          imx-media
>> model           imx-media
>> serial
>> bus info
>> hw revision     0x0
>> driver version  4.15.1
>>
>> Device topology
>> - entity 1: adv7180 1-0021 (1 pad, 0 link)
>>              type V4L2 subdev subtype Unknown flags 20004
>>              device node name /dev/v4l-subdev0
>>          pad0: Source
>>                  [fmt:UYVY8_2X8/720x480 field:interlaced]
>>
>> - entity 3: adv7180 1-0020 (1 pad, 0 link)
>>              type V4L2 subdev subtype Unknown flags 20004
>>              device node name /dev/v4l-subdev1
>>          pad0: Source
>>                  [fmt:UYVY8_2X8/720x480 field:interlaced]
>>
>> - entity 5: ipu1_csi1 (3 pads, 3 links)
>>              type V4L2 subdev subtype Unknown flags 0
>>              device node name /dev/v4l-subdev2
>>          pad0: Sink
>>                  [fmt:UYVY8_2X8/640x480 field:none
>>                   crop.bounds:(0,0)/640x480
>>                   crop:(0,0)/640x480
>>                   compose.bounds:(0,0)/640x480
>>                   compose:(0,0)/640x480]
>>          pad1: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu1_ic_prp":0 []
>>                  -> "ipu1_vdic":0 []
>>          pad2: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu1_csi1 capture":0 []
>>
>> - entity 9: ipu1_csi1 capture (1 pad, 1 link)
>>              type Node subtype V4L flags 0
>>              device node name /dev/video4
>>          pad0: Sink
>>                  <- "ipu1_csi1":2 []
>>
>> - entity 15: ipu1_csi0 (3 pads, 3 links)
>>               type V4L2 subdev subtype Unknown flags 0
>>               device node name /dev/v4l-subdev3
>>          pad0: Sink
>>                  [fmt:UYVY8_2X8/640x480 field:none
>>                   crop.bounds:(0,0)/640x480
>>                   crop:(0,0)/640x480
>>                   compose.bounds:(0,0)/640x480
>>                   compose:(0,0)/640x480]
>>          pad1: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu1_ic_prp":0 []
>>                  -> "ipu1_vdic":0 [ENABLED]
>>          pad2: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu1_csi0 capture":0 []
>>
>> - entity 19: ipu1_csi0 capture (1 pad, 1 link)
>>               type Node subtype V4L flags 0
>>               device node name /dev/video5
>>          pad0: Sink
>>                  <- "ipu1_csi0":2 []
>>
>> - entity 25: ipu1_ic_prp (3 pads, 5 links)
>>               type V4L2 subdev subtype Unknown flags 0
>>               device node name /dev/v4l-subdev4
>>          pad0: Sink
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  <- "ipu1_csi1":1 []
>>                  <- "ipu1_csi0":1 []
>>                  <- "ipu1_vdic":2 [ENABLED]
>>          pad1: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu1_ic_prpenc":0 []
>>          pad2: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu1_ic_prpvf":0 [ENABLED]
>>
>> - entity 29: ipu1_vdic (3 pads, 3 links)
>>               type V4L2 subdev subtype Unknown flags 0
>>               device node name /dev/v4l-subdev5
>>          pad0: Sink
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  <- "ipu1_csi1":1 []
>>                  <- "ipu1_csi0":1 [ENABLED]
>>          pad1: Sink
>>                  [fmt:UYVY8_2X8/640x480 field:none]
>>          pad2: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu1_ic_prp":0 [ENABLED]
>>
>> - entity 33: ipu2_vdic (3 pads, 1 link)
>>               type V4L2 subdev subtype Unknown flags 0
>>               device node name /dev/v4l-subdev6
>>          pad0: Sink
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>          pad1: Sink
>>                  [fmt:UYVY8_2X8/640x480 field:none]
>>          pad2: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu2_ic_prp":0 []
>>
>> - entity 37: ipu1_ic_prpenc (2 pads, 2 links)
>>               type V4L2 subdev subtype Unknown flags 0
>>               device node name /dev/v4l-subdev7
>>          pad0: Sink
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  <- "ipu1_ic_prp":1 []
>>          pad1: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu1_ic_prpenc capture":0 []
>>
>> - entity 40: ipu1_ic_prpenc capture (1 pad, 1 link)
>>               type Node subtype V4L flags 0
>>               device node name /dev/video6
>>          pad0: Sink
>>                  <- "ipu1_ic_prpenc":1 []
>>
>> - entity 46: ipu1_ic_prpvf (2 pads, 2 links)
>>               type V4L2 subdev subtype Unknown flags 0
>>               device node name /dev/v4l-subdev8
>>          pad0: Sink
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  <- "ipu1_ic_prp":2 [ENABLED]
>>          pad1: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu1_ic_prpvf capture":0 [ENABLED]
>>
>> - entity 49: ipu1_ic_prpvf capture (1 pad, 1 link)
>>               type Node subtype V4L flags 0
>>               device node name /dev/video7
>>          pad0: Sink
>>                  <- "ipu1_ic_prpvf":1 [ENABLED]
>>
>> - entity 55: ipu2_ic_prp (3 pads, 3 links)
>>               type V4L2 subdev subtype Unknown flags 0
>>               device node name /dev/v4l-subdev9
>>          pad0: Sink
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  <- "ipu2_vdic":2 []
>>          pad1: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu2_ic_prpenc":0 []
>>          pad2: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu2_ic_prpvf":0 []
>>
>> - entity 59: ipu2_ic_prpenc (2 pads, 2 links)
>>               type V4L2 subdev subtype Unknown flags 0
>>               device node name /dev/v4l-subdev10
>>          pad0: Sink
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  <- "ipu2_ic_prp":1 []
>>          pad1: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu2_ic_prpenc capture":0 []
>>
>> - entity 62: ipu2_ic_prpenc capture (1 pad, 1 link)
>>               type Node subtype V4L flags 0
>>               device node name /dev/video8
>>          pad0: Sink
>>                  <- "ipu2_ic_prpenc":1 []
>>
>> - entity 68: ipu2_ic_prpvf (2 pads, 2 links)
>>               type V4L2 subdev subtype Unknown flags 0
>>               device node name /dev/v4l-subdev11
>>          pad0: Sink
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  <- "ipu2_ic_prp":2 []
>>          pad1: Source
>>                  [fmt:AYUV8_1X32/640x480 field:none]
>>                  -> "ipu2_ic_prpvf capture":0 []
>>
>> - entity 71: ipu2_ic_prpvf capture (1 pad, 1 link)
>>               type Node subtype V4L flags 0
>>               device node name /dev/video9
>>          pad0: Sink
>>                  <- "ipu2_ic_prpvf":1 []
>>
>>
>> Best regards,
>>
>> Matthew Starr

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: i.MX53 using imx-media to capture analog video through ADV7180
  2018-02-17  1:02   ` Steve Longerbeam
@ 2018-02-19 18:20     ` Matthew Starr
  0 siblings, 0 replies; 4+ messages in thread
From: Matthew Starr @ 2018-02-19 18:20 UTC (permalink / raw)
  To: Steve Longerbeam, Fabio Estevam; +Cc: linux-media, Philipp Zabel

[-- Attachment #1: Type: text/plain, Size: 4644 bytes --]

On 02/16/2018 07:03 PM, Steve Longerbeam wrote:
> On 02/14/2018 07:44 AM, Fabio Estevam wrote:
> > [Adding Steve and Philipp in case they could provide some suggestions]
> >
> > On Wed, Feb 14, 2018 at 1:21 PM, Matthew Starr <mstarr@hedonline.com>
> wrote:
> >> I have successfully modified device tree files in the mainline 4.15.1 kernel
> to get a display product using the i.MX53 processor to initialize the imx-media
> drivers.  I think up to this point they have only been tested on i.MX6
> processors.
> 
> Yes that's correct. I have not tested imx-media driver on any i.MX5 targets.
> There are likely issues with i.MX5 support.
> 
> >>    I am using two ADV7180 analog capture chips, one per CSI port, on this
> display product.
> >>
> >> I have everything initialize successfully at boot, but I am unable to get the
> media-ctl command to link the ADV7180 devices to the CSI ports.  I used the
> following website as guidance of how to setup the links between media
> devices:
> >> https://linuxtv.org/downloads/v4l-dvb-apis/v4l-drivers/imx.html
> >>
> >> When trying to link the ADV7180 chip to a CSI port, I use the following
> command and get the result below:
> >>
> >>          media-ctl -v -l "'adv7180 1-0021':0->'ipu1_csi0':0[1]"
> >>
> >>          No link between "adv7180 1-0021":0 and "ipu1_csi0":0
> >>          media_parse_setup_link: Unable to parse link
> >>          Unable to parse link: Invalid argument (22)
> >>
> >> How do I get the ADV7180 and CSI port on the i.MX53 processor to link?
> >>
> >> The difference for the i.MX53 compared to the i.MX6 processor is that
> there is only one IPU and no mipi support, so my device tree does not use
> any video-mux or mux devices.  Could this have something to do with why I
> can't link the ADV7180 to the CSI port?
> 
> It probably does. Clearly there was no media link defined from the adv7180
> to any of the CSI ports, which can also be seen from the media topology you
> printed below.
> 
> As long as the OF graph is correct, I don't see why this would have happened.
> Please send two things:
> 
> 1. Your patches to DT files
> 2. dmesg output.
> 
> There could be more issues with i.MX5 support in imx-media, but it should be
> figured out why the media links from adv7180 to the CSI ports were not
> established first.
> 
> 
> Steve
> 

Steve,

I figured out the linking issue with modifying the imx-media-of.c file in an attached patch (imx-media-of-support-imx53-sensor-links.patch). This change allowed the linking directly from the ADV7180 to the CSI port.

I also had to make some changes to the imx53.dtsi file to get the imx-capture driver to initially work and those changes are also in another attached patch (imx53-add-imx-capture-support.patch).  This included adding an alias for ipu0, adding the imx-capture-subsystem device, and creating CSI port endpoints.

Additionally I attached my device's shared .dtsi file (pm-041.dtsi) and .dts file (cl-711.dts).  In these files you can see I attached CSI0 to ADV7180_0 and CSI1 to ADV7180_1.  I am not sure if the imx53 can support two simultaneous parallel sensors on both CSI ports at the same time (although this is what I would really like), but at this time I would like to get at least one capture stream working to start with.

I attached the dmesg output as an attachment after applying my patches (dmesg.txt).

I am used to an old 2.6.35 Freescale kernel that supports imx53 video capture and I am not familiar with the updated V4L2 media linking and capture of the 4.15 kernel.  I setup all the links with media-ctl commands and printed the topology in the media-ctl_imx53_adv7180.txt file that is attached (media-ctl_imx53_adv7180.txt).

I can't seem to get the capture to work, as I always get errors of some sort.  There are never any errors in dmesg though so the drivers are not throwing errors.  Here is the output from gstreamer:
# gst-launch-1.0 -v v4l2src device=/dev/video7 ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
gstbasesrc.c(2939): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Execution ended after 0:00:00.007445670
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

Any idea what could be wrong with the capture stream?

Regards,
Matt

[-- Attachment #2: imx53-add-imx-capture-support.patch --]
[-- Type: application/octet-stream, Size: 866 bytes --]

diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi
index 84f17f7abb71..9a06777dbe34 100644
--- a/arch/arm/boot/dts/imx53.dtsi
+++ b/arch/arm/boot/dts/imx53.dtsi
@@ -40,6 +40,7 @@
 		i2c0 = &i2c1;
 		i2c1 = &i2c2;
 		i2c2 = &i2c3;
+		ipu0 = &ipu;
 		mmc0 = &esdhc1;
 		mmc1 = &esdhc2;
 		mmc2 = &esdhc3;
@@ -80,6 +81,11 @@
 		ports = <&ipu_di0>, <&ipu_di1>;
 	};
 
+	capture_subsystem {
+		compatible = "fsl,imx-capture-subsystem";
+		ports = <&ipu_csi0>, <&ipu_csi1>;
+	};
+
 	tzic: tz-interrupt-controller@fffc000 {
 		compatible = "fsl,imx53-tzic", "fsl,tzic";
 		interrupt-controller;
@@ -148,10 +154,16 @@
 
 			ipu_csi0: port@0 {
 				reg = <0>;
+
+				ipu_csi0_from_parallel_sensor: endpoint {
+				};
 			};
 
 			ipu_csi1: port@1 {
 				reg = <1>;
+
+				ipu_csi1_from_parallel_sensor: endpoint {
+				};
 			};
 
 			ipu_di0: port@2 {

[-- Attachment #3: imx-media-of-support-imx53-sensor-links.patch --]
[-- Type: application/octet-stream, Size: 641 bytes --]

diff --git a/drivers/staging/media/imx/imx-media-of.c b/drivers/staging/media/imx/imx-media-of.c
index 12df09f52490..7f5e56c9f986 100644
--- a/drivers/staging/media/imx/imx-media-of.c
+++ b/drivers/staging/media/imx/imx-media-of.c
@@ -80,7 +80,8 @@ static void of_get_remote_pad(struct device_node *epnode,
 	rp = of_graph_get_remote_port(epnode);
 	rpp = of_graph_get_remote_port_parent(epnode);
 
-	if (of_device_is_compatible(rpp, "fsl,imx6q-ipu")) {
+	if (of_device_is_compatible(rpp, "fsl,imx6q-ipu") ||
+		of_device_is_compatible(rpp, "fsl,imx53-ipu")) {
 		/* the remote is one of the CSI ports */
 		remote = rp;
 		*remote_pad = 0;

[-- Attachment #4: pm-041.dtsi --]
[-- Type: application/octet-stream, Size: 17986 bytes --]

/*
 * Copyright 2015 Hydro Electronic Devices, Inc.
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

#include "imx53.dtsi"

/ {
	model = "HED PM-041 - Gen 3 Display - Display Board";
	compatible = "hed,pm-041", "fsl,imx53";

	memory {
		reg = <0x70000000 0x20000000>;
	};

	clocks {
		#address-cells = <1>;
		#size-cells = <0>;
		mclk: clock@0 {
			compatible = "fixed-clock";
			#clock-cells = <0>;
			reg = <0>;
			clock-frequency = <13000000>;
			clock-output-names = "mclk";
		};
	};

/*	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpio_keys>;

		baud-rate {
			label = "baud-rate";
			gpios = <&gpio5 25 GPIO_ACTIVE_HIGH>;
			linux,input-type = <5>; /* EV_SW switch /
			linux,code = <1>; /* SW_TABLET_MODE /
		};
	};*/

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pin_gpio4_10>;

		user {
			label = "Heartbeat";
			gpios = <&gpio4 10 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};

	regulators {
		compatible = "simple-bus";

		reg_vswext_3v3: vswext_3v3 {
			compatible = "regulator-fixed";
			regulator-name = "Voltage Source External 3.3V";
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			regulator-always-on;
		};

		reg_vdd_1v5: vdd_1v5 {
			compatible = "regulator-fixed";
			regulator-name = "IO Board VDD_1V5";
			regulator-min-microvolt = <1500000>;
			regulator-max-microvolt = <1500000>;
			regulator-always-on;
		};

		reg_usb_host_en: usb_host_en {
			compatible = "regulator-fixed";
			regulator-name = "USB_HOST_EN";
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_reg_usb_host_en>;
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
			enable-active-high;
		};

		reg_fec_clk_oe: fec_clk_oe {
			compatible = "regulator-fixed";
			regulator-name = "FEC_CLK_OE";
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_reg_fec_clk_oe>;
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>;
			enable-active-high;
			regulator-state-mem {
				regulator-off-in-suspend;
			};
		};

		reg_vid_clk_oe: vid_clk_oe {
			compatible = "regulator-fixed";
			regulator-name = "VID_CLK_OE";
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_reg_vid_clk_oe>;
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio3 28 GPIO_ACTIVE_HIGH>;
			enable-active-high;
			regulator-boot-on;
			regulator-always-on;
/*			regulator-state-mem {
				regulator-off-in-suspend;
			};*/
		};

		reg_lcd_pwr_en: lcd_pwr_en {
			compatible = "regulator-fixed";
			regulator-name = "LCD_PWR_EN";
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_reg_lcd_pwr_en>;
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
			gpio = <&gpio5 22 GPIO_ACTIVE_HIGH>;
			enable-active-high;
			regulator-state-mem {
				regulator-off-in-suspend;
			};
		};

		userspace_consumer_lcd_pwr_en {
			compatible = "reg-userspace-consumer";
			regulator-name = "lcd-pwr-en-consumer";
			regulator-supplies = "mpu-lcd-pwr-en";
			mpu-lcd-pwr-en-supply = <&reg_lcd_pwr_en>;
		};
	};

	backlight {
		compatible = "gpio-backlight";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_backlight>;
		gpios = <&gpio4 11 GPIO_ACTIVE_HIGH>; 
	};

	sound {
		compatible = "fsl,pm-041-sgtl5000",
			     "fsl,imx-audio-sgtl5000";
		model = "pm-041-sgtl5000";
		ssi-controller = <&ssi2>;
		audio-codec = <&sgtl5000>;
		audio-routing =
			"LINE_IN", "Line In Jack",
			"Line Out Jack", "LINE_OUT";
		mux-int-port = <2>;
		mux-ext-port = <4>;
	};
};

&cpu0 {
	/*
	 * Define smaller range than imx53.dtsi
	 * since 1GHz and 1.2GHz aren't supported
	 */
	operating-points = <
		/* kHz	  uV */
		166666	850000
		400000	900000
		800000	1050000
	>;
};

&audmux {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_audmux>;
	status = "okay";
};

&can1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_can1>;
	status = "okay";
};

&can2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_can2>;
	status = "okay";
};

&esdhc3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_esdhc3>;
	bus-width = <8>;
	non-removable;
	cap-mmc-highspeed;
	status = "okay";
};

&fec {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_fec>;
	phy-mode = "rmii";
	phy-supply = <&reg_fec_clk_oe>;
	phy-reset-gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
	phy-handle = <&ethphy>;
	status = "okay";
	mdio {
		#address-cells = <1>;
		#size-cells = <0>;
		ethphy: ethernet-phy@0 {
			compatible = "ethernet-phy-ieee802.3-c22";
			interrupt-parent = <&gpio1>;
			interrupts = <16 8>;
			reg = <0>;
			max-speed = <100>;
		};
	};
};

&i2c1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c1>;
	clock-frequency = <100000>;
	status = "okay";

	pmic: mc34708@8 {
		compatible = "fsl,mc34708";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_pmic>;
		reg = <0x08>;
		interrupt-parent = <&gpio7>;
		interrupts = <13 4>; /* GPIO_18 (GPIO7_13), active high */
		regulators {
			sw1_reg: sw1a {
				regulator-name = "SW1";
				regulator-min-microvolt = <650000>;
				regulator-max-microvolt = <1437500>;
				regulator-boot-on;
				regulator-always-on;
			};

			sw1b_reg: sw1b {
				regulator-name = "SW1B";
				regulator-min-microvolt = <650000>;
				regulator-max-microvolt = <1437500>;
				regulator-boot-on;
				regulator-always-on;
			};

			sw2_reg: sw2 {
				regulator-name = "SW2";
				regulator-min-microvolt = <650000>;
				regulator-max-microvolt = <1437500>;
				regulator-boot-on;
				regulator-always-on;
			};

			sw3_reg: sw3 {
				regulator-name = "SW3";
				regulator-min-microvolt = <650000>;
				regulator-max-microvolt = <1425000>;
				regulator-boot-on;
			};

			sw4a_reg: sw4a {
				regulator-name = "SW4A";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			sw4b_reg: sw4b {
				regulator-name = "SW4B";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};

			sw5_reg: sw5 {
				regulator-name = "SW5";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1975000>;
				regulator-boot-on;
				regulator-always-on;
			};

			swbst_reg: swbst {
				regulator-name = "SWBST";
				regulator-boot-on;
				regulator-always-on;
			};

			vpll_reg: vpll {
				regulator-name = "VPLL";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1800000>;
				regulator-boot-on;
			};

			vrefddr_reg: vrefddr {
				regulator-name = "VREFDDR";
				regulator-boot-on;
				regulator-always-on;
			};

			vusb_reg: vusb {
				regulator-name = "VUSB";
				regulator-boot-on;
				regulator-always-on;
			};

			vusb2_reg: vusb2 {
				regulator-name = "VUSB2";
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <3000000>;
				regulator-boot-on;
				regulator-always-on;
			};

			vdac_reg: vdac {
				regulator-name = "VDAC";
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <2775000>;
				regulator-boot-on;
				regulator-always-on;
			};

			vgen1_reg: vgen1 {
				regulator-name = "VGEN1";
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1550000>;
				regulator-boot-on;
				regulator-always-on;
			};

			vgen2_reg: vgen2 {
				regulator-name = "VGEN2";
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
				regulator-always-on;
			};
		};
	};
};

&i2c2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2>;
	clock-frequency = <100000>;
	status = "okay";

	adv7180_0@20 {
		compatible = "adi,adv7180";
		reg = <0x20>;
		interrupt-parent = <&gpio6>;
		interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
		powerdown-gpios = <&gpio6 9 GPIO_ACTIVE_LOW>;
/*		remote = <&ipu_csi0>;*/

		port {
			parallel_sensor_to_ipu_csi0: endpoint {
				remote-endpoint = <&ipu_csi0_from_parallel_sensor>;
				bus-width = <8>;
			};
		};
	};

	adv7180_1@21 {
		compatible = "adi,adv7180";
		reg = <0x21>;
		interrupt-parent = <&gpio6>;
		interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
		powerdown-gpios = <&gpio6 7 GPIO_ACTIVE_LOW>;
/*		remote = <&ipu_csi1>;*/

		port {
			parallel_sensor_to_ipu_csi1: endpoint {
				remote-endpoint = <&ipu_csi1_from_parallel_sensor>;
				bus-width = <8>;
			};
		};
	};
};

&i2c3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c3>;
	clock-frequency = <400000>;
	status = "okay";

	sgtl5000: codec@0a {
		compatible = "fsl,sgtl5000";
		reg = <0x0a>;
		clocks = <&mclk>;
		VDDA-supply = <&reg_vswext_3v3>;
		VDDIO-supply = <&reg_vswext_3v3>;
		VDDD-supply = <&reg_vdd_1v5>;
	};

	sx8656: touchscreen@48 {
		compatible = "semtech,sx8654";
		reg = <0x48>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_touchscreen>;
		interrupt-parent = <&gpio5>;
		interrupts = <23 8>;
		reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
		semtech,invert-y;
		semtech,5-wire;
		linux,wakeup;
	};

/*	sx8656: touchscreen@48 {
		compatible = "semtech,sx8656";
		reg = <0x48>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_touchscreen>;
		interrupt-parent = <&gpio5>;
		interrupts = <23 0>;
		reset-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
		semtech,max-x = <3903>;
		semtech,min-x = <128>;
		semtech,max-y = <3839>;
		semtech,min-y = <256>;
		semtech,invert-y;
		semtech,5-wire;
		linux,wakeup;
	};*/
};

&iomuxc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_hog>;

	pm-041 {
		pinctrl_hog: hoggrp {
			fsl,pins = <
				MX53_PAD_GPIO_7__GPIO1_7     0x0c0 /* GPIO1(7)_UART2_TXD */
				MX53_PAD_GPIO_8__GPIO1_8     0x0e0 /* GPIO1(8)_UART2_RXD */
				MX53_PAD_SD2_CLK__GPIO1_10   0x0c0 /* GPIO1(10)_ALT */
				MX53_PAD_SD2_CMD__GPIO1_11   0x0c0 /* GPIO1(11)_ALT */
				MX53_PAD_GPIO_19__GPIO4_5    0x000 /* VDD_FUSE_EN */
				MX53_PAD_CSI0_DAT6__GPIO5_24 0x0c0 /* GPIO5(24)_ECSPI1_MISO */
				MX53_PAD_CSI0_DAT7__GPIO5_25 0x0c0 /* GPIO5(25)_ECSPI1_SS0 (BAUD_RATE_SWITCH)*/
			>;
		};

		pinctrl_audmux: audmuxgrp {
			fsl,pins = <
				MX53_PAD_SD2_DATA0__AUDMUX_AUD4_RXD  0x1e2 /* GPIO1(15)_ALT */
				MX53_PAD_SD2_DATA3__AUDMUX_AUD4_TXC  0x1e2 /* GPIO1(12)_ALT */
				MX53_PAD_SD2_DATA2__AUDMUX_AUD4_TXD  0x1e2 /* GPIO1(13)_ALT */
				MX53_PAD_SD2_DATA1__AUDMUX_AUD4_TXFS 0x1e2 /* GPIO1(14)_ALT */
			>;
		};

		pinctrl_can1: can1grp {
			fsl,pins = <
				MX53_PAD_PATA_INTRQ__CAN1_TXCAN 0x80000000
				MX53_PAD_PATA_DIOR__CAN1_RXCAN  0x80000000
			>;
		};

		pinctrl_can2: can2grp {
			fsl,pins = <
				MX53_PAD_KEY_COL4__CAN2_TXCAN 0x80000000
				MX53_PAD_KEY_ROW4__CAN2_RXCAN 0x80000000
			>;
		};

		pinctrl_esdhc3: esdhc3grp {
			fsl,pins = <
				MX53_PAD_PATA_DATA8__ESDHC3_DAT0  0x1d5
				MX53_PAD_PATA_DATA9__ESDHC3_DAT1  0x1d5
				MX53_PAD_PATA_DATA10__ESDHC3_DAT2 0x1d5
				MX53_PAD_PATA_DATA11__ESDHC3_DAT3 0x1d5
				MX53_PAD_PATA_DATA0__ESDHC3_DAT4  0x1d5
				MX53_PAD_PATA_DATA1__ESDHC3_DAT5  0x1d5
				MX53_PAD_PATA_DATA2__ESDHC3_DAT6  0x1d5
				MX53_PAD_PATA_DATA3__ESDHC3_DAT7  0x1d5
				MX53_PAD_PATA_RESET_B__ESDHC3_CMD 0x1d5
				MX53_PAD_PATA_IORDY__ESDHC3_CLK   0x1d5
			>;
		};

		pinctrl_fec: fecgrp {
			fsl,pins = <
				MX53_PAD_FEC_MDC__FEC_MDC        0x0c4
				MX53_PAD_FEC_MDIO__FEC_MDIO      0x1fc
				MX53_PAD_FEC_REF_CLK__FEC_TX_CLK 0x180
				MX53_PAD_FEC_RX_ER__FEC_RX_ER    0x180
				MX53_PAD_FEC_CRS_DV__FEC_RX_DV   0x180
				MX53_PAD_FEC_RXD1__FEC_RDATA_1   0x180
				MX53_PAD_FEC_RXD0__FEC_RDATA_0   0x180
				MX53_PAD_FEC_TX_EN__FEC_TX_EN    0x0c4
				MX53_PAD_FEC_TXD1__FEC_TDATA_1   0x004
				MX53_PAD_FEC_TXD0__FEC_TDATA_0   0x004
				MX53_PAD_SD1_DATA0__GPIO1_16     0x0c0 /* ETH_INT */
				MX53_PAD_SD1_DATA1__GPIO1_17     0x0c8 /* ETH_RESET */
			>;
		};

/*		pinctrl_gpio_keys: gpio_keys_grp {
			fsl,pins = <
				MX53_PAD_CSI0_DAT7__GPIO5_25 0x0c0 /* GPIO5(25)_ECSPI1_SS0 (BAUD_RATE_SWITCH) /
			>;
		};*/

		led_pin_gpio4_10: led_gpio4_10@0 {
			fsl,pins = <
				MX53_PAD_KEY_COL2__GPIO4_10 0x0c0 /* HEARTBEAT */
			>;
		};

		pinctrl_i2c1: i2c1grp {
			fsl,pins = <
				MX53_PAD_CSI0_DAT8__I2C1_SDA 0xc0000000
				MX53_PAD_CSI0_DAT9__I2C1_SCL 0xc0000000
			>;
		};

		pinctrl_i2c2: i2c2grp {
			fsl,pins = <
				MX53_PAD_KEY_COL3__I2C2_SCL 0xc0000000 /*0x1eb*/
				MX53_PAD_KEY_ROW3__I2C2_SDA 0xc0000000 /*0x1eb*/
			>;
		};

		pinctrl_i2c3: i2c3grp {
			fsl,pins = <
				MX53_PAD_GPIO_6__I2C3_SDA 0xc0000000
				MX53_PAD_GPIO_5__I2C3_SCL 0xc0000000
			>;
		};

		pinctrl_ipu_csi0: ipu_csi0_grp {
			fsl,pins = <
				MX53_PAD_CSI0_DAT12__IPU_CSI0_D_12    0x180
				MX53_PAD_CSI0_DAT13__IPU_CSI0_D_13    0x180
				MX53_PAD_CSI0_DAT14__IPU_CSI0_D_14    0x180
				MX53_PAD_CSI0_DAT15__IPU_CSI0_D_15    0x180
				MX53_PAD_CSI0_DAT16__IPU_CSI0_D_16    0x180
				MX53_PAD_CSI0_DAT17__IPU_CSI0_D_17    0x180
				MX53_PAD_CSI0_DAT18__IPU_CSI0_D_18    0x180
				MX53_PAD_CSI0_DAT19__IPU_CSI0_D_19    0x180
				MX53_PAD_CSI0_MCLK__IPU_CSI0_HSYNC    0x180
				MX53_PAD_CSI0_PIXCLK__IPU_CSI0_PIXCLK 0x180
				MX53_PAD_CSI0_VSYNC__IPU_CSI0_VSYNC   0x180
				MX53_PAD_NANDF_WP_B__GPIO6_9          0x0c0 /* VID0_RESET */
				MX53_PAD_NANDF_RB0__GPIO6_10          0x0e0 /* VID0_INT */
			>;
		};

		pinctrl_ipu_csi1: ipu_csi1_grp {
			fsl,pins = <
				MX53_PAD_EIM_A17__IPU_CSI1_D_12   0x180
				MX53_PAD_EIM_A18__IPU_CSI1_D_13   0x180
				MX53_PAD_EIM_A19__IPU_CSI1_D_14   0x180
				MX53_PAD_EIM_A20__IPU_CSI1_D_15   0x180
				MX53_PAD_EIM_A21__IPU_CSI1_D_16   0x180
				MX53_PAD_EIM_A22__IPU_CSI1_D_17   0x180
				MX53_PAD_EIM_A23__IPU_CSI1_D_18   0x180
				MX53_PAD_EIM_A24__IPU_CSI1_D_19   0x180
				MX53_PAD_EIM_DA11__IPU_CSI1_HSYNC 0x180
				MX53_PAD_EIM_A16__IPU_CSI1_PIXCLK 0x180
				MX53_PAD_EIM_D29__IPU_CSI1_VSYNC  0x180
				MX53_PAD_NANDF_CLE__GPIO6_7       0x0c0 /* VID1_RESET */
				MX53_PAD_NANDF_ALE__GPIO6_8       0x0e0 /* VID1_INT */
			>;
		};

		pinctrl_backlight: backlightgrp {
			fsl,pins = <
				MX53_PAD_KEY_ROW2__GPIO4_11  0x0c0 /* GPIO4(11)_ECSPI1_SS2 BACKLIGHT */
			>;
		};

		pinctrl_reg_lcd_pwr_en: reglcdpwrengrp {
			fsl,pins = <
				MX53_PAD_CSI0_DAT4__GPIO5_22 0x0c0 /* LCD_PWR_EN on PM-044 */
			>;
		};

		pinctrl_lvds1_1: lvds1-grp1 {
			fsl,pins = <
				MX53_PAD_LVDS0_CLK_P__LDB_LVDS0_CLK 0x80000000
				MX53_PAD_LVDS0_TX0_P__LDB_LVDS0_TX0 0x80000000
				MX53_PAD_LVDS0_TX1_P__LDB_LVDS0_TX1 0x80000000
				MX53_PAD_LVDS0_TX2_P__LDB_LVDS0_TX2 0x80000000
				MX53_PAD_LVDS0_TX3_P__LDB_LVDS0_TX3 0x80000000
			>;
		};

		pinctrl_pmic: pmicgrp {
			fsl,pins = <
				MX53_PAD_GPIO_18__GPIO7_13 0x0e0 /* PMIC_INT */
				MX53_PAD_GPIO_17__GPIO7_12 0x0e0 /* PMIC_SDWNB */
			>;
		};

		pinctrl_reg_fec_clk_oe: reg_fec_clk_oe_grp {
			fsl,pins = <
				MX53_PAD_GPIO_16__GPIO7_11 0x000 /* FEC_CLK_OE */
			>;
		};

		pinctrl_reg_usb_host_en: reg_usb_host_en_grp {
			fsl,pins = <
				MX53_PAD_GPIO_0__GPIO1_0 0x0c0 /* USB_HOST_EN */
			>;
		};

		pinctrl_reg_vid_clk_oe: reg_vid_clk_oe_grp {
			fsl,pins = <
				MX53_PAD_EIM_D28__GPIO3_28 0x00c /* VID_CLK_OE */
			>;
		};

		pinctrl_touchscreen: touchscreengrp {
			fsl,pins = <
				MX53_PAD_GPIO_9__GPIO1_9     0x0c0 /* GPIO1(9) (TSC_RST) */
				MX53_PAD_CSI0_DAT5__GPIO5_23 0x0c0 /* GPIO5(23)_ECSPI1_MOSI (TSC_INT) */
			>;
		};

		pinctrl_uart1: uart1grp {
			fsl,pins = <
				MX53_PAD_CSI0_DAT10__UART1_TXD_MUX 0x1e4
				MX53_PAD_CSI0_DAT11__UART1_RXD_MUX 0x1e4
			>;
		};

		pinctrl_uart4: uart4grp {
			fsl,pins = <
				MX53_PAD_KEY_COL0__UART4_TXD_MUX 0x1e4
				MX53_PAD_KEY_ROW0__UART4_RXD_MUX 0x1e4
			>;
		};

		pinctrl_uart5: uart5grp {
			fsl,pins = <
				MX53_PAD_KEY_ROW1__UART5_RXD_MUX 0x1e4
				MX53_PAD_KEY_COL1__UART5_TXD_MUX 0x1e4
			>;
		};

		pinctrl_usbh1: usbh1grp {
			fsl,pins = <
				MX53_PAD_GPIO_3__USBOH3_USBH1_OC 0x0e0 /* USB_HOST_FLT */
			>;
		};
	};
};

&ipu {
	status = "okay";
};

&ipu_csi0_from_parallel_sensor {
	remote-endpoint = <&parallel_sensor_to_ipu_csi0>;
	bus-width = <8>;
};

&ipu_csi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ipu_csi0>;
};

&ipu_csi1_from_parallel_sensor {
	remote-endpoint = <&parallel_sensor_to_ipu_csi1>;
	bus-width = <8>;
};

&ipu_csi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ipu_csi1>;
};

/*&ldb {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_lvds1_1>;
	status = "okay";

	lvds-channel@0 {
		fsl,data-mapping = "spwg";
		fsl,data-width = <18>;
		status = "okay";

		display-timings {
			native-mode = <&lvds_timing_7inch>;
			lvds_timing_7inch: pm070wl3 {
				clock-frequency = <32000000>;
				hactive = <800>;
				vactive = <480>;
				hback-porch = <86>;
				hsync-len = <35>;
				hfront-porch = <42>;
				vback-porch = <33>;
				vsync-len = <2>;
				vfront-porch = <10>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <1>;
				pixelclk-active = <0>;
			};
			lvds_timing_10inch: am1024768t2tmqw00h {
				clock-frequency = <65000000>;
				hactive = <1024>;
				vactive = <768>;
				hback-porch = <160>;
				hsync-len = <136>;
				hfront-porch = <24>;
				vback-porch = <29>;
				vsync-len = <6>;
				vfront-porch = <3>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <1>;
				pixelclk-active = <0>;
			};
		};
	};
};*/

&ssi1 {
	status = "okay";
};

&ssi2 {
	codec-handle = <&sgtl5000>;
	status = "okay";
};

&tve {
	fsl,tve-mode = "tvout";
	status = "disabled";
};

&uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart1>;
	status = "okay";
};

&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart4>;
	status = "okay";
};

&uart5 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart5>;
	status = "okay";
};

&usbh1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usbh1>;
	vbus-supply = <&reg_usb_host_en>;
	phy_type = "utmi";
	status = "okay";
};

&usbotg {
	dr_mode = "peripheral";
	status = "okay";
};

&vpu {
	status = "okay";
};

[-- Attachment #5: cl-711.dts --]
[-- Type: application/octet-stream, Size: 983 bytes --]

/*
 * Copyright 2015 Hydro Electronic Devices, Inc.
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
#include "pm-041.dtsi"

&ldb {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_lvds1_1>;
	status = "okay";

	lvds-channel@0 {
		fsl,data-mapping = "spwg";
		fsl,data-width = <18>;
		status = "okay";

		display-timings {
			native-mode = <&lvds_timing_7inch>;
			lvds_timing_7inch: pm070wl3 {
				clock-frequency = <32000000>;
				hactive = <800>;
				vactive = <480>;
				hback-porch = <86>;
				hsync-len = <35>;
				hfront-porch = <42>;
				vback-porch = <33>;
				vsync-len = <2>;
				vfront-porch = <10>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <1>;
				pixelclk-active = <0>;
			};
		};
	};
};


[-- Attachment #6: media-ctl_imx53_adv7180.txt --]
[-- Type: text/plain, Size: 6140 bytes --]

# media-ctl -l "'adv7180 1-0020':0->'ipu1_csi0':0[1]"
# media-ctl -l "'ipu1_csi0':1->'ipu1_vdic':0[1]"
# media-ctl -l "'ipu1_vdic':2->'ipu1_ic_prp':0[1]"
# media-ctl -l "'ipu1_ic_prp':2->'ipu1_ic_prpvf':0[1]"
# media-ctl -l "'ipu1_ic_prpvf':1->'ipu1_ic_prpvf capture':0[1]"
# media-ctl -V "'adv7180 1-0020':0 [fmt:UYVY2X8/720x480]"
# media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x480 field:interlaced]"
# media-ctl -V "'ipu1_vdic':2 [fmt:AYUV32/720x480 field:none]"
# media-ctl -V "'ipu1_ic_prp':2 [fmt:AYUV32/720x480 field:none]"
# media-ctl -V "'ipu1_ic_prpvf':1 [fmt:AYUV32/720x480 field:none]"

# media-ctl -p
Media controller API version 4.15.1

Media device information
------------------------
driver          imx-media
model           imx-media
serial          
bus info        
hw revision     0x0
driver version  4.15.1

Device topology
- entity 1: adv7180 1-0021 (1 pad, 1 link)
            type V4L2 subdev subtype Unknown flags 20004
            device node name /dev/v4l-subdev0
	pad0: Source
		[fmt:UYVY8_2X8/720x480 field:interlaced]
		-> "ipu1_csi1":0 []

- entity 3: adv7180 1-0020 (1 pad, 1 link)
            type V4L2 subdev subtype Unknown flags 20004
            device node name /dev/v4l-subdev1
	pad0: Source
		[fmt:UYVY8_2X8/720x480 field:interlaced]
		-> "ipu1_csi0":0 [ENABLED]

- entity 5: ipu1_csi1 (3 pads, 4 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev2
	pad0: Sink
		[fmt:UYVY8_2X8/640x480 field:none
		 crop.bounds:(0,0)/640x480
		 crop:(0,0)/640x480
		 compose.bounds:(0,0)/640x480
		 compose:(0,0)/640x480]
		<- "adv7180 1-0021":0 []
	pad1: Source
		[fmt:AYUV8_1X32/640x480 field:none]
		-> "ipu1_ic_prp":0 []
		-> "ipu1_vdic":0 []
	pad2: Source
		[fmt:AYUV8_1X32/640x480 field:none]
		-> "ipu1_csi1 capture":0 []

- entity 9: ipu1_csi1 capture (1 pad, 1 link)
            type Node subtype V4L flags 0
            device node name /dev/video4
	pad0: Sink
		<- "ipu1_csi1":2 []

- entity 15: ipu1_csi0 (3 pads, 4 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev3
	pad0: Sink
		[fmt:UYVY8_2X8/720x480 field:interlaced
		 crop.bounds:(0,0)/720x480
		 crop:(0,2)/720x480
		 compose.bounds:(0,0)/720x480
		 compose:(0,0)/720x480]
		<- "adv7180 1-0020":0 [ENABLED]
	pad1: Source
		[fmt:AYUV8_1X32/720x480 field:interlaced]
		-> "ipu1_ic_prp":0 []
		-> "ipu1_vdic":0 [ENABLED]
	pad2: Source
		[fmt:AYUV8_1X32/720x480 field:interlaced]
		-> "ipu1_csi0 capture":0 []

- entity 19: ipu1_csi0 capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video5
	pad0: Sink
		<- "ipu1_csi0":2 []

- entity 25: ipu1_ic_prp (3 pads, 5 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev4
	pad0: Sink
		[fmt:AYUV8_1X32/720x480 field:none]
		<- "ipu1_csi1":1 []
		<- "ipu1_csi0":1 []
		<- "ipu1_vdic":2 [ENABLED]
	pad1: Source
		[fmt:AYUV8_1X32/720x480 field:none]
		-> "ipu1_ic_prpenc":0 []
	pad2: Source
		[fmt:AYUV8_1X32/720x480 field:none]
		-> "ipu1_ic_prpvf":0 [ENABLED]

- entity 29: ipu1_vdic (3 pads, 3 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev5
	pad0: Sink
		[fmt:AYUV8_1X32/720x480 field:interlaced]
		<- "ipu1_csi1":1 []
		<- "ipu1_csi0":1 [ENABLED]
	pad1: Sink
		[fmt:UYVY8_2X8/640x480 field:none]
	pad2: Source
		[fmt:AYUV8_1X32/720x480 field:none]
		-> "ipu1_ic_prp":0 [ENABLED]

- entity 33: ipu2_vdic (3 pads, 1 link)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev6
	pad0: Sink
		[fmt:AYUV8_1X32/640x480 field:none]
	pad1: Sink
		[fmt:UYVY8_2X8/640x480 field:none]
	pad2: Source
		[fmt:AYUV8_1X32/640x480 field:none]
		-> "ipu2_ic_prp":0 []

- entity 37: ipu1_ic_prpenc (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev7
	pad0: Sink
		[fmt:AYUV8_1X32/640x480 field:none]
		<- "ipu1_ic_prp":1 []
	pad1: Source
		[fmt:AYUV8_1X32/640x480 field:none]
		-> "ipu1_ic_prpenc capture":0 []

- entity 40: ipu1_ic_prpenc capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video6
	pad0: Sink
		<- "ipu1_ic_prpenc":1 []

- entity 46: ipu1_ic_prpvf (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev8
	pad0: Sink
		[fmt:AYUV8_1X32/720x480 field:none]
		<- "ipu1_ic_prp":2 [ENABLED]
	pad1: Source
		[fmt:AYUV8_1X32/720x480 field:none]
		-> "ipu1_ic_prpvf capture":0 [ENABLED]

- entity 49: ipu1_ic_prpvf capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video7
	pad0: Sink
		<- "ipu1_ic_prpvf":1 [ENABLED]

- entity 55: ipu2_ic_prp (3 pads, 3 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev9
	pad0: Sink
		[fmt:AYUV8_1X32/640x480 field:none]
		<- "ipu2_vdic":2 []
	pad1: Source
		[fmt:AYUV8_1X32/640x480 field:none]
		-> "ipu2_ic_prpenc":0 []
	pad2: Source
		[fmt:AYUV8_1X32/640x480 field:none]
		-> "ipu2_ic_prpvf":0 []

- entity 59: ipu2_ic_prpenc (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev10
	pad0: Sink
		[fmt:AYUV8_1X32/640x480 field:none]
		<- "ipu2_ic_prp":1 []
	pad1: Source
		[fmt:AYUV8_1X32/640x480 field:none]
		-> "ipu2_ic_prpenc capture":0 []

- entity 62: ipu2_ic_prpenc capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video8
	pad0: Sink
		<- "ipu2_ic_prpenc":1 []

- entity 68: ipu2_ic_prpvf (2 pads, 2 links)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev11
	pad0: Sink
		[fmt:AYUV8_1X32/640x480 field:none]
		<- "ipu2_ic_prp":2 []
	pad1: Source
		[fmt:AYUV8_1X32/640x480 field:none]
		-> "ipu2_ic_prpvf capture":0 []

- entity 71: ipu2_ic_prpvf capture (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video9
	pad0: Sink
		<- "ipu2_ic_prpvf":1 []

[-- Attachment #7: dmesg.txt --]
[-- Type: text/plain, Size: 17968 bytes --]

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.15.1 (starrm@hed-j8xtph2) (gcc version 4.9.2 (crosstool-NG 1.21.0)) #1 PREEMPT Thu Feb 15 12:39:49 CST 2018
[    0.000000] CPU: ARMv7 Processor [412fc085] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: HED PM-041 - Gen 3 Display - Display Board
[    0.000000] Memory policy: Data cache writeback
[    0.000000] On node 0 totalpages: 131072
[    0.000000]   Normal zone: 1152 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 131072 pages, LIFO batch:31
[    0.000000] CPU: All CPU(s) started in SVC mode.
[    0.000000] random: fast init done
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 129920
[    0.000000] Kernel command line: console=ttymxc0,115200 lpj=3997696 ro rootwait fixrtc panic=1 root=/dev/mmcblk0p3 rootfstype=ext4 rootflags=discard video=mxcdi0fb:RGB666,LCD-7-LVDS di0_primary ldb=di0
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 510356K/524288K available (5120K kernel code, 228K rwdata, 1320K rodata, 1024K init, 353K bss, 13932K reserved, 0K cma-reserved)
[    0.000000] Virtual kernel memory layout:
                   vector  : 0xffff0000 - 0xffff1000   (   4 kB)
                   fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
                   vmalloc : 0xe0800000 - 0xff800000   ( 496 MB)
                   lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
                   modules : 0xbf000000 - 0xc0000000   (  16 MB)
                     .text : 0x(ptrval) - 0x(ptrval)   (6112 kB)
                     .init : 0x(ptrval) - 0x(ptrval)   (1024 kB)
                     .data : 0x(ptrval) - 0x(ptrval)   ( 229 kB)
                      .bss : 0x(ptrval) - 0x(ptrval)   ( 354 kB)\x00) - 0x(ptrval)   ( 354 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] 	Tasks RCU enabled.\x00d.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] TrustZone Interrupt Controller (TZIC) initialized
[    0.000000] CPU identified as i.MX53, unknown revision
[    0.000000] Switching to timer-based delay loop, resolution 29ns
[    0.000011] sched_clock: 32 bits at 33MHz, resolution 29ns, wraps every 64424507889ns
[    0.000029] clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 57337812242 ns
[    0.000770] Console: colour dummy device 80x30
[    0.000810] Calibrating delay loop (skipped) preset value.. 799.53 BogoMIPS (lpj=3997696)
[    0.000830] pid_max: default: 32768 minimum: 301
[    0.000990] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.001008] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.001752] CPU: Testing write buffer coherency: ok
[    0.002488] Setting up static identity map for 0x70100000 - 0x70100060
[    0.002666] Hierarchical SRCU implementation.
[    0.005860] devtmpfs: initialized
[    0.012142] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2
[    0.012639] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.012663] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.012788] pinctrl core: initialized pinctrl subsystem
[    0.013820] NET: Registered protocol family 16
[    0.014684] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.025965] imx53-pinctrl 53fa8000.iomuxc: initialized IMX pinctrl driver
[    0.081850] i2c i2c-2: IMX I2C adapter registered
[    0.081885] i2c i2c-2: can't use DMA, using PIO instead.
[    0.083525] i2c i2c-1: IMX I2C adapter registered
[    0.083555] i2c i2c-1: can't use DMA, using PIO instead.
[    0.091803] mc13xxx 0-0008: mc34708: rev 1.2, fin: 0, fab: 0
[    0.172251] i2c i2c-0: IMX I2C adapter registered
[    0.172282] i2c i2c-0: can't use DMA, using PIO instead.
[    0.172589] media: Linux media interface: v0.10
[    0.172717] Linux video capture interface: v2.00
[    0.172893] pps_core: LinuxPPS API ver. 1 registered
[    0.172905] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.172992] PTP clock support registered
[    0.175983] clocksource: Switched to clocksource mxc_timer1
[    0.197044] NET: Registered protocol family 2
[    0.198201] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.198260] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[    0.198307] TCP: Hash tables configured (established 4096 bind 4096)
[    0.198429] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.198451] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.198620] NET: Registered protocol family 1
[    0.199053] RPC: Registered named UNIX socket transport module.
[    0.199067] RPC: Registered udp transport module.
[    0.199075] RPC: Registered tcp transport module.
[    0.199082] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.200789] workingset: timestamp_bits=14 max_order=17 bucket_order=3
[    0.217217] NFS: Registering the id_resolver key type
[    0.217273] Key type id_resolver registered
[    0.217282] Key type id_legacy registered
[    0.217335] ntfs: driver 2.1.32 [Flags: R/O].
[    0.218270] aufs 4.x-rcN-20171218
[    0.220332] io scheduler noop registered
[    0.220351] io scheduler deadline registered
[    0.220605] io scheduler cfq registered (default)
[    0.220620] io scheduler mq-deadline registered
[    0.220628] io scheduler kyber registered
[    0.220837] io scheduler bfq registered
[    0.222647] imx-sdma 63fb0000.sdma: Direct firmware load for imx/sdma/sdma-imx53.bin failed with error -2
[    0.222676] imx-sdma 63fb0000.sdma: external firmware not found, using ROM firmware
[    0.236604] 53fbc000.serial: ttymxc0 at MMIO 0x53fbc000 (irq = 47, base_baud = 4166666) is a IMX
[    0.759041] console [ttymxc0] enabled
[    0.763711] 53ff0000.serial: ttymxc3 at MMIO 0x53ff0000 (irq = 29, base_baud = 4166666) is a IMX
[    0.773600] 63f90000.serial: ttymxc4 at MMIO 0x63f90000 (irq = 102, base_baud = 4166666) is a IMX
[    0.787774] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    0.794411] [drm] No driver support for vblank timestamp query.
[    0.801787] imx-drm display-subsystem: bound imx-ipuv3-crtc.2 (ops 0xc063fa50)
[    0.809301] imx-drm display-subsystem: bound imx-ipuv3-crtc.3 (ops 0xc063fa50)
[    0.817021] imx-drm display-subsystem: bound 53fa8008.ldb (ops 0xc063fc70)
[    0.877860] Console: switching to colour frame buffer device 100x30
[    0.899863] imx-drm display-subsystem: fb0:  frame buffer device
[    0.906717] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 0
[    0.914957] imx-ipuv3 18000000.ipu: IPUv3M probed
[    0.921229] libphy: Fixed MDIO Bus: probed
[    0.930773] libphy: fec_enet_mii_bus: probed
[    0.937224] i2c /dev entries driver
[    0.943076] imx2-wdt 53f98000.wdog: timeout 60 sec (nowayout=1)
[    0.951791] sdhci: Secure Digital Host Controller Interface driver
[    0.958824] sdhci: Copyright(c) Pierre Ossman
[    0.963195] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.026077] mmc0: SDHCI controller on 50020000.esdhc [50020000.esdhc] using ADMA
[    1.038459] ledtrig-cpu: registered to indicate activity on CPUs
[    1.045940] ip_tables: (C) 2000-2006 Netfilter Core Team
[    1.051939] Key type dns_resolver registered
[    1.056881] ThumbEE CPU extension supported.
[    1.075600] hctosys: unable to open rtc device (rtc0)
[    1.081495] USB_HOST_EN: disabling
[    1.084921] LCD_PWR_EN: disabling
[    1.088809] Waiting for root device /dev/mmcblk0p3...
[    1.112664] mmc0: new high speed MMC card at address 0001
[    1.118849] mmcblk0: mmc0:0001 MMC04G 3.60 GiB 
[    1.123738] mmcblk0boot0: mmc0:0001 MMC04G partition 1 16.0 MiB
[    1.129984] mmcblk0boot1: mmc0:0001 MMC04G partition 2 16.0 MiB
[    1.136309] mmcblk0rpmb: mmc0:0001 MMC04G partition 3 128 KiB, chardev (248:0)
[    1.154010]  mmcblk0: p1 p2 p3 p4 p5 p6
[    1.185909] EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: discard
[    1.194578] VFS: Mounted root (ext4 filesystem) readonly on device 179:3.
[    1.206289] devtmpfs: mounted
[    1.211076] Freeing unused kernel memory: 1024K
[    2.195659] mountall: start
[    2.199015] mountall: checking filesystem
[    2.203221] mountall: fsck.vfat -p /dev/mmcblk0p1
[    2.242484] mountall: fsck.vfat -p /dev/mmcblk0p1: no errors found
[    2.249067] mountall: e2fsck -p /dev/mmcblk0p2
[    2.302119] mountall: e2fsck -p /dev/mmcblk0p2: no errors found
[    2.308461] mountall: e2fsck -p /dev/mmcblk0p5
[    2.365446] mountall: e2fsck -p /dev/mmcblk0p5: no errors found
[    2.371767] mountall: e2fsck -p /dev/mmcblk0p6
[    2.436144] mountall: e2fsck -p /dev/mmcblk0p6: no errors found
[    2.889607] EXT4-fs (mmcblk0p5): mounted filesystem with ordered data mode. Opts: discard
[    2.912674] EXT4-fs (mmcblk0p6): mounted filesystem with ordered data mode. Opts: discard,nodelalloc
[    2.977682] mountall: filesystem check ok, rm forcefsck
[    3.466212] EXT4-fs (mmcblk0p3): re-mounted. Opts: discard
[    4.256829] random: crng init done
[    4.591187] EXT4-fs (mmcblk0p3): re-mounted. Opts: discard
[    4.599281] mountall: Ok
[    5.145439] udevd[720]: starting version 3.2.2
[    5.211158] udevd[721]: starting eudev-3.2.2
[    5.441892] imx_media_common: module is from the staging directory, the quality is unknown, you have been warned.
[    5.512817] imx_media: module is from the staging directory, the quality is unknown, you have been warned.
[    5.567725] usb_phy_generic 50000000.aips:usbphy-0: 50000000.aips:usbphy-0 supply vcc not found, using dummy regulator
[    5.568040] usb_phy_generic 50000000.aips:usbphy-1: 50000000.aips:usbphy-1 supply vcc not found, using dummy regulator
[    5.579820] imx_media_capture: module is from the staging directory, the quality is unknown, you have been warned.
[    5.581532] imx_media_capture: module is from the staging directory, the quality is unknown, you have been warned.
[    5.588830] imx_media_csi: module is from the staging directory, the quality is unknown, you have been warned.
[    5.591178] imx_media_csi: module is from the staging directory, the quality is unknown, you have been warned.
[    5.674522] usbcore: registered new interface driver usbfs
[    5.674600] usbcore: registered new interface driver hub
[    5.674691] usbcore: registered new device driver usb
[    5.707933] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    5.820765] ci_hdrc ci_hdrc.1: EHCI Host Controller
[    5.820830] ci_hdrc ci_hdrc.1: new USB bus registered, assigned bus number 1
[    5.854601] ci_hdrc ci_hdrc.1: USB 2.0 started, EHCI 1.00
[    5.854994] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    5.855002] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.855009] usb usb1: Product: EHCI Host Controller
[    5.855014] usb usb1: Manufacturer: Linux 4.15.1 ehci_hcd
[    5.855020] usb usb1: SerialNumber: ci_hdrc.1
[    5.855888] hub 1-0:1.0: USB hub found
[    5.857380] hub 1-0:1.0: 1 port detected
[    5.907940] fsl-ssi-dai 50014000.ssi: No cache defaults, reading back from HW
[    5.909662] fsl-ssi-dai 63fcc000.ssi: No cache defaults, reading back from HW
[    5.978293] CAN device driver interface
[    5.998818] flexcan 53fc8000.can: 53fc8000.can supply xceiver not found, using dummy regulator
[    5.999717] flexcan 53fc8000.can: device registered (reg_base=3fd079a7, irq=98)
[    6.007573] flexcan 53fcc000.can: 53fcc000.can supply xceiver not found, using dummy regulator
[    6.008526] flexcan 53fcc000.can: device registered (reg_base=6ad637d7, irq=99)
[    6.071097] sgtl5000 2-000a: sgtl5000 revision 0x11
[    6.148639] adv7180 1-0020: chip found @ 0x20 (63fc4000.i2c)
[    6.192628] adv7180 1-0021: chip found @ 0x21 (63fc4000.i2c)
[    6.252285] fsl-asoc-card sound: sgtl5000 <-> 50014000.ssi mapping ok
[    6.264673] coda 63ff4000.vpu: Direct firmware load for vpu_fw_imx53.bin failed with error -2
[    6.273165] coda 63ff4000.vpu: Using fallback firmware vpu/vpu_fw_imx53.bin
[    6.275016] coda 63ff4000.vpu: Initialized CODA7541.
[    6.275027] coda 63ff4000.vpu: Firmware version: 1.4.50
[    6.289048] coda 63ff4000.vpu: codec registered as /dev/video[0-3]
[    6.788755] imx-media capture_subsystem: of_parse_subdev: subdev port is CSI port
[    6.796409] OF: graph: no port node found in /soc/ipu@18000000/port@0
[    6.802959] imx-media capture_subsystem: of_parse_subdev: subdev adv7180_0 is unknown
[    6.810883] imx-media capture_subsystem: of_parse_subdev: subdev adv7180_0 is original source
[    6.819540] imx-media capture_subsystem: of_parse_subdev: subdev port is CSI port
[    6.827060] OF: graph: no port node found in /soc/ipu@18000000/port@1
[    6.833551] imx-media capture_subsystem: of_parse_subdev: subdev adv7180_1 is unknown
[    6.841415] imx-media capture_subsystem: of_parse_subdev: subdev adv7180_1 is original source
[    6.853157] imx-media capture_subsystem: Entity type for entity adv7180 1-0021 was not initialized!
[    6.862351] imx-media: imx_media_subdev_bound: SENSOR subdev adv7180 1-0021
[    6.869399] imx-media: Registered subdev adv7180 1-0021
[    6.874638] imx-media capture_subsystem: Entity type for entity adv7180 1-0020 was not initialized!
[    6.883753] imx-media: imx_media_subdev_bound: SENSOR subdev adv7180 1-0020
[    6.890743] imx-media: Registered subdev adv7180 1-0020
[    6.896713] ipu1_csi1: Registered ipu1_csi1 capture as /dev/video4
[    6.902914] imx-media: imx_media_subdev_bound: CSI subdev ipu1_csi1
[    6.909275] imx-media: Registered subdev ipu1_csi1
[    6.914669] ipu1_csi0: Registered ipu1_csi0 capture as /dev/video5
[    6.920983] imx-media: imx_media_subdev_bound: CSI subdev ipu1_csi0
[    6.927325] imx-media: Registered subdev ipu1_csi0
[    6.949234] imx_media_ic: module is from the staging directory, the quality is unknown, you have been warned.
[    6.959503] imx_media_ic: module is from the staging directory, the quality is unknown, you have been warned.
[    6.961586] imx-media: Registered subdev ipu1_ic_prp
[    6.961765] imx_media_ic: module is from the staging directory, the quality is unknown, you have been warned.
[    6.962027] imx_media_ic: module is from the staging directory, the quality is unknown, you have been warned.
[    6.962337] imx_media_vdic: module is from the staging directory, the quality is unknown, you have been warned.
[    6.963525] imx_media_vdic: module is from the staging directory, the quality is unknown, you have been warned.
[    6.966340] imx_media_ic: module is from the staging directory, the quality is unknown, you have been warned.
[    6.968885] imx-media: Registered subdev ipu1_vdic
[    6.969071] imx-media: Registered subdev ipu2_vdic
[    6.972309] imx_media_ic: module is from the staging directory, the quality is unknown, you have been warned.
[    6.983625] ipu1_ic_prpenc: Registered ipu1_ic_prpenc capture as /dev/video6
[    6.983687] imx-media: Registered subdev ipu1_ic_prpenc
[    6.986462] ipu1_ic_prpvf: Registered ipu1_ic_prpvf capture as /dev/video7
[    6.986511] imx-media: Registered subdev ipu1_ic_prpvf
[    6.986688] imx-media: Registered subdev ipu2_ic_prp
[    6.995666] ipu2_ic_prpenc: Registered ipu2_ic_prpenc capture as /dev/video8
[    6.995727] imx-media: Registered subdev ipu2_ic_prpenc
[    6.998100] ipu2_ic_prpvf: Registered ipu2_ic_prpvf capture as /dev/video9
[    6.998148] imx-media: Registered subdev ipu2_ic_prpvf
[    6.998165] imx-media: imx_media_create_link: ipu1_csi0:1 -> ipu1_ic_prp:0
[    6.998172] imx-media: imx_media_create_link: ipu1_csi0:1 -> ipu1_vdic:0
[    6.998179] imx-media: imx_media_create_link: adv7180 1-0020:0 -> ipu1_csi0:0
[    6.998186] imx-media: imx_media_create_link: ipu1_csi1:1 -> ipu1_ic_prp:0
[    6.998193] imx-media: imx_media_create_link: ipu1_csi1:1 -> ipu1_vdic:0
[    6.998199] imx-media: imx_media_create_link: adv7180 1-0021:0 -> ipu1_csi1:0
[    6.998206] imx-media: imx_media_create_link: ipu1_vdic:2 -> ipu1_ic_prp:0
[    6.998213] imx-media: imx_media_create_link: ipu1_ic_prp:1 -> ipu1_ic_prpenc:0
[    6.998220] imx-media: imx_media_create_link: ipu1_ic_prp:2 -> ipu1_ic_prpvf:0
[    6.998229] imx-media: imx_media_create_link: ipu2_vdic:2 -> ipu2_ic_prp:0
[    6.998236] imx-media: imx_media_create_link: ipu2_ic_prp:1 -> ipu2_ic_prpenc:0
[    6.998244] imx-media: imx_media_create_link: ipu2_ic_prp:2 -> ipu2_ic_prpvf:0
[    7.764211] using random self ethernet address
[    7.768941] using random host ethernet address
[    7.793808] Mass Storage Function, version: 2009/09/11
[    7.801732] LUN: removable file: (no medium)
[    7.806762] LUN: file: /etc/usb_drivers_disk.raw
[    7.811398] Number of LUNs=1
[    7.819601] usb0: HOST MAC 86:07:ca:2b:da:fb
[    7.824055] usb0: MAC 4a:c5:7e:6b:93:2f
[    7.828251] g_multi gadget: Multifunction Composite Gadget
[    7.833755] g_multi gadget: userspace failed to provide iSerialNumber
[    7.840344] g_multi gadget: g_multi ready
[    8.096624] SMSC LAN8710/LAN8720 63fec000.ethernet-1:00: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=63fec000.ethernet-1:00, irq=160)
[    8.333256] g_multi gadget: high-speed config #1: Multifunction with RNDIS
[   10.893798] fec 63fec000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[ 1024.936581] input: SX8654 I2C Touchscreen as /devices/platform/soc/50000000.aips/53fec000.i2c/i2c-2/2-0048/input/input0
[ 1024.968322] mousedev: PS/2 mouse device common for all mice

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-02-19 18:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-14 15:21 i.MX53 using imx-media to capture analog video through ADV7180 Matthew Starr
2018-02-14 15:44 ` Fabio Estevam
2018-02-17  1:02   ` Steve Longerbeam
2018-02-19 18:20     ` Matthew Starr

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.