mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 04:34:11 +08:00
coresight: configuring ETF in FIFO mode when acting as link
When part of a path but not identified as a sink, the EFT has to be configured as a link and placed in HW FIFO mode. As such when enabling a path, call the right configuration function based on the role the ETF if playing in this trace run. Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2e499bbc1a
commit
dc2c4ef141
@ -265,15 +265,27 @@ static void coresight_disable_source(struct coresight_device *csdev)
|
|||||||
|
|
||||||
void coresight_disable_path(struct list_head *path)
|
void coresight_disable_path(struct list_head *path)
|
||||||
{
|
{
|
||||||
|
u32 type;
|
||||||
struct coresight_node *nd;
|
struct coresight_node *nd;
|
||||||
struct coresight_device *csdev, *parent, *child;
|
struct coresight_device *csdev, *parent, *child;
|
||||||
|
|
||||||
list_for_each_entry(nd, path, link) {
|
list_for_each_entry(nd, path, link) {
|
||||||
csdev = nd->csdev;
|
csdev = nd->csdev;
|
||||||
|
type = csdev->type;
|
||||||
|
|
||||||
switch (csdev->type) {
|
/*
|
||||||
|
* ETF devices are tricky... They can be a link or a sink,
|
||||||
|
* depending on how they are configured. If an ETF has been
|
||||||
|
* "activated" it will be configured as a sink, otherwise
|
||||||
|
* go ahead with the link configuration.
|
||||||
|
*/
|
||||||
|
if (type == CORESIGHT_DEV_TYPE_LINKSINK)
|
||||||
|
type = (csdev == coresight_get_sink(path)) ?
|
||||||
|
CORESIGHT_DEV_TYPE_SINK :
|
||||||
|
CORESIGHT_DEV_TYPE_LINK;
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
case CORESIGHT_DEV_TYPE_SINK:
|
case CORESIGHT_DEV_TYPE_SINK:
|
||||||
case CORESIGHT_DEV_TYPE_LINKSINK:
|
|
||||||
coresight_disable_sink(csdev);
|
coresight_disable_sink(csdev);
|
||||||
break;
|
break;
|
||||||
case CORESIGHT_DEV_TYPE_SOURCE:
|
case CORESIGHT_DEV_TYPE_SOURCE:
|
||||||
@ -294,15 +306,27 @@ int coresight_enable_path(struct list_head *path, u32 mode)
|
|||||||
{
|
{
|
||||||
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
u32 type;
|
||||||
struct coresight_node *nd;
|
struct coresight_node *nd;
|
||||||
struct coresight_device *csdev, *parent, *child;
|
struct coresight_device *csdev, *parent, *child;
|
||||||
|
|
||||||
list_for_each_entry_reverse(nd, path, link) {
|
list_for_each_entry_reverse(nd, path, link) {
|
||||||
csdev = nd->csdev;
|
csdev = nd->csdev;
|
||||||
|
type = csdev->type;
|
||||||
|
|
||||||
switch (csdev->type) {
|
/*
|
||||||
|
* ETF devices are tricky... They can be a link or a sink,
|
||||||
|
* depending on how they are configured. If an ETF has been
|
||||||
|
* "activated" it will be configured as a sink, otherwise
|
||||||
|
* go ahead with the link configuration.
|
||||||
|
*/
|
||||||
|
if (type == CORESIGHT_DEV_TYPE_LINKSINK)
|
||||||
|
type = (csdev == coresight_get_sink(path)) ?
|
||||||
|
CORESIGHT_DEV_TYPE_SINK :
|
||||||
|
CORESIGHT_DEV_TYPE_LINK;
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
case CORESIGHT_DEV_TYPE_SINK:
|
case CORESIGHT_DEV_TYPE_SINK:
|
||||||
case CORESIGHT_DEV_TYPE_LINKSINK:
|
|
||||||
ret = coresight_enable_sink(csdev, mode);
|
ret = coresight_enable_sink(csdev, mode);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err;
|
goto err;
|
||||||
|
Loading…
Reference in New Issue
Block a user