From: Wu Hao <hao.wu@intel.com>
To: Alan Tull <atull@kernel.org>
Cc: Moritz Fischer <moritz.fischer@ettus.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-fpga@vger.kernel.org, matthew.gerlach@linux.intel.com
Subject: Re: [PATCH v2 02/16] fpga: bridge: support getting bridge from device
Date: Thu, 4 May 2017 17:20:49 +0800 [thread overview]
Message-ID: <20170504092049.GA3832@hao-dev> (raw)
In-Reply-To: <CANk1AXRrFjBVaeP0F0Yjm8t4H8yp0c8gzURO+_WEEFnkK4O6Uw@mail.gmail.com>
On Wed, May 03, 2017 at 03:07:33PM -0500, Alan Tull wrote:
> On Wed, May 3, 2017 at 6:58 AM, Wu Hao <hao.wu@intel.com> wrote:
> > On Thu, Apr 20, 2017 at 09:09:47AM -0500, Alan Tull wrote:
> >> Add two functions for getting the FPGA bridge from the device
> >> rather than device tree node. This is to enable writing code
> >> that will support using FPGA bridges without device tree.
> >> Rename one old function to make it clear that it is device
> >> tree-ish. This leaves us with 3 functions for getting a bridge:
> >>
> >> * fpga_bridge_get
> >> Get the bridge given the device.
> >>
> >> * fpga_bridges_get_to_list
> >> Given the device, get the bridge and add it to a list.
> >>
> >> * of_fpga_bridges_get_to_list
> >> Renamed from priviously existing fpga_bridges_get_to_list.
> >> Given the device node, get the bridge and add it to a list.
> >>
> >
> > Hi Alan
> >
> > Thanks a lot for providing this patch set for non device tree support. :)
> > Actually I am reworking the Intel FPGA device drivers based on this patch
> > set, and I find some problems with the existing APIs including fpga bridge
> > and manager. My idea is to create all fpga bridges/regions/manager under
> > the same platform device (FME), it allows FME driver to establish the
> > relationship for the bridges/regions/managers it creates in an easy way.
> > But I found current fpga class API doesn't support this very well.
> > e.g fpga_bridge_get/get_to_list only accept parent device as the input
> > parameter, but it doesn't work if we have multiple bridges (and
> > regions/manager) under the same platform device. fpga_mgr has similar
> > issue, but fpga_region APIs work better, as they accept fpga_region as
> > parameter not the shared parent device.
>
> That's good feedback. I can post a couple patches that apply on top
> of that patchset to add the APIs you need.
>
> Probably what I'll do is add
>
> struct fpga_manager *fpga_mgr_get(struct fpga_manager *mgr);
>
> And rename fpga_bridge_get() to fpga_bridge_dev_get() and add the following:
>
> struct fpga_bridge *fpga_bridge_get(struct fpga_bridge *br,
> struct fpga_image_info *info);
>
> int of_fpga_bridge_get_to_list(struct fpga_bridge *br,
> struct fpga_image_info *info,
> struct list_head *bridge_list);
>
> Working on it now.
Hi Alan
Thanks a lot! This sounds very good to me and I assume fpga_bridge_get_to_list
will accept struct fpga_bridge * as input parameter too. :)
>
> >
> > Do you think if having multiple fpga-* under one parent device is in the
> > right direction?
>
> That should be fine as long as it's coded with an eye on making things
> reusable and seeing beyond the current project. Just thinking of the
> future and of what can be of general usefulness for others. And there
> will be others interested in reusing this.
>
Glad to hear that you agree with this. :)
I list some other APIs which have the similar issue, but may not related
to this patch directly.
void fpga_bridge_unregister(struct device *dev)
void fpga_mgr_unregister(struct device *dev)
They only accept the parent device, should we use struct fpga_bridge *and
struct fpga_manager * instead of the parent device in above 2 functions
too?
int fpga_bridge_register(struct device *dev, const char *name,
const struct fpga_bridge_ops *br_ops, void *priv)
int fpga_mgr_register(struct device *dev, const char *name,
const struct fpga_manager_ops *mops,
void *priv)
is it possible to return struct fpga_bridge/manager * in the register
functions? otherwise in driver we have to get the related pointer from
the drvdata of the parent device right after creation of each fpga-*.
The parent device only saves one fpga-* in drvdata at a time per current
API. If these APIs return the fpga-* pointer, then we don't need to care
about the what is saved in drvdata of the parent device.
Thanks
Hao
> Alan
>
> > If yes, shall we provide some more APIs which accept
> > fpga_bridge (and same for fpga-mgr) as parameter instead of the parent
> > device just like fpga-region?
> >
> > Thanks
> > Hao
> >
next prev parent reply other threads:[~2017-05-04 9:27 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-20 14:09 [PATCH v2 00/16] Enable upper layers using FPGA region w/o device tree Alan Tull
2017-04-20 14:09 ` [PATCH v2 01/16] doc: fpga: update documents for the FPGA API Alan Tull
2017-04-20 14:09 ` [PATCH v2 02/16] fpga: bridge: support getting bridge from device Alan Tull
2017-05-03 11:58 ` Wu Hao
2017-05-03 20:07 ` Alan Tull
2017-05-04 9:20 ` Wu Hao [this message]
2017-05-04 21:31 ` Alan Tull
2017-05-08 8:44 ` Wu, Hao
2017-05-08 20:44 ` Alan Tull
2017-05-08 20:52 ` Moritz Fischer
2017-05-08 21:02 ` Alan Tull
2017-05-08 21:11 ` Moritz Fischer
2017-05-08 21:20 ` Alan Tull
2017-05-08 21:55 ` Moritz Fischer
2017-05-09 7:16 ` Wu Hao
2017-04-20 14:09 ` [PATCH v2 03/16] fpga: mgr: API change to replace fpga load functions with single function Alan Tull
2017-04-21 20:08 ` Alan Tull
2017-04-20 14:09 ` [PATCH v2 04/16] fpga: mgr: separate getting/locking FPGA manager Alan Tull
2017-04-20 14:09 ` [PATCH v2 05/16] fpga: region: use dev_err instead of pr_err Alan Tull
2017-04-20 14:09 ` [PATCH v2 06/16] fpga: region: remove unneeded of_node_get and put Alan Tull
2017-05-05 17:08 ` Moritz Fischer
2017-04-20 14:09 ` [PATCH v2 07/16] fpga: region: get mgr early on Alan Tull
2017-04-20 14:09 ` [PATCH v2 08/16] fpga: region: check for child regions before allocing image info Alan Tull
2017-05-05 20:59 ` Moritz Fischer
2017-05-08 21:03 ` Alan Tull
2017-04-20 14:09 ` [PATCH v2 09/16] fpga: region: fix slow warning with more than one overlay Alan Tull
2017-04-20 14:09 ` [PATCH v2 10/16] fpga: region: use image info as parameter for programming region Alan Tull
2017-05-09 15:25 ` Alan Tull
2017-04-20 14:09 ` [PATCH v2 11/16] fpga: region: separate out code that parses the overlay Alan Tull
2017-04-20 14:09 ` [PATCH v2 12/16] fpga: region: add fpga-region.h header Alan Tull
2017-04-20 14:09 ` [PATCH v2 13/16] fpga: region: rename some functions prior to moving Alan Tull
2017-04-20 14:09 ` [PATCH v2 14/16] fpga: region: add register/unregister functions Alan Tull
2017-04-20 14:10 ` [PATCH v2 15/16] fpga: region: add fpga_region_class_find Alan Tull
2017-05-03 15:44 ` Moritz Fischer
2017-05-03 20:08 ` Alan Tull
2017-04-20 14:10 ` [PATCH v2 16/16] fpga: region: move device tree support to of-fpga-region.c Alan Tull
2017-04-28 6:38 ` Wu Hao
2017-04-28 17:37 ` Alan Tull
2017-04-20 14:16 ` [PATCH v2 00/16] Enable upper layers using FPGA region w/o device tree Alan Tull
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=20170504092049.GA3832@hao-dev \
--to=hao.wu@intel.com \
--cc=atull@kernel.org \
--cc=linux-fpga@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew.gerlach@linux.intel.com \
--cc=moritz.fischer@ettus.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox