From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id DE35FA0525; Sun, 16 Feb 2020 07:48:02 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EF6574C98; Sun, 16 Feb 2020 07:48:01 +0100 (CET) Received: from NAM04-BN3-obe.outbound.protection.outlook.com (mail-eopbgr680053.outbound.protection.outlook.com [40.107.68.53]) by dpdk.org (Postfix) with ESMTP id 85D4C2C4F for ; Sun, 16 Feb 2020 07:48:00 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=icn4PRQP6tQu6PMwQSW296hR0fIzgmIDcNHqthi1yLAcqf2zojH4LS+d8ygPR14xiUTzmf0yZIjOT0GEu+qo854V2ir/IwH9zT3Ng1ApMhC14kCT2UzuHZX+uT5FaEGM+8SjM4pcJMQMgu6lGZP39ln7kbom2xNehL2pK/Wx61Em8yQb4aNAcKKRuoiHkLCqV1geCpZpAADL8nY8rqFRWouh3zFsk2l9ES48Tdh8WhDrbLzsN6ptJXdukyBelp80JOMdqNXGPr/govvGa1yxBqzjcXXrPWaxHF4fI6cXgC3FiVZrEehtQmYw2K3iCKfkq0DdMZ/m3yaxou6GmNLwFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L9JvgkJ+zzQQmW6W+nD2DV4CTOOBL5Ffsz0JEUaG2Hw=; b=I76VqQj4lNDdr2O7fRf7epKLOFOE9txekLY3ad8Z4i0mwHobs7a7N0saphTVTdwlIHJ2lMLizu6IsoNa91+ecjnI6SmWvUml6g3incpSkHqHvzn/WnAtTHRqI0W8uKO/sHpL0tH9hKV9cz9/T17rGpfd/ZEv4svo6jY5P3zgjeZL29iAcdaAkGcMomboL5j4J/mOb+kCAslcHblKcY8eaFKLjOr4Un/nO0T/hfumzTLfHddNhyCh+PGAGhSOcFY/p9Rq+RE+9RcNczWvN0/uPpIdZgtR3Bsfw3JKIL8Mv9U1+Xy6NoMwfjG6gZ9llU1g4GHJlDBq5Hq+ZFHyK6/P+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L9JvgkJ+zzQQmW6W+nD2DV4CTOOBL5Ffsz0JEUaG2Hw=; b=IhkO+iHPSYfuLZSmfXugsqc3vzjMaWj6ktUyAM4ubDi9RNqw/miibk7HlPrdEJ1DZCtH+09joAJrQUrsyhflEARCZdo2Vknz5P44bcmt3XKx9OvqE6nzEl4Gy7plVBOEZuI2nDym5lNjUnkjtTAVO1Q6dPUXT+aYDHyaQ8SUhQA= Received: from MW2PR12MB2570.namprd12.prod.outlook.com (52.132.181.13) by MW2PR12MB2523.namprd12.prod.outlook.com (52.132.184.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2729.25; Sun, 16 Feb 2020 06:47:50 +0000 Received: from MW2PR12MB2570.namprd12.prod.outlook.com ([fe80::ec36:5d88:cc24:c660]) by MW2PR12MB2570.namprd12.prod.outlook.com ([fe80::ec36:5d88:cc24:c660%3]) with mapi id 15.20.2729.031; Sun, 16 Feb 2020 06:47:50 +0000 From: "Kumar, Ravi1" To: "Namburu, Chandu-babu" , "dev@dpdk.org" CC: "Somalapuram, Amaranath" Thread-Topic: [PATCH v1] net/axgbe: add register dump support Thread-Index: AQHV4MX8MnbG4xhZiUes1ReLA1c3/agdaO0w Date: Sun, 16 Feb 2020 06:47:49 +0000 Message-ID: References: <20200211102803.9161-1-chandu@amd.com> In-Reply-To: <20200211102803.9161-1-chandu@amd.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_Enabled=true; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_SetDate=2020-02-16T06:49:41Z; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_Method=Standard; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_Name=Internal Use Only - Unrestricted; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_ActionId=0a4aa6e3-5f90-4998-beee-00001714a1bb; MSIP_Label_76546daa-41b6-470c-bb85-f6f40f044d7f_ContentBits=1 msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_enabled: true msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_setdate: 2020-02-16T06:49:41Z msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_method: Standard msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_name: Internal Use Only - Unrestricted msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_siteid: 3dd8961f-e488-4e60-8e11-a82d994e183d msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_actionid: d4df04f8-905a-461c-bc95-0000cb1933c7 msip_label_76546daa-41b6-470c-bb85-f6f40f044d7f_contentbits: 0 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ravi1.Kumar@amd.com; x-originating-ip: [117.99.80.68] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: aa6f636a-a245-4d44-deda-08d7b2ac23f5 x-ms-traffictypediagnostic: MW2PR12MB2523:|MW2PR12MB2523: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:188; x-forefront-prvs: 03152A99FF x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(366004)(396003)(376002)(346002)(136003)(189003)(199004)(5660300002)(30864003)(8936002)(2906002)(186003)(4326008)(7696005)(26005)(81166006)(81156014)(8676002)(6506007)(316002)(110136005)(66476007)(86362001)(55016002)(478600001)(64756008)(66556008)(9686003)(66446008)(71200400001)(33656002)(76116006)(52536014)(66946007); DIR:OUT; SFP:1101; SCL:1; SRVR:MW2PR12MB2523; H:MW2PR12MB2570.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Aq/TuEM5XdvehmiVI3BewUYo7yVKsHd9LrsSvVp1GZBWW0I785QfKZaggQ5NHB1ci9oTrpqzyGNq+PIh/afQHRy5I7bQ6GFI/NG6KzBSNeNbCnHQgYkgS22FpNx0+KrE/Q1JOYqOt7Tjawj5JdV6/g8SVYQLBSXt/7HBXxMbfsMlzSFdxxgOjQXtz3BLtB797T8fwpvS4Cxkkwm1oBMu7sOyObHwgMng9+GQXRcgUA3S3nW3mGQWNQZvjJYrUcU0OMTuvjbhg7PB47m5at2pV3AAMctzOCjmxJ1LE7mKjN9r7rCROhne6bpffbAnB7WAnKs0uQO/AzOxLOwT09lstyxhaTyYsZA0VqjNsXo4NFKfrIB/oNWsiQeMGoiqgn1kSCZqb29iB94K5I2qG0EzbVOTS45yRqStoZ9qNBl9yv5UYUah69uag6PUJ3qVACk8 x-ms-exchange-antispam-messagedata: ZhRgnR8pFh4yQVyARS6jMfr1pqEeyskEwfPriKNos5j73jtyoDermf3pACXs4+jGlZ8eEVAtvPLs89tXXUeCWhqcQN3jDDw1xeDK4m7o8tZjX7C0llSyrkwFhwySJVfnFZOAsRGEOfu8ii5t3wdFDg== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa6f636a-a245-4d44-deda-08d7b2ac23f5 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Feb 2020 06:47:50.0231 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: gUY/kMvlO2UBy+O9QVGf9IiJSDJIRzYSTIxuFnGDfc3Qtx3iGSzQ4MZDlXNkQgyK2Tf+8VIX5RWmPYlv1UatUw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2PR12MB2523 Subject: Re: [dpdk-dev] [PATCH v1] net/axgbe: add register dump support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" [AMD Official Use Only - Internal Distribution Only] Acked-by: Ravi Kumar > >-----Original Message----- >From: Namburu, Chandu-babu =20 >Sent: Tuesday, February 11, 2020 3:58 PM >To: dev@dpdk.org >Cc: Kumar, Ravi1 ; Somalapuram, Amaranath >Subject: [PATCH v1] net/axgbe: add register dump support > >From: Chandu Babu N > >Implement "get_reg" eth_dev_ops for axgbe > >Signed-off-by: Chandu Babu N >--- > drivers/net/axgbe/axgbe_common.h | 3 + > drivers/net/axgbe/axgbe_ethdev.c | 25 ++++ > drivers/net/axgbe/axgbe_regs.h | 229 +++++++++++++++++++++++++++++++ > 3 files changed, 257 insertions(+) > create mode 100644 drivers/net/axgbe/axgbe_regs.h > >diff --git a/drivers/net/axgbe/axgbe_common.h b/drivers/net/axgbe/axgbe_co= mmon.h >index fdb037dd5..2ac4d8946 100644 >--- a/drivers/net/axgbe/axgbe_common.h >+++ b/drivers/net/axgbe/axgbe_common.h >@@ -289,6 +289,9 @@ > #define MAC_RQC2_INC 4 > #define MAC_RQC2_Q_PER_REG 4 >=20 >+#define MAC_MACAHR(i) (MAC_MACA0HR + ((i) * 8)) >+#define MAC_MACALR(i) (MAC_MACA0LR + ((i) * 8)) >+ > /* MAC register entry bit positions and sizes */ > #define MAC_HWF0R_ADDMACADRSEL_INDEX 18 > #define MAC_HWF0R_ADDMACADRSEL_WIDTH 5 >diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_et= hdev.c >index 7445c544d..00974e737 100644 >--- a/drivers/net/axgbe/axgbe_ethdev.c >+++ b/drivers/net/axgbe/axgbe_ethdev.c >@@ -7,6 +7,7 @@ > #include "axgbe_ethdev.h" > #include "axgbe_common.h" > #include "axgbe_phy.h" >+#include "axgbe_regs.h" >=20 > static int eth_axgbe_dev_init(struct rte_eth_dev *eth_dev); static int e= th_axgbe_dev_uninit(struct rte_eth_dev *eth_dev); @@ -21,6 +22,8 @@ static = int axgbe_dev_allmulticast_enable(struct rte_eth_dev *dev); static int axg= be_dev_allmulticast_disable(struct rte_eth_dev *dev); static int axgbe_dev= _link_update(struct rte_eth_dev *dev, > int wait_to_complete); >+static int axgbe_dev_get_regs(struct rte_eth_dev *dev, >+ struct rte_dev_reg_info *regs); > static int axgbe_dev_stats_get(struct rte_eth_dev *dev, > struct rte_eth_stats *stats); > static int axgbe_dev_stats_reset(struct rte_eth_dev *dev); @@ -158,6 +161= ,7 @@ static const struct eth_dev_ops axgbe_eth_dev_ops =3D { > .allmulticast_enable =3D axgbe_dev_allmulticast_enable, > .allmulticast_disable =3D axgbe_dev_allmulticast_disable, > .link_update =3D axgbe_dev_link_update, >+ .get_reg =3D axgbe_dev_get_regs, > .stats_get =3D axgbe_dev_stats_get, > .stats_reset =3D axgbe_dev_stats_reset, > .xstats_get =3D axgbe_dev_xstats_get, >@@ -393,6 +397,27 @@ axgbe_dev_link_update(struct rte_eth_dev *dev, > return ret; > } >=20 >+static int >+axgbe_dev_get_regs(struct rte_eth_dev *dev, struct rte_dev_reg_info=20 >+*regs) { >+ struct axgbe_port *pdata =3D dev->data->dev_private; >+ >+ if (regs->data =3D=3D NULL) { >+ regs->length =3D axgbe_regs_get_count(pdata); >+ regs->width =3D sizeof(uint32_t); >+ return 0; >+ } >+ >+ /* Only full register dump is supported */ >+ if (regs->length && >+ regs->length !=3D (uint32_t)axgbe_regs_get_count(pdata)) >+ return -ENOTSUP; >+ >+ regs->version =3D pdata->pci_dev->id.vendor_id << 16 | >+ pdata->pci_dev->id.device_id; >+ axgbe_regs_dump(pdata, regs->data); >+ return 0; >+} > static void axgbe_read_mmc_stats(struct axgbe_port *pdata) { > struct axgbe_mmc_stats *stats =3D &pdata->mmc_stats; diff --git a/driver= s/net/axgbe/axgbe_regs.h b/drivers/net/axgbe/axgbe_regs.h new file mode 100= 644 index 000000000..c7e032620 >--- /dev/null >+++ b/drivers/net/axgbe/axgbe_regs.h >@@ -0,0 +1,229 @@ >+/* SPDX-License-Identifier: BSD-3-Clause >+ * Copyright(c) 2019 Advanced Micro Devices, Inc. All rights reserved. >+ */ >+#ifndef RTE_ETH_AXGBE_REGS_H_ >+#define RTE_ETH_AXGBE_REGS_H_ >+ >+#include "axgbe_common.h" >+ >+static const uint32_t dma_reg_tbl[] =3D { >+ DMA_MR, /* DMA Mode */ >+ DMA_SBMR, /* DMA Sys Bus Mode */ >+ DMA_ISR, /* DMA Interrupt Status */ >+ DMA_AXIARCR, /* DMA AXI Tx AR ACE Ctrl */ >+ DMA_AXIAWCR, /* DMA AXI Rx AW ACE Ctrl */ >+ DMA_AXIAWRCR, /* DMA AXI TxRx AWR ACE Ctrl */ >+ DMA_DSR0, /* DMA Debug Status0 */ >+ DMA_DSR1, /* DMA Debug Status1 */ >+ EDMA_TX_CONTROL,/* DMA Tx EDMA Ctrl */ >+ EDMA_RX_CONTROL,/* DMA Rx EDMA Ctrl */ }; >+ >+static const uint32_t dma_txch_reg_tbl[] =3D { >+ DMA_CH_CR, /* DMA Channel Ctrl */ >+ DMA_CH_TCR, /* DMA Tx Ctrl */ >+ DMA_CH_TDLR_HI, /* DMA TxDescList HAddr */ >+ DMA_CH_TDLR_LO, /* DMA TxDescList LAddr */ >+ DMA_CH_TDTR_LO, /* DMA TxDescTail LAddr */ >+ DMA_CH_TDRLR, /* DMA TxDescRing Length */ >+ DMA_CH_IER, /* DMA Interrupt Enable */ >+ DMA_CH_CATDR_LO,/* DMA CurrApp TxDesc LAddr */ >+ DMA_CH_CATBR_HI,/* DMA CurrApp TxBuf HAddr */ >+ DMA_CH_CATBR_LO,/* DMA CurrApp TxBuf LAddr */ >+ DMA_CH_SR, /* DMA Channel Status */ >+}; >+ >+static const uint32_t dma_rxch_reg_tbl[] =3D { >+ DMA_CH_RCR, /* DMA Rx Ctrl */ >+ DMA_CH_RDLR_HI, /* DMA RxDescList HAddr */ >+ DMA_CH_RDLR_LO, /* DMA RxDescList LAddr */ >+ DMA_CH_RDTR_LO, /* DMA RxDescTail LAddr */ >+ DMA_CH_RDRLR, /* DMA RxDescRing Length */ >+ DMA_CH_RIWT, /* DMA Rx Interrupt WatchDog Timer */ >+ DMA_CH_CARDR_LO,/* DMA CurrApp RxDesc LAddr */ >+ DMA_CH_CARBR_HI,/* DMA CurrApp RxBuf HAddr */ >+ DMA_CH_CARBR_LO,/* DMA CurrApp RxBuf LAddr */ >+ >+}; >+ >+static const uint32_t mtl_reg_tbl[] =3D { >+ MTL_OMR, /* MTL Operation Mode */ >+ MTL_FDCR, /* MTL FIFO Debug Ctrl */ >+ MTL_FDSR, /* MTL FIFO Debug Status */ >+ MTL_FDDR, /* MTL FIFO Debug Data */ >+ MTL_ISR, /* MTL Interrupt Status */ >+ MTL_RQDCM0R, /* MTL RxQ DMA Map0 */ >+ MTL_TCPM0R, /* MTL TC Prty Map0 */ >+ MTL_TCPM1R, /* MTL TC Prty Map1 */ >+}; >+ >+static const uint32_t mtl_txq_reg_tbl[] =3D { >+ MTL_Q_TQOMR, /* MTL TxQ Operation Mode */ >+ MTL_Q_TQUR, /* MTL TxQ Underflow */ >+ MTL_Q_TQDR, /* MTL TxQ Debug */ >+ MTL_Q_IER, /* MTL Q Interrupt Enable */ >+ MTL_Q_ISR, /* MTL Q Interrupt Status */ >+}; >+ >+static const uint32_t mtl_rxq_reg_tbl[] =3D { >+ MTL_Q_RQOMR, /* MTL RxQ Operation Mode */ >+ MTL_Q_RQMPOCR, /* MTL RxQ Missed Pkt OverFlow Cnt */ >+ MTL_Q_RQDR, /* MTL RxQ Debug */ >+ MTL_Q_RQFCR, /* MTL RxQ Flow Control */ >+}; >+ >+static const uint32_t mac_reg_tbl[] =3D { >+ MAC_TCR, /* MAC Tx Config */ >+ MAC_RCR, /* MAC Rx Config */ >+ MAC_PFR, /* MAC Packet Filter */ >+ MAC_WTR, /* MAC WatchDog Timeout */ >+ MAC_HTR0, /* MAC Hash Table0 */ >+ MAC_VLANTR, /* MAC VLAN Tag Ctrl */ >+ MAC_VLANHTR, /* MAC VLAN Hash Table */ >+ MAC_VLANIR, /* MAC VLAN Incl */ >+ MAC_IVLANIR, /* MAC Inner VLAN Incl */ >+ MAC_RETMR, /* MAC Rx Eth Type Match */ >+ MAC_Q0TFCR, /* MAC Q0 Tx Flow Ctrl */ >+ MAC_RFCR, /* MAC Rx Flow Ctrl */ >+ MAC_RQC0R, /* MAC RxQ Ctrl0 */ >+ MAC_RQC1R, /* MAC RxQ Ctrl1 */ >+ MAC_RQC2R, /* MAC RxQ Ctrl2 */ >+ MAC_RQC3R, /* MAC RxQ Ctrl3 */ >+ MAC_ISR, /* MAC Interrupt Status */ >+ MAC_IER, /* MAC Interrupt Enable */ >+ MAC_RTSR, /* MAC Rx Tx Status */ >+ MAC_PMTCSR, /* MAC PMT Ctrl Status */ >+ MAC_RWKPFR, /* MAC RWK Packet Filter */ >+ MAC_LPICSR, /* MAC LPI Ctrl Status */ >+ MAC_LPITCR, /* MAC LPI Timers Ctrl */ >+ MAC_VR, /* MAC Version */ >+ MAC_DR, /* MAC Debug Status */ >+ MAC_HWF0R, /* MAC HW Feature0 */ >+ MAC_HWF1R, /* MAC HW Feature1 */ >+ MAC_HWF2R, /* MAC HW Feature2 */ >+ MAC_MDIOSCAR, /* MDIO Single Cmd Addr */ >+ MAC_MDIOSCCDR, /* MDIO Single Cmd/Data */ >+ MAC_MDIOISR, /* MDIO Interrupt Status */ >+ MAC_MDIOIER, /* MDIO Interrupt Enable */ >+ MAC_MDIOCL22R, /* MDIO Clause22 Port */ >+ MAC_GPIOCR, /* MAC GPIO Ctrl */ >+ MAC_GPIOSR, /* MAC GPIO Status */ >+ MAC_RSSCR, /* MAC RSS Ctrl */ >+ MAC_RSSAR, /* MAC RSS Addr */ >+}; >+ >+/* MAC Address Register Table */ >+static const uint32_t mac_addr_reg_tbl[] =3D { >+ MAC_MACAHR(0), MAC_MACALR(0), MAC_MACAHR(1), MAC_MACALR(1), >+ MAC_MACAHR(2), MAC_MACALR(2), MAC_MACAHR(3), MAC_MACALR(3), >+ MAC_MACAHR(4), MAC_MACALR(4), MAC_MACAHR(5), MAC_MACALR(5), >+ MAC_MACAHR(6), MAC_MACALR(6), MAC_MACAHR(7), MAC_MACALR(7), >+ MAC_MACAHR(8), MAC_MACALR(8), MAC_MACAHR(9), MAC_MACALR(9), >+ MAC_MACAHR(10), MAC_MACALR(10), MAC_MACAHR(11), MAC_MACALR(11), >+ MAC_MACAHR(12), MAC_MACALR(12), MAC_MACAHR(13), MAC_MACALR(13), >+ MAC_MACAHR(14), MAC_MACALR(14), MAC_MACAHR(15), MAC_MACALR(15), >+ MAC_MACAHR(16), MAC_MACALR(16), MAC_MACAHR(17), MAC_MACALR(17), >+ MAC_MACAHR(18), MAC_MACALR(18), MAC_MACAHR(19), MAC_MACALR(19), >+ MAC_MACAHR(20), MAC_MACALR(20), MAC_MACAHR(21), MAC_MACALR(21), >+ MAC_MACAHR(22), MAC_MACALR(22), MAC_MACAHR(23), MAC_MACALR(23), >+ MAC_MACAHR(24), MAC_MACALR(24), MAC_MACAHR(25), MAC_MACALR(25), >+ MAC_MACAHR(26), MAC_MACALR(26), MAC_MACAHR(27), MAC_MACALR(27), >+ MAC_MACAHR(28), MAC_MACALR(28), MAC_MACAHR(29), MAC_MACALR(29), >+ MAC_MACAHR(30), MAC_MACALR(30), MAC_MACAHR(31), MAC_MACALR(31), >+ >+}; >+ >+static const uint32_t mac_ieee1558_reg_tbl[] =3D { >+ MAC_RSSDR, /* MAC RSS Data */ >+ MAC_TSCR, /* MAC TimeStamp Ctrl */ >+ MAC_SSIR, /* MAC Sub Second Incr */ >+ MAC_STSR, /* MAC Sys Time Secs */ >+ MAC_STNR, /* MAC Sys Time NSecs */ >+ MAC_STSUR, /* MAC Sys Time Secs Update */ >+ MAC_STNUR, /* MAC Sys Time NSecs Update */ >+ MAC_TSAR, /* MAC TimeStamp Addend */ >+ MAC_TSSR, /* MAC TimeStamp Status */ >+ MAC_TXSNR, /* MAC TxTS Status NSecs */ >+ MAC_TXSSR, /* MAC TxTS Status Secs */ >+}; >+ >+static inline int >+axgbe_regs_get_count(struct axgbe_port *pdata) { >+ int count =3D 0; >+ unsigned int i =3D 0; >+ >+ count =3D ARRAY_SIZE(dma_reg_tbl); >+ for (i =3D 0; i < pdata->tx_ring_count; i++) >+ count +=3D ARRAY_SIZE(dma_txch_reg_tbl); >+ for (i =3D 0; i < pdata->rx_ring_count; i++) >+ count +=3D ARRAY_SIZE(dma_rxch_reg_tbl); >+ count +=3D ARRAY_SIZE(mtl_reg_tbl); >+ for (i =3D 0; i < pdata->tx_q_count; i++) >+ count +=3D ARRAY_SIZE(mtl_txq_reg_tbl); >+ for (i =3D 0; i < pdata->rx_q_count; i++) >+ count +=3D ARRAY_SIZE(mtl_rxq_reg_tbl); >+ count +=3D ARRAY_SIZE(mac_reg_tbl); >+ count +=3D ARRAY_SIZE(mac_addr_reg_tbl); >+ count +=3D ARRAY_SIZE(mac_ieee1558_reg_tbl); >+ >+ return count; >+}; >+ >+static inline int >+axgbe_regs_dump(struct axgbe_port *pdata, uint32_t *data) { >+ unsigned int i =3D 0, j =3D 0; >+ unsigned int base_reg, reg; >+ >+ for (i =3D 0; i < ARRAY_SIZE(dma_reg_tbl); i++) >+ *data++ =3D AXGMAC_IOREAD(pdata, dma_reg_tbl[i]); >+ >+ for (j =3D 0; j < pdata->tx_ring_count; j++) { >+ base_reg =3D DMA_CH_BASE + (j * DMA_CH_INC); >+ for (i =3D 0; i < ARRAY_SIZE(dma_txch_reg_tbl); i++) { >+ reg =3D base_reg + dma_txch_reg_tbl[i]; >+ *data++ =3D AXGMAC_IOREAD(pdata, reg); >+ } >+ } >+ >+ for (j =3D 0; j < pdata->rx_ring_count; j++) { >+ base_reg =3D DMA_CH_BASE + (j * DMA_CH_INC); >+ for (i =3D 0; i < ARRAY_SIZE(dma_rxch_reg_tbl); i++) { >+ reg =3D base_reg + dma_rxch_reg_tbl[i]; >+ *data++ =3D AXGMAC_IOREAD(pdata, reg); >+ } >+ } >+ >+ for (i =3D 0; i < ARRAY_SIZE(mtl_reg_tbl); i++) >+ *data++ =3D AXGMAC_IOREAD(pdata, mtl_reg_tbl[i]); >+ >+ for (j =3D 0; j < pdata->tx_q_count; j++) { >+ base_reg =3D MTL_Q_BASE + (j * MTL_Q_INC); >+ for (i =3D 0; i < ARRAY_SIZE(mtl_txq_reg_tbl); i++) { >+ reg =3D base_reg + mtl_txq_reg_tbl[i]; >+ *data++ =3D AXGMAC_IOREAD(pdata, reg); >+ } >+ } >+ >+ for (j =3D 0; j < pdata->rx_q_count; j++) { >+ base_reg =3D MTL_Q_BASE + (j * MTL_Q_INC); >+ for (i =3D 0; i < ARRAY_SIZE(mtl_rxq_reg_tbl); i++) { >+ reg =3D base_reg + mtl_rxq_reg_tbl[i]; >+ *data++ =3D AXGMAC_IOREAD(pdata, reg); >+ } >+ } >+ >+ for (i =3D 0; i < ARRAY_SIZE(mac_reg_tbl); i++) >+ *data++ =3D AXGMAC_IOREAD(pdata, mac_reg_tbl[i]); >+ >+ for (i =3D 0; i < ARRAY_SIZE(mac_addr_reg_tbl); i++) >+ *data++ =3D AXGMAC_IOREAD(pdata, mac_addr_reg_tbl[i]); >+ >+ for (i =3D 0; i < ARRAY_SIZE(mac_ieee1558_reg_tbl); i++) >+ *data++ =3D AXGMAC_IOREAD(pdata, mac_ieee1558_reg_tbl[i]); >+ >+ return 0; >+}; >+ >+#endif /* RTE_ETH_AXGBE_REGS_H_ */ >-- >2.17.1 > >