Received: by 10.213.65.68 with SMTP id h4csp1015968imn; Tue, 27 Mar 2018 13:03:50 -0700 (PDT) X-Google-Smtp-Source: AIpwx48qYJGrKMM+Q8YT2ydFCVOIqks4DsEHa06yEzdpyhUxfHBqsOK6LWoE9m8bIVO+mQsvFxZc X-Received: by 10.101.70.8 with SMTP id v8mr474664pgq.336.1522181030899; Tue, 27 Mar 2018 13:03:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522181030; cv=none; d=google.com; s=arc-20160816; b=DJ2pk9WGLh+aOh90WDhOzXL8apKJbdQmllk4/oPtaV9jhPIplhngkDISPvzvJ9QOn9 5kehPSZxSVsDNsgkm4WfviXP62Goikm4/zfr3kn3IyLYRce/1+sTOlhKOTB5+B0/3Qmj qHlAl/x3SwyD7ffxqVPjg6fI17wAS2XTD5iEFkNWbfFZdp5QjWUm8dc2Rf7tVwVCQmRQ DfO8CO6aHGE1OntsLGlHOkh7wOOJ3s9qlMuPEzQQRZyIGhI+w8x52nBn/Kb7f+RFHAhD pEyaUS/t9tzfW6344/4m1kcrTllXLnVAADY6ijO0l6OauiHU41qrC0NPgtyFHKccJx1Q fs7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dmarc-filter:arc-authentication-results; bh=/aip+z3yKX94Riv/mS5ScSi4UGy0d04ba+ROHcourp4=; b=VUfHFbrJRBmMmyxZS1uVT7gLwBOnUadrXn7WDX4YodcUyLSVRgugniqH9+jcYg/Btx Bs62vpXACAMoj1QXoAgvnMVkpZ04Kwgbk1J0TSF4DwXPraKXLesAvAMrE4IlT7VKVE8u eLZi/woser2IvqKUc8Ra8ePTeEgW0EEgZxYcnmGL0unGkvM033ZVWuFbVFSK30YFTKJl aH/UV1ONpnyGHizJ5FR/6m8jFCiD1afFOHWE0yzebYlHxnS2RD83To3y1JP47/8i/Kkd WulIa/hNtFLE0k+PmpouIKxGjETHdO4oszkgEKnt+CpuPHwgUt6RYRCTY61gJlFbGWuM G73A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b23si1339279pgn.258.2018.03.27.13.03.36; Tue, 27 Mar 2018 13:03:50 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752008AbeC0UAY (ORCPT + 99 others); Tue, 27 Mar 2018 16:00:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:57144 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751838AbeC0UAK (ORCPT ); Tue, 27 Mar 2018 16:00:10 -0400 Received: from localhost.localdomain (unknown [192.55.54.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6EB2521839; Tue, 27 Mar 2018 20:00:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6EB2521839 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=atull@kernel.org From: Alan Tull To: Moritz Fischer Cc: Anatolij Gustschin , Matthew Gerlach , Joel Holdsworth , Florian Fainelli , Joshua Clayton , Dinh Nguyen , Alan Tull , linux-kernel@vger.kernel.org, linux-fpga@vger.kernel.org Subject: [RESEND PATCH v3 4/4] fpga: region: change fpga_region_register to have one param Date: Tue, 27 Mar 2018 14:59:57 -0500 Message-Id: <20180327195957.3878-5-atull@kernel.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20180327195957.3878-1-atull@kernel.org> References: <20180327195957.3878-1-atull@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Change fpga_region_register to only take one parameter: int fpga_region_register(struct fpga_region *region) The parent dev is added to struct fpga_region. This make it similar to fpga_bridge_register and fpga_mgr_register which also just take their respective struct. The one caller of fpga_region_register is changed to alloc the fpga_region struct, fill it in, and pass it to the register function. Signed-off-by: Alan Tull --- v2: This patch added in this version of the patchset v3: minor changes to make diffs smaller and more obviously correct --- Documentation/fpga/fpga-region.txt | 3 +-- drivers/fpga/fpga-region.c | 8 +++++++- drivers/fpga/of-fpga-region.c | 3 ++- include/linux/fpga/fpga-region.h | 4 +++- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Documentation/fpga/fpga-region.txt b/Documentation/fpga/fpga-region.txt index 139a02ba1ff6..d38fa3b4154a 100644 --- a/Documentation/fpga/fpga-region.txt +++ b/Documentation/fpga/fpga-region.txt @@ -42,8 +42,7 @@ The FPGA region API To register or unregister a region: ----------------------------------- - int fpga_region_register(struct device *dev, - struct fpga_region *region); + int fpga_region_register(struct fpga_region *region); int fpga_region_unregister(struct fpga_region *region); An example of usage can be seen in the probe function of [3] diff --git a/drivers/fpga/fpga-region.c b/drivers/fpga/fpga-region.c index ebe1f872810d..660a91b9e246 100644 --- a/drivers/fpga/fpga-region.c +++ b/drivers/fpga/fpga-region.c @@ -162,10 +162,16 @@ int fpga_region_program_fpga(struct fpga_region *region) } EXPORT_SYMBOL_GPL(fpga_region_program_fpga); -int fpga_region_register(struct device *dev, struct fpga_region *region) +int fpga_region_register(struct fpga_region *region) { + struct device *dev = region->parent; int id, ret = 0; + if (!dev) { + pr_err("Attempt to register fpga region without parent\n"); + return -EINVAL; + } + id = ida_simple_get(&fpga_region_ida, 0, 0, GFP_KERNEL); if (id < 0) return id; diff --git a/drivers/fpga/of-fpga-region.c b/drivers/fpga/of-fpga-region.c index 35e7e8c4a0cb..a7b38aafeaa7 100644 --- a/drivers/fpga/of-fpga-region.c +++ b/drivers/fpga/of-fpga-region.c @@ -428,12 +428,13 @@ static int of_fpga_region_probe(struct platform_device *pdev) goto eprobe_mgr_put; } + region->parent = dev; region->mgr = mgr; /* Specify how to get bridges for this type of region. */ region->get_bridges = of_fpga_region_get_bridges; - ret = fpga_region_register(dev, region); + ret = fpga_region_register(region); if (ret) goto eprobe_mgr_put; diff --git a/include/linux/fpga/fpga-region.h b/include/linux/fpga/fpga-region.h index b6520318ab9c..423c87e3e29a 100644 --- a/include/linux/fpga/fpga-region.h +++ b/include/linux/fpga/fpga-region.h @@ -8,6 +8,7 @@ /** * struct fpga_region - FPGA Region structure * @dev: FPGA Region device + * @parent: parent device * @mutex: enforces exclusive reference to region * @bridge_list: list of FPGA bridges specified in region * @mgr: FPGA manager @@ -18,6 +19,7 @@ */ struct fpga_region { struct device dev; + struct device *parent; struct mutex mutex; /* for exclusive reference to region */ struct list_head bridge_list; struct fpga_manager *mgr; @@ -34,7 +36,7 @@ struct fpga_region *fpga_region_class_find( int (*match)(struct device *, const void *)); int fpga_region_program_fpga(struct fpga_region *region); -int fpga_region_register(struct device *dev, struct fpga_region *region); +int fpga_region_register(struct fpga_region *region); int fpga_region_unregister(struct fpga_region *region); #endif /* _FPGA_REGION_H */ -- 2.14.2