summaryrefslogtreecommitdiff
path: root/drivers/accel/habanalabs/goya/goya_coresight.c
diff options
context:
space:
mode:
authorBenjamin Dotan <bdotan@habana.ai>2023-07-20 13:03:43 +0300
committerOded Gabbay <ogabbay@kernel.org>2023-10-09 12:37:20 +0300
commit428f6882a6f9fc0521eb2dca5293436d5a041ff3 (patch)
tree152a2bcfc1dc315a2991d33e445c0eec58957feb /drivers/accel/habanalabs/goya/goya_coresight.c
parentcf1ed52d12097b743da17dfa34db01f2c18537a5 (diff)
downloadlinux-428f6882a6f9fc0521eb2dca5293436d5a041ff3.tar.xz
accel/habanalabs: fix ETR/ETF flush logic
When config_etr or config_etf are called we need to validate the parameters that are passed into them to make sure the requested operation is valid. Signed-off-by: Benjamin Dotan <bdotan@habana.ai> Reviewed-by: Oded Gabbay <ogabbay@kernel.org> Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
Diffstat (limited to 'drivers/accel/habanalabs/goya/goya_coresight.c')
-rw-r--r--drivers/accel/habanalabs/goya/goya_coresight.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/accel/habanalabs/goya/goya_coresight.c b/drivers/accel/habanalabs/goya/goya_coresight.c
index a6d6cc38bcd8..41cae5fd843b 100644
--- a/drivers/accel/habanalabs/goya/goya_coresight.c
+++ b/drivers/accel/habanalabs/goya/goya_coresight.c
@@ -315,6 +315,11 @@ static int goya_config_etf(struct hl_device *hdev,
WREG32(base_reg + 0xFB0, CORESIGHT_UNLOCK);
+ val = RREG32(base_reg + 0x20);
+
+ if ((!params->enable && val == 0x0) || (params->enable && val != 0x0))
+ return 0;
+
val = RREG32(base_reg + 0x304);
val |= 0x1000;
WREG32(base_reg + 0x304, val);
@@ -386,6 +391,11 @@ static int goya_config_etr(struct hl_device *hdev,
WREG32(mmPSOC_ETR_LAR, CORESIGHT_UNLOCK);
+ val = RREG32(mmPSOC_ETR_CTL);
+
+ if ((!params->enable && val == 0x0) || (params->enable && val != 0x0))
+ return 0;
+
val = RREG32(mmPSOC_ETR_FFCR);
val |= 0x1000;
WREG32(mmPSOC_ETR_FFCR, val);