forked from Minki/linux
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>
This commit is contained in:
parent
e414696d49
commit
a2d00f3db7
@ -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);
|
||||
|
@ -32,6 +32,7 @@
|
||||
#define __FSL_QMAN_H
|
||||
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/device.h>
|
||||
|
||||
/* Hardware constants */
|
||||
#define QM_CHANNEL_SWPORTAL0 0
|
||||
@ -914,6 +915,23 @@ u16 qman_affine_channel(int cpu);
|
||||
*/
|
||||
struct qman_portal *qman_get_affine_portal(int cpu);
|
||||
|
||||
/**
|
||||
* qman_start_using_portal - register a device link for the portal user
|
||||
* @p: the portal that will be in use
|
||||
* @dev: the device that will use the portal
|
||||
*
|
||||
* Makes sure that the devices that use the portal are unbound when the
|
||||
* portal is unbound
|
||||
*/
|
||||
int qman_start_using_portal(struct qman_portal *p, struct device *dev);
|
||||
|
||||
/**
|
||||
* qman_stop_using_portal - deregister a device link for the portal user
|
||||
* @p: the portal that will no longer be in use
|
||||
* @dev: the device that uses the portal
|
||||
*/
|
||||
void qman_stop_using_portal(struct qman_portal *p, struct device *dev);
|
||||
|
||||
/**
|
||||
* qman_p_poll_dqrr - process DQRR (fast-path) entries
|
||||
* @limit: the maximum number of DQRR entries to process
|
||||
|
Loading…
Reference in New Issue
Block a user