From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966362AbdDTOKU (ORCPT ); Thu, 20 Apr 2017 10:10:20 -0400 Received: from mail.kernel.org ([198.145.29.136]:59696 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1031712AbdDTOKP (ORCPT ); Thu, 20 Apr 2017 10:10:15 -0400 From: Alan Tull To: Moritz Fischer Cc: Alan Tull , linux-kernel@vger.kernel.org, linux-fpga@vger.kernel.org Subject: [PATCH v2 00/16] Enable upper layers using FPGA region w/o device tree Date: Thu, 20 Apr 2017 09:09:45 -0500 Message-Id: <1492697401-11211-1-git-send-email-atull@kernel.org> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The current FPGA layer has two problems which this patchset addresses: * We now have 3 functions for programming a FPGA, depending on whether the image is in a sg list, a buffer, or firmware. So callers have to decide where the image will be or have to write extra code to maintain flexibilty. * users who aren't using device tree are left to write their own code that is essentially a rewrite of FPGA region. The major things this patchset accomplishes is: * Change the fpga-mgr api to have one fpga_mgr_load functon instead of three. * Separate common FPGA region code from DT support * Additions for using bridges where DT is not used. The end result of this v2 is not hugely different from v1. This patchset has > patches than v1, but that is because I respun it to make it easier to see where I'm making code changes verses where code is just moving to a different file. So there are a lot of little patches that make code changes; these patches are separate from the one big patch at the end that moves code between .c files without making code changes. Patch 1 updates documentation and adds a FPGA region API doc. Patch 2 adds non-dt support for fpga-bridges Patches 3 and 4 change the FPGA manager API. The 3 functions for programming an FPGA from a scatter-gather list, a contiguous buffer, or a firmware file are replaced by a single function. The parameters are placed in the fpga_image_info struct. Functions to alloc/free a struct fpga_image_info are provided. Getting a ref to a manager is separated from locking it. Patches 5 to 16 separate FPGA region common code from FPGA region support for Device Tree overlays. This allows FPGA regions to be created by PCIe or other schemes. Region common code will include two functions to register/unregister a region and one function to program the region. Changes from v1: * split the final (large) patch into smaller patches for easier reviewability. * documentation has been expanded * reorder things, clean up * dev_err instead of pr_err * move functions that alloc/free image info from fpga-region.c to fpga-mgr.c * move fpga-region.h to include/linux/fpga/ * add fpga_region_class_find to fpga-region.c * move of_fpga_region_find to of-fpga-region.c Alan Tull (16): doc: fpga: update documents for the FPGA API fpga: bridge: support getting bridge from device fpga: mgr: API change to replace fpga load functions with single function fpga: mgr: separate getting/locking FPGA manager fpga: region: use dev_err instead of pr_err fpga: region: remove unneeded of_node_get and put fpga: region: get mgr early on fpga: region: check for child regions before allocing image info fpga: region: fix slow warning with more than one overlay fpga: region: use image info as parameter for programming region fpga: region: separate out code that parses the overlay fpga: region: add fpga-region.h header fpga: region: rename some functions prior to moving fpga: region: add register/unregister functions fpga: region: add fpga_region_class_find fpga: region: move device tree support to of-fpga-region.c Documentation/fpga/fpga-mgr.txt | 133 +++++----- Documentation/fpga/fpga-region.txt | 54 ++++ Documentation/fpga/overview.txt | 23 ++ drivers/fpga/Kconfig | 13 +- drivers/fpga/Makefile | 1 + drivers/fpga/fpga-bridge.c | 110 +++++++-- drivers/fpga/fpga-mgr.c | 111 +++++++-- drivers/fpga/fpga-region.c | 471 ++++------------------------------- drivers/fpga/of-fpga-region.c | 493 +++++++++++++++++++++++++++++++++++++ include/linux/fpga/fpga-bridge.h | 7 +- include/linux/fpga/fpga-mgr.h | 29 ++- include/linux/fpga/fpga-region.h | 41 +++ 12 files changed, 943 insertions(+), 543 deletions(-) create mode 100644 Documentation/fpga/fpga-region.txt create mode 100644 Documentation/fpga/overview.txt create mode 100644 drivers/fpga/of-fpga-region.c create mode 100644 include/linux/fpga/fpga-region.h -- 2.7.4