Re: [PATCH 3/4] uio: introduce devicetree bindings for uio_dmem_genirq

From: Rob Herring
Date: Mon May 23 2016 - 16:36:35 EST


On Thu, May 19, 2016 at 10:45:56AM +0200, Jan Viktorin wrote:
> Hello Rob,
>
> thank you for your opinion...
>
> On Wed, 18 May 2016 12:01:05 -0500
> Rob Herring <robh@xxxxxxxxxx> wrote:
>
> > On Tue, May 17, 2016 at 11:22:19AM +0200, Jan Viktorin wrote:
> > > Signed-off-by: Jan Viktorin <viktorin@xxxxxxxxxxxxxx>
> > > ---
> > > .../devicetree/bindings/uio/uio_dmem_genirq.txt | 16 ++++++++++++++++
> > > 1 file changed, 16 insertions(+)
> > > create mode 100644 Documentation/devicetree/bindings/uio/uio_dmem_genirq.txt
> >
> > DT describes h/w. UIO is not a h/w block, so this does not belong in DT.
> > A UIO vs. kernel driver is purely a kernel decision which shouldn't
> > require a DT change.
>
> I mostly agree and I don't say this is the very best solution... however,
> it is quite a straightforward one.
>
> >
> > The properties should be part of match data for a compatible string that
>
> True. But in case of probing from DT, where can I obtain those match data
> from? I have to patch the kernel... and that is what I tried to avoid.

spi-dev is a similar situation and we put compatible strings (and
therefore potentially match data) in the kernel.

> With this patch set, you only modify your current device-tree (extend the
> appropriate devices by "uio,...") and reboot with this new one.

Generally speaking changing your kernel is as easy or easier than
changing the DT.

Rebooting is not a very good choice either when it could easily be a
module unload/reload instead.

> > needs them set. Or if they can be defined in a way that is actually a
> > property of the h/w, then it would be acceptible. You'd still need to
> > define compatible strings that the properties apply to.
>
> If you look at uio_pdrv_genirq you can see that it has already been extended by
> the module param "of_id". I.e. it is possible to specify the compatible property
> it would match when doing insmod. So, it is possible to bind it to any platform
> device described by the device tree. And thus, there is no way how to define a
> list of compatible strings for it... (quite a long list, isn't it?)
>
> The same (of_id) can be done for uio_dmem_genirq, however, there is no way how to
> specify the amount of dynamic memory to be used for a specific device. For me, it
> makes sense to use DT to obtain those two properties saying "those devices would
> use this amount of memory and not more".
>
> Perhaps, another module param is a way to go here. Something like of_dmem_count=2,
> of_dmem_sizes=32k. Less flexible solution, however, if it is acceptable I'll rewrite
> the current one.

No issue with doing that, though they are not OF parameters at that
point.

Rob