Re: [PATCH 2/5] docs: media: vimc: Documenting vimc topology configuration using configfs

2019-09-26 Thread Andrzej Pietrasiewicz

Hello All,

W dniu 23.09.2019 o 11:50, Hans Verkuil pisze:

On 9/23/19 11:29 AM, Dafna Hirschfeld wrote:

On Fri, 2019-09-20 at 15:39 +0200, Hans Verkuil wrote:

On 9/19/19 10:32 PM, Dafna Hirschfeld wrote:

Add explanation of how to use configfs in order to create a
vimc device with a given topology.

Signed-off-by: Dafna Hirschfeld 
---
  Documentation/media/v4l-drivers/vimc.dot |  28 ++-
  Documentation/media/v4l-drivers/vimc.rst | 240 ---
  2 files changed, 220 insertions(+), 48 deletions(-)



When adding new sysfs or configfs directories/files one should add
appropriate entries to Documentation/ABI/*.

My feeling is that this patch should be merged with the patch actually
enabling the configfs interface, which is patch 4/5. The reason is twofold.

The first is consistency: if a documentation for an interface is added
in a different patch than the interface itself, then at the first of the
two commits in question we either have a documentation for a non-existing
interface, or an undocumented interface.

The second is that the documentation is not only for kernel developers
but also for users who don't have the faintest idea of what code is
inside the kernel, so even though patch 3/5 of this series adds
the code implementing the interface, it is not available to users
until patch 4/5.

Regards,

Andrzej


Re: [PATCH 2/5] docs: media: vimc: Documenting vimc topology configuration using configfs

2019-09-26 Thread Shuah Khan

On 9/19/19 2:32 PM, Dafna Hirschfeld wrote:

Add explanation of how to use configfs in order to create a
vimc device with a given topology.



Can you add more detail on the problem configfs solves and what
value it adds.


Signed-off-by: Dafna Hirschfeld 
---
  Documentation/media/v4l-drivers/vimc.dot |  28 ++-
  Documentation/media/v4l-drivers/vimc.rst | 240 ---
  2 files changed, 220 insertions(+), 48 deletions(-)

diff --git a/Documentation/media/v4l-drivers/vimc.dot 
b/Documentation/media/v4l-drivers/vimc.dot
index 57863a13fa39..e3b41ac2bc46 100644
--- a/Documentation/media/v4l-drivers/vimc.dot
+++ b/Documentation/media/v4l-drivers/vimc.dot
@@ -2,21 +2,15 @@
  
  digraph board {

rankdir=TB
-   n0001 [label="{{} | Sensor A\n/dev/v4l-subdev0 | { 0}}", 
shape=Mrecord, style=filled, fillcolor=green]
-   n0001:port0 -> n0005:port0 [style=bold]
-   n0001:port0 -> n000b [style=bold]
-   n0003 [label="{{} | Sensor B\n/dev/v4l-subdev1 | { 0}}", 
shape=Mrecord, style=filled, fillcolor=green]
-   n0003:port0 -> n0008:port0 [style=bold]
-   n0003:port0 -> n000f [style=bold]
-   n0005 [label="{{ 0} | Debayer A\n/dev/v4l-subdev2 | { 
1}}", shape=Mrecord, style=filled, fillcolor=green]
-   n0005:port1 -> n0017:port0
-   n0008 [label="{{ 0} | Debayer B\n/dev/v4l-subdev3 | { 
1}}", shape=Mrecord, style=filled, fillcolor=green]
-   n0008:port1 -> n0017:port0 [style=dashed]
-   n000b [label="Raw Capture 0\n/dev/video0", shape=box, style=filled, 
fillcolor=yellow]
-   n000f [label="Raw Capture 1\n/dev/video1", shape=box, style=filled, 
fillcolor=yellow]
-   n0013 [label="RGB/YUV Input\n/dev/video2", shape=box, style=filled, 
fillcolor=yellow]
-   n0013 -> n0017:port0 [style=dashed]
-   n0017 [label="{{ 0} | Scaler\n/dev/v4l-subdev4 | { 
1}}", shape=Mrecord, style=filled, fillcolor=green]
-   n0017:port1 -> n001a [style=bold]
-   n001a [label="RGB/YUV Capture\n/dev/video3", shape=box, 
style=filled, fillcolor=yellow]
+   n0001 [label="cap-deb\n/dev/video0", shape=box, style=filled, 
fillcolor=yellow]
+   n0005 [label="cap-sen\n/dev/video1", shape=box, style=filled, 
fillcolor=yellow]
+   n0009 [label="cap-sca\n/dev/video2", shape=box, style=filled, 
fillcolor=yellow]
+   n000d [label="{{ 0} | sca\n/dev/v4l-subdev0 | { 1}}", 
shape=Mrecord, style=filled, fillcolor=green]
+   n000d:port1 -> n0009 [style=bold]
+   n0010 [label="{{ 0} | deb\n/dev/v4l-subdev1 | { 1}}", 
shape=Mrecord, style=filled, fillcolor=green]
+   n0010:port1 -> n0001 [style=bold]
+   n0010:port1 -> n000d:port0 [style=bold]
+   n0013 [label="{{} | sen\n/dev/v4l-subdev2 | { 0}}", 
shape=Mrecord, style=filled, fillcolor=green]
+   n0013:port0 -> n0005 [style=bold]
+   n0013:port0 -> n0010:port0 [style=bold]
  }
diff --git a/Documentation/media/v4l-drivers/vimc.rst 
b/Documentation/media/v4l-drivers/vimc.rst
index a582af0509ee..e5636883545f 100644
--- a/Documentation/media/v4l-drivers/vimc.rst
+++ b/Documentation/media/v4l-drivers/vimc.rst
@@ -1,45 +1,225 @@
  .. SPDX-License-Identifier: GPL-2.0
  
+==

  The Virtual Media Controller Driver (vimc)
  ==
  
-The vimc driver emulates complex video hardware using the V4L2 API and the Media

-API. It has a capture device and three subdevices: sensor, debayer and scaler.
+The vimc driver emulates complex video hardware topologies using the V4L2 API
+and the Media API. It has a capture device and three subdevices:


Add blank line in between - helps with readability


+sensor, debayer and scaler. It exposes media devices through /dev/mediaX nodes,
+video capture devices through /dev/videoX and sub-devices through 
/dev/v4l-subdevX.
+
+
+To configure a media device of a given topology, a ConfigFS API is provided.


ConfigFS API enables the ability dynamically configure a media device
and its topology. This will help customize topology for specific testing
needs (?)

Assuming that is the goal for this work.


+
+Configuring a topology through ConfigFS (Experimental)
+==
+
+.. note:: This API is under development and might change in the future. > +
+Mount configfs:
+::
+
+   $ mkdir /configfs
+   $ mount -t configfs none /configfs
+
+When loading the module, you will see a folder named vimc
+::
+
+   $ tree /configfs/
+   /configfs/
+   `-- vimc
+
+Creating a media device
+---
+
+To create a media device create a new folder under /configfs/vimc/

Change this to:

How to create a media device or flip the sentence around:

Create a folder under /configfs/vimc/ to create media device.


+
+Example:
+::
+
+   $ mkdir /configfs/vimc/mdev
+   $ tr

Re: [PATCH 2/5] docs: media: vimc: Documenting vimc topology configuration using configfs

2019-09-23 Thread Hans Verkuil
On 9/23/19 11:29 AM, Dafna Hirschfeld wrote:
> On Fri, 2019-09-20 at 15:39 +0200, Hans Verkuil wrote:
>> On 9/19/19 10:32 PM, Dafna Hirschfeld wrote:
>>> Add explanation of how to use configfs in order to create a
>>> vimc device with a given topology.
>>>
>>> Signed-off-by: Dafna Hirschfeld 
>>> ---
>>>  Documentation/media/v4l-drivers/vimc.dot |  28 ++-
>>>  Documentation/media/v4l-drivers/vimc.rst | 240 ---
>>>  2 files changed, 220 insertions(+), 48 deletions(-)
>>>
>>> diff --git a/Documentation/media/v4l-drivers/vimc.dot 
>>> b/Documentation/media/v4l-drivers/vimc.dot
>>> index 57863a13fa39..e3b41ac2bc46 100644
>>> --- a/Documentation/media/v4l-drivers/vimc.dot
>>> +++ b/Documentation/media/v4l-drivers/vimc.dot
>>> @@ -2,21 +2,15 @@
>>>  
>>>  digraph board {
>>> rankdir=TB
>>> -   n0001 [label="{{} | Sensor A\n/dev/v4l-subdev0 | { 0}}", 
>>> shape=Mrecord, style=filled, fillcolor=green]
>>> -   n0001:port0 -> n0005:port0 [style=bold]
>>> -   n0001:port0 -> n000b [style=bold]
>>> -   n0003 [label="{{} | Sensor B\n/dev/v4l-subdev1 | { 0}}", 
>>> shape=Mrecord, style=filled, fillcolor=green]
>>> -   n0003:port0 -> n0008:port0 [style=bold]
>>> -   n0003:port0 -> n000f [style=bold]
>>> -   n0005 [label="{{ 0} | Debayer A\n/dev/v4l-subdev2 | { 
>>> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>> -   n0005:port1 -> n0017:port0
>>> -   n0008 [label="{{ 0} | Debayer B\n/dev/v4l-subdev3 | { 
>>> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>> -   n0008:port1 -> n0017:port0 [style=dashed]
>>> -   n000b [label="Raw Capture 0\n/dev/video0", shape=box, style=filled, 
>>> fillcolor=yellow]
>>> -   n000f [label="Raw Capture 1\n/dev/video1", shape=box, style=filled, 
>>> fillcolor=yellow]
>>> -   n0013 [label="RGB/YUV Input\n/dev/video2", shape=box, style=filled, 
>>> fillcolor=yellow]
>>> -   n0013 -> n0017:port0 [style=dashed]
>>> -   n0017 [label="{{ 0} | Scaler\n/dev/v4l-subdev4 | { 
>>> 1}}", shape=Mrecord, style=filled, fillcolor=green]
>>> -   n0017:port1 -> n001a [style=bold]
>>> -   n001a [label="RGB/YUV Capture\n/dev/video3", shape=box, 
>>> style=filled, fillcolor=yellow]
>>> +   n0001 [label="cap-deb\n/dev/video0", shape=box, style=filled, 
>>> fillcolor=yellow]
>>> +   n0005 [label="cap-sen\n/dev/video1", shape=box, style=filled, 
>>> fillcolor=yellow]
>>> +   n0009 [label="cap-sca\n/dev/video2", shape=box, style=filled, 
>>> fillcolor=yellow]
>>> +   n000d [label="{{ 0} | sca\n/dev/v4l-subdev0 | { 1}}", 
>>> shape=Mrecord, style=filled, fillcolor=green]
>>> +   n000d:port1 -> n0009 [style=bold]
>>> +   n0010 [label="{{ 0} | deb\n/dev/v4l-subdev1 | { 1}}", 
>>> shape=Mrecord, style=filled, fillcolor=green]
>>> +   n0010:port1 -> n0001 [style=bold]
>>> +   n0010:port1 -> n000d:port0 [style=bold]
>>> +   n0013 [label="{{} | sen\n/dev/v4l-subdev2 | { 0}}", 
>>> shape=Mrecord, style=filled, fillcolor=green]
>>> +   n0013:port0 -> n0005 [style=bold]
>>> +   n0013:port0 -> n0010:port0 [style=bold]
>>>  }
>>> diff --git a/Documentation/media/v4l-drivers/vimc.rst 
>>> b/Documentation/media/v4l-drivers/vimc.rst
>>> index a582af0509ee..e5636883545f 100644
>>> --- a/Documentation/media/v4l-drivers/vimc.rst
>>> +++ b/Documentation/media/v4l-drivers/vimc.rst
>>> @@ -1,45 +1,225 @@
>>>  .. SPDX-License-Identifier: GPL-2.0
>>>  
>>> +==
>>>  The Virtual Media Controller Driver (vimc)
>>>  ==
>>>  
>>> -The vimc driver emulates complex video hardware using the V4L2 API and the 
>>> Media
>>> -API. It has a capture device and three subdevices: sensor, debayer and 
>>> scaler.
>>> +The vimc driver emulates complex video hardware topologies using the V4L2 
>>> API
>>> +and the Media API. It has a capture device and three subdevices:
>>> +sensor, debayer and scaler. It exposes media devices through /dev/mediaX 
>>> nodes,
>>> +video capture devices through /dev/videoX and sub-devices through 
>>> /dev/v4l-subdevX.
>>> +
>>> +
>>> +To configure a media device of a given topology, a ConfigFS API is 
>>> provided.
>>> +
>>> +Configuring a topology through ConfigFS (Experimental)
>>> +==
>>> +
>>> +.. note:: This API is under development and might change in the future.
>>> +
>>> +Mount configfs:
>>> +::
>>> +
>>> +   $ mkdir /configfs
>>> +   $ mount -t configfs none /configfs
>>> +
>>> +When loading the module, you will see a folder named vimc
>>> +::
>>> +
>>> +   $ tree /configfs/
>>> +   /configfs/
>>> +   `-- vimc
>>> +
>>> +Creating a media device
>>> +---
>>> +
>>> +To create a media device create a new folder under /configfs/vimc/
>>> +
>>> +Example:
>>> +::
>>> +
>>> +   $ mkdir /configfs/vimc/mdev
>>> +   $ tree /configfs/vimc/mdev
>>> +   /configfs/
>>> +   `-- vimc

Re: [PATCH 2/5] docs: media: vimc: Documenting vimc topology configuration using configfs

2019-09-23 Thread Dafna Hirschfeld
On Fri, 2019-09-20 at 15:39 +0200, Hans Verkuil wrote:
> On 9/19/19 10:32 PM, Dafna Hirschfeld wrote:
> > Add explanation of how to use configfs in order to create a
> > vimc device with a given topology.
> > 
> > Signed-off-by: Dafna Hirschfeld 
> > ---
> >  Documentation/media/v4l-drivers/vimc.dot |  28 ++-
> >  Documentation/media/v4l-drivers/vimc.rst | 240 ---
> >  2 files changed, 220 insertions(+), 48 deletions(-)
> > 
> > diff --git a/Documentation/media/v4l-drivers/vimc.dot 
> > b/Documentation/media/v4l-drivers/vimc.dot
> > index 57863a13fa39..e3b41ac2bc46 100644
> > --- a/Documentation/media/v4l-drivers/vimc.dot
> > +++ b/Documentation/media/v4l-drivers/vimc.dot
> > @@ -2,21 +2,15 @@
> >  
> >  digraph board {
> > rankdir=TB
> > -   n0001 [label="{{} | Sensor A\n/dev/v4l-subdev0 | { 0}}", 
> > shape=Mrecord, style=filled, fillcolor=green]
> > -   n0001:port0 -> n0005:port0 [style=bold]
> > -   n0001:port0 -> n000b [style=bold]
> > -   n0003 [label="{{} | Sensor B\n/dev/v4l-subdev1 | { 0}}", 
> > shape=Mrecord, style=filled, fillcolor=green]
> > -   n0003:port0 -> n0008:port0 [style=bold]
> > -   n0003:port0 -> n000f [style=bold]
> > -   n0005 [label="{{ 0} | Debayer A\n/dev/v4l-subdev2 | { 
> > 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > -   n0005:port1 -> n0017:port0
> > -   n0008 [label="{{ 0} | Debayer B\n/dev/v4l-subdev3 | { 
> > 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > -   n0008:port1 -> n0017:port0 [style=dashed]
> > -   n000b [label="Raw Capture 0\n/dev/video0", shape=box, style=filled, 
> > fillcolor=yellow]
> > -   n000f [label="Raw Capture 1\n/dev/video1", shape=box, style=filled, 
> > fillcolor=yellow]
> > -   n0013 [label="RGB/YUV Input\n/dev/video2", shape=box, style=filled, 
> > fillcolor=yellow]
> > -   n0013 -> n0017:port0 [style=dashed]
> > -   n0017 [label="{{ 0} | Scaler\n/dev/v4l-subdev4 | { 
> > 1}}", shape=Mrecord, style=filled, fillcolor=green]
> > -   n0017:port1 -> n001a [style=bold]
> > -   n001a [label="RGB/YUV Capture\n/dev/video3", shape=box, 
> > style=filled, fillcolor=yellow]
> > +   n0001 [label="cap-deb\n/dev/video0", shape=box, style=filled, 
> > fillcolor=yellow]
> > +   n0005 [label="cap-sen\n/dev/video1", shape=box, style=filled, 
> > fillcolor=yellow]
> > +   n0009 [label="cap-sca\n/dev/video2", shape=box, style=filled, 
> > fillcolor=yellow]
> > +   n000d [label="{{ 0} | sca\n/dev/v4l-subdev0 | { 1}}", 
> > shape=Mrecord, style=filled, fillcolor=green]
> > +   n000d:port1 -> n0009 [style=bold]
> > +   n0010 [label="{{ 0} | deb\n/dev/v4l-subdev1 | { 1}}", 
> > shape=Mrecord, style=filled, fillcolor=green]
> > +   n0010:port1 -> n0001 [style=bold]
> > +   n0010:port1 -> n000d:port0 [style=bold]
> > +   n0013 [label="{{} | sen\n/dev/v4l-subdev2 | { 0}}", 
> > shape=Mrecord, style=filled, fillcolor=green]
> > +   n0013:port0 -> n0005 [style=bold]
> > +   n0013:port0 -> n0010:port0 [style=bold]
> >  }
> > diff --git a/Documentation/media/v4l-drivers/vimc.rst 
> > b/Documentation/media/v4l-drivers/vimc.rst
> > index a582af0509ee..e5636883545f 100644
> > --- a/Documentation/media/v4l-drivers/vimc.rst
> > +++ b/Documentation/media/v4l-drivers/vimc.rst
> > @@ -1,45 +1,225 @@
> >  .. SPDX-License-Identifier: GPL-2.0
> >  
> > +==
> >  The Virtual Media Controller Driver (vimc)
> >  ==
> >  
> > -The vimc driver emulates complex video hardware using the V4L2 API and the 
> > Media
> > -API. It has a capture device and three subdevices: sensor, debayer and 
> > scaler.
> > +The vimc driver emulates complex video hardware topologies using the V4L2 
> > API
> > +and the Media API. It has a capture device and three subdevices:
> > +sensor, debayer and scaler. It exposes media devices through /dev/mediaX 
> > nodes,
> > +video capture devices through /dev/videoX and sub-devices through 
> > /dev/v4l-subdevX.
> > +
> > +
> > +To configure a media device of a given topology, a ConfigFS API is 
> > provided.
> > +
> > +Configuring a topology through ConfigFS (Experimental)
> > +==
> > +
> > +.. note:: This API is under development and might change in the future.
> > +
> > +Mount configfs:
> > +::
> > +
> > +   $ mkdir /configfs
> > +   $ mount -t configfs none /configfs
> > +
> > +When loading the module, you will see a folder named vimc
> > +::
> > +
> > +   $ tree /configfs/
> > +   /configfs/
> > +   `-- vimc
> > +
> > +Creating a media device
> > +---
> > +
> > +To create a media device create a new folder under /configfs/vimc/
> > +
> > +Example:
> > +::
> > +
> > +   $ mkdir /configfs/vimc/mdev
> > +   $ tree /configfs/vimc/mdev
> > +   /configfs/
> > +   `-- vimc
> > +   `-- mdev
> > +   `-- hotpl

Re: [PATCH 2/5] docs: media: vimc: Documenting vimc topology configuration using configfs

2019-09-20 Thread Hans Verkuil
On 9/19/19 10:32 PM, Dafna Hirschfeld wrote:
> Add explanation of how to use configfs in order to create a
> vimc device with a given topology.
> 
> Signed-off-by: Dafna Hirschfeld 
> ---
>  Documentation/media/v4l-drivers/vimc.dot |  28 ++-
>  Documentation/media/v4l-drivers/vimc.rst | 240 ---
>  2 files changed, 220 insertions(+), 48 deletions(-)
> 
> diff --git a/Documentation/media/v4l-drivers/vimc.dot 
> b/Documentation/media/v4l-drivers/vimc.dot
> index 57863a13fa39..e3b41ac2bc46 100644
> --- a/Documentation/media/v4l-drivers/vimc.dot
> +++ b/Documentation/media/v4l-drivers/vimc.dot
> @@ -2,21 +2,15 @@
>  
>  digraph board {
>   rankdir=TB
> - n0001 [label="{{} | Sensor A\n/dev/v4l-subdev0 | { 0}}", 
> shape=Mrecord, style=filled, fillcolor=green]
> - n0001:port0 -> n0005:port0 [style=bold]
> - n0001:port0 -> n000b [style=bold]
> - n0003 [label="{{} | Sensor B\n/dev/v4l-subdev1 | { 0}}", 
> shape=Mrecord, style=filled, fillcolor=green]
> - n0003:port0 -> n0008:port0 [style=bold]
> - n0003:port0 -> n000f [style=bold]
> - n0005 [label="{{ 0} | Debayer A\n/dev/v4l-subdev2 | { 
> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> - n0005:port1 -> n0017:port0
> - n0008 [label="{{ 0} | Debayer B\n/dev/v4l-subdev3 | { 
> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> - n0008:port1 -> n0017:port0 [style=dashed]
> - n000b [label="Raw Capture 0\n/dev/video0", shape=box, style=filled, 
> fillcolor=yellow]
> - n000f [label="Raw Capture 1\n/dev/video1", shape=box, style=filled, 
> fillcolor=yellow]
> - n0013 [label="RGB/YUV Input\n/dev/video2", shape=box, style=filled, 
> fillcolor=yellow]
> - n0013 -> n0017:port0 [style=dashed]
> - n0017 [label="{{ 0} | Scaler\n/dev/v4l-subdev4 | { 
> 1}}", shape=Mrecord, style=filled, fillcolor=green]
> - n0017:port1 -> n001a [style=bold]
> - n001a [label="RGB/YUV Capture\n/dev/video3", shape=box, 
> style=filled, fillcolor=yellow]
> + n0001 [label="cap-deb\n/dev/video0", shape=box, style=filled, 
> fillcolor=yellow]
> + n0005 [label="cap-sen\n/dev/video1", shape=box, style=filled, 
> fillcolor=yellow]
> + n0009 [label="cap-sca\n/dev/video2", shape=box, style=filled, 
> fillcolor=yellow]
> + n000d [label="{{ 0} | sca\n/dev/v4l-subdev0 | { 1}}", 
> shape=Mrecord, style=filled, fillcolor=green]
> + n000d:port1 -> n0009 [style=bold]
> + n0010 [label="{{ 0} | deb\n/dev/v4l-subdev1 | { 1}}", 
> shape=Mrecord, style=filled, fillcolor=green]
> + n0010:port1 -> n0001 [style=bold]
> + n0010:port1 -> n000d:port0 [style=bold]
> + n0013 [label="{{} | sen\n/dev/v4l-subdev2 | { 0}}", 
> shape=Mrecord, style=filled, fillcolor=green]
> + n0013:port0 -> n0005 [style=bold]
> + n0013:port0 -> n0010:port0 [style=bold]
>  }
> diff --git a/Documentation/media/v4l-drivers/vimc.rst 
> b/Documentation/media/v4l-drivers/vimc.rst
> index a582af0509ee..e5636883545f 100644
> --- a/Documentation/media/v4l-drivers/vimc.rst
> +++ b/Documentation/media/v4l-drivers/vimc.rst
> @@ -1,45 +1,225 @@
>  .. SPDX-License-Identifier: GPL-2.0
>  
> +==
>  The Virtual Media Controller Driver (vimc)
>  ==
>  
> -The vimc driver emulates complex video hardware using the V4L2 API and the 
> Media
> -API. It has a capture device and three subdevices: sensor, debayer and 
> scaler.
> +The vimc driver emulates complex video hardware topologies using the V4L2 API
> +and the Media API. It has a capture device and three subdevices:
> +sensor, debayer and scaler. It exposes media devices through /dev/mediaX 
> nodes,
> +video capture devices through /dev/videoX and sub-devices through 
> /dev/v4l-subdevX.
> +
> +
> +To configure a media device of a given topology, a ConfigFS API is provided.
> +
> +Configuring a topology through ConfigFS (Experimental)
> +==
> +
> +.. note:: This API is under development and might change in the future.
> +
> +Mount configfs:
> +::
> +
> + $ mkdir /configfs
> + $ mount -t configfs none /configfs
> +
> +When loading the module, you will see a folder named vimc
> +::
> +
> + $ tree /configfs/
> + /configfs/
> + `-- vimc
> +
> +Creating a media device
> +---
> +
> +To create a media device create a new folder under /configfs/vimc/
> +
> +Example:
> +::
> +
> + $ mkdir /configfs/vimc/mdev
> + $ tree /configfs/vimc/mdev
> + /configfs/
> + `-- vimc
> + `-- mdev
> + `-- hotplug
> +
> +Creating entities
> +-
> +
> +To create an entity in the media device's topology, create a folder under
> +``/configfs/vimc//`` with the following format:
> +
> + :

I suspect that there are restri