linux-fpga.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Peter Colberg <peter.colberg@intel.com>
To: Wu Hao <hao.wu@intel.com>, Tom Rix <trix@redhat.com>,
	Moritz Fischer <mdf@kernel.org>, Xu Yilun <yilun.xu@intel.com>,
	linux-fpga@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Russ Weight <russ.weight@linux.dev>,
	Marco Pagani <marpagan@redhat.com>,
	Matthew Gerlach <matthew.gerlach@linux.intel.com>,
	Basheer Ahmed Muddebihal
	<basheer.ahmed.muddebihal@linux.intel.com>,
	Peter Colberg <peter.colberg@intel.com>
Subject: [PATCH v5 02/18] fpga: dfl: return platform data from dfl_fpga_inode_to_feature_dev_data()
Date: Tue, 19 Nov 2024 20:10:18 -0500	[thread overview]
Message-ID: <20241120011035.230574-3-peter.colberg@intel.com> (raw)
In-Reply-To: <20241120011035.230574-1-peter.colberg@intel.com>

Refactor dfl_fpga_inode_to_feature_dev() to directly return the feature
device platform data instead of the platform device, and retrieve the
device from the data. The null pointer checks are not needed since the
platform device is guaranteed to have associated feature device data.

This patch is part of a refactoring of the internal DFL APIs to move
the feature device data into a new struct dfl_feature_dev_data which
lifetime is independent of the corresponding platform device.

Signed-off-by: Peter Colberg <peter.colberg@intel.com>
Reviewed-by: Matthew Gerlach <matthew.gerlach@linux.intel.com>
Reviewed-by: Basheer Ahmed Muddebihal <basheer.ahmed.muddebihal@linux.intel.com>
Acked-by: Xu Yilun <yilun.xu@intel.com>
---
Changes since v4:
- No changes.

Changes since v3:
- Revise subject and description to detail the refactoring of
  dfl_fpga_inode_to_feature_dev_data() and mention the reason for the
  refactoring.

