linux/drivers/fpga
Xu Yilun 89eb35e810 fpga: dfl: map feature mmio resources in their own feature drivers
This patch makes preparation for modularization of DFL sub feature
drivers.

DFL based FPGA devices may contain some IP blocks which are already
supported by kernel, most of them are supported by platform device
drivers. We could create platform devices for these IP blocks and get them
supported by these drivers.

An important issue is that platform device drivers usually requests mmio
resources on probe. But now DFL mmio is mapped in DFL bus driver (e.g.
dfl-pci) as a whole region. Then platform device drivers for sub features
can't request their own mmio resources again. This is what the patch
trying to resolve.

This patch changes the DFL enumeration. DFL bus driver will unmap mmio
resources after first step enumeration and pass enumeration info to DFL
framework. Then DFL framework will map the mmio resources again, do 2nd
step enumeration, and also unmap the mmio resources. In this way, sub
feature drivers could then request their own mmio resources as needed.

An exception is that mmio resource of FIU headers are still mapped in DFL
bus driver. The FIU headers have some fundamental functions (sriov set,
port enable/disable) needed for DFL bus devices and other sub features.
They should not be unmapped as long as DFL bus device is alive.

Signed-off-by: Xu Yilun <yilun.xu@intel.com>
Signed-off-by: Wu Hao <hao.wu@intel.com>
Signed-off-by: Matthew Gerlach <matthew.gerlach@linux.intel.com>
Signed-off-by: Russ Weight <russell.h.weight@intel.com>
Reviewed-by: Tom Rix <trix@redhat.com>
Acked-by: Wu Hao <hao.wu@intel.com>
Signed-off-by: Moritz Fischer <mdf@kernel.org>
2020-08-30 17:15:58 -07:00
..
altera-cvp.c fpga: altera-cvp: Add Stratix10 (V2) Support 2019-08-24 11:38:29 -07:00
altera-fpga2sdram.c fpga: bridge: add devm_fpga_bridge_create 2018-10-16 11:13:50 +02:00
altera-freeze-bridge.c fpga: bridge: add devm_fpga_bridge_create 2018-10-16 11:13:50 +02:00
altera-hps2fpga.c fpga: bridge: add devm_fpga_bridge_create 2018-10-16 11:13:50 +02:00
altera-pr-ip-core-plat.c fpga: altera-pr-ip: Make alt_pr_unregister function void 2019-07-24 14:11:52 -07:00
altera-pr-ip-core.c fpga: altera-pr-ip: Make alt_pr_unregister function void 2019-07-24 14:11:52 -07:00
altera-ps-spi.c fpga: altera-ps-spi: Fix getting of optional confd gpio 2019-08-18 17:40:02 -07:00
dfl-afu-dma-region.c fpga: dfl: afu: convert get_user_pages() --> pin_user_pages() 2020-06-18 18:12:06 -07:00
dfl-afu-error.c fpga: dfl: afu: add interrupt support for port error reporting 2020-07-06 21:34:46 -07:00
dfl-afu-main.c Linux 5.8-rc7 2020-07-27 11:49:37 +02:00
dfl-afu-region.c fpga: dfl: afu: add afu sub feature support 2018-07-15 13:55:47 +02:00
dfl-afu.h fpga: dfl: afu: add error reporting support. 2019-09-03 19:35:41 -07:00
dfl-fme-br.c fpga: bridge: add devm_fpga_bridge_create 2018-10-16 11:13:50 +02:00
dfl-fme-error.c fpga: dfl: fme: add interrupt support for global error reporting 2020-07-06 21:35:42 -07:00
dfl-fme-main.c fpga: dfl: fme: add interrupt support for global error reporting 2020-07-06 21:35:42 -07:00
dfl-fme-mgr.c fpga: dfl-fme-mgr: fix FME_PR_INTFC_ID register address. 2019-07-03 19:58:58 +02:00
dfl-fme-perf.c fpga: dfl: change data type of feature id to u16 2020-08-19 21:05:47 -07:00
dfl-fme-pr.c drivers/fpga/dfl-fme-pr.c: get rid of pointless access_ok() 2020-05-29 11:04:56 -04:00
dfl-fme-pr.h fpga: dfl: fme: add partial reconfiguration sub feature support 2018-07-15 13:55:46 +02:00
dfl-fme-region.c fpga: dfl-fme-region: Use platform_get_drvdata() 2018-11-26 20:47:10 +01:00
dfl-fme.h fpga: dfl: fme: add performance reporting support 2020-04-28 15:49:28 +02:00
dfl-pci.c fpga: dfl: map feature mmio resources in their own feature drivers 2020-08-30 17:15:58 -07:00
dfl.c fpga: dfl: map feature mmio resources in their own feature drivers 2020-08-30 17:15:58 -07:00
dfl.h fpga: dfl: map feature mmio resources in their own feature drivers 2020-08-30 17:15:58 -07:00
fpga-bridge.c fpga: Fix dead store in fpga-bridge.c 2020-06-18 18:25:42 -07:00
fpga-mgr.c fpga: Fix dead store fpga-mgr.c 2020-06-18 18:24:16 -07:00
fpga-region.c fpga: add devm_fpga_region_create 2018-10-16 11:13:50 +02:00
ice40-spi.c fpga: ice40-spi: Use new structure for SPI transfer delays 2020-04-29 20:37:08 -07:00
Kconfig FPGA Manager fixes for 5.8-rc1 2020-06-26 17:26:31 +02:00
machxo2-spi.c fpga: machxo2-spi: Use new structure for SPI transfer delays 2020-04-29 20:37:08 -07:00
Makefile fpga: dfl: fme: add performance reporting support 2020-04-28 15:49:28 +02:00
of-fpga-region.c drivers: Add generic helper to match by of_node 2019-06-24 05:22:31 +02:00
socfpga-a10.c fpga: mgr: add devm_fpga_mgr_create 2018-10-16 11:13:50 +02:00
socfpga.c fpga: mgr: add devm_fpga_mgr_create 2018-10-16 11:13:50 +02:00
stratix10-soc.c fpga: stratix10-soc: make FPGA task un-interruptible 2020-08-19 21:05:46 -07:00
ts73xx-fpga.c fpga: remove redundant dev_err message 2020-01-02 20:57:34 -08:00
xilinx-pr-decoupler.c fpga: xilinx-pr-decoupler: Remove clk_get error message for probe defer 2020-01-10 12:51:56 -08:00
xilinx-spi.c fpga manager: xilinx-spi: provide better diagnostics on programming failure 2020-08-30 17:09:05 -07:00
zynq-fpga.c fpga: zynq: Remove clk_get error message for probe defer 2020-03-30 20:45:21 -07:00
zynqmp-fpga.c firmware: xilinx: Remove eemi ops for fpga related APIs 2020-04-28 15:45:09 +02:00