summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMadalin Bucur <madalin.bucur@nxp.com>2019-10-31 16:37:58 +0200
committerDavid S. Miller <davem@davemloft.net>2019-10-31 12:13:34 -0700
commita2d00f3db73dc4f6f6afcc95c1db809ea9019306 (patch)
tree2eae9cd0d87616c359dfcc149f41344fa1921d6e /drivers
parente414696d49521b9ceb7734e037d5aa18ef92d8a3 (diff)
downloadlinux-a2d00f3db73dc4f6f6afcc95c1db809ea9019306.tar.gz
linux-a2d00f3db73dc4f6f6afcc95c1db809ea9019306.tar.bz2
linux-a2d00f3db73dc4f6f6afcc95c1db809ea9019306.zip
soc: fsl: qbman: allow registering a device link for the portal user
Introduce the API required to make sure that the devices that use the QMan portal are unbound when the portal is unbound. Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/soc/fsl/qbman/qman.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c
index bf68d86d80ee..bc75a5882b9e 100644
--- a/drivers/soc/fsl/qbman/qman.c
+++ b/drivers/soc/fsl/qbman/qman.c
@@ -1749,6 +1749,19 @@ struct qman_portal *qman_get_affine_portal(int cpu)
}
EXPORT_SYMBOL(qman_get_affine_portal);
+int qman_start_using_portal(struct qman_portal *p, struct device *dev)
+{
+ return (!device_link_add(dev, p->config->dev,
+ DL_FLAG_AUTOREMOVE_CONSUMER)) ? -EINVAL : 0;
+}
+EXPORT_SYMBOL(qman_start_using_portal);
+
+void qman_stop_using_portal(struct qman_portal *p, struct device *dev)
+{
+ device_link_remove(dev, p->config->dev);
+}
+EXPORT_SYMBOL(qman_stop_using_portal);
+
int qman_p_poll_dqrr(struct qman_portal *p, unsigned int limit)
{
return __poll_portal_fast(p, limit);