Received: by 2002:a05:7412:7c14:b0:fa:6e18:a558 with SMTP id ii20csp114457rdb; Sun, 21 Jan 2024 20:34:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IG3yRCttarqAw/stuq8QVsyn56A4zkW1+XmUCG5ovp9x9ud4spc/D/mUgVw3Ank92HtI5kM X-Received: by 2002:a17:906:3458:b0:a2e:d463:1371 with SMTP id d24-20020a170906345800b00a2ed4631371mr1961324ejb.45.1705898068752; Sun, 21 Jan 2024 20:34:28 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705898068; cv=pass; d=google.com; s=arc-20160816; b=o6tYJLO0z6vDXiaoCBebhxh0dQiSw8KZgfvIXkYasL5DLT3QwRnioF6FB3S41vk399 teXoNT76swjo/3OgScLLmGV4yTcS6Cws7OM4ABjLjbw2Gh+cz3tLeqrBIj0ltWpp9KCu FVxjzV15zog/deHsSzghAq8wZSscdfS0ti2Jp6E5/ws03XsI8lg9OtY8gjPuglueJsw9 RI6iucXR/VxLZvjOPtCSHSk6Vd7hb6bPLZLtkikLoqTUdLlYh6B3sX4xZrGAs9kFfASP cRcxJ5jE8QRZZmQrFgAe9pXBP2lwMdaN8VkPCt9ZK5+7dYFVoRNVvcDrl95t9G40SpZU +d6A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id:dkim-signature; bh=9Z5agxXwT4WRQD6vI8ZTAIr+cWtfp8yYSCcymwOt4kI=; fh=xPZ0YANAcRPGPX4IB0yOZmK5WLFQL1lh99y02pFk1x4=; b=cPDTQcDZL37LR30VEvWoF29OnU9RhMlULZrIml96USYHxSOndjk7Pf3DnIYwvPslMs ifM0gr0vRsQOoXMfgPG8ggyHIElwGKpWl1E58dwXrMXikYJa2nzTRPw3+1P4bxb/Rxc8 Fy68I/RnQ3q+aJ9+FSt1SiFzz2twWiShjeIgaw4YnnTUb0ge2TUYOJrjekiF6hJdFLGG lctKxc+uFijGYJ9whngDq3zF2FnwfrW2126OkXfT/3Rdg/OphUHa7SsYlFkCEFqvUItX RDHMhtsoNDYjrGWyI58YyRGBn3lqRlYr1PZLNNiMA7LpPx4Z1xAovlfwiZlAtobJwQs+ eNSg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=dwItzClG; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-32321-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-32321-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id y13-20020a17090629cd00b00a2357fa1b9fsi10371622eje.409.2024.01.21.20.34.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 Jan 2024 20:34:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-32321-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=dwItzClG; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-32321-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-32321-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 5A2CE1F224A3 for ; Mon, 22 Jan 2024 04:34:28 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C20784C6D; Mon, 22 Jan 2024 04:34:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="dwItzClG" 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 99102A28; Mon, 22 Jan 2024 04:34:15 +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=1705898057; cv=none; b=h97yfIOGyLxhyz2c877IAYJ6SX8cKiqsjH3Iz+SpWCZbjqJHeLFQf7POiXtT4jULJlndxofpBwGOyBDbfA37ke2ql4ebgj/hWZA2uIcG+zzKeRCGdiSTeds+B7m/o6aWrguADbcmovj8tE/aukSNFPe6kjrkXOvCSaRXkTwDfBc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705898057; c=relaxed/simple; bh=EcM4W5cWjiApVuERDIaz6QqNO+H4lrJafvcv0TIs9TQ=; h=Message-ID:Date:MIME-Version:Subject:To:CC:References:From: In-Reply-To:Content-Type; b=fMnN3GomFtErqHjesru/JqzHwfFXftE3d7diExS8uh3YY9SwP10gfdKZjyhBkmgFR8x4v9yXv0VffvjhmX7LePIE5hBWx1pbGLtfYy2eqKN4xELIjw6GDB9Y8Ma9Ir6uV+uB9qSMq4YNBIllrWrsjRFJkVIJL3+6eujZ/rYy5vo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=dwItzClG; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 40M2Oir7026785; Mon, 22 Jan 2024 04:33:56 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= message-id:date:mime-version:subject:to:cc:references:from :in-reply-to:content-type:content-transfer-encoding; s= qcppdkim1; bh=9Z5agxXwT4WRQD6vI8ZTAIr+cWtfp8yYSCcymwOt4kI=; b=dw ItzClGU5FtgpvClx2oHbBB9t9mz9eohtCl2k2zPlAk7sjT7ifyA0WL0cogMN2FYy bv36PRFP4rN8RJalwHKR5ZfVT9GZwcK8XQss3nYXZUqUQt7CGUCq4CR6hYVDl9NX C7a0Wi48EIsnnaD4l56roQ2IZaAmp84v0egJ2nna1Dz47tg5xr88rKT7USgTL98X zU1vuc0rzGkvhv65M0cGiCcvGCTdYEH/DTuqb05Eg6yjpn2wN7MTNb9LT0k3WuqE 83huDKmGXIHAFLGdVJB9aEOQj10K1D+Z+2e13LJbCCIAiEal5u0wN3C1ym5UvObw fGwNhxft0CZa3wyEmWrw== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3vr5gpjxsg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Jan 2024 04:33:56 +0000 (GMT) Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA05.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 40M4XttW003973 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Jan 2024 04:33:55 GMT Received: from [10.239.133.211] (10.80.80.8) by nalasex01c.na.qualcomm.com (10.47.97.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Sun, 21 Jan 2024 20:33:50 -0800 Message-ID: Date: Mon, 22 Jan 2024 12:33:48 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 07/10] coresight-tpdm: Add pattern registers support for CMB Content-Language: en-US To: Suzuki K Poulose , Mathieu Poirier , Alexander Shishkin , Konrad Dybcio , Mike Leach , Rob Herring , Krzysztof Kozlowski CC: Jinlong Mao , Leo Yan , "Greg Kroah-Hartman" , , , , , Tingwei Zhang , Yuanfang Zhang , Trilok Soni , Song Chai , , References: <1705634583-17631-1-git-send-email-quic_taozha@quicinc.com> <1705634583-17631-8-git-send-email-quic_taozha@quicinc.com> <7831e83e-9c26-412a-b78a-ed58ee02c5b1@arm.com> From: Tao Zhang In-Reply-To: <7831e83e-9c26-412a-b78a-ed58ee02c5b1@arm.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01c.na.qualcomm.com (10.47.97.35) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: CXB7EOqNnOqn6jdzi-vYisJ2pU6P2oma X-Proofpoint-ORIG-GUID: CXB7EOqNnOqn6jdzi-vYisJ2pU6P2oma X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-21_04,2024-01-19_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 suspectscore=0 adultscore=0 clxscore=1015 mlxscore=0 malwarescore=0 impostorscore=0 mlxlogscore=999 lowpriorityscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2401220030 On 1/19/2024 7:58 PM, Suzuki K Poulose wrote: > On 19/01/2024 03:23, Tao Zhang wrote: >> Timestamps are requested if the monitor’s CMB data set unit input >> data matches the value in the Monitor CMB timestamp pattern and mask >> registers (M_CMB_TPR and M_CMB_TPMR) when CMB timestamp enabled >> via the timestamp insertion enable register bit(CMB_TIER.PATT_TSENAB). >> The pattern match trigger output is achieved via setting values into >> the CMB trigger pattern and mask registers (CMB_XPR and CMB_XPMR). >> After configuring a pattern through these registers, the TPDM subunit >> will assert an output trigger every time it receives new input data >> that matches the configured pattern value. Values in a given bit >> number of the mask register correspond to the same bit number in >> the corresponding pattern register. >> >> Signed-off-by: Tao Zhang >> --- >>   .../testing/sysfs-bus-coresight-devices-tpdm  | 30 ++++++ >>   drivers/hwtracing/coresight/coresight-tpdm.c  | 98 ++++++++++++++++++- >>   drivers/hwtracing/coresight/coresight-tpdm.h  | 39 ++++++++ >>   3 files changed, 166 insertions(+), 1 deletion(-) >> >> diff --git >> a/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm >> b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm >> index 3ae21ccf3f29..898aee81e20d 100644 >> --- a/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm >> +++ b/Documentation/ABI/testing/sysfs-bus-coresight-devices-tpdm >> @@ -184,3 +184,33 @@ Description:    (Write) Set the data collection >> mode of CMB tpdm. Continuous >>           Accepts only one of the 2 values -  0 or 1. >>           0 : Continuous CMB collection mode. >>           1 : Trace-on-change CMB collection mode. >> + >> +What: /sys/bus/coresight/devices//cmb_trig_patt/xpr[0:1] >> +Date:        March 2023 >> +KernelVersion    6.7 > > This must be fixed to 6.9 now and also move the year to 2024. Rest > looks fine. Sure, I will update in the next patch series. Best, Tao > > Suzuki > >> +Contact:    Jinlong Mao (QUIC) , Tao Zhang >> (QUIC) >> +Description: >> +        (RW) Set/Get the value of the trigger pattern for the CMB >> +        subunit TPDM. >> + >> +What: /sys/bus/coresight/devices//cmb_trig_patt/xpmr[0:1] >> +Date:        March 2023 >> +KernelVersion    6.7 >> +Contact:    Jinlong Mao (QUIC) , Tao Zhang >> (QUIC) >> +Description: >> +        (RW) Set/Get the mask of the trigger pattern for the CMB >> +        subunit TPDM. >> + >> +What: /sys/bus/coresight/devices//dsb_patt/tpr[0:1] >> +Date:        March 2023 >> +KernelVersion    6.7 >> +Contact:    Jinlong Mao (QUIC) , Tao Zhang >> (QUIC) >> +Description: >> +        (RW) Set/Get the value of the pattern for the CMB subunit TPDM. >> + >> +What: /sys/bus/coresight/devices//dsb_patt/tpmr[0:1] >> +Date:        March 2023 >> +KernelVersion    6.7 >> +Contact:    Jinlong Mao (QUIC) , Tao Zhang >> (QUIC) >> +Description: >> +        (RW) Set/Get the mask of the pattern for the CMB subunit TPDM. >> diff --git a/drivers/hwtracing/coresight/coresight-tpdm.c >> b/drivers/hwtracing/coresight/coresight-tpdm.c >> index b55aee65a856..079c875ad667 100644 >> --- a/drivers/hwtracing/coresight/coresight-tpdm.c >> +++ b/drivers/hwtracing/coresight/coresight-tpdm.c >> @@ -66,6 +66,26 @@ static ssize_t tpdm_simple_dataset_show(struct >> device *dev, >>               return -EINVAL; >>           return sysfs_emit(buf, "0x%x\n", >>                   drvdata->dsb->msr[tpdm_attr->idx]); >> +    case CMB_TRIG_PATT: >> +        if (tpdm_attr->idx >= TPDM_CMB_MAX_PATT) >> +            return -EINVAL; >> +        return sysfs_emit(buf, "0x%x\n", >> +            drvdata->cmb->trig_patt[tpdm_attr->idx]); >> +    case CMB_TRIG_PATT_MASK: >> +        if (tpdm_attr->idx >= TPDM_CMB_MAX_PATT) >> +            return -EINVAL; >> +        return sysfs_emit(buf, "0x%x\n", >> + drvdata->cmb->trig_patt_mask[tpdm_attr->idx]); >> +    case CMB_PATT: >> +        if (tpdm_attr->idx >= TPDM_CMB_MAX_PATT) >> +            return -EINVAL; >> +        return sysfs_emit(buf, "0x%x\n", >> +            drvdata->cmb->patt_val[tpdm_attr->idx]); >> +    case CMB_PATT_MASK: >> +        if (tpdm_attr->idx >= TPDM_CMB_MAX_PATT) >> +            return -EINVAL; >> +        return sysfs_emit(buf, "0x%x\n", >> +            drvdata->cmb->patt_mask[tpdm_attr->idx]); >>       } >>       return -EINVAL; >>   } >> @@ -118,6 +138,30 @@ static ssize_t tpdm_simple_dataset_store(struct >> device *dev, >>               ret = size; >>           } >>           break; >> +    case CMB_TRIG_PATT: >> +        if (tpdm_attr->idx < TPDM_CMB_MAX_PATT) { >> +            drvdata->cmb->trig_patt[tpdm_attr->idx] = val; >> +            ret = size; >> +        } >> +        break; >> +    case CMB_TRIG_PATT_MASK: >> +        if (tpdm_attr->idx < TPDM_CMB_MAX_PATT) { >> + drvdata->cmb->trig_patt_mask[tpdm_attr->idx] = val; >> +            ret = size; >> +        } >> +        break; >> +    case CMB_PATT: >> +        if (tpdm_attr->idx < TPDM_CMB_MAX_PATT) { >> +            drvdata->cmb->patt_val[tpdm_attr->idx] = val; >> +            ret = size; >> +        } >> +        break; >> +    case CMB_PATT_MASK: >> +        if (tpdm_attr->idx < TPDM_CMB_MAX_PATT) { >> +            drvdata->cmb->patt_mask[tpdm_attr->idx] = val; >> +            ret = size; >> +        } >> +        break; >>       default: >>           break; >>       } >> @@ -279,10 +323,32 @@ static void tpdm_enable_dsb(struct tpdm_drvdata >> *drvdata) >>     static void tpdm_enable_cmb(struct tpdm_drvdata *drvdata) >>   { >> -    u32 val; >> +    u32 val, i; >>         if (tpdm_has_cmb_dataset(drvdata)) { >> +        /* Configure pattern registers */ >> +        for (i = 0; i < TPDM_CMB_MAX_PATT; i++) { >> +            writel_relaxed(drvdata->cmb->patt_val[i], >> +                drvdata->base + TPDM_CMB_TPR(i)); >> +            writel_relaxed(drvdata->cmb->patt_mask[i], >> +                drvdata->base + TPDM_CMB_TPMR(i)); >> +            writel_relaxed(drvdata->cmb->trig_patt[i], >> +                drvdata->base + TPDM_CMB_XPR(i)); >> + writel_relaxed(drvdata->cmb->trig_patt_mask[i], >> +                drvdata->base + TPDM_CMB_XPMR(i)); >> +        } >> + >>           val = readl_relaxed(drvdata->base + TPDM_CMB_CR); >> +        /* >> +         * Set to 0 for continuous CMB collection mode, >> +         * 1 for trace-on-change CMB collection mode. >> +         */ >> +        if (drvdata->cmb->trace_mode) >> +            val |= TPDM_CMB_CR_MODE; >> +        else >> +            val &= ~TPDM_CMB_CR_MODE; >> + >> +        /* Set the enable bit of CMB control register to 1 */ >>           val |= TPDM_CMB_CR_ENA; >>             /* Set the enable bit of CMB control register to 1 */ >> @@ -886,6 +952,22 @@ static struct attribute *tpdm_dsb_msr_attrs[] = { >>       NULL, >>   }; >>   +static struct attribute *tpdm_cmb_trig_patt_attrs[] = { >> +    CMB_TRIG_PATT_ATTR(0), >> +    CMB_TRIG_PATT_ATTR(1), >> +    CMB_TRIG_PATT_MASK_ATTR(0), >> +    CMB_TRIG_PATT_MASK_ATTR(1), >> +    NULL, >> +}; >> + >> +static struct attribute *tpdm_cmb_patt_attrs[] = { >> +    CMB_PATT_ATTR(0), >> +    CMB_PATT_ATTR(1), >> +    CMB_PATT_MASK_ATTR(0), >> +    CMB_PATT_MASK_ATTR(1), >> +    NULL, >> +}; >> + >>   static struct attribute *tpdm_dsb_attrs[] = { >>       &dev_attr_dsb_mode.attr, >>       &dev_attr_dsb_trig_ts.attr, >> @@ -932,6 +1014,18 @@ static struct attribute_group tpdm_cmb_attr_grp >> = { >>       .is_visible = tpdm_cmb_is_visible, >>   }; >>   +static struct attribute_group tpdm_cmb_trig_patt_grp = { >> +    .attrs = tpdm_cmb_trig_patt_attrs, >> +    .is_visible = tpdm_cmb_is_visible, >> +    .name = "cmb_trig_patt", >> +}; >> + >> +static struct attribute_group tpdm_cmb_patt_grp = { >> +    .attrs = tpdm_cmb_patt_attrs, >> +    .is_visible = tpdm_cmb_is_visible, >> +    .name = "cmb_patt", >> +}; >> + >>   static const struct attribute_group *tpdm_attr_grps[] = { >>       &tpdm_attr_grp, >>       &tpdm_dsb_attr_grp, >> @@ -940,6 +1034,8 @@ static const struct attribute_group >> *tpdm_attr_grps[] = { >>       &tpdm_dsb_patt_grp, >>       &tpdm_dsb_msr_grp, >>       &tpdm_cmb_attr_grp, >> +    &tpdm_cmb_trig_patt_grp, >> +    &tpdm_cmb_patt_grp, >>       NULL, >>   }; >>   diff --git a/drivers/hwtracing/coresight/coresight-tpdm.h >> b/drivers/hwtracing/coresight/coresight-tpdm.h >> index 2af92c270ed1..8cb8a9b35384 100644 >> --- a/drivers/hwtracing/coresight/coresight-tpdm.h >> +++ b/drivers/hwtracing/coresight/coresight-tpdm.h >> @@ -11,12 +11,23 @@ >>     /* CMB Subunit Registers */ >>   #define TPDM_CMB_CR        (0xA00) >> +/*CMB subunit timestamp pattern registers*/ >> +#define TPDM_CMB_TPR(n)        (0xA08 + (n * 4)) >> +/*CMB subunit timestamp pattern mask registers*/ >> +#define TPDM_CMB_TPMR(n)    (0xA10 + (n * 4)) >> +/*CMB subunit trigger pattern registers*/ >> +#define TPDM_CMB_XPR(n)        (0xA18 + (n * 4)) >> +/*CMB subunit trigger pattern mask registers*/ >> +#define TPDM_CMB_XPMR(n)    (0xA20 + (n * 4)) >>     /* Enable bit for CMB subunit */ >>   #define TPDM_CMB_CR_ENA        BIT(0) >>   /* Trace collection mode for CMB subunit */ >>   #define TPDM_CMB_CR_MODE    BIT(1) >>   +/*Patten register number*/ >> +#define TPDM_CMB_MAX_PATT        2 >> + >>   /* DSB Subunit Registers */ >>   #define TPDM_DSB_CR        (0x780) >>   #define TPDM_DSB_TIER        (0x784) >> @@ -151,6 +162,22 @@ >>           tpdm_simple_dataset_rw(msr##nr,            \ >>           DSB_MSR, nr) >>   +#define CMB_TRIG_PATT_ATTR(nr)                    \ >> +        tpdm_simple_dataset_rw(xpr##nr,            \ >> +        CMB_TRIG_PATT, nr) >> + >> +#define CMB_TRIG_PATT_MASK_ATTR(nr)                \ >> +        tpdm_simple_dataset_rw(xpmr##nr,        \ >> +        CMB_TRIG_PATT_MASK, nr) >> + >> +#define CMB_PATT_ATTR(nr)                    \ >> +        tpdm_simple_dataset_rw(tpr##nr,            \ >> +        CMB_PATT, nr) >> + >> +#define CMB_PATT_MASK_ATTR(nr)                    \ >> +        tpdm_simple_dataset_rw(tpmr##nr,        \ >> +        CMB_PATT_MASK, nr) >> + >>   /** >>    * struct dsb_dataset - specifics associated to dsb dataset >>    * @mode:             DSB programming mode >> @@ -186,9 +213,17 @@ struct dsb_dataset { >>   /** >>    * struct cmb_dataset >>    * @trace_mode:       Dataset collection mode >> + * @patt_val:         Save value for pattern >> + * @patt_mask:        Save value for pattern mask >> + * @trig_patt:        Save value for trigger pattern >> + * @trig_patt_mask:   Save value for trigger pattern mask >>    */ >>   struct cmb_dataset { >>       u32            trace_mode; >> +    u32            patt_val[TPDM_CMB_MAX_PATT]; >> +    u32            patt_mask[TPDM_CMB_MAX_PATT]; >> +    u32            trig_patt[TPDM_CMB_MAX_PATT]; >> +    u32            trig_patt_mask[TPDM_CMB_MAX_PATT]; >>   }; >>     /** >> @@ -225,6 +260,10 @@ enum dataset_mem { >>       DSB_PATT, >>       DSB_PATT_MASK, >>       DSB_MSR, >> +    CMB_TRIG_PATT, >> +    CMB_TRIG_PATT_MASK, >> +    CMB_PATT, >> +    CMB_PATT_MASK >>   }; >>     /** >