Changes since v2:
- New patch extracted from monolithic v1 patch.
---
 drivers/fpga/dfl-afu-main.c | 8 ++------
 drivers/fpga/dfl-fme-main.c | 7 ++-----
 drivers/fpga/dfl.h          | 6 +++---
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/drivers/fpga/dfl-afu-main.c b/drivers/fpga/dfl-afu-main.c
index 6b97c073849e..6125e2faada8 100644
--- a/drivers/fpga/dfl-afu-main.c
+++ b/drivers/fpga/dfl-afu-main.c
@@ -595,14 +595,10 @@ static struct dfl_feature_driver port_feature_drvs[] = {
 
 static int afu_open(struct inode *inode, struct file *filp)
 {
-	struct platform_device *fdev = dfl_fpga_inode_to_feature_dev(inode);
-	struct dfl_feature_platform_data *pdata;
+	struct dfl_feature_platform_data *pdata = dfl_fpga_inode_to_feature_dev_data(inode);
+	struct platform_device *fdev = pdata->dev;
 	int ret;
 
-	pdata = dev_get_platdata(&fdev->dev);
-	if (WARN_ON(!pdata))
-		return -ENODEV;
-
 	mutex_lock(&pdata->lock);
 	ret = dfl_feature_dev_use_begin(pdata, filp->f_flags & O_EXCL);
 	if (!ret) {
diff --git a/drivers/fpga/dfl-fme-main.c b/drivers/fpga/dfl-fme-main.c
index 864924f68f5e..480a187289bb 100644
--- a/drivers/fpga/dfl-fme-main.c
+++ b/drivers/fpga/dfl-fme-main.c
@@ -598,13 +598,10 @@ static long fme_ioctl_check_extension(struct dfl_feature_platform_data *pdata,
 
 static int fme_open(struct inode *inode, struct file *filp)
 {
-	struct platform_device *fdev = dfl_fpga_inode_to_feature_dev(inode);
-	struct dfl_feature_platform_data *pdata = dev_get_platdata(&fdev->dev);
+	struct dfl_feature_platform_data *pdata = dfl_fpga_inode_to_feature_dev_data(inode);
+	struct platform_device *fdev = pdata->dev;
 	int ret;
 
-	if (WARN_ON(!pdata))
-		return -ENODEV;
-
 	mutex_lock(&pdata->lock);
 	ret = dfl_feature_dev_use_begin(pdata, filp->f_flags & O_EXCL);
 	if (!ret) {
diff --git a/drivers/fpga/dfl.h b/drivers/fpga/dfl.h
index 5063d73b0d82..2285215f444e 100644
--- a/drivers/fpga/dfl.h
+++ b/drivers/fpga/dfl.h
@@ -398,14 +398,14 @@ int dfl_fpga_dev_ops_register(struct platform_device *pdev,
 			      struct module *owner);
 void dfl_fpga_dev_ops_unregister(struct platform_device *pdev);
 
-static inline
-struct platform_device *dfl_fpga_inode_to_feature_dev(struct inode *inode)
+static inline struct dfl_feature_platform_data *
+dfl_fpga_inode_to_feature_dev_data(struct inode *inode)
 {
 	struct dfl_feature_platform_data *pdata;
 
 	pdata = container_of(inode->i_cdev, struct dfl_feature_platform_data,
 			     cdev);
-	return pdata->dev;
+	return pdata;
 }
 
 #define dfl_fpga_dev_for_each_feature(pdata, feature)			    \
-- 
2.47.0


  parent reply	other threads:[~2024-11-20  1:11 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-20  1:10 [PATCH v5 00/18] fpga: dfl: fix kernel warning on port release/assign for SRIOV Peter Colberg
2024-11-20  1:10 ` [PATCH v5 01/18] fpga: dfl: omit unneeded argument pdata from dfl_feature_instance_init() Peter Colberg
2024-11-20  1:10 ` Peter Colberg [this message]
2024-11-20  1:10 ` [PATCH v5 03/18] fpga: dfl: afu: use parent device to log errors on port enable/disable Peter Colberg
2024-11-20  1:10 ` [PATCH v5 04/18] fpga: dfl: afu: define local pointer to feature device Peter Colberg
2024-11-20  1:10 ` [PATCH v5 05/18] fpga: dfl: pass feature platform data instead of device as argument Peter Colberg
2024-11-20  1:10 ` [PATCH v5 06/18] fpga: dfl: factor out feature data creation from build_info_commit_dev() Peter Colberg
2024-11-20  1:10 ` [PATCH v5 07/18] fpga: dfl: store FIU type in feature platform data Peter Colberg
2024-11-20  1:10 ` [PATCH v5 08/18] fpga: dfl: refactor internal DFL APIs to take/return feature device data Peter Colberg
2024-11-20  1:10 ` [PATCH v5 09/18] fpga: dfl: factor out feature device registration Peter Colberg
2024-11-20  1:10 ` [PATCH v5 10/18] fpga: dfl: factor out feature device data from platform device data Peter Colberg
2024-11-20  1:10 ` [PATCH v5 11/18] fpga: dfl: convert features from flexible array member to separate array Peter Colberg
2024-11-20  1:10 ` [PATCH v5 12/18] fpga: dfl: store MMIO resources in feature device data Peter Colberg
2024-11-20  1:10 ` [PATCH v5 13/18] fpga: dfl: store platform device name " Peter Colberg
2024-11-20  1:10 ` [PATCH v5 14/18] fpga: dfl: store platform device id " Peter Colberg
2024-11-20  1:10 ` [PATCH v5 15/18] fpga: dfl: allocate platform device after " Peter Colberg
2024-11-20  1:10 ` [PATCH v5 16/18] fpga: dfl: remove unneeded function build_info_create_dev() Peter Colberg
2024-11-20  1:10 ` [PATCH v5 17/18] fpga: dfl: drop unneeded get_device() and put_device() of feature device Peter Colberg
2024-11-20  1:10 ` [PATCH v5 18/18] fpga: dfl: destroy/recreate feature platform device on port release/assign Peter Colberg
2024-12-10  9:07 ` [PATCH v5 00/18] fpga: dfl: fix kernel warning on port release/assign for SRIOV Xu Yilun

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=20241120011035.230574-3-peter.colberg@intel.com \
    --to=peter.colberg@intel.com \
    --cc=basheer.ahmed.muddebihal@linux.intel.com \
    --cc=hao.wu@intel.com \
    --cc=linux-fpga@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marpagan@redhat.com \
    --cc=matthew.gerlach@linux.intel.com \
    --cc=mdf@kernel.org \
    --cc=russ.weight@linux.dev \
    --cc=trix@redhat.com \
    --cc=yilun.xu@intel.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;
as well as URLs for NNTP newsgroup(s).