Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1616877

Re: [PATCH 04/16] fpga: intel: pcie: parse feature list and create platform device for features.

From Wu Hao <hao.wu@intel.com>
Newsgroups linux.kernel
Subject Re: [PATCH 04/16] fpga: intel: pcie: parse feature list and create platform device for features.
Date 2017-04-05 14:10 +0200
Message-ID <tsRV7-2sp-13@gated-at.bofh.it> (permalink)
References <tqHdv-69w-11@gated-at.bofh.it> <tqHdw-69w-17@gated-at.bofh.it> <tsi1j-40v-11@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Mon, Apr 03, 2017 at 04:44:15PM -0500, Alan Tull wrote:
> On Thu, Mar 30, 2017 at 7:08 AM, Wu Hao <hao.wu@intel.com> wrote:
> > From: Xiao Guangrong <guangrong.xiao@linux.intel.com>
> >
> > Device Featuer List structure creates a link list of feature headers
> > within the MMIO space to provide an extensiable way of adding features.
> >
> > The Intel FPGA PCIe driver walks through the feature headers to enumerate
> > feature devices, FPGA Management Engine (FME) and FPGA Port for Accelerated
> > Function Unit (AFU), and their private sub features. For feature devices,
> > it creates the platform devices and linked the private sub features into
> > their platform data.
> >
> > Signed-off-by: Tim Whisonant <tim.whisonant@intel.com>
> > Signed-off-by: Enno Luebbers <enno.luebbers@intel.com>
> > Signed-off-by: Shiva Rao <shiva.rao@intel.com>
> > Signed-off-by: Christopher Rauer <christopher.rauer@intel.com>
> > Signed-off-by: Kang Luwei <luwei.kang@intel.com>
> > Signed-off-by: Zhang Yi <yi.z.zhang@intel.com>
> > Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
> > Signed-off-by: Wu Hao <hao.wu@intel.com>
> > ---
> >  drivers/fpga/intel/Makefile      |   2 +-
> >  drivers/fpga/intel/feature-dev.c | 139 +++++++
> >  drivers/fpga/intel/feature-dev.h | 342 ++++++++++++++++
> >  drivers/fpga/intel/pcie.c        | 841 ++++++++++++++++++++++++++++++++++++++-
> >  4 files changed, 1321 insertions(+), 3 deletions(-)
> >  create mode 100644 drivers/fpga/intel/feature-dev.c
> >  create mode 100644 drivers/fpga/intel/feature-dev.h
> >
> > diff --git a/drivers/fpga/intel/Makefile b/drivers/fpga/intel/Makefile
> > index 61fd8ea..c029940 100644
> > --- a/drivers/fpga/intel/Makefile
> > +++ b/drivers/fpga/intel/Makefile
> > @@ -1,3 +1,3 @@
> >  obj-$(CONFIG_INTEL_FPGA_PCI) += intel-fpga-pci.o
> >
> > -intel-fpga-pci-objs := pcie.o
> > +intel-fpga-pci-objs := pcie.o feature-dev.o
> > diff --git a/drivers/fpga/intel/feature-dev.c b/drivers/fpga/intel/feature-dev.c
> > new file mode 100644
> > index 0000000..6952566
> > --- /dev/null
> > +++ b/drivers/fpga/intel/feature-dev.c
> > @@ -0,0 +1,139 @@
> > +/*
> > + * Intel FPGA Feature Device Driver
> > + *
> > + * Copyright (C) 2017 Intel Corporation, Inc.
> > + *
> > + * Authors:
> > + *   Kang Luwei <luwei.kang@intel.com>
> > + *   Zhang Yi <yi.z.zhang@intel.com>
> > + *   Wu Hao <hao.wu@intel.com>
> > + *   Xiao Guangrong <guangrong.xiao@linux.intel.com>
> > + *
> > + * This work is licensed under a dual BSD/GPLv2 license. When using or
> > + * redistributing this file, you may do so under either license. See the
> > + * LICENSE.BSD file under this directory for the BSD license and see
> > + * the COPYING file in the top-level directory for the GPLv2 license.
> > + */
> > +
> > +#include "feature-dev.h"
> > +
> > +void feature_platform_data_add(struct feature_platform_data *pdata,
> > +                              int index, const char *name,
> > +                              int resource_index, void __iomem *ioaddr)
> > +{
> > +       WARN_ON(index >= pdata->num);
> > +
> > +       pdata->features[index].name = name;
> > +       pdata->features[index].resource_index = resource_index;
> > +       pdata->features[index].ioaddr = ioaddr;
> > +}
> > +
> > +int feature_platform_data_size(int num)
> > +{
> > +       return sizeof(struct feature_platform_data) +
> > +               num * sizeof(struct feature);
> > +}
> > +
> > +struct feature_platform_data *
> > +feature_platform_data_alloc_and_init(struct platform_device *dev, int num)
> > +{
> > +       struct feature_platform_data *pdata;
> > +
> > +       pdata = kzalloc(feature_platform_data_size(num), GFP_KERNEL);
> > +       if (pdata) {
> > +               pdata->dev = dev;
> > +               pdata->num = num;
> > +               mutex_init(&pdata->lock);
> > +       }
> > +
> > +       return pdata;
> > +}
> > +
> > +int fme_feature_num(void)
> > +{
> > +       return FME_FEATURE_ID_MAX;
> > +}
> > +
> > +int port_feature_num(void)
> > +{
> > +       return PORT_FEATURE_ID_MAX;
> > +}
> > +
> > +int fpga_port_id(struct platform_device *pdev)
> > +{
> > +       struct feature_port_header *port_hdr;
> > +       struct feature_port_capability capability;
> > +
> > +       port_hdr = get_feature_ioaddr_by_index(&pdev->dev,
> > +                                              PORT_FEATURE_ID_HEADER);
> > +       WARN_ON(!port_hdr);
> > +
> > +       capability.csr = readq(&port_hdr->capability);
> > +       return capability.port_number;
> > +}
> > +EXPORT_SYMBOL_GPL(fpga_port_id);
> > +
> > +/*
> > + * Enable Port by clear the port soft reset bit, which is set by default.
> > + * The User AFU is unable to respond to any MMIO access while in reset.
> > + * __fpga_port_enable function should only be used after __fpga_port_disable
> > + * function.
> > + */
> > +void __fpga_port_enable(struct platform_device *pdev)
> > +{
> 
> feature-dev.c is handling enumeration and adding port
> enable/disable/etc functions for a specific port device.  I see the
> port as a fpga-bridge.  The enumeration code should be separate from
> the bridge code.  Especially separate from a very specific bridge low
> level device driver implementation, otherwise this becomes obsolete as
> soon as you have another port device with a different register
> implementation.  Even if you handle that, then this enumeration code
> isn't useable by other people who are using fpga-bridge.  The
> fpga-bridge framework exists to separate low level things like how to
> enable/disable a specific bridge device from upper level code that
> knows when to enable/disable it (fpga-region).

Hi Alan

The major purpose of feature-dev is to create infrastructure for feature
device. Please refer to patch 7.  It abstracts feature device common
data structures and functions in feature-dev.c for FME and AFU now (but
may be more in the future). The reason we add port enable/disable/etc
fuctions there for code reuse. e.g FME driver needs port enable/disable
for PR (in the future, to implement the fpga bridge enable_set function),
AFU driver needs similar code to implement reset interface for user space
application, PCIe driver needs port enable to make AFU MMIO region valid,
then it can access Device Feature Header inside this AFU MMIO during
enumeration. Other fpga_port_* are all for code reuse purpose too. So we
should not put these function in the same feature-dev.c but a seperated
file?

Thanks
Hao

> 
> Alan

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 00/16] Intel FPGA Device Drivers Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 02/16] fpga: add FPGA device framework Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
    Re: [PATCH 02/16] fpga: add FPGA device framework Greg KH <greg@kroah.com> - 2017-03-31 08:10 +0200
      Re: [PATCH 02/16] fpga: add FPGA device framework Wu Hao <hao.wu@intel.com> - 2017-03-31 10:00 +0200
        Re: [PATCH 02/16] fpga: add FPGA device framework Greg KH <greg@kroah.com> - 2017-03-31 11:10 +0200
          Re: [PATCH 02/16] fpga: add FPGA device framework Wu Hao <hao.wu@intel.com> - 2017-03-31 14:30 +0200
        Re: [PATCH 02/16] fpga: add FPGA device framework matthew.gerlach@linux.intel.com - 2017-03-31 21:10 +0200
          Re: [PATCH 02/16] fpga: add FPGA device framework Wu Hao <hao.wu@intel.com> - 2017-04-01 14:30 +0200
    Re: [PATCH 02/16] fpga: add FPGA device framework Greg KH <greg@kroah.com> - 2017-03-31 08:20 +0200
      Re: [PATCH 02/16] fpga: add FPGA device framework Wu Hao <hao.wu@intel.com> - 2017-03-31 15:40 +0200
        Re: [PATCH 02/16] fpga: add FPGA device framework Greg KH <greg@kroah.com> - 2017-03-31 16:20 +0200
          Re: [PATCH 02/16] fpga: add FPGA device framework Wu Hao <hao.wu@intel.com> - 2017-04-01 13:50 +0200
  [PATCH 03/16] fpga: intel: add FPGA PCIe device driver Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
    Re: [PATCH 03/16] fpga: intel: add FPGA PCIe device driver Moritz Fischer <mdf@kernel.org> - 2017-04-04 04:20 +0200
      RE: [PATCH 03/16] fpga: intel: add FPGA PCIe device driver "Wu, Hao" <hao.wu@intel.com> - 2017-04-05 15:20 +0200
  [PATCH 15/16] fpga: intel: afu: add user afu sub feature support Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 12/16] fpga: intel: add FPGA Accelerated Function Unit driver basic framework Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 09/16] fpga: intel: fme: add header sub feature support Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 16/16] fpga: intel: afu: add FPGA_PORT_DMA_MAP/UNMAP ioctls support Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 07/16] fpga: intel: add feature device infrastructure Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 05/16] fpga: intel: pcie: add chardev support for feature devices Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 04/16] fpga: intel: pcie: parse feature list and create platform device for features. Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
    Re: [PATCH 04/16] fpga: intel: pcie: parse feature list and create  platform device for features. Alan Tull <atull@kernel.org> - 2017-04-03 23:50 +0200
      Re: [PATCH 04/16] fpga: intel: pcie: parse feature list and create  platform device for features. Wu Hao <hao.wu@intel.com> - 2017-04-05 14:10 +0200
    Re: [PATCH 04/16] fpga: intel: pcie: parse feature list and create  platform device for features. Alan Tull <atull@kernel.org> - 2017-04-05 00:20 +0200
      Re: [PATCH 04/16] fpga: intel: pcie: parse feature list and create  platform device for features. Wu Hao <hao.wu@intel.com> - 2017-04-05 16:20 +0200
  [PATCH 10/16] fpga: intel: fme: add FPGA_GET_API_VERSION/CHECK_EXTENSION ioctls support Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 14/16] fpga: intel: afu add FPGA_GET_API_VERSION/CHECK_EXTENSION ioctls support Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 01/16] docs: fpga: add a document for Intel FPGA driver overview Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
    Re: [PATCH 01/16] docs: fpga: add a document for Intel FPGA driver  overview matthew.gerlach@linux.intel.com - 2017-03-31 20:30 +0200
      Re: [PATCH 01/16] docs: fpga: add a document for Intel FPGA driver overview Alan Tull <atull@kernel.org> - 2017-03-31 20:40 +0200
        Re: [PATCH 01/16] docs: fpga: add a document for Intel FPGA driver  overview Wu Hao <hao.wu@intel.com> - 2017-04-01 13:30 +0200
          Re: [PATCH 01/16] docs: fpga: add a document for Intel FPGA driver  overview Moritz Fischer <mdf@kernel.org> - 2017-04-02 16:50 +0200
            Re: [PATCH 01/16] docs: fpga: add a document for Intel FPGA driver overview Alan Tull <atull@kernel.org> - 2017-04-03 22:50 +0200
              Re: [PATCH 01/16] docs: fpga: add a document for Intel FPGA driver  overview Wu Hao <hao.wu@intel.com> - 2017-04-04 07:30 +0200
            Re: [PATCH 01/16] docs: fpga: add a document for Intel FPGA driver  overview Wu Hao <hao.wu@intel.com> - 2017-04-04 07:20 +0200
  [PATCH 06/16] fpga: intel: pcie: adds fpga_for_each_port callback for fme device Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 13/16] fpga: intel: afu: add header sub feature support Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
  [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub feature support Wu Hao <hao.wu@intel.com> - 2017-03-30 14:20 +0200
    Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Alan Tull <atull@kernel.org> - 2017-03-30 22:40 +0200
      Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Xiao Guangrong <xiaoguangrong.eric@gmail.com> - 2017-03-31 06:20 +0200
        Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Wu Hao <hao.wu@intel.com> - 2017-03-31 11:00 +0200
          Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Alan Tull <atull@kernel.org> - 2017-04-03 22:30 +0200
            Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Wu Hao <hao.wu@intel.com> - 2017-04-04 07:40 +0200
    Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Alan Tull <atull@kernel.org> - 2017-03-31 21:20 +0200
      Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Wu Hao <hao.wu@intel.com> - 2017-04-01 13:20 +0200
        Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Alan Tull <atull@kernel.org> - 2017-04-03 18:40 +0200
          Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Wu Hao <hao.wu@intel.com> - 2017-04-04 08:20 +0200
            Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Alan Tull <atull@kernel.org> - 2017-04-05 00:40 +0200
              RE: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support "Wu, Hao" <hao.wu@intel.com> - 2017-04-05 13:50 +0200
                Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Alan Tull <atull@kernel.org> - 2017-04-05 17:30 +0200
                Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Alan Tull <atull@kernel.org> - 2017-04-05 17:50 +0200
                Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Wu Hao <hao.wu@intel.com> - 2017-04-06 13:10 +0200
                Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Alan Tull <atull@kernel.org> - 2017-04-06 21:30 +0200
                Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Wu Hao <hao.wu@intel.com> - 2017-04-07 08:10 +0200
    Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Alan Tull <atull@kernel.org> - 2017-04-03 23:30 +0200
      Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support matthew.gerlach@linux.intel.com - 2017-04-04 00:50 +0200
        Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Wu Hao <hao.wu@intel.com> - 2017-04-04 09:00 +0200
      Re: [PATCH 11/16] fpga: intel: fme: add partial reconfiguration sub  feature support Wu Hao <hao.wu@intel.com> - 2017-04-04 08:40 +0200
  Re: [PATCH 00/16] Intel FPGA Device Drivers Moritz Fischer <mdf@kernel.org> - 2017-03-30 19:20 +0200
  Re: [PATCH 00/16] Intel FPGA Device Drivers Jerome Glisse <jglisse@redhat.com> - 2017-04-06 22:30 +0200

csiph-web