From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87B703F39CF for ; Mon, 15 Jun 2026 12:33:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781526806; cv=none; b=MIl+QPspmR7H6i/UB6x6bP6mJJAfZ658/FlZyQjIT1Ot9vDG2QqLCNRpPndjzH2VcYy5NDH/Q7/Y+ROekrLWaj/PNOP4WtIeJOZu304sMX0CQ7wV6yNSBCiZhOmGOfP/dYX6ww6TnRNTnq/6LcfnmJZ9FksjokgmuObRGJAzh2E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781526806; c=relaxed/simple; bh=lODQpixgMjeh3XaPxg7whs4SFcFhY0krJnrZZurdwgY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hAiTZw/z+zFVzTDyD6ezE99xVQIoQQyKaCnwhSxszUi/3ZWmXCXwa7+hTYWs3Qr3ht47WprsbkjZakP0IGgIGI6Sf36yBHjRZyChFKH+myWlSZtezsrYiXgPjUAjDbMFxQrzUMtXa1xHCQ0uZ09huaYoz5zseaNM3grNbReXraI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Xd9ouEPg; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=aEv2dAGh; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Xd9ouEPg"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="aEv2dAGh" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65FBogns464341 for ; Mon, 15 Jun 2026 12:33:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= RNdnR6CZ3/9BNpbQCelD2BkNJUYnz0xCLIGmiZEX744=; b=Xd9ouEPg1I8fMU7f YNdwHHkEhz3S1ZfZnUAc5lbpj+lIX7S4QzGiEulBsAfdn4qQTJR3xzI00KZDXJhV fbHQNL+q7tbIe7ly5EkI7+1hlZ2qa2gjbECLaksdsrrOkhzXsVdpkv754K27ZdKV NzRnWfw1wQWIGiaaFV6SoiEKIQ8y4wdik43oU/ZN5FIFEOp9KeiIoIi4KvPsl56T dT3jGDL+QUPl6EbWJz9O47snVJKZwhJP6F7saC5qEl0snzdu2cg2n7st3w+F5ShM goD4Tk7pzTDOKUsaBqpLCWKRk5s2horCqOJu4T7yjulzGVRYulAdFSWC3bGXr3cA ouZeoQ== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4etgvhg58x-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 15 Jun 2026 12:33:18 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-84235f9b91fso2470959b3a.2 for ; Mon, 15 Jun 2026 05:33:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781526797; x=1782131597; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=RNdnR6CZ3/9BNpbQCelD2BkNJUYnz0xCLIGmiZEX744=; b=aEv2dAGhMLWwjW0GGhxRlSEnhLWX37D1eyDj7ANKU5PPOaOLYqss3p5DDh7LjE0wKw UBrpJZMR1Q+mVuOheiHzy3d705/d8IaEyoELFg4ZFaEEh39udq10aEiJKvsc2INHZYNp gv67FUzgjzFUp2GVZcFngD/Iuu/Le6/RlKjHEDnxGzwtLNxIuqqUkbAklVNeQbjvCoP6 qyfgdDkYrHIOrkN97Zmq4yZqMggdxR6ESzdmBQ1a3kYzr1PBqc/x9tJCMv/4P5UGPyDG JtEb4pFHwP2CkDNo+Fn+jd5CghsHlrR1UO67RV3mwN9WnzMYo6Sb5adgNmmrjVsoMJGJ s+EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781526797; x=1782131597; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RNdnR6CZ3/9BNpbQCelD2BkNJUYnz0xCLIGmiZEX744=; b=OuIf4WO0ClFd6iCGzfda3kqRc0ymdj3CigmCo7eC+CwIMQL/eWlpB0ldlq50vU59UV j4pq43Ag8j6hGEPO1w3iHl+hJHTJxFn2qXJmYHL9dq0svae2Pqhae9h4HkovrWoXu0xb DIwBQ0jNANN3PG8X/6d+6PKLgW/Nc7MmYUNdTZKlqpFSLjsW46ObHHFcUyqDvZbHtgVW wLosM4Ckm8GCM4xgEIyrHmayJXo+xPeXInZI3xOCybWysW2hHsP4OPrLNPtnvMsq2CI4 UE7Q7bm6N+qzbH0c4+0CB8jEGde8l7bVQJD9jtWn0VsCaAfh9fjmsxqsiYhzBciZZ05n 1ejQ== X-Forwarded-Encrypted: i=1; AFNElJ98a2sN1X9J2ntiLJx7isuC4CMQnmZyDDNUR2lQkEZNLdoVfBjf8/VYwKA7LpJENfIVBPYXalQWF3iXzQQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+sn4/ZRVVVwdH0q2PPSXfVeXB9yJhEG/v6ne1xznCCNAjgAWw Rdkv9Mbw2o0WNRXOhOFgBmZzSUC0ZBZli11VtwmE3geAucmilVGMM07WgsDAWA0AWtuOI0xt8v3 3zrVvWCar3aSK5ZuNaH4VYDjnywFNrbsjw2/PdO/ynWawSS1F6gbSPhiir3aNU4r7myA= X-Gm-Gg: Acq92OGXsISjdNiWJEg+yFJ2MfxLhU8Lz5AOCpWKW1nrPWxsbJHUlxX5gFzZuM6jUJG zcOzSXGN8lv3m4yL5NW84AHpq9nqgmgZDaO9500ITVBuCuy/0RcuiHMjniHYGLoxs7Pj+WZZoew fXQgiYDtRNlSbVf4AAq9aTrtjhaMCADOF96pWYOs3VG16qZwVAZWZYn1q8d2MREI3E0dickBG0v MezTPX0nB4P5JTv+Br6E3lzQ5kTKaS8lSKdX1/69LmJakE84DWGf2gX5xIcjACmx73I+lvbYSDF kmjdvsTucXjKRFl14OGshkUp7QyFEXEYdVIJgKyoeLVyqG1QnzB7qDElPDqJq3Vkbzxbdku+zWs HWEPWNSYfoATO+Mikg5YJh/ArcMi3dilH5eCWbm6mXIUoN9BGa3uHUJLaeLQ92ICxmst7z+g5Gg m1fu8cSvwbgotepw== X-Received: by 2002:a05:6a00:a211:b0:837:e9cc:d46d with SMTP id d2e1a72fcca58-8434ced3682mr14804787b3a.44.1781526796991; Mon, 15 Jun 2026 05:33:16 -0700 (PDT) X-Received: by 2002:a05:6a00:a211:b0:837:e9cc:d46d with SMTP id d2e1a72fcca58-8434ced3682mr14804735b3a.44.1781526796468; Mon, 15 Jun 2026 05:33:16 -0700 (PDT) Received: from jinlmao-gv.qualcomm.com (tpe-colo-wan-fw-bordernet.qualcomm.com. [103.229.16.4]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8434b03fd0bsm9968393b3a.50.2026.06.15.05.33.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Jun 2026 05:33:16 -0700 (PDT) From: Yingchao Deng Date: Mon, 15 Jun 2026 20:32:31 +0800 Subject: [PATCH v10 3/5] coresight: cti: add Qualcomm extended CTI identification and quirks Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260615-extended_cti-v10-3-1c1694b6d8ed@oss.qualcomm.com> References: <20260615-extended_cti-v10-0-1c1694b6d8ed@oss.qualcomm.com> In-Reply-To: <20260615-extended_cti-v10-0-1c1694b6d8ed@oss.qualcomm.com> To: Suzuki K Poulose , Mike Leach , James Clark , Leo Yan , Alexander Shishkin Cc: coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, quic_yingdeng@quicinc.com, tingwei.zhang@oss.qualcomm.com, Jinlong Mao , jie.gan@oss.qualcomm.com, Yingchao Deng X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1781526782; l=8792; i=yingchao.deng@oss.qualcomm.com; s=20260611; h=from:subject:message-id; bh=lODQpixgMjeh3XaPxg7whs4SFcFhY0krJnrZZurdwgY=; b=hTOJCGiFRo4kRJIKulKIAU9giNFMQhIjh0gUp7W5oMvJjfvr53d2zE5P/2Sj/GlmAR6EFemXL ZR995QsmeyCCpazUo3+0wHFjNMSbudyfriu35GtXdn+I82ViV1z+dMG X-Developer-Key: i=yingchao.deng@oss.qualcomm.com; a=ed25519; pk=+y3U2mIt7mf0C+x6qBUD670cd9S2QV+yl5015bUYMgs= X-Proofpoint-Spam-Info: AW1haW4tMjYwNjE1MDEzMiBTYWx0ZWRfX7DT2TFo71MBy XKRNfMc/N0A8QVjETePinGBbcw/WNYbXmpb3y6eAbhQTdNOoC6RyeTvtm5dwCN7Nu7yuxLQmMqL E6JfQTWUmMMK5jsRGTwO7TigfEzwblo= X-Authority-Analysis: v=2.4 cv=Zqnd7d7G c=1 sm=1 tr=0 ts=6a2ff10e cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=nuhDOHQX5FNHPW3J6Bj6AA==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=beW-1tIARaYxa11sNzUA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-GUID: XYcAgXDWSFJMr45jW03w7Hgqlr1y0pWP X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjE1MDEzMiBTYWx0ZWRfXxahbXF1vHTsT 6lPCrw9KIUwD6uTSmo4BiAuQPOJPJC0fQBeCfA4VkU0sd6ueNSVifAiX4gV1BlOYueIazCnHghY jCC9/tduubiWtCGLcZWO7VdSF+LGLTG1h5jdM9SPDhihPZoPplwB15+XhptrHXcObj9miIfKCVI FvMlw2Tg64BPdXYmM+tUD8FNClb9qOlzgmZfHb6e25SsD71V/MfR31+mRwLwM+n2xUbDm/Tgnwx c5SqbFqeYZ3T0N7Wo2cT48+4WkBFhVixsjoGrQ6DO9AtfwfV3y89knzCIl3Kp0T0jYNrVhwlrmB JBflsZUlKwDfild12wyUqV/EWs65Mmoe206Oqr9P7UpvyF4/fuusaomv/MhBXSWXuIfWvG8NG97 twdMuqNo/IZk5hX6zgfIPNt62PAxRCUqPTeB+jLbkrsNBtX60zn2SPon9V5JpMqdTOfq/H2qUFS cDCrdB8vIHedId1aVEw== X-Proofpoint-ORIG-GUID: XYcAgXDWSFJMr45jW03w7Hgqlr1y0pWP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-15_03,2026-06-15_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 clxscore=1015 impostorscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606040000 definitions=main-2606150132 Qualcomm implements an extended variant of the ARM CoreSight CTI with a different register layout and vendor-specific behavior. While the programming model remains largely compatible, the register offsets differ from the standard ARM CTI and require explicit handling. Detect Qualcomm CTIs via the DEVARCH register and record this in the CTI driver data. Introduce a small mapping layer to translate standard CTI register offsets to Qualcomm-specific offsets, allowing the rest of the driver to use a common register access path. Additionally, handle a Qualcomm-specific quirk where the hardware does not implement the CoreSight Claim tag protocol. Instead of clearing the CLAIMSET register at probe time, bypass the claim/disclaim operations entirely for Qualcomm CTIs by wrapping coresight_claim_device(), coresight_disclaim_device_unlocked() and coresight_clear_self_claim_tag() in thin helpers that early-return when is_qcom_cti is set. No functional change is intended for standard ARM CTI devices. Co-developed-by: Jinlong Mao Signed-off-by: Jinlong Mao Signed-off-by: Yingchao Deng --- drivers/hwtracing/coresight/coresight-cti-core.c | 47 +++++++++++++++-- drivers/hwtracing/coresight/coresight-cti.h | 64 +++++++++++++++++++++++- 2 files changed, 105 insertions(+), 6 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-cti-core.c b/drivers/hwtracing/coresight/coresight-cti-core.c index fa758c535ccb..5b83dd4e603b 100644 --- a/drivers/hwtracing/coresight/coresight-cti-core.c +++ b/drivers/hwtracing/coresight/coresight-cti-core.c @@ -73,6 +73,35 @@ void cti_write_all_hw_regs(struct cti_drvdata *drvdata) CS_LOCK(drvdata->base); } +/* + * Qualcomm CTIs do not implement the CoreSight Claim tag protocol, so + * bypass coresight_clear_self_claim_tag() for them. + */ +static void cti_clear_self_claim_tag(struct cti_drvdata *drvdata, + struct csdev_access *csa) +{ + if (drvdata->is_qcom_cti) + return; + + coresight_clear_self_claim_tag(csa); +} + +static int cti_claim_device(struct cti_drvdata *drvdata) +{ + if (drvdata->is_qcom_cti) + return 0; + + return coresight_claim_device(drvdata->csdev); +} + +static void cti_unclaim_device_unlocked(struct cti_drvdata *drvdata) +{ + if (drvdata->is_qcom_cti) + return; + + coresight_disclaim_device_unlocked(drvdata->csdev); +} + /* write regs to hardware and enable */ static int cti_enable_hw(struct cti_drvdata *drvdata) { @@ -86,7 +115,7 @@ static int cti_enable_hw(struct cti_drvdata *drvdata) goto cti_state_unchanged; /* claim the device */ - rc = coresight_claim_device(drvdata->csdev); + rc = cti_claim_device(drvdata); if (rc) return rc; @@ -101,7 +130,6 @@ static int cti_enable_hw(struct cti_drvdata *drvdata) static int cti_disable_hw(struct cti_drvdata *drvdata) { struct cti_config *config = &drvdata->config; - struct coresight_device *csdev = drvdata->csdev; guard(raw_spinlock_irqsave)(&drvdata->spinlock); @@ -118,7 +146,7 @@ static int cti_disable_hw(struct cti_drvdata *drvdata) /* disable CTI */ writel_relaxed(0, drvdata->base + CTICONTROL); - coresight_disclaim_device_unlocked(csdev); + cti_unclaim_device_unlocked(drvdata); CS_LOCK(drvdata->base); return 0; } @@ -144,6 +172,9 @@ void cti_write_intack(struct device *dev, u32 ackval) /* DEVID[19:16] - number of CTM channels */ #define CTI_DEVID_CTMCHANNELS(devid_val) ((int) BMVAL(devid_val, 16, 19)) +/* DEVARCH[31:21] - ARCHITECT */ +#define CTI_DEVARCH_ARCHITECT(devarch_val) ((int)BMVAL(devarch_val, 21, 31)) + static int cti_set_default_config(struct device *dev, struct cti_drvdata *drvdata) { @@ -684,6 +715,7 @@ static int cti_probe(struct amba_device *adev, const struct amba_id *id) struct coresight_desc cti_desc = { 0 }; struct coresight_platform_data *pdata = NULL; struct resource *res = &adev->res; + u32 devarch; /* driver data*/ drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL); @@ -708,6 +740,10 @@ static int cti_probe(struct amba_device *adev, const struct amba_id *id) raw_spin_lock_init(&drvdata->spinlock); + devarch = readl_relaxed(drvdata->base + CORESIGHT_DEVARCH); + if (CTI_DEVARCH_ARCHITECT(devarch) == QCOM_ARCHITECT) + drvdata->is_qcom_cti = true; + /* initialise CTI driver config values */ ret = cti_set_default_config(dev, drvdata); if (ret) @@ -753,7 +789,7 @@ static int cti_probe(struct amba_device *adev, const struct amba_id *id) cti_desc.groups = drvdata->ctidev.con_groups; cti_desc.dev = dev; - coresight_clear_self_claim_tag(&cti_desc.access); + cti_clear_self_claim_tag(drvdata, &cti_desc.access); drvdata->csdev = coresight_register(&cti_desc); if (IS_ERR(drvdata->csdev)) return PTR_ERR(drvdata->csdev); @@ -767,7 +803,8 @@ static int cti_probe(struct amba_device *adev, const struct amba_id *id) /* all done - dec pm refcount */ pm_runtime_put(&adev->dev); - dev_info(&drvdata->csdev->dev, "CTI initialized\n"); + dev_info(&drvdata->csdev->dev, + "%sCTI initialized\n", drvdata->is_qcom_cti ? "QCOM " : ""); return 0; } diff --git a/drivers/hwtracing/coresight/coresight-cti.h b/drivers/hwtracing/coresight/coresight-cti.h index 634bdce5cdfd..4b6fd6b55114 100644 --- a/drivers/hwtracing/coresight/coresight-cti.h +++ b/drivers/hwtracing/coresight/coresight-cti.h @@ -54,10 +54,36 @@ struct fwnode_handle; /* * CTI CSSoc 600 has a max of 32 trigger signals per direction. * CTI CSSoc 400 has 8 IO triggers - other CTIs can be impl def. + * QCOM CTI support up to 128 trigger signals per direction. * Max of in and out defined in the DEVID register. * - pick up actual number used from .dts parameters if present. */ -#define CTIINOUTEN_MAX 32 +#define CTIINOUTEN_MAX 128 + +/* QCOM CTI extension */ +#define QCOM_ARCHITECT 0x477 + +#define QCOM_CTIINTACK 0x020 +#define QCOM_CTIAPPSET 0x004 +#define QCOM_CTIAPPCLEAR 0x008 +#define QCOM_CTIAPPPULSE 0x00C +#define QCOM_CTIINEN 0x400 +#define QCOM_CTIOUTEN 0x800 +#define QCOM_CTITRIGINSTATUS 0x040 +#define QCOM_CTITRIGOUTSTATUS 0x060 +#define QCOM_CTICHINSTATUS 0x080 +#define QCOM_CTICHOUTSTATUS 0x084 +#define QCOM_CTIGATE 0x088 +#define QCOM_ASICCTL 0x08C +/* Integration test registers */ +#define QCOM_ITCHINACK 0xE70 +#define QCOM_ITTRIGINACK 0xE80 +#define QCOM_ITCHOUT 0xE74 +#define QCOM_ITTRIGOUT 0xEA0 +#define QCOM_ITCHOUTACK 0xE78 +#define QCOM_ITTRIGOUTACK 0xEC0 +#define QCOM_ITCHIN 0xE7C +#define QCOM_ITTRIGIN 0xEE0 /** * Group of related trigger signals @@ -168,6 +194,9 @@ struct cti_config { * @spinlock: Control data access to one at a time. * @config: Configuration data for this CTI device. * @node: List entry of this device in the list of CTI devices. + * @is_qcom_cti: True if this CTI is a Qualcomm vendor-specific + * variant that requires register offset translation + * via cti_qcom_reg_off(). */ struct cti_drvdata { void __iomem *base; @@ -176,6 +205,7 @@ struct cti_drvdata { raw_spinlock_t spinlock; struct cti_config config; struct list_head node; + bool is_qcom_cti; }; /* @@ -229,9 +259,41 @@ struct coresight_platform_data * coresight_cti_get_platform_data(struct device *dev); const char *cti_plat_get_node_name(struct fwnode_handle *fwnode); +static inline u32 cti_qcom_reg_off(u32 offset) +{ + switch (offset) { + case CTIINTACK: return QCOM_CTIINTACK; + case CTIAPPSET: return QCOM_CTIAPPSET; + case CTIAPPCLEAR: return QCOM_CTIAPPCLEAR; + case CTIAPPPULSE: return QCOM_CTIAPPPULSE; + case CTIINEN: return QCOM_CTIINEN; + case CTIOUTEN: return QCOM_CTIOUTEN; + case CTITRIGINSTATUS: return QCOM_CTITRIGINSTATUS; + case CTITRIGOUTSTATUS: return QCOM_CTITRIGOUTSTATUS; + case CTICHINSTATUS: return QCOM_CTICHINSTATUS; + case CTICHOUTSTATUS: return QCOM_CTICHOUTSTATUS; + case CTIGATE: return QCOM_CTIGATE; + case ASICCTL: return QCOM_ASICCTL; + case ITCHINACK: return QCOM_ITCHINACK; + case ITTRIGINACK: return QCOM_ITTRIGINACK; + case ITCHOUT: return QCOM_ITCHOUT; + case ITTRIGOUT: return QCOM_ITTRIGOUT; + case ITCHOUTACK: return QCOM_ITCHOUTACK; + case ITTRIGOUTACK: return QCOM_ITTRIGOUTACK; + case ITCHIN: return QCOM_ITCHIN; + case ITTRIGIN: return QCOM_ITTRIGIN; + + default: + return offset; + } +} + static inline void __iomem *__reg_addr(struct cti_drvdata *drvdata, u32 off, u32 index) { + if (unlikely(drvdata->is_qcom_cti)) + off = cti_qcom_reg_off(off); + return drvdata->base + off + index * sizeof(u32); } -- 2.43.0