Skip to content
This repository has been archived by the owner on Oct 5, 2018. It is now read-only.

Commit

Permalink
Merge branch 'working-hikey960-upstream-coresight' into working-hikey…
Browse files Browse the repository at this point in the history
…960-upstream-rebase-v4.14-rc7-2017-11-03-18-10-36

* working-hikey960-upstream-coresight:
  coresight: Fix disabling of CoreSight TPIU
  coresight: ETM: Add support for ARM Cortex-A73
  • Loading branch information
docularxu committed Nov 3, 2017
2 parents 11c8ab0 + c4f8eaf commit 2932b25
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 11 deletions.
22 changes: 14 additions & 8 deletions drivers/hwtracing/coresight/coresight-etm4x.c
Original file line number Diff line number Diff line change
Expand Up @@ -1034,7 +1034,8 @@ static int etm4_probe(struct amba_device *adev, const struct amba_id *id)
}

pm_runtime_put(&adev->dev);
dev_info(dev, "%s initialized\n", (char *)id->data);
dev_info(dev, "CPU%d: %s initialized\n",
drvdata->cpu, (char *)id->data);

if (boot_enable) {
coresight_enable(drvdata->csdev);
Expand All @@ -1052,21 +1053,26 @@ static int etm4_probe(struct amba_device *adev, const struct amba_id *id)
return ret;
}

static const struct amba_id etm4_ids[] = {
{ /* ETM 4.0 - Cortex-A53 */
static struct amba_id etm4_ids[] = {
{
.id = 0x000bb95d,
.mask = 0x000fffff,
.data = "ETM 4.0",
.data = "Cortex-A53 ETM v4.0",
},
{ /* ETM 4.0 - Cortex-A57 */
{
.id = 0x000bb95e,
.mask = 0x000fffff,
.data = "ETM 4.0",
.data = "Cortex-A57 ETM v4.0",
},
{ /* ETM 4.0 - A72, Maia, HiSilicon */
{
.id = 0x000bb95a,
.mask = 0x000fffff,
.data = "ETM 4.0",
.data = "Cortex-A72 ETM v4.0",
},
{
.id = 0x000bb959,
.mask = 0x000fffff,
.data = "Cortex-A73 ETM v4.0",
},
{ 0, 0},
};
Expand Down
13 changes: 10 additions & 3 deletions drivers/hwtracing/coresight/coresight-tpiu.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,11 @@
#define TPIU_ITATBCTR0 0xef8

/** register definition **/
/* FFSR - 0x300 */
#define FFSR_FT_STOPPED BIT(1)
/* FFCR - 0x304 */
#define FFCR_FON_MAN BIT(6)
#define FFCR_STOP_FI BIT(12)

/**
* @base: memory mapped base address for this component.
Expand Down Expand Up @@ -85,10 +88,14 @@ static void tpiu_disable_hw(struct tpiu_drvdata *drvdata)
{
CS_UNLOCK(drvdata->base);

/* Clear formatter controle reg. */
writel_relaxed(0x0, drvdata->base + TPIU_FFCR);
/* Clear formatter and stop on flush */
writel_relaxed(FFCR_STOP_FI, drvdata->base + TPIU_FFCR);
/* Generate manual flush */
writel_relaxed(FFCR_FON_MAN, drvdata->base + TPIU_FFCR);
writel_relaxed(FFCR_STOP_FI | FFCR_FON_MAN, drvdata->base + TPIU_FFCR);
/* Wait for flush to complete */
coresight_timeout(drvdata->base, TPIU_FFCR, FFCR_FON_MAN, 0);
/* Wait for formatter to stop */
coresight_timeout(drvdata->base, TPIU_FFSR, FFSR_FT_STOPPED, 1);

CS_LOCK(drvdata->base);
}
Expand Down

0 comments on commit 2932b25

Please sign in to comment.