From: f.fainelli@gmail.com (Florian Fainelli)
To: linux-arm-kernel@lists.infradead.org
Subject: FPGA manager user space interface
Date: Mon, 11 Jul 2016 10:38:37 -0700 [thread overview]
Message-ID: <5783D99D.2090402@gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.02.1607111014500.11060@linuxheads99>
Hi Alan,
On 07/11/2016 09:59 AM, atull wrote:
> On Sun, 10 Jul 2016, Florian Fainelli wrote:
>
> Hi Florian,
>
> I'm in the process of upstreaming FPGA Regions support which
> allows reprogramming by applying Device Tree Overlays. If you
> want to see a tree which has the latest patches for that, I have
> all that in our github tree.
>
> https://github.com/altera-opensource/linux-socfpga/tree/socfpga-4.6
>
> The documentation for the DT overlays is in
> Documentation/devicetree/bindings/fpga/fpga-region.txt
>
> Documentation for the DT configfs interface is in
> Documentation/devicetree/configfs-overlays.txt
>
> The idea here is explained at legnth in the doc, but basically
> the user can use the configfs interface to apply a DT
> overlay that causes the FPGA to be reprogrammed and child
> devices to get added and probed.
>
> I like DT overlays a lot, but I do not expect that (or anything
> else) will be a good interface for every use case. The FPGA
> Manager Framework went through a legnthy discussion on the
> mailing list where several people wanted the interface to match
> what they were already using. Interfaces similar to what you
> suggest below were proposed and shot down. My conclusion from
> all that was to implement the kernel API functions such that
> people could add whatever interfaces they needed for their use
> case.
While I agree that the current state of the FPGA manager is completely
sane, and people making products including a FPGA will want something
(kernel driver or user-space scripts) that load a given set of bistreams
(under version control), it still feels like there is a small bit of
debugging and or use cases where it is desireable to have a way, from
user-space to load an arbitrary FPGA bitstream which is not set in stone
from e.g: a Linux kernel driver. More than being able to change
something on the filesystem, it's about being able to reload the
bitstream from user-space that seems to be critically missing imho.
Do you have links to the original discussion so I could get an idea of
what were the different points back then?
Thanks!
>
>
>> Hi all,
>>
>> I just wrote a FPGA manager driver for the TS-7300 board which features
>> an Altera Cyclone II on board. While the finished solution is my case
>> might be something like the MFD driver for the FPGA devices requesting
>> the bitstream load and registering the different devices it exposes,
>> during development it is nice to exercise the FPGA manager driver to
>> load something:
>
> It sounds like your goal is to use the FPGA Manager API inside
> the kernel, but it would be helpful to have an easy userspace
> interface during development. Is that right?
>
>>
>> - a quick way is to add a pair of sysfs attributes to define the
>> bitstream filename and to trigger the load
>>
>> - offer a more consistent and robust interface through e.g; a character
>> device that you can write/read/poll to see the loading progress about
>
> Sysfs and char driver interfaces have been proposed and shot down
> a few times already.
>
> The first version of the FPGA Manager Framework was a char
> driver. To program the FPGA, the user had to do 'cat
> bitstream-file > /dev/fpga0'. Bridge support was a separate
> thing that was also controlled by sysfs. It was messy and if
> userspace could easily do the wrong thing and crash the system.
>
>>
>> - have the driver exposing FPGA peripherals be exposing an user space
>> interface to trigger a (re)load/(re)/configuration, although that's
>> really something that belongs in the FPGA manager it seems
>
> If you use the device tree configfs interface, you can do that.
> It might not be exactly what you are thinking of. And there is
> a learning curve in getting the overlays right.
>
>>
>> I am mostly curious if these were taken into account during the initial
>> design and it is agreed upon that yes these are some of options and that
>> userspace loading is just anecdotal we do not need any userspace
>> interface, or if this is just missing and we want one?
>
> There will be use cases that will need various userspace interfaces.
> It's been hard to get people who are already using FPGAs to agree
> on using any one interface because they would have to change the
> code they already have running.
>
>> Either way, I
>> don't mind submitting what I came up with for the TS-7300 board.
>
> Yes, that would be great.
>
>>
>> Thanks!
>> --
>> Florian
>>
--
Florian
next prev parent reply other threads:[~2016-07-11 17:38 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-10 21:28 FPGA manager user space interface Florian Fainelli
2016-07-11 12:20 ` Michal Simek
2016-07-11 16:59 ` atull
2016-07-11 17:38 ` Florian Fainelli [this message]
2016-07-12 15:15 ` atull
2016-07-12 22:03 ` Florian Fainelli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5783D99D.2090402@gmail.com \
--to=f.fainelli@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.