aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/fpga/dfl.h
diff options
context:
space:
mode:
authorWu Hao <hao.wu@intel.com>2018-06-29 20:53:15 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-07-15 07:55:45 -0400
commit5d56e117001996766c3dab5767663b0c43b76639 (patch)
tree90ca25fdad1af397732654f312f633ed8655fd33 /drivers/fpga/dfl.h
parentb16c5147dc3b1a03405f58f6864b56f29ab7aaf9 (diff)
fpga: dfl: add dfl_fpga_cdev_find_port
For feature devices, we need a method to find the port dedicated to the device. This patch adds a function dfl_fpga_cdev_find_port for this purpose. e.g. FPGA Management Engine (FME) Partial Reconfiguration sub feature, it uses this function to find dedicated port on the device for PR function implementation. 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: Xiao Guangrong <guangrong.xiao@linux.intel.com> Signed-off-by: Wu Hao <hao.wu@intel.com> Acked-by: Alan Tull <atull@kernel.org> Acked-by: Moritz Fischer <mdf@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/fpga/dfl.h')
-rw-r--r--drivers/fpga/dfl.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/fpga/dfl.h b/drivers/fpga/dfl.h
index 66c2ade5a06b..b4f65250a29c 100644
--- a/drivers/fpga/dfl.h
+++ b/drivers/fpga/dfl.h
@@ -284,4 +284,25 @@ struct dfl_fpga_cdev *
284dfl_fpga_feature_devs_enumerate(struct dfl_fpga_enum_info *info); 284dfl_fpga_feature_devs_enumerate(struct dfl_fpga_enum_info *info);
285void dfl_fpga_feature_devs_remove(struct dfl_fpga_cdev *cdev); 285void dfl_fpga_feature_devs_remove(struct dfl_fpga_cdev *cdev);
286 286
287/*
288 * need to drop the device reference with put_device() after use port platform
289 * device returned by __dfl_fpga_cdev_find_port and dfl_fpga_cdev_find_port
290 * functions.
291 */
292struct platform_device *
293__dfl_fpga_cdev_find_port(struct dfl_fpga_cdev *cdev, void *data,
294 int (*match)(struct platform_device *, void *));
295
296static inline struct platform_device *
297dfl_fpga_cdev_find_port(struct dfl_fpga_cdev *cdev, void *data,
298 int (*match)(struct platform_device *, void *))
299{
300 struct platform_device *pdev;
301
302 mutex_lock(&cdev->lock);
303 pdev = __dfl_fpga_cdev_find_port(cdev, data, match);
304 mutex_unlock(&cdev->lock);
305
306 return pdev;
307}
287#endif /* __FPGA_DFL_H */ 308#endif /* __FPGA_DFL_H */