From nobody Sun Jun 26 23:19:52 2022 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1929A869661 for ; Sun, 26 Jun 2022 23:20:02 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LWRf90d2mz4Sv5 for ; Sun, 26 Jun 2022 23:20:01 +0000 (UTC) (envelope-from jrtc27@jrtc27.com) Received: by mail-wr1-f45.google.com with SMTP id k22so10648907wrd.6 for ; Sun, 26 Jun 2022 16:20:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=gr3Bs8haX6mfqfsGQfeyPTfq8vgfulUg8EcmOz2Hi6I=; b=eTLzKhqcWoEPggOUmldHWRqIhKEOEd+ZxAjI1LM1ojd1GScvEmt1bmwrHzUZf2bjzN gd8uNSrWXV/1tVPe7GRIm26ejUzVLkqfv80ImsD4d34+ys0NLNELnIBtWD7FaGua/YS/ 6pYCWpsvdBFpEb90PRLg4obq/oNiicYbmwQq3aFDZsWLwSE0ZNmI2DmGPlgpjzlRkYcr S9z5pJ+YJER9z0vT59XKmJaGJKX7WVd8DdRSb7Gcdc3kdpNMKEa0jNL6qnIfzCZeFZr9 bUYlQmllEWNdXVSa6jN0S1isX99eqxF2dznYlbsv6Zp2pIlkdzLo5ULzLd8OHe0V/usF OIfw== X-Gm-Message-State: AJIora9O7BXqaEI/tK/q7YyoThzo+0s8To3pC3eS0zjtdZHVR5Y1tICu c0yGVyRNuoqrJ2lMVv663V9jAg== X-Google-Smtp-Source: AGRyM1tswMr12uIDC7DxqCqTsWnBsTEdXV0hnvHIR9wTi+jfjMF3zp9LGlDzU9q5RCL6brCi2O1VVQ== X-Received: by 2002:adf:f90c:0:b0:21a:3dcb:d106 with SMTP id b12-20020adff90c000000b0021a3dcbd106mr9474228wrr.448.1656285593667; Sun, 26 Jun 2022 16:19:53 -0700 (PDT) Received: from smtpclient.apple (global-5-142.nat-2.net.cam.ac.uk. [131.111.5.142]) by smtp.gmail.com with ESMTPSA id 11-20020a05600c268b00b003a03a8475bfsm10792003wmt.16.2022.06.26.16.19.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Jun 2022 16:19:52 -0700 (PDT) Content-Type: text/plain; charset=utf-8 List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.80.82.1.1\)) Subject: Re: git: e3572eb65473 - main - Allocate event for DMC-620 and CMN-600 controllers PMU. Add events supported by DMC-620 and CMN-600 controllers PMU. From: Jessica Clarke In-Reply-To: <202206262217.25QMHOuH076130@gitrepo.freebsd.org> Date: Mon, 27 Jun 2022 00:19:52 +0100 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-main@freebsd.org" Content-Transfer-Encoding: quoted-printable Message-Id: References: <202206262217.25QMHOuH076130@gitrepo.freebsd.org> To: Toomas Soome X-Mailer: Apple Mail (2.3696.80.82.1.1) X-Rspamd-Queue-Id: 4LWRf90d2mz4Sv5 X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=pass (mx1.freebsd.org: domain of jrtc27@jrtc27.com designates 209.85.221.45 as permitted sender) smtp.mailfrom=jrtc27@jrtc27.com X-Spamd-Result: default: False [-1.79 / 15.00]; TO_DN_EQ_ADDR_SOME(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_DN_SOME(0.00)[]; MV_CASE(0.50)[]; R_SPF_ALLOW(-0.20)[+ip4:209.85.128.0/17]; RCVD_COUNT_THREE(0.00)[3]; NEURAL_HAM_SHORT(-0.29)[-0.286]; FORGED_SENDER(0.30)[jrtc27@freebsd.org,jrtc27@jrtc27.com]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:15169, ipnet:209.85.128.0/17, country:US]; MID_RHS_MATCH_FROM(0.00)[]; FROM_NEQ_ENVFROM(0.00)[jrtc27@freebsd.org,jrtc27@jrtc27.com]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; FREEFALL_USER(0.00)[jrtc27]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[dev-commits-src-main@freebsd.org]; DMARC_NA(0.00)[freebsd.org]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[209.85.221.45:from]; MLMMJ_DEST(0.00)[dev-commits-src-main]; RWL_MAILSPIKE_POSSIBLE(0.00)[209.85.221.45:from]; RCVD_TLS_ALL(0.00)[] X-ThisMailContainsUnwantedMimeParts: N On 26 Jun 2022, at 23:17, Toomas Soome wrote: >=20 > The branch main has been updated by tsoome: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3De3572eb654733a94e1e765fe9e95e057= 9981d851 >=20 > commit e3572eb654733a94e1e765fe9e95e0579981d851 > Author: Aleksandr Rybalko > AuthorDate: 2022-02-16 00:19:19 +0000 > Commit: Toomas Soome > CommitDate: 2022-06-26 18:52:26 +0000 >=20 > Allocate event for DMC-620 and CMN-600 controllers PMU. Add events = supported by DMC-620 and CMN-600 controllers PMU. >=20 > Allocate event for DMC-620 and CMN-600 controllers PMU. > Add events supported by DMC-620 and CMN-600 controllers PMU. >=20 > Reviewed by: bz > Sponsored By: ARM > Sponsored By: Ampere Computing > Differential Revision: https://reviews.freebsd.org/D35609 This includes the following (skipped due to lines) diff: > * 0x14100 0x0100 ARMv8 events > + * 0x14200 0x0020 ARM DMC-620 clkdiv2 events > + * 0x14220 0x0080 ARM DMC-620 clk events > + * 0x14300 0x0100 ARM CMN-600 events Not enough space was allocated for Armv8 events as it goes up to 0x3ff in Armv8 (and beyond in later versions of the architecture). Downstream we extend this range in CheriBSD as required for Morello=E2=80=99s = events. Please relocate these new events well past the end of the existing Armv8 events so the space can remain contiguous. Jess > --- > lib/libpmc/libpmc.c | 181 ++++++++++ > sys/arm64/include/cmn600_reg.h | 793 = +++++++++++++++++++++++++++++++++++++++++ > sys/arm64/include/pmc_mdep.h | 24 ++ > sys/dev/hwpmc/hwpmc_cmn600.h | 54 +++ > sys/dev/hwpmc/hwpmc_dmc620.h | 50 +++ > sys/dev/hwpmc/pmc_events.h | 241 ++++++++++++- > sys/dev/hwpmc/pmu_dmc620_reg.h | 88 +++++ > 7 files changed, 1430 insertions(+), 1 deletion(-) >=20 > diff --git a/lib/libpmc/libpmc.c b/lib/libpmc/libpmc.c > index d01f88bdaff7..491402276468 100644 > --- a/lib/libpmc/libpmc.c > +++ b/lib/libpmc/libpmc.c > @@ -65,6 +65,10 @@ static int armv7_allocate_pmc(enum pmc_event _pe, = char *_ctrspec, > #if defined(__aarch64__) > static int arm64_allocate_pmc(enum pmc_event _pe, char *_ctrspec, > struct pmc_op_pmcallocate *_pmc_config); > +static int cmn600_pmu_allocate_pmc(enum pmc_event _pe, char = *_ctrspec, > + struct pmc_op_pmcallocate *_pmc_config); > +static int dmc620_pmu_allocate_pmc(enum pmc_event _pe, char = *_ctrspec, > + struct pmc_op_pmcallocate *_pmc_config); > #endif > static int soft_allocate_pmc(enum pmc_event _pe, char *_ctrspec, > struct pmc_op_pmcallocate *_pmc_config); > @@ -134,6 +138,9 @@ PMC_CLASSDEP_TABLE(iaf, IAF); > PMC_CLASSDEP_TABLE(k8, K8); > PMC_CLASSDEP_TABLE(armv7, ARMV7); > PMC_CLASSDEP_TABLE(armv8, ARMV8); > +PMC_CLASSDEP_TABLE(cmn600_pmu, CMN600_PMU); > +PMC_CLASSDEP_TABLE(dmc620_pmu_cd2, DMC620_PMU_CD2); > +PMC_CLASSDEP_TABLE(dmc620_pmu_c, DMC620_PMU_C); > PMC_CLASSDEP_TABLE(ppc7450, PPC7450); > PMC_CLASSDEP_TABLE(ppc970, PPC970); > PMC_CLASSDEP_TABLE(e500, E500); > @@ -210,6 +217,9 @@ PMC_CLASS_TABLE_DESC(cortex_a9, ARMV7, cortex_a9, = armv7); > PMC_CLASS_TABLE_DESC(cortex_a53, ARMV8, cortex_a53, arm64); > PMC_CLASS_TABLE_DESC(cortex_a57, ARMV8, cortex_a57, arm64); > PMC_CLASS_TABLE_DESC(cortex_a76, ARMV8, cortex_a76, arm64); > +PMC_CLASS_TABLE_DESC(cmn600_pmu, CMN600_PMU, cmn600_pmu, cmn600_pmu); > +PMC_CLASS_TABLE_DESC(dmc620_pmu_cd2, DMC620_PMU_CD2, dmc620_pmu_cd2, = dmc620_pmu); > +PMC_CLASS_TABLE_DESC(dmc620_pmu_c, DMC620_PMU_C, dmc620_pmu_c, = dmc620_pmu); > #endif > #if defined(__powerpc__) > PMC_CLASS_TABLE_DESC(ppc7450, PPC7450, ppc7450, powerpc); > @@ -781,6 +791,146 @@ arm64_allocate_pmc(enum pmc_event pe, char = *ctrspec, >=20 > return (0); > } > + > +static int > +cmn600_pmu_allocate_pmc(enum pmc_event pe, char *ctrspec, > + struct pmc_op_pmcallocate *pmc_config) > +{ > + uint32_t nodeid, occupancy, xpport, xpchannel; > + char *e, *p, *q; > + unsigned int i; > + char *xpport_names[] =3D { "East", "West", "North", "South", = "devport0", > + "devport1" }; > + char *xpchannel_names[] =3D { "REQ", "RSP", "SNP", "DAT" }; > + > + pmc_config->pm_caps |=3D (PMC_CAP_READ | PMC_CAP_WRITE); > + pmc_config->pm_caps |=3D PMC_CAP_SYSTEM; > + pmc_config->pm_md.pm_cmn600.pma_cmn600_config =3D 0; > + /* > + * CMN600 extra fields: > + * * nodeid - node coordinates x[2-3],y[2-3],p[1],s[2] > + * width of x and y fields depend on matrix size. > + * * occupancy - numeric value to select desired filter. > + * * xpport - East, West, North, South, devport0, devport1 (or = 0, 1, ..., 5) > + * * xpchannel - REQ, RSP, SNP, DAT (or 0, 1, 2, 3) > + */ > + > + while ((p =3D strsep(&ctrspec, ",")) !=3D NULL) { > + if (KWPREFIXMATCH(p, "nodeid=3D")) { > + q =3D strchr(p, '=3D'); > + if (*++q =3D=3D '\0') /* skip '=3D' */ > + return (-1); > + > + nodeid =3D strtol(q, &e, 0); > + if (e =3D=3D q || *e !=3D '\0') > + return (-1); > + > + pmc_config->pm_md.pm_cmn600.pma_cmn600_nodeid |=3D= nodeid; > + > + } else if (KWPREFIXMATCH(p, "occupancy=3D")) { > + q =3D strchr(p, '=3D'); > + if (*++q =3D=3D '\0') /* skip '=3D' */ > + return (-1); > + > + occupancy =3D strtol(q, &e, 0); > + if (e =3D=3D q || *e !=3D '\0') > + return (-1); > + > + pmc_config->pm_md.pm_cmn600.pma_cmn600_occupancy = =3D occupancy; > + } else if (KWPREFIXMATCH(p, "xpport=3D")) { > + q =3D strchr(p, '=3D'); > + if (*++q =3D=3D '\0') /* skip '=3D' */ > + return (-1); > + > + xpport =3D strtol(q, &e, 0); > + if (e =3D=3D q || *e !=3D '\0') { > + for (i =3D 0; i < nitems(xpport_names); = i++) { > + if (strcasecmp(xpport_names[i], = q) =3D=3D 0) { > + xpport =3D i; > + break; > + } > + } > + if (i =3D=3D nitems(xpport_names)) > + return (-1); > + } > + > + pmc_config->pm_md.pm_cmn600.pma_cmn600_config |=3D= xpport << 2; > + } else if (KWPREFIXMATCH(p, "xpchannel=3D")) { > + q =3D strchr(p, '=3D'); > + if (*++q =3D=3D '\0') /* skip '=3D' */ > + return (-1); > + > + xpchannel =3D strtol(q, &e, 0); > + if (e =3D=3D q || *e !=3D '\0') { > + for (i =3D 0; i < = nitems(xpchannel_names); i++) { > + if = (strcasecmp(xpchannel_names[i], q) =3D=3D 0) { > + xpchannel =3D i; > + break; > + } > + } > + if (i =3D=3D nitems(xpchannel_names)) > + return (-1); > + } > + > + pmc_config->pm_md.pm_cmn600.pma_cmn600_config |=3D= xpchannel << 5; > + } else > + return (-1); > + } > + > + return (0); > +} > + > +static int > +dmc620_pmu_allocate_pmc(enum pmc_event pe, char *ctrspec, > + struct pmc_op_pmcallocate *pmc_config) > +{ > + char *e, *p, *q; > + uint64_t match, mask; > + uint32_t count; > + > + pmc_config->pm_caps |=3D (PMC_CAP_READ | PMC_CAP_WRITE); > + pmc_config->pm_caps |=3D PMC_CAP_SYSTEM; > + pmc_config->pm_md.pm_dmc620.pm_dmc620_config =3D 0; > + > + while ((p =3D strsep(&ctrspec, ",")) !=3D NULL) { > + if (KWPREFIXMATCH(p, "count=3D")) { > + q =3D strchr(p, '=3D'); > + if (*++q =3D=3D '\0') /* skip '=3D' */ > + return (-1); > + > + count =3D strtol(q, &e, 0); > + if (e =3D=3D q || *e !=3D '\0') > + return (-1); > + > + pmc_config->pm_caps |=3D PMC_CAP_THRESHOLD; > + pmc_config->pm_md.pm_dmc620.pm_dmc620_config |=3D = count; > + > + } else if (KWMATCH(p, "inv")) { > + pmc_config->pm_caps |=3D PMC_CAP_INVERT; > + } else if (KWPREFIXMATCH(p, "match=3D")) { > + match =3D strtol(q, &e, 0); > + if (e =3D=3D q || *e !=3D '\0') > + return (-1); > + > + pmc_config->pm_caps |=3D PMC_CAP_QUALIFIER; > + pmc_config->pm_md.pm_dmc620.pm_dmc620_match =3D = match; > + } else if (KWPREFIXMATCH(p, "mask=3D")) { > + q =3D strchr(p, '=3D'); > + if (*++q =3D=3D '\0') /* skip '=3D' */ > + return (-1); > + > + mask =3D strtol(q, &e, 0); > + if (e =3D=3D q || *e !=3D '\0') > + return (-1); > + > + pmc_config->pm_md.pm_dmc620.pm_dmc620_mask =3D = mask; > + pmc_config->pm_caps |=3D PMC_CAP_QUALIFIER; > + } else > + return (-1); > + } > + > + return (0); > +} > #endif >=20 > #if defined(__powerpc__) > @@ -1156,6 +1306,18 @@ pmc_event_names_of_class(enum pmc_class cl, = const char ***eventnames, > break; > } > break; > + case PMC_CLASS_CMN600_PMU: > + ev =3D cmn600_pmu_event_table; > + count =3D PMC_EVENT_TABLE_SIZE(cmn600_pmu); > + break; > + case PMC_CLASS_DMC620_PMU_CD2: > + ev =3D dmc620_pmu_cd2_event_table; > + count =3D PMC_EVENT_TABLE_SIZE(dmc620_pmu_cd2); > + break; > + case PMC_CLASS_DMC620_PMU_C: > + ev =3D dmc620_pmu_c_event_table; > + count =3D PMC_EVENT_TABLE_SIZE(dmc620_pmu_c); > + break; > case PMC_CLASS_PPC7450: > ev =3D ppc7450_event_table; > count =3D PMC_EVENT_TABLE_SIZE(ppc7450); > @@ -1313,6 +1475,10 @@ pmc_init(void) >=20 > /* Fill soft events information. */ > pmc_class_table[n++] =3D &soft_class_table_descr; > + > + pmc_class_table[n++] =3D &cmn600_pmu_class_table_descr; > + pmc_class_table[n++] =3D &dmc620_pmu_cd2_class_table_descr; > + pmc_class_table[n++] =3D &dmc620_pmu_c_class_table_descr; > #if defined(__amd64__) || defined(__i386__) > if (cpu_info.pm_cputype !=3D PMC_CPU_GENERIC) > pmc_class_table[n++] =3D &tsc_class_table_descr; > @@ -1481,6 +1647,21 @@ _pmc_name_of_event(enum pmc_event pe, enum = pmc_cputype cpu) > default: /* Unknown CPU type. */ > break; > } > + } else if (pe >=3D PMC_EV_CMN600_PMU_FIRST && > + pe <=3D PMC_EV_CMN600_PMU_LAST) { > + ev =3D cmn600_pmu_event_table; > + evfence =3D cmn600_pmu_event_table + > + PMC_EVENT_TABLE_SIZE(cmn600_pmu); > + } else if (pe >=3D PMC_EV_DMC620_PMU_CD2_FIRST && > + pe <=3D PMC_EV_DMC620_PMU_CD2_LAST) { > + ev =3D dmc620_pmu_cd2_event_table; > + evfence =3D dmc620_pmu_cd2_event_table + > + PMC_EVENT_TABLE_SIZE(dmc620_pmu_cd2); > + } else if (pe >=3D PMC_EV_DMC620_PMU_C_FIRST && > + pe <=3D PMC_EV_DMC620_PMU_C_LAST) { > + ev =3D dmc620_pmu_c_event_table; > + evfence =3D dmc620_pmu_c_event_table + > + PMC_EVENT_TABLE_SIZE(dmc620_pmu_c); > } else if (pe >=3D PMC_EV_PPC7450_FIRST && pe <=3D = PMC_EV_PPC7450_LAST) { > ev =3D ppc7450_event_table; > evfence =3D ppc7450_event_table + = PMC_EVENT_TABLE_SIZE(ppc7450); > diff --git a/sys/arm64/include/cmn600_reg.h = b/sys/arm64/include/cmn600_reg.h > new file mode 100644 > index 000000000000..ffc4634f2781 > --- /dev/null > +++ b/sys/arm64/include/cmn600_reg.h > @@ -0,0 +1,793 @@ > +/*- > + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD > + * > + * Copyright (c) 2021 ARM Ltd > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above = copyright > + * notice, this list of conditions and the following disclaimer in = the > + * documentation and/or other materials provided with the = distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS = OR > + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED = WARRANTIES > + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE = DISCLAIMED. > + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, > + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES = (INCLUDING, > + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; > + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER = CAUSED > + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT = LIABILITY, > + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE = POSSIBILITY OF > + * SUCH DAMAGE. > + * > + * $FreeBSD$ > + */ > + > +#ifndef _MACHINE_CMN600_REG_H_ > +#define _MACHINE_CMN600_REG_H_ > + > +#define CMN600_COUNTERS_N 8 > +#define CMN600_UNIT_MAX 4 > +#define CMN600_PMU_DEFAULT_UNITS_N 2 > +#define CMN600_COMMON_PMU_EVENT_SEL 0x2000 /* rw */ > +#define CMN600_COMMON_PMU_EVENT_SEL_OCC_SHIFT 32 > +#define CMN600_COMMON_PMU_EVENT_SEL_OCC_MASK (0x7UL = << 32) > + > +struct cmn600_pmc { > + void *arg; > + int domain; > +}; > + > +int cmn600_pmc_nunits(void); > +int cmn600_pmc_getunit(int unit, void **arg, int *domain); > + > +int cmn600_pmu_intr_cb(void *arg, int (*handler)(struct trapframe = *tf, > + int unit, int i)); > + > +int pmu_cmn600_alloc_localpmc(void *arg, int nodeid, int node_type, > + int *local_counter); > +int pmu_cmn600_free_localpmc(void *arg, int nodeid, int node_type, > + int local_counter); > +int pmu_cmn600_rev(void *arg); > +uint32_t pmu_cmn600_rd4(void *arg, int nodeid, int node_type, off_t = reg); > +int pmu_cmn600_wr4(void *arg, int nodeid, int node_type, off_t reg, > + uint32_t val); > +uint64_t pmu_cmn600_rd8(void *arg, int nodeid, int node_type, off_t = reg); > +int pmu_cmn600_wr8(void *arg, int nodeid, int node_type, off_t reg, > + uint64_t val); > +int pmu_cmn600_set8(void *arg, int nodeid, int node_type, off_t reg, > + uint64_t val); > +int pmu_cmn600_clr8(void *arg, int nodeid, int node_type, off_t reg, > + uint64_t val); > +int pmu_cmn600_md8(void *arg, int nodeid, int node_type, off_t reg, > + uint64_t mask, uint64_t val); > + > +/* Configuration master registers */ > +#define POR_CFGM_NODE_INFO 0x0000 /* ro */ > +#define POR_CFGM_NODE_INFO_LOGICAL_ID_MASK = 0xffff00000000UL > +#define POR_CFGM_NODE_INFO_LOGICAL_ID_SHIFT 32 > +#define POR_CFGM_NODE_INFO_NODE_ID_MASK = 0xffff0000 > +#define POR_CFGM_NODE_INFO_NODE_ID_SHIFT 16 > +#define POR_CFGM_NODE_INFO_NODE_TYPE_MASK 0xffff > +#define POR_CFGM_NODE_INFO_NODE_TYPE_SHIFT 0 > + > +#define NODE_TYPE_INVALID 0x000 > +#define NODE_TYPE_DVM 0x001 > +#define NODE_TYPE_CFG 0x002 > +#define NODE_TYPE_DTC 0x003 > +#define NODE_TYPE_HN_I 0x004 > +#define NODE_TYPE_HN_F 0x005 > +#define NODE_TYPE_XP 0x006 > +#define NODE_TYPE_SBSX 0x007 > +#define NODE_TYPE_RN_I 0x00A > +#define NODE_TYPE_RN_D 0x00D > +#define NODE_TYPE_RN_SAM 0x00F > +#define NODE_TYPE_CXRA 0x100 > +#define NODE_TYPE_CXHA 0x101 > +#define NODE_TYPE_CXLA 0x102 > + > +#define POR_CFGM_PERIPH_ID_0_PERIPH_ID_1 0x0008 /* ro */ > +#define POR_CFGM_PERIPH_ID_2_PERIPH_ID_3 0x0010 /* ro */ > +#define POR_CFGM_PERIPH_ID_2_REV_SHIFT = 4 > +#define POR_CFGM_PERIPH_ID_2_REV_MASK = 0xf0 > +#define POR_CFGM_PERIPH_ID_2_REV_R1P0 = 0 > +#define POR_CFGM_PERIPH_ID_2_REV_R1P1 = 1 > +#define POR_CFGM_PERIPH_ID_2_REV_R1P2 = 2 > +#define POR_CFGM_PERIPH_ID_2_REV_R1P3 = 3 > +#define POR_CFGM_PERIPH_ID_2_REV_R2P0 = 4 > +#define POR_CFGM_PERIPH_ID_4_PERIPH_ID_5 0x0018 /* ro */ > +#define POR_CFGM_PERIPH_ID_6_PERIPH_ID_7 0x0020 /* ro */ > +#define POR_CFGM_PERIPH_ID_32(x) (0x0008 + ((x) * = 4)) /* ro 32 */ > +#define POR_CFGM_COMPONENT_ID_0_COMPONENT_ID_1 0x0028 /* ro */ > +#define POR_CFGM_COMPONENT_ID_2_COMPONENT_ID_3 0x0030 /* ro */ > +#define POR_CFGM_CHILD_INFO 0x0080 /* ro */ > +#define POR_CFGM_CHILD_INFO_CHILD_PTR_OFFSET_MASK = 0xffff0000 > +#define POR_CFGM_CHILD_INFO_CHILD_PTR_OFFSET_SHIFT = 16 > +#define POR_CFGM_CHILD_INFO_CHILD_COUNT_MASK = 0x0000ffff > +#define POR_CFGM_CHILD_INFO_CHILD_COUNT_SHIFT = 0 > +#define POR_CFGM_SECURE_ACCESS 0x0980 /* rw */ > +#define POR_CFGM_ERRGSR0 0x3000 /* ro */ > +#define POR_CFGM_ERRGSR1 0x3008 /* ro */ > +#define POR_CFGM_ERRGSR2 0x3010 /* ro */ > +#define POR_CFGM_ERRGSR3 0x3018 /* ro */ > +#define POR_CFGM_ERRGSR4 0x3020 /* ro */ > +#define POR_CFGM_ERRGSR5 0x3080 /* ro */ > +#define POR_CFGM_ERRGSR6 0x3088 /* ro */ > +#define POR_CFGM_ERRGSR7 0x3090 /* ro */ > +#define POR_CFGM_ERRGSR8 0x3098 /* ro */ > +#define POR_CFGM_ERRGSR9 0x30a0 /* ro */ > +#define POR_CFGM_ERRGSR(x) (0x3000 + ((x) * = 8)) /* ro */ > +#define POR_CFGM_ERRGSR0_ns 0x3100 /* ro */ > +#define POR_CFGM_ERRGSR1_ns 0x3108 /* ro */ > +#define POR_CFGM_ERRGSR2_ns 0x3110 /* ro */ > +#define POR_CFGM_ERRGSR3_ns 0x3118 /* ro */ > +#define POR_CFGM_ERRGSR4_ns 0x3120 /* ro */ > +#define POR_CFGM_ERRGSR5_ns 0x3180 /* ro */ > +#define POR_CFGM_ERRGSR6_ns 0x3188 /* ro */ > +#define POR_CFGM_ERRGSR7_ns 0x3190 /* ro */ > +#define POR_CFGM_ERRGSR8_ns 0x3198 /* ro */ > +#define POR_CFGM_ERRGSR9_ns 0x31a0 /* ro */ > +#define POR_CFGM_ERRGSR_ns(x) (0x3100 + ((x) * = 8)) /* ro */ > +#define POR_CFGM_ERRDEVAFF 0x3fa8 /* ro */ > +#define POR_CFGM_ERRDEVARCH 0x3fb8 /* ro */ > +#define POR_CFGM_ERRIDR 0x3fc8 /* ro */ > +#define POR_CFGM_ERRPIDR45 0x3fd0 /* ro */ > +#define POR_CFGM_ERRPIDR67 0x3fd8 /* ro */ > +#define POR_CFGM_ERRPIDR01 0x3fe0 /* ro */ > +#define POR_CFGM_ERRPIDR23 0x3fe8 /* ro */ > +#define POR_CFGM_ERRCIDR01 0x3ff0 /* ro */ > +#define POR_CFGM_ERRCIDR23 0x3ff8 /* ro */ > +#define POR_INFO_GLOBAL 0x0900 /* ro */ > +#define POR_INFO_GLOBAL_CHIC_MODE_EN = (1UL << 49) /* CHI-C mode enable */ > +#define POR_INFO_GLOBAL_R2_ENABLE = (1UL << 48) /* CMN R2 feature enable */ > +#define POR_INFO_GLOBAL_RNSAM_NUM_ADD_HASHED_TGT_SHIFT = 36 /* Number of additional hashed target ID's supported by the RN SAM, = beyond the local HNF count */ > +#define POR_INFO_GLOBAL_RNSAM_NUM_ADD_HASHED_TGT_MASK = (0x3fUL << 36) > +#define POR_INFO_GLOBAL_NUM_REMOTE_RNF_SHIFT = 28 /* Number of remote RN-F devices in the system when the CML feature = is enabled */ > +#define POR_INFO_GLOBAL_NUM_REMOTE_RNF_MASK = (0xffUL << 28) > +#define POR_INFO_GLOBAL_FLIT_PARITY_EN = (1 << 25) /* Indicates whether parity checking is enabled in the = transport layer on all flits sent on the interconnect */ > +#define POR_INFO_GLOBAL_DATACHECK_EN = (1 << 24) /* Indicates whether datacheck feature is enabled for CHI DAT = flit */ > +#define POR_INFO_GLOBAL_PHYSICAL_ADDRESS_WIDTH_SHIFT = 16 /* Physical address width */ > +#define POR_INFO_GLOBAL_PHYSICAL_ADDRESS_WIDTH_MASK = (0xff << 16) > +#define POR_INFO_GLOBAL_CHI_REQ_ADDR_WIDTH_SHIFT = 8 /* REQ address width */ > +#define POR_INFO_GLOBAL_CHI_REQ_ADDR_WIDTH_MASK = (0xff << 8) > +#define POR_INFO_GLOBAL_CHI_REQ_RSVDC_WIDTH_SHIFT = 0 /* RSVDC field width in CHI REQ flit */ > +#define POR_INFO_GLOBAL_CHI_REQ_RSVDC_WIDTH_MASK = 0xff > + > +#define POR_PPU_INT_ENABLE 0x1000 /* rw */ > +#define POR_PPU_INT_STATUS 0x1008 /* w1c = */ > +#define POR_PPU_QACTIVE_HYST 0x1010 /* rw */ > +#define POR_CFGM_CHILD_POINTER_0 0x0100 /* ro */ > +#define POR_CFGM_CHILD_POINTER(x) = (POR_CFGM_CHILD_POINTER_0 + ((x) * 8)) > +#define POR_CFGM_CHILD_POINTER_EXT (1 << 31) > +#define POR_CFGM_CHILD_POINTER_BASE_MASK 0x0fffffffUL > + > +/* DN registers */ > +#define POR_DN_NODE_INFO 0x0000 /* ro */ > +#define POR_DN_CHILD_INFO 0x0080 /* ro */ > +#define POR_DN_BUILD_INFO 0x0900 /* ro */ > +#define POR_DN_SECURE_REGISTER_GROUPS_OVERRIDE 0x0980 /* rw */ > +#define POR_DN_AUX_CTL 0x0a00 /* rw */ > +#define POR_DN_VMF0_CTRL 0x0c00 /* rw */ > +#define POR_DN_VMF0_RNF0 0x0c08 /* rw */ > +#define POR_DN_VMF0_RND 0x0c10 /* rw */ > +#define POR_DN_VMF0_CXRA 0x0c18 /* rw */ > +#define POR_DN_VMF1_CTRL 0x0c20 /* rw */ > +#define POR_DN_VMF1_RNF0 0x0c28 /* rw */ > +#define POR_DN_VMF1_RND 0x0c30 /* rw */ > +#define POR_DN_VMF1_CXRA 0x0c38 /* rw */ > +#define POR_DN_VMF2_CTRL 0x0c40 /* rw */ > +#define POR_DN_VMF2_RNF0 0x0c48 /* rw */ > +#define POR_DN_VMF2_RND 0x0c50 /* rw */ > +#define POR_DN_VMF2_CXRA 0x0c58 /* rw */ > +#define POR_DN_VMF3_CTRL 0x0c60 /* rw */ > +#define POR_DN_VMF3_RNF0 0x0c68 /* rw */ > +#define POR_DN_VMF3_RND 0x0c70 /* rw */ > +#define POR_DN_VMF3_CXRA 0x0c78 /* rw */ > +#define POR_DN_VMF4_CTRL 0x0c80 /* rw */ > +#define POR_DN_VMF4_RNF0 0x0c88 /* rw */ > +#define POR_DN_VMF4_RND 0x0c90 /* rw */ > +#define POR_DN_VMF4_CXRA 0x0c98 /* rw */ > +#define POR_DN_VMF5_CTRL 0x0ca0 /* rw */ > +#define POR_DN_VMF5_RNF0 0x0ca8 /* rw */ > +#define POR_DN_VMF5_RND 0x0cb0 /* rw */ > +#define POR_DN_VMF5_CXRA 0x0cb8 /* rw */ > +#define POR_DN_VMF6_CTRL 0x0cc0 /* rw */ > +#define POR_DN_VMF6_RNF0 0x0cc8 /* rw */ > +#define POR_DN_VMF6_RND 0x0cd0 /* rw */ > +#define POR_DN_VMF6_CXRA 0x0cd8 /* rw */ > +#define POR_DN_VMF7_CTRL 0x0ce0 /* rw */ > +#define POR_DN_VMF7_RNF0 0x0ce8 /* rw */ > +#define POR_DN_VMF7_RND 0x0cf0 /* rw */ > +#define POR_DN_VMF7_CXRA 0x0cf8 /* rw */ > +#define POR_DN_VMF8_CTRL 0x0d00 /* rw */ > +#define POR_DN_VMF8_RNF0 0x0d08 /* rw */ > +#define POR_DN_VMF8_RND 0x0d10 /* rw */ > +#define POR_DN_VMF8_CXRA 0x0d18 /* rw */ > +#define POR_DN_VMF9_CTRL 0x0d20 /* rw */ > +#define POR_DN_VMF9_RNF0 0x0d28 /* rw */ > +#define POR_DN_VMF9_RND 0x0d30 /* rw */ > +#define POR_DN_VMF9_CXRA 0x0d38 /* rw */ > +#define POR_DN_VMF10_CTRL 0x0d40 /* rw */ > +#define POR_DN_VMF10_RNF0 0x0d48 /* rw */ > +#define POR_DN_VMF10_RND 0x0d50 /* rw */ > +#define POR_DN_VMF10_CXRA 0x0d58 /* rw */ > +#define POR_DN_VMF11_CTRL 0x0d60 /* rw */ > +#define POR_DN_VMF11_RNF0 0x0d68 /* rw */ > +#define POR_DN_VMF11_RND 0x0d70 /* rw */ > +#define POR_DN_VMF11_CXRA 0x0d78 /* rw */ > +#define POR_DN_VMF12_CTRL 0x0d80 /* rw */ > +#define POR_DN_VMF12_RNF0 0x0d88 /* rw */ > +#define POR_DN_VMF12_RND 0x0d90 /* rw */ > +#define POR_DN_VMF12_CXRA 0x0d98 /* rw */ > +#define POR_DN_VMF13_CTRL 0x0da0 /* rw */ > +#define POR_DN_VMF13_RNF0 0x0da8 /* rw */ > +#define POR_DN_VMF13_RND 0x0db0 /* rw */ > +#define POR_DN_VMF13_CXRA 0x0db8 /* rw */ > +#define POR_DN_VMF14_CTRL 0x0dc0 /* rw */ > +#define POR_DN_VMF14_RNF0 0x0dc8 /* rw */ > +#define POR_DN_VMF14_RND 0x0dd0 /* rw */ > +#define POR_DN_VMF14_CXRA 0x0dd8 /* rw */ > +#define POR_DN_VMF15_CTRL 0x0de0 /* rw */ > +#define POR_DN_VMF15_RNF0 0x0de8 /* rw */ > +#define POR_DN_VMF15_RND 0x0df0 /* rw */ > +#define POR_DN_VMF15_CXRA 0x0df8 /* rw */ > +#define POR_DN_PMU_EVENT_SEL 0x2000 /* rw */ > +#define POR_DN_PMU_EVENT_SEL_OCCUP1_ID_SHIFT 32 > +#define POR_DN_PMU_EVENT_SEL_OCCUP1_ID_MASK (0xf << = 32) > +#define POR_DN_PMU_EVENT_SEL_OCCUP1_ID_ALL = 0 > +#define POR_DN_PMU_EVENT_SEL_OCCUP1_ID_DVM_OPS = 1 > +#define POR_DN_PMU_EVENT_SEL_OCCUP1_ID_DVM_SYNCS = 2 > +#define POR_DN_PMU_EVENT_SEL_EVENT_ID3_SHIFT 24 > +#define POR_DN_PMU_EVENT_SEL_EVENT_ID3_MASK (0x3f << = 24) > +#define POR_DN_PMU_EVENT_SEL_EVENT_ID2_SHIFT 16 > +#define POR_DN_PMU_EVENT_SEL_EVENT_ID2_MASK (0x3f << = 16) > +#define POR_DN_PMU_EVENT_SEL_EVENT_ID1_SHIFT 8 > +#define POR_DN_PMU_EVENT_SEL_EVENT_ID1_MASK (0x3f << = 8) > +#define POR_DN_PMU_EVENT_SEL_EVENT_ID0_SHIFT 0 > +#define POR_DN_PMU_EVENT_SEL_EVENT_ID0_MASK 0x3f > + > +/* Debug and trace register */ > +#define POR_DT_NODE_INFO 0x0000 /* ro */ > +#define POR_DT_CHILD_INFO 0x0080 /* ro */ > +#define POR_DT_SECURE_ACCESS 0x0980 /* rw */ > +#define POR_DT_DTC_CTL 0x0a00 /* rw */ > +#define POR_DT_DTC_CTL_DT_EN (1 << 0) > +#define POR_DT_TRIGGER_STATUS 0x0a10 /* ro */ > +#define POR_DT_TRIGGER_STATUS_CLR 0x0a20 /* wo */ > +#define POR_DT_TRACE_CONTROL 0x0a30 /* rw */ > +#define POR_DT_TRACEID 0x0a48 /* rw */ > +#define POR_DT_PMEVCNTAB 0x2000 /* rw */ > +#define POR_DT_PMEVCNTCD 0x2010 /* rw */ > +#define POR_DT_PMEVCNTEF 0x2020 /* rw */ > +#define POR_DT_PMEVCNTGH 0x2030 /* rw */ > +#define POR_DT_PMEVCNT(x) (0x2000 + ((x) * = 0x10)) > +#define POR_DT_PMCCNTR 0x2040 /* rw */ > +#define POR_DT_PMEVCNTSRAB 0x2050 /* rw */ > +#define POR_DT_PMEVCNTSRCD 0x2060 /* rw */ > +#define POR_DT_PMEVCNTSREF 0x2070 /* rw */ > +#define POR_DT_PMEVCNTSRGH 0x2080 /* rw */ > +#define POR_DT_PMCCNTRSR 0x2090 /* rw */ > +#define POR_DT_PMCR 0x2100 /* rw */ > +#define POR_DT_PMCR_OVFL_INTR_EN (1 << 6) > +#define POR_DT_PMCR_CNTR_RST (1 << 5) > +#define POR_DT_PMCR_CNTCFG_SHIFT 1 > +#define POR_DT_PMCR_CNTCFG_MASK (0xf << = POR_DT_PMCR_CNTCFG_SHIFT) > +#define POR_DT_PMCR_PMU_EN (1 << 0) > +#define POR_DT_PMOVSR 0x2118 /* ro */ > +#define POR_DT_PMOVSR_CLR 0x2120 /* wo */ > +#define POR_DT_PMOVSR_EVENT_COUNTERS 0xffUL > +#define POR_DT_PMOVSR_CYCLE_COUNTER 0x100UL > +#define POR_DT_PMOVSR_ALL \ > + (POR_DT_PMOVSR_EVENT_COUNTERS | POR_DT_PMOVSR_CYCLE_COUNTER) > +#define POR_DT_PMSSR 0x2128 /* ro */ > +#define POR_DT_PMSRR 0x2130 /* wo */ > +#define POR_DT_CLAIM 0x2da0 /* rw */ > +#define POR_DT_DEVAFF 0x2da8 /* ro */ > +#define POR_DT_LSR 0x2db0 /* ro */ > +#define POR_DT_AUTHSTATUS_DEVARCH 0x2db8 /* ro */ > +#define POR_DT_DEVID 0x2dc0 /* ro */ > +#define POR_DT_DEVTYPE 0x2dc8 /* ro */ > +#define POR_DT_PIDR45 0x2dd0 /* ro */ > +#define POR_DT_PIDR67 0x2dd8 /* ro */ > +#define POR_DT_PIDR01 0x2de0 /* ro */ > +#define POR_DT_PIDR23 0x2de8 /* ro */ > +#define POR_DT_CIDR01 0x2df0 /* ro */ > +#define POR_DT_CIDR23 0x2df8 /* ro */ > + > +/* HN-F registers */ > +#define POR_HNF_NODE_INFO 0x0000 /* ro */ > +#define POR_HNF_CHILD_INFO 0x0080 /* ro */ > +#define POR_HNF_SECURE_REGISTER_GROUPS_OVERRIDE 0x0980 /* rw */ > +#define POR_HNF_UNIT_INFO 0x0900 /* ro */ > +#define POR_HNF_CFG_CTL 0x0a00 /* rw */ > +#define POR_HNF_AUX_CTL 0x0a08 /* rw */ > +#define POR_HNF_R2_AUX_CTL 0x0a10 /* rw */ > +#define POR_HNF_PPU_PWPR 0x1000 /* rw */ > +#define POR_HNF_PPU_PWSR 0x1008 /* ro */ > +#define POR_HNF_PPU_MISR 0x1014 /* ro */ > +#define POR_HNF_PPU_IDR0 0x1fb0 /* ro */ > +#define POR_HNF_PPU_IDR1 0x1fb4 /* ro */ > +#define POR_HNF_PPU_IIDR 0x1fc8 /* ro */ > +#define POR_HNF_PPU_AIDR 0x1fcc /* ro */ > +#define POR_HNF_PPU_DYN_RET_THRESHOLD 0x1100 /* rw */ > +#define POR_HNF_QOS_BAND 0x0a80 /* ro */ > +#define POR_HNF_QOS_RESERVATION 0x0a88 /* rw */ > +#define POR_HNF_RN_STARVATION 0x0a90 /* rw */ > +#define POR_HNF_ERRFR 0x3000 /* ro */ > +#define POR_HNF_ERRCTLR 0x3008 /* rw */ > +#define POR_HNF_ERRSTATUS 0x3010 /* w1c = */ > +#define POR_HNF_ERRADDR 0x3018 /* rw */ > +#define POR_HNF_ERRMISC 0x3020 /* rw */ > +#define POR_HNF_ERR_INJ 0x3030 /* rw */ > +#define POR_HNF_BYTE_PAR_ERR_INJ 0x3038 /* wo */ > +#define POR_HNF_ERRFR_NS 0x3100 /* ro */ > +#define POR_HNF_ERRCTLR_NS 0x3108 /* rw */ > +#define POR_HNF_ERRSTATUS_NS 0x3110 /* w1c = */ > +#define POR_HNF_ERRADDR_NS 0x3118 /* rw */ > +#define POR_HNF_ERRMISC_NS 0x3120 /* rw */ > +#define POR_HNF_SLC_LOCK_WAYS 0x0c00 /* rw */ > +#define POR_HNF_SLC_LOCK_BASE0 0x0c08 /* rw */ > +#define POR_HNF_SLC_LOCK_BASE1 0x0c10 /* rw */ > +#define POR_HNF_SLC_LOCK_BASE2 0x0c18 /* rw */ > +#define POR_HNF_SLC_LOCK_BASE3 0x0c20 /* rw */ > +#define POR_HNF_RNF_REGION_VEC1 0x0c28 /* rw */ > +#define POR_HNF_RNI_REGION_VEC 0x0c30 /* rw */ > +#define POR_HNF_RNF_REGION_VEC 0x0c38 /* rw */ > +#define POR_HNF_RND_REGION_VEC 0x0c40 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION0_RNF_VEC 0x0c48 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION1_RNF_VEC 0x0c50 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION2_RNF_VEC 0x0c58 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION3_RNF_VEC 0x0c60 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION0_RNF_VEC1 0x0cb0 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION1_RNF_VEC1 0x0cb8 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION2_RNF_VEC1 0x0cc0 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION3_RNF_VEC1 0x0cc8 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION0_RNI_VEC 0x0c68 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION1_RNI_VEC 0x0c70 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION2_RNI_VEC 0x0c78 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION3_RNI_VEC 0x0c80 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION0_RND_VEC 0x0c88 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION1_RND_VEC 0x0c90 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION2_RND_VEC 0x0c98 /* rw */ > +#define POR_HNF_SLCWAY_PARTITION3_RND_VEC 0x0ca0 /* rw */ > +#define POR_HNF_RN_REGION_LOCK 0x0ca8 /* rw */ > +#define POR_HNF_SAM_CONTROL 0x0d00 /* rw */ > +#define POR_HNF_SAM_MEMREGION0 0x0d08 /* rw */ > +#define POR_HNF_SAM_MEMREGION1 0x0d10 /* rw */ > +#define POR_HNF_SAM_SN_PROPERTIES 0x0d18 /* rw */ > +#define POR_HNF_SAM_6SN_NODEID 0x0d20 /* rw */ > +#define POR_HNF_RN_PHYS_ID(x) (0x0d28 + 8 * = (x)) /* rw */ > +#define POR_HNF_RN_PHYS_ID63 0x0f90 /* rw */ > +#define POR_HNF_SF_CXG_BLOCKED_WAYS 0x0f00 /* rw */ > +#define POR_HNF_CML_PORT_AGGR_GRP0_ADD_MASK 0x0f10 /* rw */ > +#define POR_HNF_CML_PORT_AGGR_GRP1_ADD_MASK 0x0f18 /* rw */ > +#define POR_HNF_CML_PORT_AGGR_GRP0_REG 0x0f28 /* rw */ > +#define POR_HNF_CML_PORT_AGGR_GRP1_REG 0x0f30 /* rw */ > +#define HN_SAM_HASH_ADDR_MASK_REG 0x0f40 /* rw */ > +#define HN_SAM_REGION_CMP_ADDR_MASK_REG 0x0f48 /* rw */ > +#define POR_HNF_ABF_LO_ADDR 0x0f50 /* rw */ > +#define POR_HNF_ABF_HI_ADDR 0x0f58 /* rw */ > +#define POR_HNF_ABF_PR 0x0f60 /* rw */ > +#define POR_HNF_ABF_SR 0x0f68 /* ro */ > +#define POR_HNF_LDID_MAP_TABLE_REG0 0x0f98 /* rw */ > +#define POR_HNF_LDID_MAP_TABLE_REG1 0x0fa0 /* rw */ > +#define POR_HNF_LDID_MAP_TABLE_REG2 0x0fa8 /* rw */ > +#define POR_HNF_LDID_MAP_TABLE_REG3 0x0fb0 /* rw */ > +#define POR_HNF_CFG_SLCSF_DBGRD 0x0b80 /* wo */ > +#define POR_HNF_SLC_CACHE_ACCESS_SLC_TAG 0x0b88 /* ro */ > +#define POR_HNF_SLC_CACHE_ACCESS_SLC_DATA 0x0b90 /* ro */ > +#define POR_HNF_SLC_CACHE_ACCESS_SF_TAG 0x0b98 /* ro */ > +#define POR_HNF_SLC_CACHE_ACCESS_SF_TAG1 0x0ba0 /* ro */ > +#define POR_HNF_SLC_CACHE_ACCESS_SF_TAG2 0x0ba8 /* ro */ > +#define POR_HNF_PMU_EVENT_SEL 0x2000 /* rw */ > + > +/* HN-I registers */ > +#define POR_HNI_NODE_INFO 0x0000 /* ro */ > +#define POR_HNI_CHILD_INFO 0x0080 /* ro */ > +#define POR_HNI_SECURE_REGISTER_GROUPS_OVERRIDE 0x0980 /* rw */ > +#define POR_HNI_UNIT_INFO 0x0900 /* ro */ > +#define POR_HNI_SAM_ADDRREGION0_CFG 0x0c00 /* rw */ > +#define POR_HNI_SAM_ADDRREGION1_CFG 0x0c08 /* rw */ > +#define POR_HNI_SAM_ADDRREGION2_CFG 0x0c10 /* rw */ > +#define POR_HNI_SAM_ADDRREGION3_CFG 0x0c18 /* rw */ > +#define POR_HNI_CFG_CTL 0x0a00 /* rw */ > +#define POR_HNI_AUX_CTL 0x0a08 /* rw */ > +#define POR_HNI_ERRFR 0x3000 /* ro */ > +#define POR_HNI_ERRCTLR 0x3008 /* rw */ > +#define POR_HNI_ERRSTATUS 0x3010 /* w1c = */ > +#define POR_HNI_ERRADDR 0x3018 /* rw */ > +#define POR_HNI_ERRMISC 0x3020 /* rw */ > +#define POR_HNI_ERRFR_NS 0x3100 /* ro */ > +#define POR_HNI_ERRCTLR_NS 0x3108 /* rw */ > +#define POR_HNI_ERRSTATUS_NS 0x3110 /* w1c = */ > +#define POR_HNI_ERRADDR_NS 0x3118 /* rw */ > +#define POR_HNI_ERRMISC_NS 0x3120 /* rw */ > +#define POR_HNI_PMU_EVENT_SEL 0x2000 /* rw */ > + > +/* XP registers */ > +#define POR_MXP_NODE_INFO 0x0000 /* ro */ > +#define POR_MXP_DEVICE_PORT_CONNECT_INFO_P0 0x0008 /* ro */ > +#define POR_MXP_DEVICE_PORT_CONNECT_INFO_P1 0x0010 /* ro */ > +#define POR_MXP_MESH_PORT_CONNECT_INFO_EAST 0x0018 /* ro */ > +#define POR_MXP_MESH_PORT_CONNECT_INFO_NORTH 0x0020 /* ro */ > +#define POR_MXP_CHILD_INFO 0x0080 /* ro */ > +#define POR_MXP_CHILD_POINTER_0 0x0100 /* ro */ > +#define POR_MXP_CHILD_POINTER_1 0x0108 /* ro */ > +#define POR_MXP_CHILD_POINTER_2 0x0110 /* ro */ > +#define POR_MXP_CHILD_POINTER_3 0x0118 /* ro */ > +#define POR_MXP_CHILD_POINTER_4 0x0120 /* ro */ > +#define POR_MXP_CHILD_POINTER_5 0x0128 /* ro */ > +#define POR_MXP_CHILD_POINTER_6 0x0130 /* ro */ > +#define POR_MXP_CHILD_POINTER_7 0x0138 /* ro */ > +#define POR_MXP_CHILD_POINTER_8 0x0140 /* ro */ > +#define POR_MXP_CHILD_POINTER_9 0x0148 /* ro */ > +#define POR_MXP_CHILD_POINTER_10 0x0150 /* ro */ > +#define POR_MXP_CHILD_POINTER_11 0x0158 /* ro */ > +#define POR_MXP_CHILD_POINTER_12 0x0160 /* ro */ > +#define POR_MXP_CHILD_POINTER_13 0x0168 /* ro */ > +#define POR_MXP_CHILD_POINTER_14 0x0170 /* ro */ > +#define POR_MXP_CHILD_POINTER_15 0x0178 /* ro */ > +#define POR_MXP_P0_INFO 0x0900 /* ro */ > +#define POR_MXP_P1_INFO 0x0908 /* ro */ > +#define POR_MXP_PX_INFO_DEV_TYPE_RN_I = 0x01 > +#define POR_MXP_PX_INFO_DEV_TYPE_RN_D = 0x02 > +#define POR_MXP_PX_INFO_DEV_TYPE_RN_F_CHIB = 0x04 > +#define POR_MXP_PX_INFO_DEV_TYPE_RN_F_CHIB_ESAM = 0x05 > +#define POR_MXP_PX_INFO_DEV_TYPE_RN_F_CHIA = 0x06 > +#define POR_MXP_PX_INFO_DEV_TYPE_RN_F_CHIA_ESAM = 0x07 > +#define POR_MXP_PX_INFO_DEV_TYPE_HN_T = 0x08 > +#define POR_MXP_PX_INFO_DEV_TYPE_HN_I = 0x09 > +#define POR_MXP_PX_INFO_DEV_TYPE_HN_D = 0x0a > +#define POR_MXP_PX_INFO_DEV_TYPE_SN_F = 0x0c > +#define POR_MXP_PX_INFO_DEV_TYPE_SBSX = 0x0d > +#define POR_MXP_PX_INFO_DEV_TYPE_HN_F = 0x0e > +#define POR_MXP_PX_INFO_DEV_TYPE_CXHA = 0x11 > +#define POR_MXP_PX_INFO_DEV_TYPE_CXRA = 0x12 > +#define POR_MXP_PX_INFO_DEV_TYPE_CXRH = 0x13 > + > +#define POR_MXP_SECURE_REGISTER_GROUPS_OVERRIDE 0x0980 /* rw */ > +#define POR_MXP_AUX_CTL 0x0a00 /* rw */ > +#define POR_MXP_P0_QOS_CONTROL 0x0a80 /* rw */ > +#define POR_MXP_P0_QOS_LAT_TGT 0x0a88 /* rw */ > +#define POR_MXP_P0_QOS_LAT_SCALE 0x0a90 /* rw */ > +#define POR_MXP_P0_QOS_LAT_RANGE 0x0a98 /* rw */ > +#define POR_MXP_P1_QOS_CONTROL 0x0aa0 /* rw */ > +#define POR_MXP_P1_QOS_LAT_TGT 0x0aa8 /* rw */ > +#define POR_MXP_P1_QOS_LAT_SCALE 0x0ab0 /* rw */ > +#define POR_MXP_P1_QOS_LAT_RANGE 0x0ab8 /* rw */ > +#define POR_MXP_PMU_EVENT_SEL 0x2000 /* rw */ > + > +#define POR_MXP_ERRFR 0x3000 /* ro */ > +#define POR_MXP_ERRCTLR 0x3008 /* rw */ > +#define POR_MXP_ERRSTATUS 0x3010 /* w1c = */ > +#define POR_MXP_ERRMISC 0x3028 /* rw */ > +#define POR_MXP_P0_BYTE_PAR_ERR_INJ 0x3030 /* wo */ > +#define POR_MXP_P1_BYTE_PAR_ERR_INJ 0x3038 /* wo */ > +#define POR_MXP_ERRFR_NS 0x3100 /* ro */ > +#define POR_MXP_ERRCTLR_NS 0x3108 /* rw */ > +#define POR_MXP_ERRSTATUS_NS 0x3110 /* w1c = */ > +#define POR_MXP_ERRMISC_NS 0x3128 /* rw */ > +#define POR_MXP_P0_SYSCOREQ_CTL 0x1000 /* rw */ > +#define POR_MXP_P1_SYSCOREQ_CTL 0x1008 /* rw */ > +#define POR_MXP_P0_SYSCOACK_STATUS 0x1010 /* ro */ > +#define POR_MXP_P1_SYSCOACK_STATUS 0x1018 /* ro */ > +#define POR_DTM_CONTROL 0x2100 /* rw */ > +#define POR_DTM_CONTROL_TRACE_NO_ATB (1 << 3) > +#define POR_DTM_CONTROL_SAMPLE_PROFILE_ENABLE (1 << 2) > +#define POR_DTM_CONTROL_TRACE_TAG_ENABLE (1 << 1) > +#define POR_DTM_CONTROL_DTM_ENABLE (1 << 0) > +#define POR_DTM_FIFO_ENTRY_READY 0x2118 /* w1c = */ > +#define POR_DTM_FIFO_ENTRY0_0 0x2120 /* ro */ > +#define POR_DTM_FIFO_ENTRY0_1 0x2128 /* ro */ > +#define POR_DTM_FIFO_ENTRY0_2 0x2130 /* ro */ > +#define POR_DTM_FIFO_ENTRY1_0 0x2138 /* ro */ > +#define POR_DTM_FIFO_ENTRY1_1 0x2140 /* ro */ > +#define POR_DTM_FIFO_ENTRY1_2 0x2148 /* ro */ > +#define POR_DTM_FIFO_ENTRY2_0 0x2150 /* ro */ > +#define POR_DTM_FIFO_ENTRY2_1 0x2158 /* ro */ > +#define POR_DTM_FIFO_ENTRY2_2 0x2160 /* ro */ > +#define POR_DTM_FIFO_ENTRY3_0 0x2168 /* ro */ > +#define POR_DTM_FIFO_ENTRY3_1 0x2170 /* ro */ > +#define POR_DTM_FIFO_ENTRY3_2 0x2178 /* ro */ > +#define POR_DTM_WP0_CONFIG 0x21a0 /* rw */ > +#define POR_DTM_WP0_VAL 0x21a8 /* rw */ > +#define POR_DTM_WP0_MASK 0x21b0 /* rw */ > +#define POR_DTM_WP1_CONFIG 0x21b8 /* rw */ > +#define POR_DTM_WP1_VAL 0x21c0 /* rw */ > +#define POR_DTM_WP1_MASK 0x21c8 /* rw */ > +#define POR_DTM_WP2_CONFIG 0x21d0 /* rw */ > +#define POR_DTM_WP2_VAL 0x21d8 /* rw */ > +#define POR_DTM_WP2_MASK 0x21e0 /* rw */ > +#define POR_DTM_WP3_CONFIG 0x21e8 /* rw */ > +#define POR_DTM_WP3_VAL 0x21f0 /* rw */ > +#define POR_DTM_WP3_MASK 0x21f8 /* rw */ > +#define POR_DTM_PMSICR 0x2200 /* rw */ > +#define POR_DTM_PMSIRR 0x2208 /* rw */ > +#define POR_DTM_PMU_CONFIG 0x2210 /* rw */ > +#define POR_DTM_PMU_CONFIG_PMU_EN (1 << 0) > +#define POR_DTM_PMU_CONFIG_VCNT_INPUT_SEL_SHIFT 32 > +#define POR_DTM_PMU_CONFIG_VCNT_INPUT_SEL_WIDTH 8 > +#define POR_DTM_PMEVCNT 0x2220 /* rw */ > +#define POR_DTM_PMEVCNTSR 0x2240 /* rw */ > + > +/* RN-D registers */ > +#define POR_RND_NODE_INFO 0x0000 /* ro */ > +#define POR_RND_CHILD_INFO 0x0080 /* ro */ > +#define POR_RND_SECURE_REGISTER_GROUPS_OVERRIDE 0x0980 /* rw */ > +#define POR_RND_UNIT_INFO 0x0900 /* ro */ > +#define POR_RND_CFG_CTL 0x0a00 /* rw */ > +#define POR_RND_AUX_CTL 0x0a08 /* rw */ > +#define POR_RND_S0_PORT_CONTROL 0x0a10 /* rw */ > +#define POR_RND_S1_PORT_CONTROL 0x0a18 /* rw */ > +#define POR_RND_S2_PORT_CONTROL 0x0a20 /* rw */ > +#define POR_RND_S0_QOS_CONTROL 0x0a80 /* rw */ > +#define POR_RND_S0_QOS_LAT_TGT 0x0a88 /* rw */ > +#define POR_RND_S0_QOS_LAT_SCALE 0x0a90 /* rw */ > +#define POR_RND_S0_QOS_LAT_RANGE 0x0a98 /* rw */ > +#define POR_RND_S1_QOS_CONTROL 0x0aa0 /* rw */ > +#define POR_RND_S1_QOS_LAT_TGT 0x0aa8 /* rw */ > +#define POR_RND_S1_QOS_LAT_SCALE 0x0ab0 /* rw */ > +#define POR_RND_S1_QOS_LAT_RANGE 0x0ab8 /* rw */ > +#define POR_RND_S2_QOS_CONTROL 0x0ac0 /* rw */ > +#define POR_RND_S2_QOS_LAT_TGT 0x0ac8 /* rw */ > +#define POR_RND_S2_QOS_LAT_SCALE 0x0ad0 /* rw */ > +#define POR_RND_S2_QOS_LAT_RANGE 0x0ad8 /* rw */ > +#define POR_RND_PMU_EVENT_SEL 0x2000 /* rw */ > +#define POR_RND_SYSCOREQ_CTL 0x1000 /* rw */ > +#define POR_RND_SYSCOACK_STATUS 0x1008 /* ro */ > + > +/* RN-I registers */ > +#define POR_RNI_NODE_INFO 0x0000 /* ro */ > +#define POR_RNI_CHILD_INFO 0x0080 /* ro */ > +#define POR_RNI_SECURE_REGISTER_GROUPS_OVERRIDE 0x0980 /* rw */ > +#define POR_RNI_UNIT_INFO 0x0900 /* ro */ > +#define POR_RNI_CFG_CTL 0x0a00 /* rw */ > +#define POR_RNI_AUX_CTL 0x0a08 /* rw */ > +#define POR_RNI_S0_PORT_CONTROL 0x0a10 /* rw */ > +#define POR_RNI_S1_PORT_CONTROL 0x0a18 /* rw */ > +#define POR_RNI_S2_PORT_CONTROL 0x0a20 /* rw */ > +#define POR_RNI_S0_QOS_CONTROL 0x0a80 /* rw */ > +#define POR_RNI_S0_QOS_LAT_TGT 0x0a88 /* rw */ > +#define POR_RNI_S0_QOS_LAT_SCALE 0x0a90 /* rw */ > +#define POR_RNI_S0_QOS_LAT_RANGE 0x0a98 /* rw */ > +#define POR_RNI_S1_QOS_CONTROL 0x0aa0 /* rw */ > +#define POR_RNI_S1_QOS_LAT_TGT 0x0aa8 /* rw */ > +#define POR_RNI_S1_QOS_LAT_SCALE 0x0ab0 /* rw */ > +#define POR_RNI_S1_QOS_LAT_RANGE 0x0ab8 /* rw */ > +#define POR_RNI_S2_QOS_CONTROL 0x0ac0 /* rw */ > +#define POR_RNI_S2_QOS_LAT_TGT 0x0ac8 /* rw */ > +#define POR_RNI_S2_QOS_LAT_SCALE 0x0ad0 /* rw */ > +#define POR_RNI_S2_QOS_LAT_RANGE 0x0ad8 /* rw */ > +#define POR_RNI_PMU_EVENT_SEL 0x2000 /* rw */ > + > +/* RN SAM registers */ > +#define POR_RNSAM_NODE_INFO 0x0000 /* ro */ > +#define POR_RNSAM_CHILD_INFO 0x0080 /* ro */ > +#define POR_RNSAM_SECURE_REGISTER_GROUPS_OVERRIDE 0x0980 /* rw = */ > +#define POR_RNSAM_UNIT_INFO 0x0900 /* ro */ > +#define RNSAM_STATUS 0x0c00 /* rw */ > +#define NON_HASH_MEM_REGION_REG0 0x0c08 /* rw */ > +#define NON_HASH_MEM_REGION_REG1 0x0c10 /* rw */ > +#define NON_HASH_MEM_REGION_REG2 0x0c18 /* rw */ > +#define NON_HASH_MEM_REGION_REG3 0x0c20 /* rw */ > +#define NON_HASH_TGT_NODEID0 0x0c30 /* rw */ > +#define NON_HASH_TGT_NODEID1 0x0c38 /* rw */ > +#define NON_HASH_TGT_NODEID2 0x0c40 /* rw */ > +#define SYS_CACHE_GRP_REGION0 0x0c48 /* rw */ > +#define SYS_CACHE_GRP_REGION1 0x0c50 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG0 0x0c58 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG1 0x0c60 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG2 0x0c68 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG3 0x0c70 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG4 0x0c78 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG5 0x0c80 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG6 0x0c88 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG7 0x0c90 /* rw */ > +#define SYS_CACHE_GRP_NONHASH_NODEID 0x0c98 /* rw */ > +#define SYS_CACHE_GROUP_HN_COUNT 0x0d00 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG0 0x0d08 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG1 0x0d10 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG2 0x0d18 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG3 0x0d20 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG4 0x0d28 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG5 0x0d30 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG6 0x0d38 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG7 0x0d40 /* rw */ > +#define SYS_CACHE_GRP_SN_SAM_CFG0 0x0d48 /* rw */ > +#define SYS_CACHE_GRP_SN_SAM_CFG1 0x0d50 /* rw */ > +#define GIC_MEM_REGION_REG 0x0d58 /* rw */ > +#define SYS_CACHE_GRP_SN_ATTR 0x0d60 /* rw */ > +#define SYS_CACHE_GRP_HN_CPA_EN_REG 0x0d68 /* rw */ > +#define SYS_CACHE_GRP_HN_CPA_GRP_REG 0x0d70 /* rw */ > +#define CML_PORT_AGGR_MODE_CTRL_REG 0x0e00 /* rw */ > +#define CML_PORT_AGGR_GRP0_ADD_MASK 0x0e08 /* rw */ > +#define CML_PORT_AGGR_GRP1_ADD_MASK 0x0e10 /* rw */ > +#define CML_PORT_AGGR_GRP0_REG 0x0e40 /* rw */ > +#define CML_PORT_AGGR_GRP1_REG 0x0e48 /* rw */ > +#define SYS_CACHE_GRP_SECONDARY_REG0 0x0f00 /* rw */ > +#define SYS_CACHE_GRP_SECONDARY_REG1 0x0f08 /* rw */ > +#define SYS_CACHE_GRP_CAL_MODE_REG 0x0f10 /* rw */ > +#define RNSAM_HASH_ADDR_MASK_REG 0x0f18 /* rw */ > +#define RNSAM_REGION_CMP_ADDR_MASK_REG 0x0f20 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG8 0x0f58 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG9 0x0f60 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG10 0x0f68 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG11 0x0f70 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG12 0x0f78 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG13 0x0f80 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG14 0x0f88 /* rw */ > +#define SYS_CACHE_GRP_HN_NODEID_REG15 0x0f90 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG8 0x1008 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG9 0x1010 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG10 0x1018 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG11 0x1020 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG12 0x1028 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG13 0x1030 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG14 0x1038 /* rw */ > +#define SYS_CACHE_GRP_SN_NODEID_REG15 0x1040 /* rw */ > + > +/* SBSX registers */ > +#define POR_SBSX_NODE_INFO 0x0000 /* ro */ > +#define POR_SBSX_CHILD_INFO 0x0080 /* ro */ > +#define POR_SBSX_UNIT_INFO 0x0900 /* ro */ > +#define POR_SBSX_AUX_CTL 0x0a08 /* rw */ > +#define POR_SBSX_ERRFR 0x3000 /* ro */ > +#define POR_SBSX_ERRCTLR 0x3008 /* rw */ > +#define POR_SBSX_ERRSTATUS 0x3010 /* w1c = */ > +#define POR_SBSX_ERRADDR 0x3018 /* rw */ > +#define POR_SBSX_ERRMISC 0x3020 /* rw */ > +#define POR_SBSX_ERRFR_NS 0x3100 /* ro */ > +#define POR_SBSX_ERRCTLR_NS 0x3108 /* rw */ > +#define POR_SBSX_ERRSTATUS_NS 0x3110 /* w1c = */ > +#define POR_SBSX_ERRADDR_NS 0x3118 /* rw */ > +#define POR_SBSX_ERRMISC_NS 0x3120 /* rw */ > +#define POR_SBSX_PMU_EVENT_SEL 0x2000 /* rw */ > + > +/* CXHA registers */ > +#define POR_CXG_HA_NODE_INFO 0x0000 /* ro */ > +#define POR_CXG_HA_ID 0x0008 /* rw */ > +#define POR_CXG_HA_CHILD_INFO 0x0080 /* ro */ > +#define POR_CXG_HA_AUX_CTL 0x0a08 /* rw */ > +#define POR_CXG_HA_SECURE_REGISTER_GROUPS_OVERRIDE 0x0980 /* rw = */ > +#define POR_CXG_HA_UNIT_INFO 0x0900 /* ro */ > +#define POR_CXG_HA_RNF_RAID_TO_LDID_REG0 0x0c00 /* rw */ > +#define POR_CXG_HA_RNF_RAID_TO_LDID_REG1 0x0c08 /* rw */ > +#define POR_CXG_HA_RNF_RAID_TO_LDID_REG2 0x0c10 /* rw */ > +#define POR_CXG_HA_RNF_RAID_TO_LDID_REG3 0x0c18 /* rw */ > +#define POR_CXG_HA_RNF_RAID_TO_LDID_REG4 0x0c20 /* rw */ > +#define POR_CXG_HA_RNF_RAID_TO_LDID_REG5 0x0c28 /* rw */ > +#define POR_CXG_HA_RNF_RAID_TO_LDID_REG6 0x0c30 /* rw */ > +#define POR_CXG_HA_RNF_RAID_TO_LDID_REG7 0x0c38 /* rw */ > +#define POR_CXG_HA_AGENTID_TO_LINKID_REG0 0x0c40 /* rw */ > +#define POR_CXG_HA_AGENTID_TO_LINKID_REG1 0x0c48 /* rw */ > +#define POR_CXG_HA_AGENTID_TO_LINKID_REG2 0x0c50 /* rw */ > +#define POR_CXG_HA_AGENTID_TO_LINKID_REG3 0x0c58 /* rw */ > +#define POR_CXG_HA_AGENTID_TO_LINKID_REG4 0x0c60 /* rw */ > +#define POR_CXG_HA_AGENTID_TO_LINKID_REG5 0x0c68 /* rw */ > +#define POR_CXG_HA_AGENTID_TO_LINKID_REG6 0x0c70 /* rw */ > +#define POR_CXG_HA_AGENTID_TO_LINKID_REG7 0x0c78 /* rw */ > +#define POR_CXG_HA_AGENTID_TO_LINKID_VAL 0x0d00 /* rw */ > +#define POR_CXG_HA_RNF_RAID_TO_LDID_VAL 0x0d08 /* rw */ > +#define POR_CXG_HA_PMU_EVENT_SEL 0x2000 /* rw */ > +#define POR_CXG_HA_PMU_EVENT_SEL_EVENT_ID3_SHIFT = 24 > +#define POR_CXG_HA_PMU_EVENT_SEL_EVENT_ID3_MASK = (0x3f << 24) > +#define POR_CXG_HA_PMU_EVENT_SEL_EVENT_ID2_SHIFT = 16 > +#define POR_CXG_HA_PMU_EVENT_SEL_EVENT_ID2_MASK = (0x3f << 16) > +#define POR_CXG_HA_PMU_EVENT_SEL_EVENT_ID1_SHIFT = 8 > +#define POR_CXG_HA_PMU_EVENT_SEL_EVENT_ID1_MASK = (0x3f << 8) > +#define POR_CXG_HA_PMU_EVENT_SEL_EVENT_ID0_SHIFT = 0 > +#define POR_CXG_HA_PMU_EVENT_SEL_EVENT_ID0_MASK = 0x3f > + > +#define POR_CXG_HA_CXPRTCL_LINK0_CTL 0x1000 /* rw */ > +#define POR_CXG_HA_CXPRTCL_LINK0_STATUS 0x1008 /* ro */ > +#define POR_CXG_HA_CXPRTCL_LINK1_CTL 0x1010 /* rw */ > +#define POR_CXG_HA_CXPRTCL_LINK1_STATUS 0x1018 /* ro */ > +#define POR_CXG_HA_CXPRTCL_LINK2_CTL 0x1020 /* rw */ > +#define POR_CXG_HA_CXPRTCL_LINK2_STATUS 0x1028 /* ro */ > +#define POR_CXG_HA_ERRFR 0x3000 /* ro */ > +#define POR_CXG_HA_ERRCTLR 0x3008 /* rw */ > +#define POR_CXG_HA_ERRSTATUS 0x3010 /* w1c = */ > +#define POR_CXG_HA_ERRADDR 0x3018 /* rw */ > +#define POR_CXG_HA_ERRMISC 0x3020 /* rw */ > +#define POR_CXG_HA_ERRFR_NS 0x3100 /* ro */ > +#define POR_CXG_HA_ERRCTLR_NS 0x3108 /* rw */ > +#define POR_CXG_HA_ERRSTATUS_NS 0x3110 /* w1c = */ > +#define POR_CXG_HA_ERRADDR_NS 0x3118 /* rw */ > +#define POR_CXG_HA_ERRMISC_NS 0x3120 /* rw */ > + > +/* CXRA registers */ > +#define POR_CXG_RA_NODE_INFO 0x0000 /* ro */ > +#define POR_CXG_RA_CHILD_INFO 0x0080 /* ro */ > +#define POR_CXG_RA_SECURE_REGISTER_GROUPS_OVERRIDE 0x0980 /* rw = */ > +#define POR_CXG_RA_UNIT_INFO 0x0900 /* ro */ > +#define POR_CXG_RA_CFG_CTL 0x0a00 /* rw */ > +#define EN_CXLA_PMUCMD_PROP (1 << 8) > +#define POR_CXG_RA_AUX_CTL 0x0a08 /* rw */ > +#define POR_CXG_RA_SAM_ADDR_REGION_REG0 0x0da8 /* rw */ > +#define POR_CXG_RA_SAM_ADDR_REGION_REG1 0x0db0 /* rw */ > +#define POR_CXG_RA_SAM_ADDR_REGION_REG2 0x0db8 /* rw */ > +#define POR_CXG_RA_SAM_ADDR_REGION_REG3 0x0dc0 /* rw */ > +#define POR_CXG_RA_SAM_ADDR_REGION_REG4 0x0dc8 /* rw */ > +#define POR_CXG_RA_SAM_ADDR_REGION_REG5 0x0dd0 /* rw */ > +#define POR_CXG_RA_SAM_ADDR_REGION_REG6 0x0dd8 /* rw */ > +#define POR_CXG_RA_SAM_ADDR_REGION_REG7 0x0de0 /* rw */ > +#define POR_CXG_RA_SAM_MEM_REGION0_LIMIT_REG 0x0e00 /* rw */ > *** 613 LINES SKIPPED *** Jess